{"version":3,"file":"webamp.butterchurn-bundle.min.mjs","sources":["../../../node_modules/.pnpm/jszip@3.10.1/node_modules/jszip/dist/jszip.min.js","../../../node_modules/.pnpm/strtok3@10.3.1/node_modules/strtok3/lib/stream/Errors.js","../../../node_modules/.pnpm/strtok3@10.3.1/node_modules/strtok3/lib/stream/AbstractStreamReader.js","../../../node_modules/.pnpm/strtok3@10.3.1/node_modules/strtok3/lib/stream/WebStreamReader.js","../../../node_modules/.pnpm/strtok3@10.3.1/node_modules/strtok3/lib/stream/WebStreamByobReader.js","../../../node_modules/.pnpm/strtok3@10.3.1/node_modules/strtok3/lib/stream/WebStreamDefaultReader.js","../../../node_modules/.pnpm/strtok3@10.3.1/node_modules/strtok3/lib/AbstractTokenizer.js","../../../node_modules/.pnpm/strtok3@10.3.1/node_modules/strtok3/lib/ReadStreamTokenizer.js","../../../node_modules/.pnpm/strtok3@10.3.1/node_modules/strtok3/lib/BufferTokenizer.js","../../../node_modules/.pnpm/strtok3@10.3.1/node_modules/strtok3/lib/core.js","../../../node_modules/.pnpm/strtok3@10.3.1/node_modules/strtok3/lib/stream/WebStreamReaderFactory.js","../../../node_modules/.pnpm/ieee754@1.2.1/node_modules/ieee754/index.js","../../../node_modules/.pnpm/token-types@6.0.3/node_modules/token-types/lib/index.js","../../../node_modules/.pnpm/fflate@0.8.2/node_modules/fflate/esm/browser.js","../../../node_modules/.pnpm/debug@4.4.1/node_modules/debug/src/common.js","../../../node_modules/.pnpm/ms@2.1.3/node_modules/ms/index.js","../../../node_modules/.pnpm/debug@4.4.1/node_modules/debug/src/browser.js","../../../node_modules/.pnpm/@tokenizer+inflate@0.2.7/node_modules/@tokenizer/inflate/lib/ZipToken.js","../../../node_modules/.pnpm/@tokenizer+inflate@0.2.7/node_modules/@tokenizer/inflate/lib/index.js","../../../node_modules/.pnpm/uint8array-extras@1.4.0/node_modules/uint8array-extras/index.js","../../../node_modules/.pnpm/file-type@21.0.0/node_modules/file-type/util.js","../../../node_modules/.pnpm/file-type@21.0.0/node_modules/file-type/core.js","../../../node_modules/.pnpm/file-type@21.0.0/node_modules/file-type/supported.js","../../../node_modules/.pnpm/content-type@1.0.5/node_modules/content-type/index.js","../../../node_modules/.pnpm/media-typer@1.1.0/node_modules/media-typer/index.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/matroska/types.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/ParseError.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/common/Util.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/id3v2/ID3v2Token.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/common/GenericTagTypes.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/common/GenericTagMapper.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/id3v1/ID3v1TagMap.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/common/CaseInsensitiveTagMap.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/id3v2/ID3v24TagMapper.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/asf/AsfTagMapper.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/id3v2/ID3v22TagMapper.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/apev2/APEv2TagMapper.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/mp4/MP4TagMapper.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/ogg/vorbis/VorbisTagMapper.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/riff/RiffInfoTagMap.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/matroska/MatroskaTagMapper.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/aiff/AiffTagMap.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/common/CombinedTagMapper.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/common/MetadataCollector.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/lrc/LyricsParser.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/mpeg/MpegLoader.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/apev2/Apev2Loader.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/asf/AsfLoader.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/dsdiff/DsdiffLoader.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/aiff/AiffLoader.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/dsf/DsfLoader.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/flac/FlacLoader.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/matroska/MatroskaLoader.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/mp4/Mp4Loader.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/musepack/MusepackLoader.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/ogg/OggLoader.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/wavpack/WavPackLoader.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/wav/WaveLoader.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/ParserFactory.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/common/BasicParser.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/common/FourCC.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/apev2/APEv2Token.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/apev2/APEv2Parser.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/id3v1/ID3v1Parser.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/lyrics3/Lyrics3.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/core.js","../../../node_modules/.pnpm/react@19.1.0/node_modules/react/cjs/react-jsx-runtime.production.js","../../../node_modules/.pnpm/react@19.1.0/node_modules/react/jsx-runtime.js","../../../node_modules/.pnpm/scheduler@0.26.0/node_modules/scheduler/cjs/scheduler.production.js","../../../node_modules/.pnpm/scheduler@0.26.0/node_modules/scheduler/index.js","../../../node_modules/.pnpm/react@19.1.0/node_modules/react/cjs/react.production.js","../../../node_modules/.pnpm/react@19.1.0/node_modules/react/index.js","../../../node_modules/.pnpm/react-dom@19.1.0_react@19.1.0/node_modules/react-dom/cjs/react-dom.production.js","../../../node_modules/.pnpm/react-dom@19.1.0_react@19.1.0/node_modules/react-dom/index.js","../../../node_modules/.pnpm/react-dom@19.1.0_react@19.1.0/node_modules/react-dom/cjs/react-dom-client.production.js","../../../node_modules/.pnpm/react-dom@19.1.0_react@19.1.0/node_modules/react-dom/client.js","../../../node_modules/.pnpm/use-sync-external-store@1.2.2_react@19.1.0/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js","../../../node_modules/.pnpm/use-sync-external-store@1.2.2_react@19.1.0/node_modules/use-sync-external-store/shim/index.js","../../../node_modules/.pnpm/use-sync-external-store@1.2.2_react@19.1.0/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js","../../../node_modules/.pnpm/use-sync-external-store@1.2.2_react@19.1.0/node_modules/use-sync-external-store/shim/with-selector.js","../../../node_modules/.pnpm/react-redux@8.1.3_@types+react-dom@18.2.24_@types+react@18.2.74_react-dom@19.1.0_react@19.1.0__react@19.1.0_redux@5.0.1/node_modules/react-redux/es/utils/batch.js","../../../node_modules/.pnpm/react-redux@8.1.3_@types+react-dom@18.2.24_@types+react@18.2.74_react-dom@19.1.0_react@19.1.0__react@19.1.0_redux@5.0.1/node_modules/react-redux/es/components/Context.js","../../../node_modules/.pnpm/react-redux@8.1.3_@types+react-dom@18.2.24_@types+react@18.2.74_react-dom@19.1.0_react@19.1.0__react@19.1.0_redux@5.0.1/node_modules/react-redux/es/hooks/useReduxContext.js","../../../node_modules/.pnpm/react-redux@8.1.3_@types+react-dom@18.2.24_@types+react@18.2.74_react-dom@19.1.0_react@19.1.0__react@19.1.0_redux@5.0.1/node_modules/react-redux/es/hooks/useSelector.js","../../../node_modules/.pnpm/react-redux@8.1.3_@types+react-dom@18.2.24_@types+react@18.2.74_react-dom@19.1.0_react@19.1.0__react@19.1.0_redux@5.0.1/node_modules/react-redux/es/utils/useSyncExternalStore.js","../../../node_modules/.pnpm/react-is@16.13.1/node_modules/react-is/cjs/react-is.production.min.js","../../../node_modules/.pnpm/react-is@18.3.1/node_modules/react-is/cjs/react-is.production.min.js","../../../node_modules/.pnpm/react-redux@8.1.3_@types+react-dom@18.2.24_@types+react@18.2.74_react-dom@19.1.0_react@19.1.0__react@19.1.0_redux@5.0.1/node_modules/react-redux/es/utils/Subscription.js","../../../node_modules/.pnpm/react-redux@8.1.3_@types+react-dom@18.2.24_@types+react@18.2.74_react-dom@19.1.0_react@19.1.0__react@19.1.0_redux@5.0.1/node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js","../../../node_modules/.pnpm/react-redux@8.1.3_@types+react-dom@18.2.24_@types+react@18.2.74_react-dom@19.1.0_react@19.1.0__react@19.1.0_redux@5.0.1/node_modules/react-redux/es/components/Provider.js","../../../node_modules/.pnpm/react-redux@8.1.3_@types+react-dom@18.2.24_@types+react@18.2.74_react-dom@19.1.0_react@19.1.0__react@19.1.0_redux@5.0.1/node_modules/react-redux/es/hooks/useStore.js","../../../node_modules/.pnpm/react-redux@8.1.3_@types+react-dom@18.2.24_@types+react@18.2.74_react-dom@19.1.0_react@19.1.0__react@19.1.0_redux@5.0.1/node_modules/react-redux/es/hooks/useDispatch.js","../../../node_modules/.pnpm/redux@5.0.1/node_modules/redux/dist/redux.mjs","../../../node_modules/.pnpm/react-redux@8.1.3_@types+react-dom@18.2.24_@types+react@18.2.74_react-dom@19.1.0_react@19.1.0__react@19.1.0_redux@5.0.1/node_modules/react-redux/es/index.js","../../../node_modules/.pnpm/redux-thunk@2.4.2_redux@5.0.1/node_modules/redux-thunk/es/index.js","../../../node_modules/.pnpm/@redux-devtools+extension@3.3.0_redux@5.0.1/node_modules/@redux-devtools/extension/lib/esm/index.js","../../js/constants.ts","../../js/utils.ts","../../js/reducers/playlist.ts","../../js/reducers/windows.ts","../../js/reducers/media.ts","../../../node_modules/.pnpm/reselect@3.0.1/node_modules/reselect/lib/index.js","../../js/reducers/display.ts","../../js/reducers/userInput.ts","../../js/reducers/equalizer.ts","../../js/reducers/settings.ts","../../../node_modules/.pnpm/invariant@2.2.4/node_modules/invariant/browser.js","../../js/fileUtils.ts","../../js/trackUtils.ts","../../js/reducers/tracks.ts","../../js/types.ts","../../js/reducers/milkdrop.ts","../../js/reducers/index.ts","../../js/reducers/network.ts","../../js/playlistHtml.tsx","../../js/selectors.ts","../../js/resizeUtils.ts","../../js/marqueeUtils.tsx","../../js/snapUtils.ts","../../js/actionCreators/windows.ts","../../winamp-eqf/built/constants.js","../../js/skinSprites.ts","../../js/skinParserUtils.ts","../js/skinParser.js","../../js/regionParser.ts","../../../node_modules/.pnpm/tinyqueue@1.2.3/node_modules/tinyqueue/index.js","../../js/actionCreators/playlist.ts","../../js/actionCreators/equalizer.ts","../../js/actionCreators/files.ts","../js/loadQueue.js","../../winamp-eqf/built/parser.js","../../winamp-eqf/built/creator.js","../../js/actionCreators/media.ts","../../js/actionCreators/milkdrop.ts","../../js/actionCreators/index.ts","../../js/mediaMiddleware.ts","../../js/store.ts","../../../node_modules/.pnpm/fscreen@1.2.0/node_modules/fscreen/dist/fscreen.esm.js","../../js/components/Fullscreen.tsx","../../js/hooks.ts","../../../node_modules/.pnpm/classnames@2.5.1/node_modules/classnames/index.js","../../js/components/ResizeTarget.tsx","../../js/components/FocusTarget.tsx","../../js/components/WinampButton.tsx","../../js/components/GenWindow/index.tsx","../../js/components/MilkdropWindow/Visualizer.tsx","../../js/components/MilkdropWindow/Background.tsx","../../js/components/MilkdropWindow/PresetOverlay.tsx","../../js/components/DropTarget.tsx","../../js/components/ContextMenu.tsx","../../js/components/ContextMenuWrapper.tsx","../../js/components/MilkdropWindow/MilkdropContextMenu.tsx","../../js/components/MilkdropWindow/Desktop.tsx","../../js/components/MilkdropWindow/index.tsx","../../js/components/PlaybackContextMenu.tsx","../../js/components/SkinsContextMenu.tsx","../../js/components/OptionsContextMenu.tsx","../../js/components/MainWindow/MainContextMenu.tsx","../../js/components/WindowManager.tsx","../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_basePropertyOf.js","../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_deburrLetter.js","../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_root.js","../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_freeGlobal.js","../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_Symbol.js","../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isArray.js","../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_getRawTag.js","../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_objectToString.js","../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseGetTag.js","../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isSymbol.js","../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseToString.js","../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_arrayMap.js","../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/toString.js","../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isObjectLike.js","../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/deburr.js","../../js/components/Character.tsx","../../js/components/MiniTime.tsx","../../js/components/ClickedDiv.tsx","../../js/components/ContextMenuTarget.tsx","../../js/components/FFTNullsoft.ts","../../js/components/VisPainter.ts","../../js/components/Vis.tsx","../../js/components/MainWindow/ActionButtons.tsx","../../js/components/Balance.tsx","../../js/components/MainWindow/MainBalance.tsx","../../js/components/MainWindow/Close.tsx","../../js/components/MainWindow/ClutterBar.tsx","../../js/components/MainWindow/Eject.tsx","../../js/components/MainWindow/EqToggleButton.tsx","../../js/components/MainWindow/PlaylistToggleButton.tsx","../../js/components/CharacterString.tsx","../../js/components/MainWindow/Kbps.tsx","../../js/components/MainWindow/Khz.tsx","../../js/components/MainWindow/Marquee.tsx","../../js/components/MainWindow/MonoStereo.tsx","../../js/components/MainWindow/Position.tsx","../../js/components/MainWindow/Repeat.tsx","../../js/components/MainWindow/Shade.tsx","../../js/components/MainWindow/Minimize.tsx","../../js/components/MainWindow/Shuffle.tsx","../../js/components/MainWindow/Time.tsx","../../js/components/Volume.tsx","../../js/components/MainWindow/MainVolume.tsx","../../js/components/MainWindow/index.tsx","../../js/components/PlaylistWindow/PlaylistResizeTarget.tsx","../../js/components/PlaylistWindow/PlaylistShade.tsx","../../js/components/PlaylistWindow/PlaylistMenuEntry.tsx","../../js/components/PlaylistWindow/PlaylistMenu.tsx","../../js/components/PlaylistWindow/AddMenu.tsx","../../js/components/PlaylistWindow/RemoveMenu.tsx","../../js/components/PlaylistWindow/SelectionMenu.tsx","../../js/components/PlaylistWindow/SortContextMenu.tsx","../../js/components/PlaylistWindow/MiscOptionsContextMenu.tsx","../../js/components/PlaylistWindow/MiscMenu.tsx","../../js/components/PlaylistWindow/ListMenu.tsx","../../js/components/PlaylistWindow/RunningTimeDisplay.tsx","../../js/components/PlaylistWindow/PlaylistActionArea.tsx","../../js/components/PlaylistWindow/TrackCell.tsx","../../js/components/PlaylistWindow/TrackTitle.tsx","../../js/components/PlaylistWindow/TrackList.tsx","../../js/components/VerticalSlider.tsx","../../js/components/PlaylistWindow/PlaylistScrollBar.tsx","../../js/components/PlaylistWindow/index.tsx","../../js/components/EqualizerWindow/Band.tsx","../../js/components/EqualizerWindow/EqOn.tsx","../../js/components/EqualizerWindow/EqAuto.tsx","../js/components/EqualizerWindow/spline.js","../../js/components/EqualizerWindow/EqGraph.tsx","../../js/components/EqualizerWindow/PresetsContextMenu.tsx","../../js/components/EqualizerWindow/EqTitleButtons.tsx","../../js/components/EqualizerWindow/EqualizerShade.tsx","../../js/components/EqualizerWindow/index.tsx","../../js/skinSelectors.ts","../../js/components/Css.tsx","../../js/components/ClipPaths.tsx","../../../node_modules/.pnpm/endianness@8.0.2/node_modules/endianness/endianness.js","../../../node_modules/.pnpm/byte-data@18.1.1/node_modules/byte-data/lib/int-parser.js","../../../node_modules/.pnpm/ieee754-buffer@2.0.0/node_modules/ieee754-buffer/index.js","../../../node_modules/.pnpm/byte-data@18.1.1/node_modules/byte-data/index.js","../../../node_modules/.pnpm/utf8-buffer@1.0.0/node_modules/utf8-buffer/index.js","../../../node_modules/.pnpm/riff-file@1.0.3/node_modules/riff-file/index.js","../../ani-cursor/dist/parser.js","../../ani-cursor/dist/index.js","../../js/components/Skin.tsx","../../js/components/App.tsx","../../js/hotkeys.ts","../../js/emitter.ts","../../js/Disposable.ts","../js/media/StereoBalanceNode.js","../../js/media/elementSource.ts","../../js/media/index.ts","../../js/webampLazy.tsx","../../js/mediaSession.ts","../../js/setImmediate.ts","../../../node_modules/.pnpm/jszip@3.10.1/node_modules/jszip/lib/support.js","../../../node_modules/.pnpm/jszip@3.10.1/node_modules/jszip/lib/readable-stream-browser.js","../../../node_modules/.pnpm/jszip@3.10.1/node_modules/jszip/lib/base64.js","../../../node_modules/.pnpm/jszip@3.10.1/node_modules/jszip/lib/nodejsUtils.js","../../../node_modules/.pnpm/jszip@3.10.1/node_modules/jszip/lib/external.js","../../../node_modules/.pnpm/lie@3.3.0/node_modules/lie/lib/browser.js","../../../node_modules/.pnpm/immediate@3.0.6/node_modules/immediate/lib/browser.js","../../../node_modules/.pnpm/jszip@3.10.1/node_modules/jszip/lib/utils.js","../../js/webamp.ts","../../../node_modules/.pnpm/butterchurn@3.0.0-beta.5/node_modules/butterchurn/dist/butterchurn.min.js","../../../node_modules/.pnpm/butterchurn-presets@3.0.0-beta.4/node_modules/butterchurn-presets/dist/base.js","../../js/webampWithButterchurn.ts","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/id3v2/FrameParser.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/id3v2/ID3v2Parser.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/id3v2/AbstractID3Parser.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/mpeg/ReplayGainDataFormat.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/mpeg/ExtendedLameHeader.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/mpeg/XingTag.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/mpeg/MpegParser.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/asf/GUID.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/asf/AsfUtil.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/asf/AsfObject.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/asf/AsfParser.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/dsdiff/DsdiffToken.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/dsdiff/DsdiffParser.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/aiff/AiffToken.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/iff/index.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/aiff/AiffParser.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/dsf/DsfChunk.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/dsf/DsfParser.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/ogg/vorbis/Vorbis.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/ogg/vorbis/VorbisDecoder.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/ogg/vorbis/VorbisStream.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/flac/FlacParser.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/ebml/types.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/matroska/MatroskaDtd.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/ebml/EbmlIterator.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/matroska/MatroskaParser.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/mp4/AtomToken.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/mp4/Atom.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/mp4/MP4Parser.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/musepack/sv8/StreamVersion8.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/musepack/MusepackConentError.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/musepack/sv8/MpcSv8Parser.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/musepack/sv7/BitReader.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/musepack/sv7/StreamVersion7.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/musepack/sv7/MpcSv7Parser.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/musepack/MusepackParser.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/ogg/opus/Opus.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/ogg/opus/OpusStream.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/ogg/speex/Speex.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/ogg/speex/SpeexStream.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/ogg/theora/Theora.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/ogg/theora/TheoraStream.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/ogg/OggToken.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/ogg/OggParser.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/wavpack/WavPackToken.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/wavpack/WavPackParser.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/riff/RiffChunk.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/wav/WaveChunk.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/wav/BwfChunk.js","../../../node_modules/.pnpm/music-metadata@11.6.0/node_modules/music-metadata/lib/wav/WaveParser.js"],"sourcesContent":["/*!\n\nJSZip v3.10.1 - A JavaScript class for generating and reading zip files\n<http://stuartk.com/jszip>\n\n(c) 2009-2016 Stuart Knightley <stuart [at] stuartk.com>\nDual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown.\n\nJSZip uses the library pako released under the MIT license :\nhttps://github.com/nodeca/pako/blob/main/LICENSE\n*/\n\n!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{(\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this).JSZip=e()}}(function(){return function s(a,o,h){function u(r,e){if(!o[r]){if(!a[r]){var t=\"function\"==typeof require&&require;if(!e&&t)return t(r,!0);if(l)return l(r,!0);var n=new Error(\"Cannot find module '\"+r+\"'\");throw n.code=\"MODULE_NOT_FOUND\",n}var i=o[r]={exports:{}};a[r][0].call(i.exports,function(e){var t=a[r][1][e];return u(t||e)},i,i.exports,s,a,o,h)}return o[r].exports}for(var l=\"function\"==typeof require&&require,e=0;e<h.length;e++)u(h[e]);return u}({1:[function(e,t,r){\"use strict\";var d=e(\"./utils\"),c=e(\"./support\"),p=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";r.encode=function(e){for(var t,r,n,i,s,a,o,h=[],u=0,l=e.length,f=l,c=\"string\"!==d.getTypeOf(e);u<e.length;)f=l-u,n=c?(t=e[u++],r=u<l?e[u++]:0,u<l?e[u++]:0):(t=e.charCodeAt(u++),r=u<l?e.charCodeAt(u++):0,u<l?e.charCodeAt(u++):0),i=t>>2,s=(3&t)<<4|r>>4,a=1<f?(15&r)<<2|n>>6:64,o=2<f?63&n:64,h.push(p.charAt(i)+p.charAt(s)+p.charAt(a)+p.charAt(o));return h.join(\"\")},r.decode=function(e){var t,r,n,i,s,a,o=0,h=0,u=\"data:\";if(e.substr(0,u.length)===u)throw new Error(\"Invalid base64 input, it looks like a data url.\");var l,f=3*(e=e.replace(/[^A-Za-z0-9+/=]/g,\"\")).length/4;if(e.charAt(e.length-1)===p.charAt(64)&&f--,e.charAt(e.length-2)===p.charAt(64)&&f--,f%1!=0)throw new Error(\"Invalid base64 input, bad content length.\");for(l=c.uint8array?new Uint8Array(0|f):new Array(0|f);o<e.length;)t=p.indexOf(e.charAt(o++))<<2|(i=p.indexOf(e.charAt(o++)))>>4,r=(15&i)<<4|(s=p.indexOf(e.charAt(o++)))>>2,n=(3&s)<<6|(a=p.indexOf(e.charAt(o++))),l[h++]=t,64!==s&&(l[h++]=r),64!==a&&(l[h++]=n);return l}},{\"./support\":30,\"./utils\":32}],2:[function(e,t,r){\"use strict\";var n=e(\"./external\"),i=e(\"./stream/DataWorker\"),s=e(\"./stream/Crc32Probe\"),a=e(\"./stream/DataLengthProbe\");function o(e,t,r,n,i){this.compressedSize=e,this.uncompressedSize=t,this.crc32=r,this.compression=n,this.compressedContent=i}o.prototype={getContentWorker:function(){var e=new i(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a(\"data_length\")),t=this;return e.on(\"end\",function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error(\"Bug : uncompressed data size mismatch\")}),e},getCompressedWorker:function(){return new i(n.Promise.resolve(this.compressedContent)).withStreamInfo(\"compressedSize\",this.compressedSize).withStreamInfo(\"uncompressedSize\",this.uncompressedSize).withStreamInfo(\"crc32\",this.crc32).withStreamInfo(\"compression\",this.compression)}},o.createWorkerFrom=function(e,t,r){return e.pipe(new s).pipe(new a(\"uncompressedSize\")).pipe(t.compressWorker(r)).pipe(new a(\"compressedSize\")).withStreamInfo(\"compression\",t)},t.exports=o},{\"./external\":6,\"./stream/Crc32Probe\":25,\"./stream/DataLengthProbe\":26,\"./stream/DataWorker\":27}],3:[function(e,t,r){\"use strict\";var n=e(\"./stream/GenericWorker\");r.STORE={magic:\"\\0\\0\",compressWorker:function(){return new n(\"STORE compression\")},uncompressWorker:function(){return new n(\"STORE decompression\")}},r.DEFLATE=e(\"./flate\")},{\"./flate\":7,\"./stream/GenericWorker\":28}],4:[function(e,t,r){\"use strict\";var n=e(\"./utils\");var o=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t){return void 0!==e&&e.length?\"string\"!==n.getTypeOf(e)?function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a<s;a++)e=e>>>8^i[255&(e^t[a])];return-1^e}(0|t,e,e.length,0):function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a<s;a++)e=e>>>8^i[255&(e^t.charCodeAt(a))];return-1^e}(0|t,e,e.length,0):0}},{\"./utils\":32}],5:[function(e,t,r){\"use strict\";r.base64=!1,r.binary=!1,r.dir=!1,r.createFolders=!0,r.date=null,r.compression=null,r.compressionOptions=null,r.comment=null,r.unixPermissions=null,r.dosPermissions=null},{}],6:[function(e,t,r){\"use strict\";var n=null;n=\"undefined\"!=typeof Promise?Promise:e(\"lie\"),t.exports={Promise:n}},{lie:37}],7:[function(e,t,r){\"use strict\";var n=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Uint32Array,i=e(\"pako\"),s=e(\"./utils\"),a=e(\"./stream/GenericWorker\"),o=n?\"uint8array\":\"array\";function h(e,t){a.call(this,\"FlateWorker/\"+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={}}r.magic=\"\\b\\0\",s.inherits(h,a),h.prototype.processChunk=function(e){this.meta=e.meta,null===this._pako&&this._createPako(),this._pako.push(s.transformTo(o,e.data),!1)},h.prototype.flush=function(){a.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},h.prototype.cleanUp=function(){a.prototype.cleanUp.call(this),this._pako=null},h.prototype._createPako=function(){this._pako=new i[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var t=this;this._pako.onData=function(e){t.push({data:e,meta:t.meta})}},r.compressWorker=function(e){return new h(\"Deflate\",e)},r.uncompressWorker=function(){return new h(\"Inflate\",{})}},{\"./stream/GenericWorker\":28,\"./utils\":32,pako:38}],8:[function(e,t,r){\"use strict\";function A(e,t){var r,n=\"\";for(r=0;r<t;r++)n+=String.fromCharCode(255&e),e>>>=8;return n}function n(e,t,r,n,i,s){var a,o,h=e.file,u=e.compression,l=s!==O.utf8encode,f=I.transformTo(\"string\",s(h.name)),c=I.transformTo(\"string\",O.utf8encode(h.name)),d=h.comment,p=I.transformTo(\"string\",s(d)),m=I.transformTo(\"string\",O.utf8encode(d)),_=c.length!==h.name.length,g=m.length!==d.length,b=\"\",v=\"\",y=\"\",w=h.dir,k=h.date,x={crc32:0,compressedSize:0,uncompressedSize:0};t&&!r||(x.crc32=e.crc32,x.compressedSize=e.compressedSize,x.uncompressedSize=e.uncompressedSize);var S=0;t&&(S|=8),l||!_&&!g||(S|=2048);var z=0,C=0;w&&(z|=16),\"UNIX\"===i?(C=798,z|=function(e,t){var r=e;return e||(r=t?16893:33204),(65535&r)<<16}(h.unixPermissions,w)):(C=20,z|=function(e){return 63&(e||0)}(h.dosPermissions)),a=k.getUTCHours(),a<<=6,a|=k.getUTCMinutes(),a<<=5,a|=k.getUTCSeconds()/2,o=k.getUTCFullYear()-1980,o<<=4,o|=k.getUTCMonth()+1,o<<=5,o|=k.getUTCDate(),_&&(v=A(1,1)+A(B(f),4)+c,b+=\"up\"+A(v.length,2)+v),g&&(y=A(1,1)+A(B(p),4)+m,b+=\"uc\"+A(y.length,2)+y);var E=\"\";return E+=\"\\n\\0\",E+=A(S,2),E+=u.magic,E+=A(a,2),E+=A(o,2),E+=A(x.crc32,4),E+=A(x.compressedSize,4),E+=A(x.uncompressedSize,4),E+=A(f.length,2),E+=A(b.length,2),{fileRecord:R.LOCAL_FILE_HEADER+E+f+b,dirRecord:R.CENTRAL_FILE_HEADER+A(C,2)+E+A(p.length,2)+\"\\0\\0\\0\\0\"+A(z,4)+A(n,4)+f+b+p}}var I=e(\"../utils\"),i=e(\"../stream/GenericWorker\"),O=e(\"../utf8\"),B=e(\"../crc32\"),R=e(\"../signature\");function s(e,t,r,n){i.call(this,\"ZipFileWorker\"),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=r,this.encodeFileName=n,this.streamFiles=e,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}I.inherits(s,i),s.prototype.push=function(e){var t=e.meta.percent||0,r=this.entriesCount,n=this._sources.length;this.accumulate?this.contentBuffer.push(e):(this.bytesWritten+=e.data.length,i.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:r?(t+100*(r-n-1))/r:100}}))},s.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten,this.currentFile=e.file.name;var t=this.streamFiles&&!e.file.dir;if(t){var r=n(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:r.fileRecord,meta:{percent:0}})}else this.accumulate=!0},s.prototype.closedSource=function(e){this.accumulate=!1;var t=this.streamFiles&&!e.file.dir,r=n(e,t,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(r.dirRecord),t)this.push({data:function(e){return R.DATA_DESCRIPTOR+A(e.crc32,4)+A(e.compressedSize,4)+A(e.uncompressedSize,4)}(e),meta:{percent:100}});else for(this.push({data:r.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},s.prototype.flush=function(){for(var e=this.bytesWritten,t=0;t<this.dirRecords.length;t++)this.push({data:this.dirRecords[t],meta:{percent:100}});var r=this.bytesWritten-e,n=function(e,t,r,n,i){var s=I.transformTo(\"string\",i(n));return R.CENTRAL_DIRECTORY_END+\"\\0\\0\\0\\0\"+A(e,2)+A(e,2)+A(t,4)+A(r,4)+A(s.length,2)+s}(this.dirRecords.length,r,e,this.zipComment,this.encodeFileName);this.push({data:n,meta:{percent:100}})},s.prototype.prepareNextSource=function(){this.previous=this._sources.shift(),this.openedSource(this.previous.streamInfo),this.isPaused?this.previous.pause():this.previous.resume()},s.prototype.registerPrevious=function(e){this._sources.push(e);var t=this;return e.on(\"data\",function(e){t.processChunk(e)}),e.on(\"end\",function(){t.closedSource(t.previous.streamInfo),t._sources.length?t.prepareNextSource():t.end()}),e.on(\"error\",function(e){t.error(e)}),this},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(!this.previous&&this._sources.length?(this.prepareNextSource(),!0):this.previous||this._sources.length||this.generatedError?void 0:(this.end(),!0))},s.prototype.error=function(e){var t=this._sources;if(!i.prototype.error.call(this,e))return!1;for(var r=0;r<t.length;r++)try{t[r].error(e)}catch(e){}return!0},s.prototype.lock=function(){i.prototype.lock.call(this);for(var e=this._sources,t=0;t<e.length;t++)e[t].lock()},t.exports=s},{\"../crc32\":4,\"../signature\":23,\"../stream/GenericWorker\":28,\"../utf8\":31,\"../utils\":32}],9:[function(e,t,r){\"use strict\";var u=e(\"../compressions\"),n=e(\"./ZipFileWorker\");r.generateWorker=function(e,a,t){var o=new n(a.streamFiles,t,a.platform,a.encodeFileName),h=0;try{e.forEach(function(e,t){h++;var r=function(e,t){var r=e||t,n=u[r];if(!n)throw new Error(r+\" is not a valid compression method !\");return n}(t.options.compression,a.compression),n=t.options.compressionOptions||a.compressionOptions||{},i=t.dir,s=t.date;t._compressWorker(r,n).withStreamInfo(\"file\",{name:e,dir:i,date:s,comment:t.comment||\"\",unixPermissions:t.unixPermissions,dosPermissions:t.dosPermissions}).pipe(o)}),o.entriesCount=h}catch(e){o.error(e)}return o}},{\"../compressions\":3,\"./ZipFileWorker\":8}],10:[function(e,t,r){\"use strict\";function n(){if(!(this instanceof n))return new n;if(arguments.length)throw new Error(\"The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.\");this.files=Object.create(null),this.comment=null,this.root=\"\",this.clone=function(){var e=new n;for(var t in this)\"function\"!=typeof this[t]&&(e[t]=this[t]);return e}}(n.prototype=e(\"./object\")).loadAsync=e(\"./load\"),n.support=e(\"./support\"),n.defaults=e(\"./defaults\"),n.version=\"3.10.1\",n.loadAsync=function(e,t){return(new n).loadAsync(e,t)},n.external=e(\"./external\"),t.exports=n},{\"./defaults\":5,\"./external\":6,\"./load\":11,\"./object\":15,\"./support\":30}],11:[function(e,t,r){\"use strict\";var u=e(\"./utils\"),i=e(\"./external\"),n=e(\"./utf8\"),s=e(\"./zipEntries\"),a=e(\"./stream/Crc32Probe\"),l=e(\"./nodejsUtils\");function f(n){return new i.Promise(function(e,t){var r=n.decompressed.getContentWorker().pipe(new a);r.on(\"error\",function(e){t(e)}).on(\"end\",function(){r.streamInfo.crc32!==n.decompressed.crc32?t(new Error(\"Corrupted zip : CRC32 mismatch\")):e()}).resume()})}t.exports=function(e,o){var h=this;return o=u.extend(o||{},{base64:!1,checkCRC32:!1,optimizedBinaryString:!1,createFolders:!1,decodeFileName:n.utf8decode}),l.isNode&&l.isStream(e)?i.Promise.reject(new Error(\"JSZip can't accept a stream when loading a zip file.\")):u.prepareContent(\"the loaded zip file\",e,!0,o.optimizedBinaryString,o.base64).then(function(e){var t=new s(o);return t.load(e),t}).then(function(e){var t=[i.Promise.resolve(e)],r=e.files;if(o.checkCRC32)for(var n=0;n<r.length;n++)t.push(f(r[n]));return i.Promise.all(t)}).then(function(e){for(var t=e.shift(),r=t.files,n=0;n<r.length;n++){var i=r[n],s=i.fileNameStr,a=u.resolve(i.fileNameStr);h.file(a,i.decompressed,{binary:!0,optimizedBinaryString:!0,date:i.date,dir:i.dir,comment:i.fileCommentStr.length?i.fileCommentStr:null,unixPermissions:i.unixPermissions,dosPermissions:i.dosPermissions,createFolders:o.createFolders}),i.dir||(h.file(a).unsafeOriginalName=s)}return t.zipComment.length&&(h.comment=t.zipComment),h})}},{\"./external\":6,\"./nodejsUtils\":14,\"./stream/Crc32Probe\":25,\"./utf8\":31,\"./utils\":32,\"./zipEntries\":33}],12:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"../stream/GenericWorker\");function s(e,t){i.call(this,\"Nodejs stream input adapter for \"+e),this._upstreamEnded=!1,this._bindStream(t)}n.inherits(s,i),s.prototype._bindStream=function(e){var t=this;(this._stream=e).pause(),e.on(\"data\",function(e){t.push({data:e,meta:{percent:0}})}).on(\"error\",function(e){t.isPaused?this.generatedError=e:t.error(e)}).on(\"end\",function(){t.isPaused?t._upstreamEnded=!0:t.end()})},s.prototype.pause=function(){return!!i.prototype.pause.call(this)&&(this._stream.pause(),!0)},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(this._upstreamEnded?this.end():this._stream.resume(),!0)},t.exports=s},{\"../stream/GenericWorker\":28,\"../utils\":32}],13:[function(e,t,r){\"use strict\";var i=e(\"readable-stream\").Readable;function n(e,t,r){i.call(this,t),this._helper=e;var n=this;e.on(\"data\",function(e,t){n.push(e)||n._helper.pause(),r&&r(t)}).on(\"error\",function(e){n.emit(\"error\",e)}).on(\"end\",function(){n.push(null)})}e(\"../utils\").inherits(n,i),n.prototype._read=function(){this._helper.resume()},t.exports=n},{\"../utils\":32,\"readable-stream\":16}],14:[function(e,t,r){\"use strict\";t.exports={isNode:\"undefined\"!=typeof Buffer,newBufferFrom:function(e,t){if(Buffer.from&&Buffer.from!==Uint8Array.from)return Buffer.from(e,t);if(\"number\"==typeof e)throw new Error('The \"data\" argument must not be a number');return new Buffer(e,t)},allocBuffer:function(e){if(Buffer.alloc)return Buffer.alloc(e);var t=new Buffer(e);return t.fill(0),t},isBuffer:function(e){return Buffer.isBuffer(e)},isStream:function(e){return e&&\"function\"==typeof e.on&&\"function\"==typeof e.pause&&\"function\"==typeof e.resume}}},{}],15:[function(e,t,r){\"use strict\";function s(e,t,r){var n,i=u.getTypeOf(t),s=u.extend(r||{},f);s.date=s.date||new Date,null!==s.compression&&(s.compression=s.compression.toUpperCase()),\"string\"==typeof s.unixPermissions&&(s.unixPermissions=parseInt(s.unixPermissions,8)),s.unixPermissions&&16384&s.unixPermissions&&(s.dir=!0),s.dosPermissions&&16&s.dosPermissions&&(s.dir=!0),s.dir&&(e=g(e)),s.createFolders&&(n=_(e))&&b.call(this,n,!0);var a=\"string\"===i&&!1===s.binary&&!1===s.base64;r&&void 0!==r.binary||(s.binary=!a),(t instanceof c&&0===t.uncompressedSize||s.dir||!t||0===t.length)&&(s.base64=!1,s.binary=!0,t=\"\",s.compression=\"STORE\",i=\"string\");var o=null;o=t instanceof c||t instanceof l?t:p.isNode&&p.isStream(t)?new m(e,t):u.prepareContent(e,t,s.binary,s.optimizedBinaryString,s.base64);var h=new d(e,o,s);this.files[e]=h}var i=e(\"./utf8\"),u=e(\"./utils\"),l=e(\"./stream/GenericWorker\"),a=e(\"./stream/StreamHelper\"),f=e(\"./defaults\"),c=e(\"./compressedObject\"),d=e(\"./zipObject\"),o=e(\"./generate\"),p=e(\"./nodejsUtils\"),m=e(\"./nodejs/NodejsStreamInputAdapter\"),_=function(e){\"/\"===e.slice(-1)&&(e=e.substring(0,e.length-1));var t=e.lastIndexOf(\"/\");return 0<t?e.substring(0,t):\"\"},g=function(e){return\"/\"!==e.slice(-1)&&(e+=\"/\"),e},b=function(e,t){return t=void 0!==t?t:f.createFolders,e=g(e),this.files[e]||s.call(this,e,null,{dir:!0,createFolders:t}),this.files[e]};function h(e){return\"[object RegExp]\"===Object.prototype.toString.call(e)}var n={load:function(){throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\")},forEach:function(e){var t,r,n;for(t in this.files)n=this.files[t],(r=t.slice(this.root.length,t.length))&&t.slice(0,this.root.length)===this.root&&e(r,n)},filter:function(r){var n=[];return this.forEach(function(e,t){r(e,t)&&n.push(t)}),n},file:function(e,t,r){if(1!==arguments.length)return e=this.root+e,s.call(this,e,t,r),this;if(h(e)){var n=e;return this.filter(function(e,t){return!t.dir&&n.test(e)})}var i=this.files[this.root+e];return i&&!i.dir?i:null},folder:function(r){if(!r)return this;if(h(r))return this.filter(function(e,t){return t.dir&&r.test(e)});var e=this.root+r,t=b.call(this,e),n=this.clone();return n.root=t.name,n},remove:function(r){r=this.root+r;var e=this.files[r];if(e||(\"/\"!==r.slice(-1)&&(r+=\"/\"),e=this.files[r]),e&&!e.dir)delete this.files[r];else for(var t=this.filter(function(e,t){return t.name.slice(0,r.length)===r}),n=0;n<t.length;n++)delete this.files[t[n].name];return this},generate:function(){throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\")},generateInternalStream:function(e){var t,r={};try{if((r=u.extend(e||{},{streamFiles:!1,compression:\"STORE\",compressionOptions:null,type:\"\",platform:\"DOS\",comment:null,mimeType:\"application/zip\",encodeFileName:i.utf8encode})).type=r.type.toLowerCase(),r.compression=r.compression.toUpperCase(),\"binarystring\"===r.type&&(r.type=\"string\"),!r.type)throw new Error(\"No output type specified.\");u.checkSupport(r.type),\"darwin\"!==r.platform&&\"freebsd\"!==r.platform&&\"linux\"!==r.platform&&\"sunos\"!==r.platform||(r.platform=\"UNIX\"),\"win32\"===r.platform&&(r.platform=\"DOS\");var n=r.comment||this.comment||\"\";t=o.generateWorker(this,r,n)}catch(e){(t=new l(\"error\")).error(e)}return new a(t,r.type||\"string\",r.mimeType)},generateAsync:function(e,t){return this.generateInternalStream(e).accumulate(t)},generateNodeStream:function(e,t){return(e=e||{}).type||(e.type=\"nodebuffer\"),this.generateInternalStream(e).toNodejsStream(t)}};t.exports=n},{\"./compressedObject\":2,\"./defaults\":5,\"./generate\":9,\"./nodejs/NodejsStreamInputAdapter\":12,\"./nodejsUtils\":14,\"./stream/GenericWorker\":28,\"./stream/StreamHelper\":29,\"./utf8\":31,\"./utils\":32,\"./zipObject\":35}],16:[function(e,t,r){\"use strict\";t.exports=e(\"stream\")},{stream:void 0}],17:[function(e,t,r){\"use strict\";var n=e(\"./DataReader\");function i(e){n.call(this,e);for(var t=0;t<this.data.length;t++)e[t]=255&e[t]}e(\"../utils\").inherits(i,n),i.prototype.byteAt=function(e){return this.data[this.zero+e]},i.prototype.lastIndexOfSignature=function(e){for(var t=e.charCodeAt(0),r=e.charCodeAt(1),n=e.charCodeAt(2),i=e.charCodeAt(3),s=this.length-4;0<=s;--s)if(this.data[s]===t&&this.data[s+1]===r&&this.data[s+2]===n&&this.data[s+3]===i)return s-this.zero;return-1},i.prototype.readAndCheckSignature=function(e){var t=e.charCodeAt(0),r=e.charCodeAt(1),n=e.charCodeAt(2),i=e.charCodeAt(3),s=this.readData(4);return t===s[0]&&r===s[1]&&n===s[2]&&i===s[3]},i.prototype.readData=function(e){if(this.checkOffset(e),0===e)return[];var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./DataReader\":18}],18:[function(e,t,r){\"use strict\";var n=e(\"../utils\");function i(e){this.data=e,this.length=e.length,this.index=0,this.zero=0}i.prototype={checkOffset:function(e){this.checkIndex(this.index+e)},checkIndex:function(e){if(this.length<this.zero+e||e<0)throw new Error(\"End of data reached (data length = \"+this.length+\", asked index = \"+e+\"). Corrupted zip ?\")},setIndex:function(e){this.checkIndex(e),this.index=e},skip:function(e){this.setIndex(this.index+e)},byteAt:function(){},readInt:function(e){var t,r=0;for(this.checkOffset(e),t=this.index+e-1;t>=this.index;t--)r=(r<<8)+this.byteAt(t);return this.index+=e,r},readString:function(e){return n.transformTo(\"string\",this.readData(e))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},t.exports=i},{\"../utils\":32}],19:[function(e,t,r){\"use strict\";var n=e(\"./Uint8ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./Uint8ArrayReader\":21}],20:[function(e,t,r){\"use strict\";var n=e(\"./DataReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},i.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},i.prototype.readAndCheckSignature=function(e){return e===this.readData(4)},i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./DataReader\":18}],21:[function(e,t,r){\"use strict\";var n=e(\"./ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){if(this.checkOffset(e),0===e)return new Uint8Array(0);var t=this.data.subarray(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./ArrayReader\":17}],22:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"../support\"),s=e(\"./ArrayReader\"),a=e(\"./StringReader\"),o=e(\"./NodeBufferReader\"),h=e(\"./Uint8ArrayReader\");t.exports=function(e){var t=n.getTypeOf(e);return n.checkSupport(t),\"string\"!==t||i.uint8array?\"nodebuffer\"===t?new o(e):i.uint8array?new h(n.transformTo(\"uint8array\",e)):new s(n.transformTo(\"array\",e)):new a(e)}},{\"../support\":30,\"../utils\":32,\"./ArrayReader\":17,\"./NodeBufferReader\":19,\"./StringReader\":20,\"./Uint8ArrayReader\":21}],23:[function(e,t,r){\"use strict\";r.LOCAL_FILE_HEADER=\"PK\u0003\u0004\",r.CENTRAL_FILE_HEADER=\"PK\u0001\u0002\",r.CENTRAL_DIRECTORY_END=\"PK\u0005\u0006\",r.ZIP64_CENTRAL_DIRECTORY_LOCATOR=\"PK\u0006\u0007\",r.ZIP64_CENTRAL_DIRECTORY_END=\"PK\u0006\u0006\",r.DATA_DESCRIPTOR=\"PK\u0007\\b\"},{}],24:[function(e,t,r){\"use strict\";var n=e(\"./GenericWorker\"),i=e(\"../utils\");function s(e){n.call(this,\"ConvertWorker to \"+e),this.destType=e}i.inherits(s,n),s.prototype.processChunk=function(e){this.push({data:i.transformTo(this.destType,e.data),meta:e.meta})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],25:[function(e,t,r){\"use strict\";var n=e(\"./GenericWorker\"),i=e(\"../crc32\");function s(){n.call(this,\"Crc32Probe\"),this.withStreamInfo(\"crc32\",0)}e(\"../utils\").inherits(s,n),s.prototype.processChunk=function(e){this.streamInfo.crc32=i(e.data,this.streamInfo.crc32||0),this.push(e)},t.exports=s},{\"../crc32\":4,\"../utils\":32,\"./GenericWorker\":28}],26:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataLengthProbe for \"+e),this.propName=e,this.withStreamInfo(e,0)}n.inherits(s,i),s.prototype.processChunk=function(e){if(e){var t=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=t+e.data.length}i.prototype.processChunk.call(this,e)},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],27:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataWorker\");var t=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type=\"\",this._tickScheduled=!1,e.then(function(e){t.dataIsReady=!0,t.data=e,t.max=e&&e.length||0,t.type=n.getTypeOf(e),t.isPaused||t._tickAndRepeat()},function(e){t.error(e)})}n.inherits(s,i),s.prototype.cleanUp=function(){i.prototype.cleanUp.call(this),this.data=null},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,n.delay(this._tickAndRepeat,[],this)),!0)},s.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(n.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},s.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var e=null,t=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case\"string\":e=this.data.substring(this.index,t);break;case\"uint8array\":e=this.data.subarray(this.index,t);break;case\"array\":case\"nodebuffer\":e=this.data.slice(this.index,t)}return this.index=t,this.push({data:e,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],28:[function(e,t,r){\"use strict\";function n(e){this.name=e||\"default\",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}n.prototype={push:function(e){this.emit(\"data\",e)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit(\"end\"),this.cleanUp(),this.isFinished=!0}catch(e){this.emit(\"error\",e)}return!0},error:function(e){return!this.isFinished&&(this.isPaused?this.generatedError=e:(this.isFinished=!0,this.emit(\"error\",e),this.previous&&this.previous.error(e),this.cleanUp()),!0)},on:function(e,t){return this._listeners[e].push(t),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(e,t){if(this._listeners[e])for(var r=0;r<this._listeners[e].length;r++)this._listeners[e][r].call(this,t)},pipe:function(e){return e.registerPrevious(this)},registerPrevious:function(e){if(this.isLocked)throw new Error(\"The stream '\"+this+\"' has already been used.\");this.streamInfo=e.streamInfo,this.mergeStreamInfo(),this.previous=e;var t=this;return e.on(\"data\",function(e){t.processChunk(e)}),e.on(\"end\",function(){t.end()}),e.on(\"error\",function(e){t.error(e)}),this},pause:function(){return!this.isPaused&&!this.isFinished&&(this.isPaused=!0,this.previous&&this.previous.pause(),!0)},resume:function(){if(!this.isPaused||this.isFinished)return!1;var e=this.isPaused=!1;return this.generatedError&&(this.error(this.generatedError),e=!0),this.previous&&this.previous.resume(),!e},flush:function(){},processChunk:function(e){this.push(e)},withStreamInfo:function(e,t){return this.extraStreamInfo[e]=t,this.mergeStreamInfo(),this},mergeStreamInfo:function(){for(var e in this.extraStreamInfo)Object.prototype.hasOwnProperty.call(this.extraStreamInfo,e)&&(this.streamInfo[e]=this.extraStreamInfo[e])},lock:function(){if(this.isLocked)throw new Error(\"The stream '\"+this+\"' has already been used.\");this.isLocked=!0,this.previous&&this.previous.lock()},toString:function(){var e=\"Worker \"+this.name;return this.previous?this.previous+\" -> \"+e:e}},t.exports=n},{}],29:[function(e,t,r){\"use strict\";var h=e(\"../utils\"),i=e(\"./ConvertWorker\"),s=e(\"./GenericWorker\"),u=e(\"../base64\"),n=e(\"../support\"),a=e(\"../external\"),o=null;if(n.nodestream)try{o=e(\"../nodejs/NodejsStreamOutputAdapter\")}catch(e){}function l(e,o){return new a.Promise(function(t,r){var n=[],i=e._internalType,s=e._outputType,a=e._mimeType;e.on(\"data\",function(e,t){n.push(e),o&&o(t)}).on(\"error\",function(e){n=[],r(e)}).on(\"end\",function(){try{var e=function(e,t,r){switch(e){case\"blob\":return h.newBlob(h.transformTo(\"arraybuffer\",t),r);case\"base64\":return u.encode(t);default:return h.transformTo(e,t)}}(s,function(e,t){var r,n=0,i=null,s=0;for(r=0;r<t.length;r++)s+=t[r].length;switch(e){case\"string\":return t.join(\"\");case\"array\":return Array.prototype.concat.apply([],t);case\"uint8array\":for(i=new Uint8Array(s),r=0;r<t.length;r++)i.set(t[r],n),n+=t[r].length;return i;case\"nodebuffer\":return Buffer.concat(t);default:throw new Error(\"concat : unsupported type '\"+e+\"'\")}}(i,n),a);t(e)}catch(e){r(e)}n=[]}).resume()})}function f(e,t,r){var n=t;switch(t){case\"blob\":case\"arraybuffer\":n=\"uint8array\";break;case\"base64\":n=\"string\"}try{this._internalType=n,this._outputType=t,this._mimeType=r,h.checkSupport(n),this._worker=e.pipe(new i(n)),e.lock()}catch(e){this._worker=new s(\"error\"),this._worker.error(e)}}f.prototype={accumulate:function(e){return l(this,e)},on:function(e,t){var r=this;return\"data\"===e?this._worker.on(e,function(e){t.call(r,e.data,e.meta)}):this._worker.on(e,function(){h.delay(t,arguments,r)}),this},resume:function(){return h.delay(this._worker.resume,[],this._worker),this},pause:function(){return this._worker.pause(),this},toNodejsStream:function(e){if(h.checkSupport(\"nodestream\"),\"nodebuffer\"!==this._outputType)throw new Error(this._outputType+\" is not supported by this method\");return new o(this,{objectMode:\"nodebuffer\"!==this._outputType},e)}},t.exports=f},{\"../base64\":1,\"../external\":6,\"../nodejs/NodejsStreamOutputAdapter\":13,\"../support\":30,\"../utils\":32,\"./ConvertWorker\":24,\"./GenericWorker\":28}],30:[function(e,t,r){\"use strict\";if(r.base64=!0,r.array=!0,r.string=!0,r.arraybuffer=\"undefined\"!=typeof ArrayBuffer&&\"undefined\"!=typeof Uint8Array,r.nodebuffer=\"undefined\"!=typeof Buffer,r.uint8array=\"undefined\"!=typeof Uint8Array,\"undefined\"==typeof ArrayBuffer)r.blob=!1;else{var n=new ArrayBuffer(0);try{r.blob=0===new Blob([n],{type:\"application/zip\"}).size}catch(e){try{var i=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);i.append(n),r.blob=0===i.getBlob(\"application/zip\").size}catch(e){r.blob=!1}}}try{r.nodestream=!!e(\"readable-stream\").Readable}catch(e){r.nodestream=!1}},{\"readable-stream\":16}],31:[function(e,t,s){\"use strict\";for(var o=e(\"./utils\"),h=e(\"./support\"),r=e(\"./nodejsUtils\"),n=e(\"./stream/GenericWorker\"),u=new Array(256),i=0;i<256;i++)u[i]=252<=i?6:248<=i?5:240<=i?4:224<=i?3:192<=i?2:1;u[254]=u[254]=1;function a(){n.call(this,\"utf-8 decode\"),this.leftOver=null}function l(){n.call(this,\"utf-8 encode\")}s.utf8encode=function(e){return h.nodebuffer?r.newBufferFrom(e,\"utf-8\"):function(e){var t,r,n,i,s,a=e.length,o=0;for(i=0;i<a;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),o+=r<128?1:r<2048?2:r<65536?3:4;for(t=h.uint8array?new Uint8Array(o):new Array(o),i=s=0;s<o;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),r<128?t[s++]=r:(r<2048?t[s++]=192|r>>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t}(e)},s.utf8decode=function(e){return h.nodebuffer?o.transformTo(\"nodebuffer\",e).toString(\"utf-8\"):function(e){var t,r,n,i,s=e.length,a=new Array(2*s);for(t=r=0;t<s;)if((n=e[t++])<128)a[r++]=n;else if(4<(i=u[n]))a[r++]=65533,t+=i-1;else{for(n&=2===i?31:3===i?15:7;1<i&&t<s;)n=n<<6|63&e[t++],i--;1<i?a[r++]=65533:n<65536?a[r++]=n:(n-=65536,a[r++]=55296|n>>10&1023,a[r++]=56320|1023&n)}return a.length!==r&&(a.subarray?a=a.subarray(0,r):a.length=r),o.applyFromCharCode(a)}(e=o.transformTo(h.uint8array?\"uint8array\":\"array\",e))},o.inherits(a,n),a.prototype.processChunk=function(e){var t=o.transformTo(h.uint8array?\"uint8array\":\"array\",e.data);if(this.leftOver&&this.leftOver.length){if(h.uint8array){var r=t;(t=new Uint8Array(r.length+this.leftOver.length)).set(this.leftOver,0),t.set(r,this.leftOver.length)}else t=this.leftOver.concat(t);this.leftOver=null}var n=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}(t),i=t;n!==t.length&&(h.uint8array?(i=t.subarray(0,n),this.leftOver=t.subarray(n,t.length)):(i=t.slice(0,n),this.leftOver=t.slice(n,t.length))),this.push({data:s.utf8decode(i),meta:e.meta})},a.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:s.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},s.Utf8DecodeWorker=a,o.inherits(l,n),l.prototype.processChunk=function(e){this.push({data:s.utf8encode(e.data),meta:e.meta})},s.Utf8EncodeWorker=l},{\"./nodejsUtils\":14,\"./stream/GenericWorker\":28,\"./support\":30,\"./utils\":32}],32:[function(e,t,a){\"use strict\";var o=e(\"./support\"),h=e(\"./base64\"),r=e(\"./nodejsUtils\"),u=e(\"./external\");function n(e){return e}function l(e,t){for(var r=0;r<e.length;++r)t[r]=255&e.charCodeAt(r);return t}e(\"setimmediate\"),a.newBlob=function(t,r){a.checkSupport(\"blob\");try{return new Blob([t],{type:r})}catch(e){try{var n=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);return n.append(t),n.getBlob(r)}catch(e){throw new Error(\"Bug : can't construct the Blob.\")}}};var i={stringifyByChunk:function(e,t,r){var n=[],i=0,s=e.length;if(s<=r)return String.fromCharCode.apply(null,e);for(;i<s;)\"array\"===t||\"nodebuffer\"===t?n.push(String.fromCharCode.apply(null,e.slice(i,Math.min(i+r,s)))):n.push(String.fromCharCode.apply(null,e.subarray(i,Math.min(i+r,s)))),i+=r;return n.join(\"\")},stringifyByChar:function(e){for(var t=\"\",r=0;r<e.length;r++)t+=String.fromCharCode(e[r]);return t},applyCanBeUsed:{uint8array:function(){try{return o.uint8array&&1===String.fromCharCode.apply(null,new Uint8Array(1)).length}catch(e){return!1}}(),nodebuffer:function(){try{return o.nodebuffer&&1===String.fromCharCode.apply(null,r.allocBuffer(1)).length}catch(e){return!1}}()}};function s(e){var t=65536,r=a.getTypeOf(e),n=!0;if(\"uint8array\"===r?n=i.applyCanBeUsed.uint8array:\"nodebuffer\"===r&&(n=i.applyCanBeUsed.nodebuffer),n)for(;1<t;)try{return i.stringifyByChunk(e,r,t)}catch(e){t=Math.floor(t/2)}return i.stringifyByChar(e)}function f(e,t){for(var r=0;r<e.length;r++)t[r]=e[r];return t}a.applyFromCharCode=s;var c={};c.string={string:n,array:function(e){return l(e,new Array(e.length))},arraybuffer:function(e){return c.string.uint8array(e).buffer},uint8array:function(e){return l(e,new Uint8Array(e.length))},nodebuffer:function(e){return l(e,r.allocBuffer(e.length))}},c.array={string:s,array:n,arraybuffer:function(e){return new Uint8Array(e).buffer},uint8array:function(e){return new Uint8Array(e)},nodebuffer:function(e){return r.newBufferFrom(e)}},c.arraybuffer={string:function(e){return s(new Uint8Array(e))},array:function(e){return f(new Uint8Array(e),new Array(e.byteLength))},arraybuffer:n,uint8array:function(e){return new Uint8Array(e)},nodebuffer:function(e){return r.newBufferFrom(new Uint8Array(e))}},c.uint8array={string:s,array:function(e){return f(e,new Array(e.length))},arraybuffer:function(e){return e.buffer},uint8array:n,nodebuffer:function(e){return r.newBufferFrom(e)}},c.nodebuffer={string:s,array:function(e){return f(e,new Array(e.length))},arraybuffer:function(e){return c.nodebuffer.uint8array(e).buffer},uint8array:function(e){return f(e,new Uint8Array(e.length))},nodebuffer:n},a.transformTo=function(e,t){if(t=t||\"\",!e)return t;a.checkSupport(e);var r=a.getTypeOf(t);return c[r][e](t)},a.resolve=function(e){for(var t=e.split(\"/\"),r=[],n=0;n<t.length;n++){var i=t[n];\".\"===i||\"\"===i&&0!==n&&n!==t.length-1||(\"..\"===i?r.pop():r.push(i))}return r.join(\"/\")},a.getTypeOf=function(e){return\"string\"==typeof e?\"string\":\"[object Array]\"===Object.prototype.toString.call(e)?\"array\":o.nodebuffer&&r.isBuffer(e)?\"nodebuffer\":o.uint8array&&e instanceof Uint8Array?\"uint8array\":o.arraybuffer&&e instanceof ArrayBuffer?\"arraybuffer\":void 0},a.checkSupport=function(e){if(!o[e.toLowerCase()])throw new Error(e+\" is not supported by this platform\")},a.MAX_VALUE_16BITS=65535,a.MAX_VALUE_32BITS=-1,a.pretty=function(e){var t,r,n=\"\";for(r=0;r<(e||\"\").length;r++)n+=\"\\\\x\"+((t=e.charCodeAt(r))<16?\"0\":\"\")+t.toString(16).toUpperCase();return n},a.delay=function(e,t,r){setImmediate(function(){e.apply(r||null,t||[])})},a.inherits=function(e,t){function r(){}r.prototype=t.prototype,e.prototype=new r},a.extend=function(){var e,t,r={};for(e=0;e<arguments.length;e++)for(t in arguments[e])Object.prototype.hasOwnProperty.call(arguments[e],t)&&void 0===r[t]&&(r[t]=arguments[e][t]);return r},a.prepareContent=function(r,e,n,i,s){return u.Promise.resolve(e).then(function(n){return o.blob&&(n instanceof Blob||-1!==[\"[object File]\",\"[object Blob]\"].indexOf(Object.prototype.toString.call(n)))&&\"undefined\"!=typeof FileReader?new u.Promise(function(t,r){var e=new FileReader;e.onload=function(e){t(e.target.result)},e.onerror=function(e){r(e.target.error)},e.readAsArrayBuffer(n)}):n}).then(function(e){var t=a.getTypeOf(e);return t?(\"arraybuffer\"===t?e=a.transformTo(\"uint8array\",e):\"string\"===t&&(s?e=h.decode(e):n&&!0!==i&&(e=function(e){return l(e,o.uint8array?new Uint8Array(e.length):new Array(e.length))}(e))),e):u.Promise.reject(new Error(\"Can't read the data of '\"+r+\"'. Is it in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?\"))})}},{\"./base64\":1,\"./external\":6,\"./nodejsUtils\":14,\"./support\":30,setimmediate:54}],33:[function(e,t,r){\"use strict\";var n=e(\"./reader/readerFor\"),i=e(\"./utils\"),s=e(\"./signature\"),a=e(\"./zipEntry\"),o=e(\"./support\");function h(e){this.files=[],this.loadOptions=e}h.prototype={checkSignature:function(e){if(!this.reader.readAndCheckSignature(e)){this.reader.index-=4;var t=this.reader.readString(4);throw new Error(\"Corrupted zip or bug: unexpected signature (\"+i.pretty(t)+\", expected \"+i.pretty(e)+\")\")}},isSignature:function(e,t){var r=this.reader.index;this.reader.setIndex(e);var n=this.reader.readString(4)===t;return this.reader.setIndex(r),n},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2);var e=this.reader.readData(this.zipCommentLength),t=o.uint8array?\"uint8array\":\"array\",r=i.transformTo(t,e);this.zipComment=this.loadOptions.decodeFileName(r)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.reader.skip(4),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};for(var e,t,r,n=this.zip64EndOfCentralSize-44;0<n;)e=this.reader.readInt(2),t=this.reader.readInt(4),r=this.reader.readData(t),this.zip64ExtensibleData[e]={id:e,length:t,value:r}},readBlockZip64EndOfCentralLocator:function(){if(this.diskWithZip64CentralDirStart=this.reader.readInt(4),this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8),this.disksCount=this.reader.readInt(4),1<this.disksCount)throw new Error(\"Multi-volumes zip are not supported\")},readLocalFiles:function(){var e,t;for(e=0;e<this.files.length;e++)t=this.files[e],this.reader.setIndex(t.localHeaderOffset),this.checkSignature(s.LOCAL_FILE_HEADER),t.readLocalPart(this.reader),t.handleUTF8(),t.processAttributes()},readCentralDir:function(){var e;for(this.reader.setIndex(this.centralDirOffset);this.reader.readAndCheckSignature(s.CENTRAL_FILE_HEADER);)(e=new a({zip64:this.zip64},this.loadOptions)).readCentralPart(this.reader),this.files.push(e);if(this.centralDirRecords!==this.files.length&&0!==this.centralDirRecords&&0===this.files.length)throw new Error(\"Corrupted zip or bug: expected \"+this.centralDirRecords+\" records in central dir, got \"+this.files.length)},readEndOfCentral:function(){var e=this.reader.lastIndexOfSignature(s.CENTRAL_DIRECTORY_END);if(e<0)throw!this.isSignature(0,s.LOCAL_FILE_HEADER)?new Error(\"Can't find end of central directory : is this a zip file ? If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html\"):new Error(\"Corrupted zip: can't find end of central directory\");this.reader.setIndex(e);var t=e;if(this.checkSignature(s.CENTRAL_DIRECTORY_END),this.readBlockEndOfCentral(),this.diskNumber===i.MAX_VALUE_16BITS||this.diskWithCentralDirStart===i.MAX_VALUE_16BITS||this.centralDirRecordsOnThisDisk===i.MAX_VALUE_16BITS||this.centralDirRecords===i.MAX_VALUE_16BITS||this.centralDirSize===i.MAX_VALUE_32BITS||this.centralDirOffset===i.MAX_VALUE_32BITS){if(this.zip64=!0,(e=this.reader.lastIndexOfSignature(s.ZIP64_CENTRAL_DIRECTORY_LOCATOR))<0)throw new Error(\"Corrupted zip: can't find the ZIP64 end of central directory locator\");if(this.reader.setIndex(e),this.checkSignature(s.ZIP64_CENTRAL_DIRECTORY_LOCATOR),this.readBlockZip64EndOfCentralLocator(),!this.isSignature(this.relativeOffsetEndOfZip64CentralDir,s.ZIP64_CENTRAL_DIRECTORY_END)&&(this.relativeOffsetEndOfZip64CentralDir=this.reader.lastIndexOfSignature(s.ZIP64_CENTRAL_DIRECTORY_END),this.relativeOffsetEndOfZip64CentralDir<0))throw new Error(\"Corrupted zip: can't find the ZIP64 end of central directory\");this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir),this.checkSignature(s.ZIP64_CENTRAL_DIRECTORY_END),this.readBlockZip64EndOfCentral()}var r=this.centralDirOffset+this.centralDirSize;this.zip64&&(r+=20,r+=12+this.zip64EndOfCentralSize);var n=t-r;if(0<n)this.isSignature(t,s.CENTRAL_FILE_HEADER)||(this.reader.zero=n);else if(n<0)throw new Error(\"Corrupted zip: missing \"+Math.abs(n)+\" bytes.\")},prepareReader:function(e){this.reader=n(e)},load:function(e){this.prepareReader(e),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}},t.exports=h},{\"./reader/readerFor\":22,\"./signature\":23,\"./support\":30,\"./utils\":32,\"./zipEntry\":34}],34:[function(e,t,r){\"use strict\";var n=e(\"./reader/readerFor\"),s=e(\"./utils\"),i=e(\"./compressedObject\"),a=e(\"./crc32\"),o=e(\"./utf8\"),h=e(\"./compressions\"),u=e(\"./support\");function l(e,t){this.options=e,this.loadOptions=t}l.prototype={isEncrypted:function(){return 1==(1&this.bitFlag)},useUTF8:function(){return 2048==(2048&this.bitFlag)},readLocalPart:function(e){var t,r;if(e.skip(22),this.fileNameLength=e.readInt(2),r=e.readInt(2),this.fileName=e.readData(this.fileNameLength),e.skip(r),-1===this.compressedSize||-1===this.uncompressedSize)throw new Error(\"Bug or corrupted zip : didn't get enough information from the central directory (compressedSize === -1 || uncompressedSize === -1)\");if(null===(t=function(e){for(var t in h)if(Object.prototype.hasOwnProperty.call(h,t)&&h[t].magic===e)return h[t];return null}(this.compressionMethod)))throw new Error(\"Corrupted zip : compression \"+s.pretty(this.compressionMethod)+\" unknown (inner file : \"+s.transformTo(\"string\",this.fileName)+\")\");this.decompressed=new i(this.compressedSize,this.uncompressedSize,this.crc32,t,e.readData(this.compressedSize))},readCentralPart:function(e){this.versionMadeBy=e.readInt(2),e.skip(2),this.bitFlag=e.readInt(2),this.compressionMethod=e.readString(2),this.date=e.readDate(),this.crc32=e.readInt(4),this.compressedSize=e.readInt(4),this.uncompressedSize=e.readInt(4);var t=e.readInt(2);if(this.extraFieldsLength=e.readInt(2),this.fileCommentLength=e.readInt(2),this.diskNumberStart=e.readInt(2),this.internalFileAttributes=e.readInt(2),this.externalFileAttributes=e.readInt(4),this.localHeaderOffset=e.readInt(4),this.isEncrypted())throw new Error(\"Encrypted zip are not supported\");e.skip(t),this.readExtraFields(e),this.parseZIP64ExtraField(e),this.fileComment=e.readData(this.fileCommentLength)},processAttributes:function(){this.unixPermissions=null,this.dosPermissions=null;var e=this.versionMadeBy>>8;this.dir=!!(16&this.externalFileAttributes),0==e&&(this.dosPermissions=63&this.externalFileAttributes),3==e&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||\"/\"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var e=n(this.extraFields[1].value);this.uncompressedSize===s.MAX_VALUE_32BITS&&(this.uncompressedSize=e.readInt(8)),this.compressedSize===s.MAX_VALUE_32BITS&&(this.compressedSize=e.readInt(8)),this.localHeaderOffset===s.MAX_VALUE_32BITS&&(this.localHeaderOffset=e.readInt(8)),this.diskNumberStart===s.MAX_VALUE_32BITS&&(this.diskNumberStart=e.readInt(4))}},readExtraFields:function(e){var t,r,n,i=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index+4<i;)t=e.readInt(2),r=e.readInt(2),n=e.readData(r),this.extraFields[t]={id:t,length:r,value:n};e.setIndex(i)},handleUTF8:function(){var e=u.uint8array?\"uint8array\":\"array\";if(this.useUTF8())this.fileNameStr=o.utf8decode(this.fileName),this.fileCommentStr=o.utf8decode(this.fileComment);else{var t=this.findExtraFieldUnicodePath();if(null!==t)this.fileNameStr=t;else{var r=s.transformTo(e,this.fileName);this.fileNameStr=this.loadOptions.decodeFileName(r)}var n=this.findExtraFieldUnicodeComment();if(null!==n)this.fileCommentStr=n;else{var i=s.transformTo(e,this.fileComment);this.fileCommentStr=this.loadOptions.decodeFileName(i)}}},findExtraFieldUnicodePath:function(){var e=this.extraFields[28789];if(e){var t=n(e.value);return 1!==t.readInt(1)?null:a(this.fileName)!==t.readInt(4)?null:o.utf8decode(t.readData(e.length-5))}return null},findExtraFieldUnicodeComment:function(){var e=this.extraFields[25461];if(e){var t=n(e.value);return 1!==t.readInt(1)?null:a(this.fileComment)!==t.readInt(4)?null:o.utf8decode(t.readData(e.length-5))}return null}},t.exports=l},{\"./compressedObject\":2,\"./compressions\":3,\"./crc32\":4,\"./reader/readerFor\":22,\"./support\":30,\"./utf8\":31,\"./utils\":32}],35:[function(e,t,r){\"use strict\";function n(e,t,r){this.name=e,this.dir=r.dir,this.date=r.date,this.comment=r.comment,this.unixPermissions=r.unixPermissions,this.dosPermissions=r.dosPermissions,this._data=t,this._dataBinary=r.binary,this.options={compression:r.compression,compressionOptions:r.compressionOptions}}var s=e(\"./stream/StreamHelper\"),i=e(\"./stream/DataWorker\"),a=e(\"./utf8\"),o=e(\"./compressedObject\"),h=e(\"./stream/GenericWorker\");n.prototype={internalStream:function(e){var t=null,r=\"string\";try{if(!e)throw new Error(\"No output type specified.\");var n=\"string\"===(r=e.toLowerCase())||\"text\"===r;\"binarystring\"!==r&&\"text\"!==r||(r=\"string\"),t=this._decompressWorker();var i=!this._dataBinary;i&&!n&&(t=t.pipe(new a.Utf8EncodeWorker)),!i&&n&&(t=t.pipe(new a.Utf8DecodeWorker))}catch(e){(t=new h(\"error\")).error(e)}return new s(t,r,\"\")},async:function(e,t){return this.internalStream(e).accumulate(t)},nodeStream:function(e,t){return this.internalStream(e||\"nodebuffer\").toNodejsStream(t)},_compressWorker:function(e,t){if(this._data instanceof o&&this._data.compression.magic===e.magic)return this._data.getCompressedWorker();var r=this._decompressWorker();return this._dataBinary||(r=r.pipe(new a.Utf8EncodeWorker)),o.createWorkerFrom(r,e,t)},_decompressWorker:function(){return this._data instanceof o?this._data.getContentWorker():this._data instanceof h?this._data:new i(this._data)}};for(var u=[\"asText\",\"asBinary\",\"asNodeBuffer\",\"asUint8Array\",\"asArrayBuffer\"],l=function(){throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\")},f=0;f<u.length;f++)n.prototype[u[f]]=l;t.exports=n},{\"./compressedObject\":2,\"./stream/DataWorker\":27,\"./stream/GenericWorker\":28,\"./stream/StreamHelper\":29,\"./utf8\":31}],36:[function(e,l,t){(function(t){\"use strict\";var r,n,e=t.MutationObserver||t.WebKitMutationObserver;if(e){var i=0,s=new e(u),a=t.document.createTextNode(\"\");s.observe(a,{characterData:!0}),r=function(){a.data=i=++i%2}}else if(t.setImmediate||void 0===t.MessageChannel)r=\"document\"in t&&\"onreadystatechange\"in t.document.createElement(\"script\")?function(){var e=t.document.createElement(\"script\");e.onreadystatechange=function(){u(),e.onreadystatechange=null,e.parentNode.removeChild(e),e=null},t.document.documentElement.appendChild(e)}:function(){setTimeout(u,0)};else{var o=new t.MessageChannel;o.port1.onmessage=u,r=function(){o.port2.postMessage(0)}}var h=[];function u(){var e,t;n=!0;for(var r=h.length;r;){for(t=h,h=[],e=-1;++e<r;)t[e]();r=h.length}n=!1}l.exports=function(e){1!==h.push(e)||n||r()}}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}],37:[function(e,t,r){\"use strict\";var i=e(\"immediate\");function u(){}var l={},s=[\"REJECTED\"],a=[\"FULFILLED\"],n=[\"PENDING\"];function o(e){if(\"function\"!=typeof e)throw new TypeError(\"resolver must be a function\");this.state=n,this.queue=[],this.outcome=void 0,e!==u&&d(this,e)}function h(e,t,r){this.promise=e,\"function\"==typeof t&&(this.onFulfilled=t,this.callFulfilled=this.otherCallFulfilled),\"function\"==typeof r&&(this.onRejected=r,this.callRejected=this.otherCallRejected)}function f(t,r,n){i(function(){var e;try{e=r(n)}catch(e){return l.reject(t,e)}e===t?l.reject(t,new TypeError(\"Cannot resolve promise with itself\")):l.resolve(t,e)})}function c(e){var t=e&&e.then;if(e&&(\"object\"==typeof e||\"function\"==typeof e)&&\"function\"==typeof t)return function(){t.apply(e,arguments)}}function d(t,e){var r=!1;function n(e){r||(r=!0,l.reject(t,e))}function i(e){r||(r=!0,l.resolve(t,e))}var s=p(function(){e(i,n)});\"error\"===s.status&&n(s.value)}function p(e,t){var r={};try{r.value=e(t),r.status=\"success\"}catch(e){r.status=\"error\",r.value=e}return r}(t.exports=o).prototype.finally=function(t){if(\"function\"!=typeof t)return this;var r=this.constructor;return this.then(function(e){return r.resolve(t()).then(function(){return e})},function(e){return r.resolve(t()).then(function(){throw e})})},o.prototype.catch=function(e){return this.then(null,e)},o.prototype.then=function(e,t){if(\"function\"!=typeof e&&this.state===a||\"function\"!=typeof t&&this.state===s)return this;var r=new this.constructor(u);this.state!==n?f(r,this.state===a?e:t,this.outcome):this.queue.push(new h(r,e,t));return r},h.prototype.callFulfilled=function(e){l.resolve(this.promise,e)},h.prototype.otherCallFulfilled=function(e){f(this.promise,this.onFulfilled,e)},h.prototype.callRejected=function(e){l.reject(this.promise,e)},h.prototype.otherCallRejected=function(e){f(this.promise,this.onRejected,e)},l.resolve=function(e,t){var r=p(c,t);if(\"error\"===r.status)return l.reject(e,r.value);var n=r.value;if(n)d(e,n);else{e.state=a,e.outcome=t;for(var i=-1,s=e.queue.length;++i<s;)e.queue[i].callFulfilled(t)}return e},l.reject=function(e,t){e.state=s,e.outcome=t;for(var r=-1,n=e.queue.length;++r<n;)e.queue[r].callRejected(t);return e},o.resolve=function(e){if(e instanceof this)return e;return l.resolve(new this(u),e)},o.reject=function(e){var t=new this(u);return l.reject(t,e)},o.all=function(e){var r=this;if(\"[object Array]\"!==Object.prototype.toString.call(e))return this.reject(new TypeError(\"must be an array\"));var n=e.length,i=!1;if(!n)return this.resolve([]);var s=new Array(n),a=0,t=-1,o=new this(u);for(;++t<n;)h(e[t],t);return o;function h(e,t){r.resolve(e).then(function(e){s[t]=e,++a!==n||i||(i=!0,l.resolve(o,s))},function(e){i||(i=!0,l.reject(o,e))})}},o.race=function(e){var t=this;if(\"[object Array]\"!==Object.prototype.toString.call(e))return this.reject(new TypeError(\"must be an array\"));var r=e.length,n=!1;if(!r)return this.resolve([]);var i=-1,s=new this(u);for(;++i<r;)a=e[i],t.resolve(a).then(function(e){n||(n=!0,l.resolve(s,e))},function(e){n||(n=!0,l.reject(s,e))});var a;return s}},{immediate:36}],38:[function(e,t,r){\"use strict\";var n={};(0,e(\"./lib/utils/common\").assign)(n,e(\"./lib/deflate\"),e(\"./lib/inflate\"),e(\"./lib/zlib/constants\")),t.exports=n},{\"./lib/deflate\":39,\"./lib/inflate\":40,\"./lib/utils/common\":41,\"./lib/zlib/constants\":44}],39:[function(e,t,r){\"use strict\";var a=e(\"./zlib/deflate\"),o=e(\"./utils/common\"),h=e(\"./utils/strings\"),i=e(\"./zlib/messages\"),s=e(\"./zlib/zstream\"),u=Object.prototype.toString,l=0,f=-1,c=0,d=8;function p(e){if(!(this instanceof p))return new p(e);this.options=o.assign({level:f,method:d,chunkSize:16384,windowBits:15,memLevel:8,strategy:c,to:\"\"},e||{});var t=this.options;t.raw&&0<t.windowBits?t.windowBits=-t.windowBits:t.gzip&&0<t.windowBits&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new s,this.strm.avail_out=0;var r=a.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(r!==l)throw new Error(i[r]);if(t.header&&a.deflateSetHeader(this.strm,t.header),t.dictionary){var n;if(n=\"string\"==typeof t.dictionary?h.string2buf(t.dictionary):\"[object ArrayBuffer]\"===u.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,(r=a.deflateSetDictionary(this.strm,n))!==l)throw new Error(i[r]);this._dict_set=!0}}function n(e,t){var r=new p(t);if(r.push(e,!0),r.err)throw r.msg||i[r.err];return r.result}p.prototype.push=function(e,t){var r,n,i=this.strm,s=this.options.chunkSize;if(this.ended)return!1;n=t===~~t?t:!0===t?4:0,\"string\"==typeof e?i.input=h.string2buf(e):\"[object ArrayBuffer]\"===u.call(e)?i.input=new Uint8Array(e):i.input=e,i.next_in=0,i.avail_in=i.input.length;do{if(0===i.avail_out&&(i.output=new o.Buf8(s),i.next_out=0,i.avail_out=s),1!==(r=a.deflate(i,n))&&r!==l)return this.onEnd(r),!(this.ended=!0);0!==i.avail_out&&(0!==i.avail_in||4!==n&&2!==n)||(\"string\"===this.options.to?this.onData(h.buf2binstring(o.shrinkBuf(i.output,i.next_out))):this.onData(o.shrinkBuf(i.output,i.next_out)))}while((0<i.avail_in||0===i.avail_out)&&1!==r);return 4===n?(r=a.deflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===l):2!==n||(this.onEnd(l),!(i.avail_out=0))},p.prototype.onData=function(e){this.chunks.push(e)},p.prototype.onEnd=function(e){e===l&&(\"string\"===this.options.to?this.result=this.chunks.join(\"\"):this.result=o.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},r.Deflate=p,r.deflate=n,r.deflateRaw=function(e,t){return(t=t||{}).raw=!0,n(e,t)},r.gzip=function(e,t){return(t=t||{}).gzip=!0,n(e,t)}},{\"./utils/common\":41,\"./utils/strings\":42,\"./zlib/deflate\":46,\"./zlib/messages\":51,\"./zlib/zstream\":53}],40:[function(e,t,r){\"use strict\";var c=e(\"./zlib/inflate\"),d=e(\"./utils/common\"),p=e(\"./utils/strings\"),m=e(\"./zlib/constants\"),n=e(\"./zlib/messages\"),i=e(\"./zlib/zstream\"),s=e(\"./zlib/gzheader\"),_=Object.prototype.toString;function a(e){if(!(this instanceof a))return new a(e);this.options=d.assign({chunkSize:16384,windowBits:0,to:\"\"},e||{});var t=this.options;t.raw&&0<=t.windowBits&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(0<=t.windowBits&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),15<t.windowBits&&t.windowBits<48&&0==(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new i,this.strm.avail_out=0;var r=c.inflateInit2(this.strm,t.windowBits);if(r!==m.Z_OK)throw new Error(n[r]);this.header=new s,c.inflateGetHeader(this.strm,this.header)}function o(e,t){var r=new a(t);if(r.push(e,!0),r.err)throw r.msg||n[r.err];return r.result}a.prototype.push=function(e,t){var r,n,i,s,a,o,h=this.strm,u=this.options.chunkSize,l=this.options.dictionary,f=!1;if(this.ended)return!1;n=t===~~t?t:!0===t?m.Z_FINISH:m.Z_NO_FLUSH,\"string\"==typeof e?h.input=p.binstring2buf(e):\"[object ArrayBuffer]\"===_.call(e)?h.input=new Uint8Array(e):h.input=e,h.next_in=0,h.avail_in=h.input.length;do{if(0===h.avail_out&&(h.output=new d.Buf8(u),h.next_out=0,h.avail_out=u),(r=c.inflate(h,m.Z_NO_FLUSH))===m.Z_NEED_DICT&&l&&(o=\"string\"==typeof l?p.string2buf(l):\"[object ArrayBuffer]\"===_.call(l)?new Uint8Array(l):l,r=c.inflateSetDictionary(this.strm,o)),r===m.Z_BUF_ERROR&&!0===f&&(r=m.Z_OK,f=!1),r!==m.Z_STREAM_END&&r!==m.Z_OK)return this.onEnd(r),!(this.ended=!0);h.next_out&&(0!==h.avail_out&&r!==m.Z_STREAM_END&&(0!==h.avail_in||n!==m.Z_FINISH&&n!==m.Z_SYNC_FLUSH)||(\"string\"===this.options.to?(i=p.utf8border(h.output,h.next_out),s=h.next_out-i,a=p.buf2string(h.output,i),h.next_out=s,h.avail_out=u-s,s&&d.arraySet(h.output,h.output,i,s,0),this.onData(a)):this.onData(d.shrinkBuf(h.output,h.next_out)))),0===h.avail_in&&0===h.avail_out&&(f=!0)}while((0<h.avail_in||0===h.avail_out)&&r!==m.Z_STREAM_END);return r===m.Z_STREAM_END&&(n=m.Z_FINISH),n===m.Z_FINISH?(r=c.inflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===m.Z_OK):n!==m.Z_SYNC_FLUSH||(this.onEnd(m.Z_OK),!(h.avail_out=0))},a.prototype.onData=function(e){this.chunks.push(e)},a.prototype.onEnd=function(e){e===m.Z_OK&&(\"string\"===this.options.to?this.result=this.chunks.join(\"\"):this.result=d.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},r.Inflate=a,r.inflate=o,r.inflateRaw=function(e,t){return(t=t||{}).raw=!0,o(e,t)},r.ungzip=o},{\"./utils/common\":41,\"./utils/strings\":42,\"./zlib/constants\":44,\"./zlib/gzheader\":47,\"./zlib/inflate\":49,\"./zlib/messages\":51,\"./zlib/zstream\":53}],41:[function(e,t,r){\"use strict\";var n=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Int32Array;r.assign=function(e){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var r=t.shift();if(r){if(\"object\"!=typeof r)throw new TypeError(r+\"must be non-object\");for(var n in r)r.hasOwnProperty(n)&&(e[n]=r[n])}}return e},r.shrinkBuf=function(e,t){return e.length===t?e:e.subarray?e.subarray(0,t):(e.length=t,e)};var i={arraySet:function(e,t,r,n,i){if(t.subarray&&e.subarray)e.set(t.subarray(r,r+n),i);else for(var s=0;s<n;s++)e[i+s]=t[r+s]},flattenChunks:function(e){var t,r,n,i,s,a;for(t=n=0,r=e.length;t<r;t++)n+=e[t].length;for(a=new Uint8Array(n),t=i=0,r=e.length;t<r;t++)s=e[t],a.set(s,i),i+=s.length;return a}},s={arraySet:function(e,t,r,n,i){for(var s=0;s<n;s++)e[i+s]=t[r+s]},flattenChunks:function(e){return[].concat.apply([],e)}};r.setTyped=function(e){e?(r.Buf8=Uint8Array,r.Buf16=Uint16Array,r.Buf32=Int32Array,r.assign(r,i)):(r.Buf8=Array,r.Buf16=Array,r.Buf32=Array,r.assign(r,s))},r.setTyped(n)},{}],42:[function(e,t,r){\"use strict\";var h=e(\"./common\"),i=!0,s=!0;try{String.fromCharCode.apply(null,[0])}catch(e){i=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(e){s=!1}for(var u=new h.Buf8(256),n=0;n<256;n++)u[n]=252<=n?6:248<=n?5:240<=n?4:224<=n?3:192<=n?2:1;function l(e,t){if(t<65537&&(e.subarray&&s||!e.subarray&&i))return String.fromCharCode.apply(null,h.shrinkBuf(e,t));for(var r=\"\",n=0;n<t;n++)r+=String.fromCharCode(e[n]);return r}u[254]=u[254]=1,r.string2buf=function(e){var t,r,n,i,s,a=e.length,o=0;for(i=0;i<a;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),o+=r<128?1:r<2048?2:r<65536?3:4;for(t=new h.Buf8(o),i=s=0;s<o;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),r<128?t[s++]=r:(r<2048?t[s++]=192|r>>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t},r.buf2binstring=function(e){return l(e,e.length)},r.binstring2buf=function(e){for(var t=new h.Buf8(e.length),r=0,n=t.length;r<n;r++)t[r]=e.charCodeAt(r);return t},r.buf2string=function(e,t){var r,n,i,s,a=t||e.length,o=new Array(2*a);for(r=n=0;r<a;)if((i=e[r++])<128)o[n++]=i;else if(4<(s=u[i]))o[n++]=65533,r+=s-1;else{for(i&=2===s?31:3===s?15:7;1<s&&r<a;)i=i<<6|63&e[r++],s--;1<s?o[n++]=65533:i<65536?o[n++]=i:(i-=65536,o[n++]=55296|i>>10&1023,o[n++]=56320|1023&i)}return l(o,n)},r.utf8border=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}},{\"./common\":41}],43:[function(e,t,r){\"use strict\";t.exports=function(e,t,r,n){for(var i=65535&e|0,s=e>>>16&65535|0,a=0;0!==r;){for(r-=a=2e3<r?2e3:r;s=s+(i=i+t[n++]|0)|0,--a;);i%=65521,s%=65521}return i|s<<16|0}},{}],44:[function(e,t,r){\"use strict\";t.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],45:[function(e,t,r){\"use strict\";var o=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a<s;a++)e=e>>>8^i[255&(e^t[a])];return-1^e}},{}],46:[function(e,t,r){\"use strict\";var h,c=e(\"../utils/common\"),u=e(\"./trees\"),d=e(\"./adler32\"),p=e(\"./crc32\"),n=e(\"./messages\"),l=0,f=4,m=0,_=-2,g=-1,b=4,i=2,v=8,y=9,s=286,a=30,o=19,w=2*s+1,k=15,x=3,S=258,z=S+x+1,C=42,E=113,A=1,I=2,O=3,B=4;function R(e,t){return e.msg=n[t],t}function T(e){return(e<<1)-(4<e?9:0)}function D(e){for(var t=e.length;0<=--t;)e[t]=0}function F(e){var t=e.state,r=t.pending;r>e.avail_out&&(r=e.avail_out),0!==r&&(c.arraySet(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0))}function N(e,t){u._tr_flush_block(e,0<=e.block_start?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,F(e.strm)}function U(e,t){e.pending_buf[e.pending++]=t}function P(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function L(e,t){var r,n,i=e.max_chain_length,s=e.strstart,a=e.prev_length,o=e.nice_match,h=e.strstart>e.w_size-z?e.strstart-(e.w_size-z):0,u=e.window,l=e.w_mask,f=e.prev,c=e.strstart+S,d=u[s+a-1],p=u[s+a];e.prev_length>=e.good_match&&(i>>=2),o>e.lookahead&&(o=e.lookahead);do{if(u[(r=t)+a]===p&&u[r+a-1]===d&&u[r]===u[s]&&u[++r]===u[s+1]){s+=2,r++;do{}while(u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&s<c);if(n=S-(c-s),s=c-S,a<n){if(e.match_start=t,o<=(a=n))break;d=u[s+a-1],p=u[s+a]}}}while((t=f[t&l])>h&&0!=--i);return a<=e.lookahead?a:e.lookahead}function j(e){var t,r,n,i,s,a,o,h,u,l,f=e.w_size;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=f+(f-z)){for(c.arraySet(e.window,e.window,f,f,0),e.match_start-=f,e.strstart-=f,e.block_start-=f,t=r=e.hash_size;n=e.head[--t],e.head[t]=f<=n?n-f:0,--r;);for(t=r=f;n=e.prev[--t],e.prev[t]=f<=n?n-f:0,--r;);i+=f}if(0===e.strm.avail_in)break;if(a=e.strm,o=e.window,h=e.strstart+e.lookahead,u=i,l=void 0,l=a.avail_in,u<l&&(l=u),r=0===l?0:(a.avail_in-=l,c.arraySet(o,a.input,a.next_in,l,h),1===a.state.wrap?a.adler=d(a.adler,o,l,h):2===a.state.wrap&&(a.adler=p(a.adler,o,l,h)),a.next_in+=l,a.total_in+=l,l),e.lookahead+=r,e.lookahead+e.insert>=x)for(s=e.strstart-e.insert,e.ins_h=e.window[s],e.ins_h=(e.ins_h<<e.hash_shift^e.window[s+1])&e.hash_mask;e.insert&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[s+x-1])&e.hash_mask,e.prev[s&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=s,s++,e.insert--,!(e.lookahead+e.insert<x)););}while(e.lookahead<z&&0!==e.strm.avail_in)}function Z(e,t){for(var r,n;;){if(e.lookahead<z){if(j(e),e.lookahead<z&&t===l)return A;if(0===e.lookahead)break}if(r=0,e.lookahead>=x&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+x-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!==r&&e.strstart-r<=e.w_size-z&&(e.match_length=L(e,r)),e.match_length>=x)if(n=u._tr_tally(e,e.strstart-e.match_start,e.match_length-x),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=x){for(e.match_length--;e.strstart++,e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+x-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart,0!=--e.match_length;);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+1])&e.hash_mask;else n=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(n&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=e.strstart<x-1?e.strstart:x-1,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}function W(e,t){for(var r,n,i;;){if(e.lookahead<z){if(j(e),e.lookahead<z&&t===l)return A;if(0===e.lookahead)break}if(r=0,e.lookahead>=x&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+x-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=x-1,0!==r&&e.prev_length<e.max_lazy_match&&e.strstart-r<=e.w_size-z&&(e.match_length=L(e,r),e.match_length<=5&&(1===e.strategy||e.match_length===x&&4096<e.strstart-e.match_start)&&(e.match_length=x-1)),e.prev_length>=x&&e.match_length<=e.prev_length){for(i=e.strstart+e.lookahead-x,n=u._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-x),e.lookahead-=e.prev_length-1,e.prev_length-=2;++e.strstart<=i&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+x-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!=--e.prev_length;);if(e.match_available=0,e.match_length=x-1,e.strstart++,n&&(N(e,!1),0===e.strm.avail_out))return A}else if(e.match_available){if((n=u._tr_tally(e,0,e.window[e.strstart-1]))&&N(e,!1),e.strstart++,e.lookahead--,0===e.strm.avail_out)return A}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(n=u._tr_tally(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<x-1?e.strstart:x-1,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}function M(e,t,r,n,i){this.good_length=e,this.max_lazy=t,this.nice_length=r,this.max_chain=n,this.func=i}function H(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=v,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new c.Buf16(2*w),this.dyn_dtree=new c.Buf16(2*(2*a+1)),this.bl_tree=new c.Buf16(2*(2*o+1)),D(this.dyn_ltree),D(this.dyn_dtree),D(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new c.Buf16(k+1),this.heap=new c.Buf16(2*s+1),D(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new c.Buf16(2*s+1),D(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function G(e){var t;return e&&e.state?(e.total_in=e.total_out=0,e.data_type=i,(t=e.state).pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap?C:E,e.adler=2===t.wrap?0:1,t.last_flush=l,u._tr_init(t),m):R(e,_)}function K(e){var t=G(e);return t===m&&function(e){e.window_size=2*e.w_size,D(e.head),e.max_lazy_match=h[e.level].max_lazy,e.good_match=h[e.level].good_length,e.nice_match=h[e.level].nice_length,e.max_chain_length=h[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=x-1,e.match_available=0,e.ins_h=0}(e.state),t}function Y(e,t,r,n,i,s){if(!e)return _;var a=1;if(t===g&&(t=6),n<0?(a=0,n=-n):15<n&&(a=2,n-=16),i<1||y<i||r!==v||n<8||15<n||t<0||9<t||s<0||b<s)return R(e,_);8===n&&(n=9);var o=new H;return(e.state=o).strm=e,o.wrap=a,o.gzhead=null,o.w_bits=n,o.w_size=1<<o.w_bits,o.w_mask=o.w_size-1,o.hash_bits=i+7,o.hash_size=1<<o.hash_bits,o.hash_mask=o.hash_size-1,o.hash_shift=~~((o.hash_bits+x-1)/x),o.window=new c.Buf8(2*o.w_size),o.head=new c.Buf16(o.hash_size),o.prev=new c.Buf16(o.w_size),o.lit_bufsize=1<<i+6,o.pending_buf_size=4*o.lit_bufsize,o.pending_buf=new c.Buf8(o.pending_buf_size),o.d_buf=1*o.lit_bufsize,o.l_buf=3*o.lit_bufsize,o.level=t,o.strategy=s,o.method=r,K(e)}h=[new M(0,0,0,0,function(e,t){var r=65535;for(r>e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(j(e),0===e.lookahead&&t===l)return A;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var n=e.block_start+r;if((0===e.strstart||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,N(e,!1),0===e.strm.avail_out))return A;if(e.strstart-e.block_start>=e.w_size-z&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):(e.strstart>e.block_start&&(N(e,!1),e.strm.avail_out),A)}),new M(4,4,8,4,Z),new M(4,5,16,8,Z),new M(4,6,32,32,Z),new M(4,4,16,16,W),new M(8,16,32,32,W),new M(8,16,128,128,W),new M(8,32,128,256,W),new M(32,128,258,1024,W),new M(32,258,258,4096,W)],r.deflateInit=function(e,t){return Y(e,t,v,15,8,0)},r.deflateInit2=Y,r.deflateReset=K,r.deflateResetKeep=G,r.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?_:(e.state.gzhead=t,m):_},r.deflate=function(e,t){var r,n,i,s;if(!e||!e.state||5<t||t<0)return e?R(e,_):_;if(n=e.state,!e.output||!e.input&&0!==e.avail_in||666===n.status&&t!==f)return R(e,0===e.avail_out?-5:_);if(n.strm=e,r=n.last_flush,n.last_flush=t,n.status===C)if(2===n.wrap)e.adler=0,U(n,31),U(n,139),U(n,8),n.gzhead?(U(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),U(n,255&n.gzhead.time),U(n,n.gzhead.time>>8&255),U(n,n.gzhead.time>>16&255),U(n,n.gzhead.time>>24&255),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(U(n,255&n.gzhead.extra.length),U(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=p(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69):(U(n,0),U(n,0),U(n,0),U(n,0),U(n,0),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,3),n.status=E);else{var a=v+(n.w_bits-8<<4)<<8;a|=(2<=n.strategy||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(a|=32),a+=31-a%31,n.status=E,P(n,a),0!==n.strstart&&(P(n,e.adler>>>16),P(n,65535&e.adler)),e.adler=1}if(69===n.status)if(n.gzhead.extra){for(i=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending!==n.pending_buf_size));)U(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=73)}else n.status=73;if(73===n.status)if(n.gzhead.name){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindex<n.gzhead.name.length?255&n.gzhead.name.charCodeAt(n.gzindex++):0,U(n,s)}while(0!==s);n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.gzindex=0,n.status=91)}else n.status=91;if(91===n.status)if(n.gzhead.comment){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindex<n.gzhead.comment.length?255&n.gzhead.comment.charCodeAt(n.gzindex++):0,U(n,s)}while(0!==s);n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.status=103)}else n.status=103;if(103===n.status&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&F(e),n.pending+2<=n.pending_buf_size&&(U(n,255&e.adler),U(n,e.adler>>8&255),e.adler=0,n.status=E)):n.status=E),0!==n.pending){if(F(e),0===e.avail_out)return n.last_flush=-1,m}else if(0===e.avail_in&&T(t)<=T(r)&&t!==f)return R(e,-5);if(666===n.status&&0!==e.avail_in)return R(e,-5);if(0!==e.avail_in||0!==n.lookahead||t!==l&&666!==n.status){var o=2===n.strategy?function(e,t){for(var r;;){if(0===e.lookahead&&(j(e),0===e.lookahead)){if(t===l)return A;break}if(e.match_length=0,r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):3===n.strategy?function(e,t){for(var r,n,i,s,a=e.window;;){if(e.lookahead<=S){if(j(e),e.lookahead<=S&&t===l)return A;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=x&&0<e.strstart&&(n=a[i=e.strstart-1])===a[++i]&&n===a[++i]&&n===a[++i]){s=e.strstart+S;do{}while(n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&i<s);e.match_length=S-(s-i),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=x?(r=u._tr_tally(e,1,e.match_length-x),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):h[n.level].func(n,t);if(o!==O&&o!==B||(n.status=666),o===A||o===O)return 0===e.avail_out&&(n.last_flush=-1),m;if(o===I&&(1===t?u._tr_align(n):5!==t&&(u._tr_stored_block(n,0,0,!1),3===t&&(D(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),F(e),0===e.avail_out))return n.last_flush=-1,m}return t!==f?m:n.wrap<=0?1:(2===n.wrap?(U(n,255&e.adler),U(n,e.adler>>8&255),U(n,e.adler>>16&255),U(n,e.adler>>24&255),U(n,255&e.total_in),U(n,e.total_in>>8&255),U(n,e.total_in>>16&255),U(n,e.total_in>>24&255)):(P(n,e.adler>>>16),P(n,65535&e.adler)),F(e),0<n.wrap&&(n.wrap=-n.wrap),0!==n.pending?m:1)},r.deflateEnd=function(e){var t;return e&&e.state?(t=e.state.status)!==C&&69!==t&&73!==t&&91!==t&&103!==t&&t!==E&&666!==t?R(e,_):(e.state=null,t===E?R(e,-3):m):_},r.deflateSetDictionary=function(e,t){var r,n,i,s,a,o,h,u,l=t.length;if(!e||!e.state)return _;if(2===(s=(r=e.state).wrap)||1===s&&r.status!==C||r.lookahead)return _;for(1===s&&(e.adler=d(e.adler,t,l,0)),r.wrap=0,l>=r.w_size&&(0===s&&(D(r.head),r.strstart=0,r.block_start=0,r.insert=0),u=new c.Buf8(r.w_size),c.arraySet(u,t,l-r.w_size,r.w_size,0),t=u,l=r.w_size),a=e.avail_in,o=e.next_in,h=e.input,e.avail_in=l,e.next_in=0,e.input=t,j(r);r.lookahead>=x;){for(n=r.strstart,i=r.lookahead-(x-1);r.ins_h=(r.ins_h<<r.hash_shift^r.window[n+x-1])&r.hash_mask,r.prev[n&r.w_mask]=r.head[r.ins_h],r.head[r.ins_h]=n,n++,--i;);r.strstart=n,r.lookahead=x-1,j(r)}return r.strstart+=r.lookahead,r.block_start=r.strstart,r.insert=r.lookahead,r.lookahead=0,r.match_length=r.prev_length=x-1,r.match_available=0,e.next_in=o,e.input=h,e.avail_in=a,r.wrap=s,m},r.deflateInfo=\"pako deflate (from Nodeca project)\"},{\"../utils/common\":41,\"./adler32\":43,\"./crc32\":45,\"./messages\":51,\"./trees\":52}],47:[function(e,t,r){\"use strict\";t.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name=\"\",this.comment=\"\",this.hcrc=0,this.done=!1}},{}],48:[function(e,t,r){\"use strict\";t.exports=function(e,t){var r,n,i,s,a,o,h,u,l,f,c,d,p,m,_,g,b,v,y,w,k,x,S,z,C;r=e.state,n=e.next_in,z=e.input,i=n+(e.avail_in-5),s=e.next_out,C=e.output,a=s-(t-e.avail_out),o=s+(e.avail_out-257),h=r.dmax,u=r.wsize,l=r.whave,f=r.wnext,c=r.window,d=r.hold,p=r.bits,m=r.lencode,_=r.distcode,g=(1<<r.lenbits)-1,b=(1<<r.distbits)-1;e:do{p<15&&(d+=z[n++]<<p,p+=8,d+=z[n++]<<p,p+=8),v=m[d&g];t:for(;;){if(d>>>=y=v>>>24,p-=y,0===(y=v>>>16&255))C[s++]=65535&v;else{if(!(16&y)){if(0==(64&y)){v=m[(65535&v)+(d&(1<<y)-1)];continue t}if(32&y){r.mode=12;break e}e.msg=\"invalid literal/length code\",r.mode=30;break e}w=65535&v,(y&=15)&&(p<y&&(d+=z[n++]<<p,p+=8),w+=d&(1<<y)-1,d>>>=y,p-=y),p<15&&(d+=z[n++]<<p,p+=8,d+=z[n++]<<p,p+=8),v=_[d&b];r:for(;;){if(d>>>=y=v>>>24,p-=y,!(16&(y=v>>>16&255))){if(0==(64&y)){v=_[(65535&v)+(d&(1<<y)-1)];continue r}e.msg=\"invalid distance code\",r.mode=30;break e}if(k=65535&v,p<(y&=15)&&(d+=z[n++]<<p,(p+=8)<y&&(d+=z[n++]<<p,p+=8)),h<(k+=d&(1<<y)-1)){e.msg=\"invalid distance too far back\",r.mode=30;break e}if(d>>>=y,p-=y,(y=s-a)<k){if(l<(y=k-y)&&r.sane){e.msg=\"invalid distance too far back\",r.mode=30;break e}if(S=c,(x=0)===f){if(x+=u-y,y<w){for(w-=y;C[s++]=c[x++],--y;);x=s-k,S=C}}else if(f<y){if(x+=u+f-y,(y-=f)<w){for(w-=y;C[s++]=c[x++],--y;);if(x=0,f<w){for(w-=y=f;C[s++]=c[x++],--y;);x=s-k,S=C}}}else if(x+=f-y,y<w){for(w-=y;C[s++]=c[x++],--y;);x=s-k,S=C}for(;2<w;)C[s++]=S[x++],C[s++]=S[x++],C[s++]=S[x++],w-=3;w&&(C[s++]=S[x++],1<w&&(C[s++]=S[x++]))}else{for(x=s-k;C[s++]=C[x++],C[s++]=C[x++],C[s++]=C[x++],2<(w-=3););w&&(C[s++]=C[x++],1<w&&(C[s++]=C[x++]))}break}}break}}while(n<i&&s<o);n-=w=p>>3,d&=(1<<(p-=w<<3))-1,e.next_in=n,e.next_out=s,e.avail_in=n<i?i-n+5:5-(n-i),e.avail_out=s<o?o-s+257:257-(s-o),r.hold=d,r.bits=p}},{}],49:[function(e,t,r){\"use strict\";var I=e(\"../utils/common\"),O=e(\"./adler32\"),B=e(\"./crc32\"),R=e(\"./inffast\"),T=e(\"./inftrees\"),D=1,F=2,N=0,U=-2,P=1,n=852,i=592;function L(e){return(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function s(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new I.Buf16(320),this.work=new I.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function a(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg=\"\",t.wrap&&(e.adler=1&t.wrap),t.mode=P,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new I.Buf32(n),t.distcode=t.distdyn=new I.Buf32(i),t.sane=1,t.back=-1,N):U}function o(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,a(e)):U}function h(e,t){var r,n;return e&&e.state?(n=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15<t)?U:(null!==n.window&&n.wbits!==t&&(n.window=null),n.wrap=r,n.wbits=t,o(e))):U}function u(e,t){var r,n;return e?(n=new s,(e.state=n).window=null,(r=h(e,t))!==N&&(e.state=null),r):U}var l,f,c=!0;function j(e){if(c){var t;for(l=new I.Buf32(512),f=new I.Buf32(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(T(D,e.lens,0,288,l,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;T(F,e.lens,0,32,f,0,e.work,{bits:5}),c=!1}e.lencode=l,e.lenbits=9,e.distcode=f,e.distbits=5}function Z(e,t,r,n){var i,s=e.state;return null===s.window&&(s.wsize=1<<s.wbits,s.wnext=0,s.whave=0,s.window=new I.Buf8(s.wsize)),n>=s.wsize?(I.arraySet(s.window,t,r-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):(n<(i=s.wsize-s.wnext)&&(i=n),I.arraySet(s.window,t,r-n,i,s.wnext),(n-=i)?(I.arraySet(s.window,t,r-n,n,0),s.wnext=n,s.whave=s.wsize):(s.wnext+=i,s.wnext===s.wsize&&(s.wnext=0),s.whave<s.wsize&&(s.whave+=i))),0}r.inflateReset=o,r.inflateReset2=h,r.inflateResetKeep=a,r.inflateInit=function(e){return u(e,15)},r.inflateInit2=u,r.inflate=function(e,t){var r,n,i,s,a,o,h,u,l,f,c,d,p,m,_,g,b,v,y,w,k,x,S,z,C=0,E=new I.Buf8(4),A=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!e||!e.state||!e.output||!e.input&&0!==e.avail_in)return U;12===(r=e.state).mode&&(r.mode=13),a=e.next_out,i=e.output,h=e.avail_out,s=e.next_in,n=e.input,o=e.avail_in,u=r.hold,l=r.bits,f=o,c=h,x=N;e:for(;;)switch(r.mode){case P:if(0===r.wrap){r.mode=13;break}for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(2&r.wrap&&35615===u){E[r.check=0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0),l=u=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&u)<<8)+(u>>8))%31){e.msg=\"incorrect header check\",r.mode=30;break}if(8!=(15&u)){e.msg=\"unknown compression method\",r.mode=30;break}if(l-=4,k=8+(15&(u>>>=4)),0===r.wbits)r.wbits=k;else if(k>r.wbits){e.msg=\"invalid window size\",r.mode=30;break}r.dmax=1<<k,e.adler=r.check=1,r.mode=512&u?10:12,l=u=0;break;case 2:for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(r.flags=u,8!=(255&r.flags)){e.msg=\"unknown compression method\",r.mode=30;break}if(57344&r.flags){e.msg=\"unknown header flags set\",r.mode=30;break}r.head&&(r.head.text=u>>8&1),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=3;case 3:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.head&&(r.head.time=u),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,E[2]=u>>>16&255,E[3]=u>>>24&255,r.check=B(r.check,E,4,0)),l=u=0,r.mode=4;case 4:for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.head&&(r.head.xflags=255&u,r.head.os=u>>8),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=5;case 5:if(1024&r.flags){for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.length=u,r.head&&(r.head.extra_len=u),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&(o<(d=r.length)&&(d=o),d&&(r.head&&(k=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),I.arraySet(r.head.extra,n,s,d,k)),512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,r.length-=d),r.length))break e;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===o)break e;for(d=0;k=n[s+d++],r.head&&k&&r.length<65536&&(r.head.name+=String.fromCharCode(k)),k&&d<o;);if(512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,k)break e}else r.head&&(r.head.name=null);r.length=0,r.mode=8;case 8:if(4096&r.flags){if(0===o)break e;for(d=0;k=n[s+d++],r.head&&k&&r.length<65536&&(r.head.comment+=String.fromCharCode(k)),k&&d<o;);if(512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,k)break e}else r.head&&(r.head.comment=null);r.mode=9;case 9:if(512&r.flags){for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(u!==(65535&r.check)){e.msg=\"header crc mismatch\",r.mode=30;break}l=u=0}r.head&&(r.head.hcrc=r.flags>>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=12;break;case 10:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}e.adler=r.check=L(u),l=u=0,r.mode=11;case 11:if(0===r.havedict)return e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,2;e.adler=r.check=1,r.mode=12;case 12:if(5===t||6===t)break e;case 13:if(r.last){u>>>=7&l,l-=7&l,r.mode=27;break}for(;l<3;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}switch(r.last=1&u,l-=1,3&(u>>>=1)){case 0:r.mode=14;break;case 1:if(j(r),r.mode=20,6!==t)break;u>>>=2,l-=2;break e;case 2:r.mode=17;break;case 3:e.msg=\"invalid block type\",r.mode=30}u>>>=2,l-=2;break;case 14:for(u>>>=7&l,l-=7&l;l<32;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if((65535&u)!=(u>>>16^65535)){e.msg=\"invalid stored block lengths\",r.mode=30;break}if(r.length=65535&u,l=u=0,r.mode=15,6===t)break e;case 15:r.mode=16;case 16:if(d=r.length){if(o<d&&(d=o),h<d&&(d=h),0===d)break e;I.arraySet(i,n,s,d,a),o-=d,s+=d,h-=d,a+=d,r.length-=d;break}r.mode=12;break;case 17:for(;l<14;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(r.nlen=257+(31&u),u>>>=5,l-=5,r.ndist=1+(31&u),u>>>=5,l-=5,r.ncode=4+(15&u),u>>>=4,l-=4,286<r.nlen||30<r.ndist){e.msg=\"too many length or distance symbols\",r.mode=30;break}r.have=0,r.mode=18;case 18:for(;r.have<r.ncode;){for(;l<3;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.lens[A[r.have++]]=7&u,u>>>=3,l-=3}for(;r.have<19;)r.lens[A[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,S={bits:r.lenbits},x=T(0,r.lens,0,19,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg=\"invalid code lengths set\",r.mode=30;break}r.have=0,r.mode=19;case 19:for(;r.have<r.nlen+r.ndist;){for(;g=(C=r.lencode[u&(1<<r.lenbits)-1])>>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(b<16)u>>>=_,l-=_,r.lens[r.have++]=b;else{if(16===b){for(z=_+2;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(u>>>=_,l-=_,0===r.have){e.msg=\"invalid bit length repeat\",r.mode=30;break}k=r.lens[r.have-1],d=3+(3&u),u>>>=2,l-=2}else if(17===b){for(z=_+3;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}l-=_,k=0,d=3+(7&(u>>>=_)),u>>>=3,l-=3}else{for(z=_+7;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}l-=_,k=0,d=11+(127&(u>>>=_)),u>>>=7,l-=7}if(r.have+d>r.nlen+r.ndist){e.msg=\"invalid bit length repeat\",r.mode=30;break}for(;d--;)r.lens[r.have++]=k}}if(30===r.mode)break;if(0===r.lens[256]){e.msg=\"invalid code -- missing end-of-block\",r.mode=30;break}if(r.lenbits=9,S={bits:r.lenbits},x=T(D,r.lens,0,r.nlen,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg=\"invalid literal/lengths set\",r.mode=30;break}if(r.distbits=6,r.distcode=r.distdyn,S={bits:r.distbits},x=T(F,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,S),r.distbits=S.bits,x){e.msg=\"invalid distances set\",r.mode=30;break}if(r.mode=20,6===t)break e;case 20:r.mode=21;case 21:if(6<=o&&258<=h){e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,R(e,c),a=e.next_out,i=e.output,h=e.avail_out,s=e.next_in,n=e.input,o=e.avail_in,u=r.hold,l=r.bits,12===r.mode&&(r.back=-1);break}for(r.back=0;g=(C=r.lencode[u&(1<<r.lenbits)-1])>>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(g&&0==(240&g)){for(v=_,y=g,w=b;g=(C=r.lencode[w+((u&(1<<v+y)-1)>>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}u>>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,r.length=b,0===g){r.mode=26;break}if(32&g){r.back=-1,r.mode=12;break}if(64&g){e.msg=\"invalid literal/length code\",r.mode=30;break}r.extra=15&g,r.mode=22;case 22:if(r.extra){for(z=r.extra;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.length+=u&(1<<r.extra)-1,u>>>=r.extra,l-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;g=(C=r.distcode[u&(1<<r.distbits)-1])>>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(0==(240&g)){for(v=_,y=g,w=b;g=(C=r.distcode[w+((u&(1<<v+y)-1)>>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}u>>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,64&g){e.msg=\"invalid distance code\",r.mode=30;break}r.offset=b,r.extra=15&g,r.mode=24;case 24:if(r.extra){for(z=r.extra;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.offset+=u&(1<<r.extra)-1,u>>>=r.extra,l-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg=\"invalid distance too far back\",r.mode=30;break}r.mode=25;case 25:if(0===h)break e;if(d=c-h,r.offset>d){if((d=r.offset-d)>r.whave&&r.sane){e.msg=\"invalid distance too far back\",r.mode=30;break}p=d>r.wnext?(d-=r.wnext,r.wsize-d):r.wnext-d,d>r.length&&(d=r.length),m=r.window}else m=i,p=a-r.offset,d=r.length;for(h<d&&(d=h),h-=d,r.length-=d;i[a++]=m[p++],--d;);0===r.length&&(r.mode=21);break;case 26:if(0===h)break e;i[a++]=r.length,h--,r.mode=21;break;case 27:if(r.wrap){for(;l<32;){if(0===o)break e;o--,u|=n[s++]<<l,l+=8}if(c-=h,e.total_out+=c,r.total+=c,c&&(e.adler=r.check=r.flags?B(r.check,i,c,a-c):O(r.check,i,c,a-c)),c=h,(r.flags?u:L(u))!==r.check){e.msg=\"incorrect data check\",r.mode=30;break}l=u=0}r.mode=28;case 28:if(r.wrap&&r.flags){for(;l<32;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(u!==(4294967295&r.total)){e.msg=\"incorrect length check\",r.mode=30;break}l=u=0}r.mode=29;case 29:x=1;break e;case 30:x=-3;break e;case 31:return-4;case 32:default:return U}return e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,(r.wsize||c!==e.avail_out&&r.mode<30&&(r.mode<27||4!==t))&&Z(e,e.output,e.next_out,c-e.avail_out)?(r.mode=31,-4):(f-=e.avail_in,c-=e.avail_out,e.total_in+=f,e.total_out+=c,r.total+=c,r.wrap&&c&&(e.adler=r.check=r.flags?B(r.check,i,c,e.next_out-c):O(r.check,i,c,e.next_out-c)),e.data_type=r.bits+(r.last?64:0)+(12===r.mode?128:0)+(20===r.mode||15===r.mode?256:0),(0==f&&0===c||4===t)&&x===N&&(x=-5),x)},r.inflateEnd=function(e){if(!e||!e.state)return U;var t=e.state;return t.window&&(t.window=null),e.state=null,N},r.inflateGetHeader=function(e,t){var r;return e&&e.state?0==(2&(r=e.state).wrap)?U:((r.head=t).done=!1,N):U},r.inflateSetDictionary=function(e,t){var r,n=t.length;return e&&e.state?0!==(r=e.state).wrap&&11!==r.mode?U:11===r.mode&&O(1,t,n,0)!==r.check?-3:Z(e,t,n,n)?(r.mode=31,-4):(r.havedict=1,N):U},r.inflateInfo=\"pako inflate (from Nodeca project)\"},{\"../utils/common\":41,\"./adler32\":43,\"./crc32\":45,\"./inffast\":48,\"./inftrees\":50}],50:[function(e,t,r){\"use strict\";var D=e(\"../utils/common\"),F=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],N=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],U=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],P=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];t.exports=function(e,t,r,n,i,s,a,o){var h,u,l,f,c,d,p,m,_,g=o.bits,b=0,v=0,y=0,w=0,k=0,x=0,S=0,z=0,C=0,E=0,A=null,I=0,O=new D.Buf16(16),B=new D.Buf16(16),R=null,T=0;for(b=0;b<=15;b++)O[b]=0;for(v=0;v<n;v++)O[t[r+v]]++;for(k=g,w=15;1<=w&&0===O[w];w--);if(w<k&&(k=w),0===w)return i[s++]=20971520,i[s++]=20971520,o.bits=1,0;for(y=1;y<w&&0===O[y];y++);for(k<y&&(k=y),b=z=1;b<=15;b++)if(z<<=1,(z-=O[b])<0)return-1;if(0<z&&(0===e||1!==w))return-1;for(B[1]=0,b=1;b<15;b++)B[b+1]=B[b]+O[b];for(v=0;v<n;v++)0!==t[r+v]&&(a[B[t[r+v]]++]=v);if(d=0===e?(A=R=a,19):1===e?(A=F,I-=257,R=N,T-=257,256):(A=U,R=P,-1),b=y,c=s,S=v=E=0,l=-1,f=(C=1<<(x=k))-1,1===e&&852<C||2===e&&592<C)return 1;for(;;){for(p=b-S,_=a[v]<d?(m=0,a[v]):a[v]>d?(m=R[T+a[v]],A[I+a[v]]):(m=96,0),h=1<<b-S,y=u=1<<x;i[c+(E>>S)+(u-=h)]=p<<24|m<<16|_|0,0!==u;);for(h=1<<b-1;E&h;)h>>=1;if(0!==h?(E&=h-1,E+=h):E=0,v++,0==--O[b]){if(b===w)break;b=t[r+a[v]]}if(k<b&&(E&f)!==l){for(0===S&&(S=k),c+=y,z=1<<(x=b-S);x+S<w&&!((z-=O[x+S])<=0);)x++,z<<=1;if(C+=1<<x,1===e&&852<C||2===e&&592<C)return 1;i[l=E&f]=k<<24|x<<16|c-s|0}}return 0!==E&&(i[c+E]=b-S<<24|64<<16|0),o.bits=k,0}},{\"../utils/common\":41}],51:[function(e,t,r){\"use strict\";t.exports={2:\"need dictionary\",1:\"stream end\",0:\"\",\"-1\":\"file error\",\"-2\":\"stream error\",\"-3\":\"data error\",\"-4\":\"insufficient memory\",\"-5\":\"buffer error\",\"-6\":\"incompatible version\"}},{}],52:[function(e,t,r){\"use strict\";var i=e(\"../utils/common\"),o=0,h=1;function n(e){for(var t=e.length;0<=--t;)e[t]=0}var s=0,a=29,u=256,l=u+1+a,f=30,c=19,_=2*l+1,g=15,d=16,p=7,m=256,b=16,v=17,y=18,w=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],k=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],x=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],S=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],z=new Array(2*(l+2));n(z);var C=new Array(2*f);n(C);var E=new Array(512);n(E);var A=new Array(256);n(A);var I=new Array(a);n(I);var O,B,R,T=new Array(f);function D(e,t,r,n,i){this.static_tree=e,this.extra_bits=t,this.extra_base=r,this.elems=n,this.max_length=i,this.has_stree=e&&e.length}function F(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}function N(e){return e<256?E[e]:E[256+(e>>>7)]}function U(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function P(e,t,r){e.bi_valid>d-r?(e.bi_buf|=t<<e.bi_valid&65535,U(e,e.bi_buf),e.bi_buf=t>>d-e.bi_valid,e.bi_valid+=r-d):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=r)}function L(e,t,r){P(e,r[2*t],r[2*t+1])}function j(e,t){for(var r=0;r|=1&e,e>>>=1,r<<=1,0<--t;);return r>>>1}function Z(e,t,r){var n,i,s=new Array(g+1),a=0;for(n=1;n<=g;n++)s[n]=a=a+r[n-1]<<1;for(i=0;i<=t;i++){var o=e[2*i+1];0!==o&&(e[2*i]=j(s[o]++,o))}}function W(e){var t;for(t=0;t<l;t++)e.dyn_ltree[2*t]=0;for(t=0;t<f;t++)e.dyn_dtree[2*t]=0;for(t=0;t<c;t++)e.bl_tree[2*t]=0;e.dyn_ltree[2*m]=1,e.opt_len=e.static_len=0,e.last_lit=e.matches=0}function M(e){8<e.bi_valid?U(e,e.bi_buf):0<e.bi_valid&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0}function H(e,t,r,n){var i=2*t,s=2*r;return e[i]<e[s]||e[i]===e[s]&&n[t]<=n[r]}function G(e,t,r){for(var n=e.heap[r],i=r<<1;i<=e.heap_len&&(i<e.heap_len&&H(t,e.heap[i+1],e.heap[i],e.depth)&&i++,!H(t,n,e.heap[i],e.depth));)e.heap[r]=e.heap[i],r=i,i<<=1;e.heap[r]=n}function K(e,t,r){var n,i,s,a,o=0;if(0!==e.last_lit)for(;n=e.pending_buf[e.d_buf+2*o]<<8|e.pending_buf[e.d_buf+2*o+1],i=e.pending_buf[e.l_buf+o],o++,0===n?L(e,i,t):(L(e,(s=A[i])+u+1,t),0!==(a=w[s])&&P(e,i-=I[s],a),L(e,s=N(--n),r),0!==(a=k[s])&&P(e,n-=T[s],a)),o<e.last_lit;);L(e,m,t)}function Y(e,t){var r,n,i,s=t.dyn_tree,a=t.stat_desc.static_tree,o=t.stat_desc.has_stree,h=t.stat_desc.elems,u=-1;for(e.heap_len=0,e.heap_max=_,r=0;r<h;r++)0!==s[2*r]?(e.heap[++e.heap_len]=u=r,e.depth[r]=0):s[2*r+1]=0;for(;e.heap_len<2;)s[2*(i=e.heap[++e.heap_len]=u<2?++u:0)]=1,e.depth[i]=0,e.opt_len--,o&&(e.static_len-=a[2*i+1]);for(t.max_code=u,r=e.heap_len>>1;1<=r;r--)G(e,s,r);for(i=h;r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],G(e,s,1),n=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=n,s[2*i]=s[2*r]+s[2*n],e.depth[i]=(e.depth[r]>=e.depth[n]?e.depth[r]:e.depth[n])+1,s[2*r+1]=s[2*n+1]=i,e.heap[1]=i++,G(e,s,1),2<=e.heap_len;);e.heap[--e.heap_max]=e.heap[1],function(e,t){var r,n,i,s,a,o,h=t.dyn_tree,u=t.max_code,l=t.stat_desc.static_tree,f=t.stat_desc.has_stree,c=t.stat_desc.extra_bits,d=t.stat_desc.extra_base,p=t.stat_desc.max_length,m=0;for(s=0;s<=g;s++)e.bl_count[s]=0;for(h[2*e.heap[e.heap_max]+1]=0,r=e.heap_max+1;r<_;r++)p<(s=h[2*h[2*(n=e.heap[r])+1]+1]+1)&&(s=p,m++),h[2*n+1]=s,u<n||(e.bl_count[s]++,a=0,d<=n&&(a=c[n-d]),o=h[2*n],e.opt_len+=o*(s+a),f&&(e.static_len+=o*(l[2*n+1]+a)));if(0!==m){do{for(s=p-1;0===e.bl_count[s];)s--;e.bl_count[s]--,e.bl_count[s+1]+=2,e.bl_count[p]--,m-=2}while(0<m);for(s=p;0!==s;s--)for(n=e.bl_count[s];0!==n;)u<(i=e.heap[--r])||(h[2*i+1]!==s&&(e.opt_len+=(s-h[2*i+1])*h[2*i],h[2*i+1]=s),n--)}}(e,t),Z(s,u,e.bl_count)}function X(e,t,r){var n,i,s=-1,a=t[1],o=0,h=7,u=4;for(0===a&&(h=138,u=3),t[2*(r+1)+1]=65535,n=0;n<=r;n++)i=a,a=t[2*(n+1)+1],++o<h&&i===a||(o<u?e.bl_tree[2*i]+=o:0!==i?(i!==s&&e.bl_tree[2*i]++,e.bl_tree[2*b]++):o<=10?e.bl_tree[2*v]++:e.bl_tree[2*y]++,s=i,u=(o=0)===a?(h=138,3):i===a?(h=6,3):(h=7,4))}function V(e,t,r){var n,i,s=-1,a=t[1],o=0,h=7,u=4;for(0===a&&(h=138,u=3),n=0;n<=r;n++)if(i=a,a=t[2*(n+1)+1],!(++o<h&&i===a)){if(o<u)for(;L(e,i,e.bl_tree),0!=--o;);else 0!==i?(i!==s&&(L(e,i,e.bl_tree),o--),L(e,b,e.bl_tree),P(e,o-3,2)):o<=10?(L(e,v,e.bl_tree),P(e,o-3,3)):(L(e,y,e.bl_tree),P(e,o-11,7));s=i,u=(o=0)===a?(h=138,3):i===a?(h=6,3):(h=7,4)}}n(T);var q=!1;function J(e,t,r,n){P(e,(s<<1)+(n?1:0),3),function(e,t,r,n){M(e),n&&(U(e,r),U(e,~r)),i.arraySet(e.pending_buf,e.window,t,r,e.pending),e.pending+=r}(e,t,r,!0)}r._tr_init=function(e){q||(function(){var e,t,r,n,i,s=new Array(g+1);for(n=r=0;n<a-1;n++)for(I[n]=r,e=0;e<1<<w[n];e++)A[r++]=n;for(A[r-1]=n,n=i=0;n<16;n++)for(T[n]=i,e=0;e<1<<k[n];e++)E[i++]=n;for(i>>=7;n<f;n++)for(T[n]=i<<7,e=0;e<1<<k[n]-7;e++)E[256+i++]=n;for(t=0;t<=g;t++)s[t]=0;for(e=0;e<=143;)z[2*e+1]=8,e++,s[8]++;for(;e<=255;)z[2*e+1]=9,e++,s[9]++;for(;e<=279;)z[2*e+1]=7,e++,s[7]++;for(;e<=287;)z[2*e+1]=8,e++,s[8]++;for(Z(z,l+1,s),e=0;e<f;e++)C[2*e+1]=5,C[2*e]=j(e,5);O=new D(z,w,u+1,l,g),B=new D(C,k,0,f,g),R=new D(new Array(0),x,0,c,p)}(),q=!0),e.l_desc=new F(e.dyn_ltree,O),e.d_desc=new F(e.dyn_dtree,B),e.bl_desc=new F(e.bl_tree,R),e.bi_buf=0,e.bi_valid=0,W(e)},r._tr_stored_block=J,r._tr_flush_block=function(e,t,r,n){var i,s,a=0;0<e.level?(2===e.strm.data_type&&(e.strm.data_type=function(e){var t,r=4093624447;for(t=0;t<=31;t++,r>>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return o;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return h;for(t=32;t<u;t++)if(0!==e.dyn_ltree[2*t])return h;return o}(e)),Y(e,e.l_desc),Y(e,e.d_desc),a=function(e){var t;for(X(e,e.dyn_ltree,e.l_desc.max_code),X(e,e.dyn_dtree,e.d_desc.max_code),Y(e,e.bl_desc),t=c-1;3<=t&&0===e.bl_tree[2*S[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t}(e),i=e.opt_len+3+7>>>3,(s=e.static_len+3+7>>>3)<=i&&(i=s)):i=s=r+5,r+4<=i&&-1!==t?J(e,t,r,n):4===e.strategy||s===i?(P(e,2+(n?1:0),3),K(e,z,C)):(P(e,4+(n?1:0),3),function(e,t,r,n){var i;for(P(e,t-257,5),P(e,r-1,5),P(e,n-4,4),i=0;i<n;i++)P(e,e.bl_tree[2*S[i]+1],3);V(e,e.dyn_ltree,t-1),V(e,e.dyn_dtree,r-1)}(e,e.l_desc.max_code+1,e.d_desc.max_code+1,a+1),K(e,e.dyn_ltree,e.dyn_dtree)),W(e),n&&M(e)},r._tr_tally=function(e,t,r){return e.pending_buf[e.d_buf+2*e.last_lit]=t>>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(A[r]+u+1)]++,e.dyn_dtree[2*N(t)]++),e.last_lit===e.lit_bufsize-1},r._tr_align=function(e){P(e,2,3),L(e,m,z),function(e){16===e.bi_valid?(U(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):8<=e.bi_valid&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},{\"../utils/common\":41}],53:[function(e,t,r){\"use strict\";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(e,t,r){(function(e){!function(r,n){\"use strict\";if(!r.setImmediate){var i,s,t,a,o=1,h={},u=!1,l=r.document,e=Object.getPrototypeOf&&Object.getPrototypeOf(r);e=e&&e.setTimeout?e:r,i=\"[object process]\"==={}.toString.call(r.process)?function(e){process.nextTick(function(){c(e)})}:function(){if(r.postMessage&&!r.importScripts){var e=!0,t=r.onmessage;return r.onmessage=function(){e=!1},r.postMessage(\"\",\"*\"),r.onmessage=t,e}}()?(a=\"setImmediate$\"+Math.random()+\"$\",r.addEventListener?r.addEventListener(\"message\",d,!1):r.attachEvent(\"onmessage\",d),function(e){r.postMessage(a+e,\"*\")}):r.MessageChannel?((t=new MessageChannel).port1.onmessage=function(e){c(e.data)},function(e){t.port2.postMessage(e)}):l&&\"onreadystatechange\"in l.createElement(\"script\")?(s=l.documentElement,function(e){var t=l.createElement(\"script\");t.onreadystatechange=function(){c(e),t.onreadystatechange=null,s.removeChild(t),t=null},s.appendChild(t)}):function(e){setTimeout(c,0,e)},e.setImmediate=function(e){\"function\"!=typeof e&&(e=new Function(\"\"+e));for(var t=new Array(arguments.length-1),r=0;r<t.length;r++)t[r]=arguments[r+1];var n={callback:e,args:t};return h[o]=n,i(o),o++},e.clearImmediate=f}function f(e){delete h[e]}function c(e){if(u)setTimeout(c,0,e);else{var t=h[e];if(t){u=!0;try{!function(e){var t=e.callback,r=e.args;switch(r.length){case 0:t();break;case 1:t(r[0]);break;case 2:t(r[0],r[1]);break;case 3:t(r[0],r[1],r[2]);break;default:t.apply(n,r)}}(t)}finally{f(e),u=!1}}}}function d(e){e.source===r&&\"string\"==typeof e.data&&0===e.data.indexOf(a)&&c(+e.data.slice(a.length))}}(\"undefined\"==typeof self?void 0===e?this:e:self)}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}]},{},[10])(10)});","export const defaultMessages = 'End-Of-Stream';\n/**\n * Thrown on read operation of the end of file or stream has been reached\n */\nexport class EndOfStreamError extends Error {\n    constructor() {\n        super(defaultMessages);\n        this.name = \"EndOfStreamError\";\n    }\n}\nexport class AbortError extends Error {\n    constructor(message = \"The operation was aborted\") {\n        super(message);\n        this.name = \"AbortError\";\n    }\n}\n","import { EndOfStreamError, AbortError } from \"./Errors.js\";\nexport class AbstractStreamReader {\n    constructor() {\n        this.endOfStream = false;\n        this.interrupted = false;\n        /**\n         * Store peeked data\n         * @type {Array}\n         */\n        this.peekQueue = [];\n    }\n    async peek(uint8Array, mayBeLess = false) {\n        const bytesRead = await this.read(uint8Array, mayBeLess);\n        this.peekQueue.push(uint8Array.subarray(0, bytesRead)); // Put read data back to peek buffer\n        return bytesRead;\n    }\n    async read(buffer, mayBeLess = false) {\n        if (buffer.length === 0) {\n            return 0;\n        }\n        let bytesRead = this.readFromPeekBuffer(buffer);\n        if (!this.endOfStream) {\n            bytesRead += await this.readRemainderFromStream(buffer.subarray(bytesRead), mayBeLess);\n        }\n        if (bytesRead === 0 && !mayBeLess) {\n            throw new EndOfStreamError();\n        }\n        return bytesRead;\n    }\n    /**\n     * Read chunk from stream\n     * @param buffer - Target Uint8Array (or Buffer) to store data read from stream in\n     * @returns Number of bytes read\n     */\n    readFromPeekBuffer(buffer) {\n        let remaining = buffer.length;\n        let bytesRead = 0;\n        // consume peeked data first\n        while (this.peekQueue.length > 0 && remaining > 0) {\n            const peekData = this.peekQueue.pop(); // Front of queue\n            if (!peekData)\n                throw new Error('peekData should be defined');\n            const lenCopy = Math.min(peekData.length, remaining);\n            buffer.set(peekData.subarray(0, lenCopy), bytesRead);\n            bytesRead += lenCopy;\n            remaining -= lenCopy;\n            if (lenCopy < peekData.length) {\n                // remainder back to queue\n                this.peekQueue.push(peekData.subarray(lenCopy));\n            }\n        }\n        return bytesRead;\n    }\n    async readRemainderFromStream(buffer, mayBeLess) {\n        let bytesRead = 0;\n        // Continue reading from stream if required\n        while (bytesRead < buffer.length && !this.endOfStream) {\n            if (this.interrupted) {\n                throw new AbortError();\n            }\n            const chunkLen = await this.readFromStream(buffer.subarray(bytesRead), mayBeLess);\n            if (chunkLen === 0)\n                break;\n            bytesRead += chunkLen;\n        }\n        if (!mayBeLess && bytesRead < buffer.length) {\n            throw new EndOfStreamError();\n        }\n        return bytesRead;\n    }\n}\n","import { AbstractStreamReader } from \"./AbstractStreamReader.js\";\nexport class WebStreamReader extends AbstractStreamReader {\n    constructor(reader) {\n        super();\n        this.reader = reader;\n    }\n    async abort() {\n        return this.close();\n    }\n    async close() {\n        this.reader.releaseLock();\n    }\n}\n","import { WebStreamReader } from './WebStreamReader.js';\n/**\n * Read from a WebStream using a BYOB reader\n * Reference: https://nodejs.org/api/webstreams.html#class-readablestreambyobreader\n */\nexport class WebStreamByobReader extends WebStreamReader {\n    /**\n     * Read from stream\n     * @param buffer - Target Uint8Array (or Buffer) to store data read from stream in\n     * @param mayBeLess - If true, may fill the buffer partially\n     * @protected Bytes read\n     */\n    async readFromStream(buffer, mayBeLess) {\n        if (buffer.length === 0)\n            return 0;\n        // @ts-ignore\n        const result = await this.reader.read(new Uint8Array(buffer.length), { min: mayBeLess ? undefined : buffer.length });\n        if (result.done) {\n            this.endOfStream = result.done;\n        }\n        if (result.value) {\n            buffer.set(result.value);\n            return result.value.length;\n        }\n        return 0;\n    }\n}\n","import { EndOfStreamError } from './Errors.js';\nimport { AbstractStreamReader } from \"./AbstractStreamReader.js\";\nexport class WebStreamDefaultReader extends AbstractStreamReader {\n    constructor(reader) {\n        super();\n        this.reader = reader;\n        this.buffer = null; // Internal buffer to store excess data\n    }\n    /**\n     * Copy chunk to target, and store the remainder in this.buffer\n     */\n    writeChunk(target, chunk) {\n        const written = Math.min(chunk.length, target.length);\n        target.set(chunk.subarray(0, written));\n        // Adjust the remainder of the buffer\n        if (written < chunk.length) {\n            this.buffer = chunk.subarray(written);\n        }\n        else {\n            this.buffer = null;\n        }\n        return written;\n    }\n    /**\n     * Read from stream\n     * @param buffer - Target Uint8Array (or Buffer) to store data read from stream in\n     * @param mayBeLess - If true, may fill the buffer partially\n     * @protected Bytes read\n     */\n    async readFromStream(buffer, mayBeLess) {\n        if (buffer.length === 0)\n            return 0;\n        let totalBytesRead = 0;\n        // Serve from the internal buffer first\n        if (this.buffer) {\n            totalBytesRead += this.writeChunk(buffer, this.buffer);\n        }\n        // Continue reading from the stream if more data is needed\n        while (totalBytesRead < buffer.length && !this.endOfStream) {\n            const result = await this.reader.read();\n            if (result.done) {\n                this.endOfStream = true;\n                break;\n            }\n            if (result.value) {\n                totalBytesRead += this.writeChunk(buffer.subarray(totalBytesRead), result.value);\n            }\n        }\n        if (!mayBeLess && totalBytesRead === 0 && this.endOfStream) {\n            throw new EndOfStreamError();\n        }\n        return totalBytesRead;\n    }\n    abort() {\n        this.interrupted = true;\n        return this.reader.cancel();\n    }\n    async close() {\n        await this.abort();\n        this.reader.releaseLock();\n    }\n}\n","import { EndOfStreamError } from './stream/index.js';\n/**\n * Core tokenizer\n */\nexport class AbstractTokenizer {\n    /**\n     * Constructor\n     * @param options Tokenizer options\n     * @protected\n     */\n    constructor(options) {\n        this.numBuffer = new Uint8Array(8);\n        /**\n         * Tokenizer-stream position\n         */\n        this.position = 0;\n        this.onClose = options?.onClose;\n        if (options?.abortSignal) {\n            options.abortSignal.addEventListener('abort', () => {\n                this.abort();\n            });\n        }\n    }\n    /**\n     * Read a token from the tokenizer-stream\n     * @param token - The token to read\n     * @param position - If provided, the desired position in the tokenizer-stream\n     * @returns Promise with token data\n     */\n    async readToken(token, position = this.position) {\n        const uint8Array = new Uint8Array(token.len);\n        const len = await this.readBuffer(uint8Array, { position });\n        if (len < token.len)\n            throw new EndOfStreamError();\n        return token.get(uint8Array, 0);\n    }\n    /**\n     * Peek a token from the tokenizer-stream.\n     * @param token - Token to peek from the tokenizer-stream.\n     * @param position - Offset where to begin reading within the file. If position is null, data will be read from the current file position.\n     * @returns Promise with token data\n     */\n    async peekToken(token, position = this.position) {\n        const uint8Array = new Uint8Array(token.len);\n        const len = await this.peekBuffer(uint8Array, { position });\n        if (len < token.len)\n            throw new EndOfStreamError();\n        return token.get(uint8Array, 0);\n    }\n    /**\n     * Read a numeric token from the stream\n     * @param token - Numeric token\n     * @returns Promise with number\n     */\n    async readNumber(token) {\n        const len = await this.readBuffer(this.numBuffer, { length: token.len });\n        if (len < token.len)\n            throw new EndOfStreamError();\n        return token.get(this.numBuffer, 0);\n    }\n    /**\n     * Read a numeric token from the stream\n     * @param token - Numeric token\n     * @returns Promise with number\n     */\n    async peekNumber(token) {\n        const len = await this.peekBuffer(this.numBuffer, { length: token.len });\n        if (len < token.len)\n            throw new EndOfStreamError();\n        return token.get(this.numBuffer, 0);\n    }\n    /**\n     * Ignore number of bytes, advances the pointer in under tokenizer-stream.\n     * @param length - Number of bytes to ignore\n     * @return resolves the number of bytes ignored, equals length if this available, otherwise the number of bytes available\n     */\n    async ignore(length) {\n        if (this.fileInfo.size !== undefined) {\n            const bytesLeft = this.fileInfo.size - this.position;\n            if (length > bytesLeft) {\n                this.position += bytesLeft;\n                return bytesLeft;\n            }\n        }\n        this.position += length;\n        return length;\n    }\n    async close() {\n        await this.abort();\n        await this.onClose?.();\n    }\n    normalizeOptions(uint8Array, options) {\n        if (!this.supportsRandomAccess() && options && options.position !== undefined && options.position < this.position) {\n            throw new Error('`options.position` must be equal or greater than `tokenizer.position`');\n        }\n        return {\n            ...{\n                mayBeLess: false,\n                offset: 0,\n                length: uint8Array.length,\n                position: this.position\n            }, ...options\n        };\n    }\n    abort() {\n        return Promise.resolve(); // Ignore abort signal\n    }\n}\n","import { AbstractTokenizer } from './AbstractTokenizer.js';\nimport { EndOfStreamError } from './stream/index.js';\nconst maxBufferSize = 256000;\nexport class ReadStreamTokenizer extends AbstractTokenizer {\n    /**\n     * Constructor\n     * @param streamReader stream-reader to read from\n     * @param options Tokenizer options\n     */\n    constructor(streamReader, options) {\n        super(options);\n        this.streamReader = streamReader;\n        this.fileInfo = options?.fileInfo ?? {};\n    }\n    /**\n     * Read buffer from tokenizer\n     * @param uint8Array - Target Uint8Array to fill with data read from the tokenizer-stream\n     * @param options - Read behaviour options\n     * @returns Promise with number of bytes read\n     */\n    async readBuffer(uint8Array, options) {\n        const normOptions = this.normalizeOptions(uint8Array, options);\n        const skipBytes = normOptions.position - this.position;\n        if (skipBytes > 0) {\n            await this.ignore(skipBytes);\n            return this.readBuffer(uint8Array, options);\n        }\n        if (skipBytes < 0) {\n            throw new Error('`options.position` must be equal or greater than `tokenizer.position`');\n        }\n        if (normOptions.length === 0) {\n            return 0;\n        }\n        const bytesRead = await this.streamReader.read(uint8Array.subarray(0, normOptions.length), normOptions.mayBeLess);\n        this.position += bytesRead;\n        if ((!options || !options.mayBeLess) && bytesRead < normOptions.length) {\n            throw new EndOfStreamError();\n        }\n        return bytesRead;\n    }\n    /**\n     * Peek (read ahead) buffer from tokenizer\n     * @param uint8Array - Uint8Array (or Buffer) to write data to\n     * @param options - Read behaviour options\n     * @returns Promise with number of bytes peeked\n     */\n    async peekBuffer(uint8Array, options) {\n        const normOptions = this.normalizeOptions(uint8Array, options);\n        let bytesRead = 0;\n        if (normOptions.position) {\n            const skipBytes = normOptions.position - this.position;\n            if (skipBytes > 0) {\n                const skipBuffer = new Uint8Array(normOptions.length + skipBytes);\n                bytesRead = await this.peekBuffer(skipBuffer, { mayBeLess: normOptions.mayBeLess });\n                uint8Array.set(skipBuffer.subarray(skipBytes));\n                return bytesRead - skipBytes;\n            }\n            if (skipBytes < 0) {\n                throw new Error('Cannot peek from a negative offset in a stream');\n            }\n        }\n        if (normOptions.length > 0) {\n            try {\n                bytesRead = await this.streamReader.peek(uint8Array.subarray(0, normOptions.length), normOptions.mayBeLess);\n            }\n            catch (err) {\n                if (options?.mayBeLess && err instanceof EndOfStreamError) {\n                    return 0;\n                }\n                throw err;\n            }\n            if ((!normOptions.mayBeLess) && bytesRead < normOptions.length) {\n                throw new EndOfStreamError();\n            }\n        }\n        return bytesRead;\n    }\n    async ignore(length) {\n        // debug(`ignore ${this.position}...${this.position + length - 1}`);\n        const bufSize = Math.min(maxBufferSize, length);\n        const buf = new Uint8Array(bufSize);\n        let totBytesRead = 0;\n        while (totBytesRead < length) {\n            const remaining = length - totBytesRead;\n            const bytesRead = await this.readBuffer(buf, { length: Math.min(bufSize, remaining) });\n            if (bytesRead < 0) {\n                return bytesRead;\n            }\n            totBytesRead += bytesRead;\n        }\n        return totBytesRead;\n    }\n    abort() {\n        return this.streamReader.abort();\n    }\n    async close() {\n        return this.streamReader.close();\n    }\n    supportsRandomAccess() {\n        return false;\n    }\n}\n","import { EndOfStreamError } from './stream/index.js';\nimport { AbstractTokenizer } from './AbstractTokenizer.js';\nexport class BufferTokenizer extends AbstractTokenizer {\n    /**\n     * Construct BufferTokenizer\n     * @param uint8Array - Uint8Array to tokenize\n     * @param options Tokenizer options\n     */\n    constructor(uint8Array, options) {\n        super(options);\n        this.uint8Array = uint8Array;\n        this.fileInfo = { ...options?.fileInfo ?? {}, ...{ size: uint8Array.length } };\n    }\n    /**\n     * Read buffer from tokenizer\n     * @param uint8Array - Uint8Array to tokenize\n     * @param options - Read behaviour options\n     * @returns {Promise<number>}\n     */\n    async readBuffer(uint8Array, options) {\n        if (options?.position) {\n            this.position = options.position;\n        }\n        const bytesRead = await this.peekBuffer(uint8Array, options);\n        this.position += bytesRead;\n        return bytesRead;\n    }\n    /**\n     * Peek (read ahead) buffer from tokenizer\n     * @param uint8Array\n     * @param options - Read behaviour options\n     * @returns {Promise<number>}\n     */\n    async peekBuffer(uint8Array, options) {\n        const normOptions = this.normalizeOptions(uint8Array, options);\n        const bytes2read = Math.min(this.uint8Array.length - normOptions.position, normOptions.length);\n        if ((!normOptions.mayBeLess) && bytes2read < normOptions.length) {\n            throw new EndOfStreamError();\n        }\n        uint8Array.set(this.uint8Array.subarray(normOptions.position, normOptions.position + bytes2read));\n        return bytes2read;\n    }\n    close() {\n        return super.close();\n    }\n    supportsRandomAccess() {\n        return true;\n    }\n    setPosition(position) {\n        this.position = position;\n    }\n}\n","import { StreamReader, makeWebStreamReader } from './stream/index.js';\nimport { ReadStreamTokenizer } from './ReadStreamTokenizer.js';\nimport { BufferTokenizer } from './BufferTokenizer.js';\nimport { BlobTokenizer } from './BlobTokenizer.js';\nexport { EndOfStreamError, AbortError } from './stream/index.js';\nexport { AbstractTokenizer } from './AbstractTokenizer.js';\n/**\n * Construct ReadStreamTokenizer from given Stream.\n * Will set fileSize, if provided given Stream has set the .path property/\n * @param stream - Read from Node.js Stream.Readable\n * @param options - Tokenizer options\n * @returns ReadStreamTokenizer\n */\nexport function fromStream(stream, options) {\n    const streamReader = new StreamReader(stream);\n    const _options = options ?? {};\n    const chainedClose = _options.onClose;\n    _options.onClose = async () => {\n        await streamReader.close();\n        if (chainedClose) {\n            return chainedClose();\n        }\n    };\n    return new ReadStreamTokenizer(streamReader, _options);\n}\n/**\n * Construct ReadStreamTokenizer from given ReadableStream (WebStream API).\n * Will set fileSize, if provided given Stream has set the .path property/\n * @param webStream - Read from Node.js Stream.Readable (must be a byte stream)\n * @param options - Tokenizer options\n * @returns ReadStreamTokenizer\n */\nexport function fromWebStream(webStream, options) {\n    const webStreamReader = makeWebStreamReader(webStream);\n    const _options = options ?? {};\n    const chainedClose = _options.onClose;\n    _options.onClose = async () => {\n        await webStreamReader.close();\n        if (chainedClose) {\n            return chainedClose();\n        }\n    };\n    return new ReadStreamTokenizer(webStreamReader, _options);\n}\n/**\n * Construct ReadStreamTokenizer from given Buffer.\n * @param uint8Array - Uint8Array to tokenize\n * @param options - Tokenizer options\n * @returns BufferTokenizer\n */\nexport function fromBuffer(uint8Array, options) {\n    return new BufferTokenizer(uint8Array, options);\n}\n/**\n * Construct ReadStreamTokenizer from given Blob.\n * @param blob - Uint8Array to tokenize\n * @param options - Tokenizer options\n * @returns BufferTokenizer\n */\nexport function fromBlob(blob, options) {\n    return new BlobTokenizer(blob, options);\n}\n","import { WebStreamByobReader } from './WebStreamByobReader.js';\nimport { WebStreamDefaultReader } from './WebStreamDefaultReader.js';\nexport function makeWebStreamReader(stream) {\n    try {\n        const reader = stream.getReader({ mode: \"byob\" });\n        if (reader instanceof ReadableStreamDefaultReader) {\n            // Fallback to default reader in case `mode: byob` is ignored\n            return new WebStreamDefaultReader(reader);\n        }\n        return new WebStreamByobReader(reader);\n    }\n    catch (error) {\n        if (error instanceof TypeError) {\n            // Fallback to default reader in case `mode: byob` rejected by a `TypeError`\n            return new WebStreamDefaultReader(stream.getReader());\n        }\n        throw error;\n    }\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n  var e, m\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var nBits = -7\n  var i = isLE ? (nBytes - 1) : 0\n  var d = isLE ? -1 : 1\n  var s = buffer[offset + i]\n\n  i += d\n\n  e = s & ((1 << (-nBits)) - 1)\n  s >>= (-nBits)\n  nBits += eLen\n  for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  m = e & ((1 << (-nBits)) - 1)\n  e >>= (-nBits)\n  nBits += mLen\n  for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  if (e === 0) {\n    e = 1 - eBias\n  } else if (e === eMax) {\n    return m ? NaN : ((s ? -1 : 1) * Infinity)\n  } else {\n    m = m + Math.pow(2, mLen)\n    e = e - eBias\n  }\n  return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n  var e, m, c\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n  var i = isLE ? 0 : (nBytes - 1)\n  var d = isLE ? 1 : -1\n  var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n  value = Math.abs(value)\n\n  if (isNaN(value) || value === Infinity) {\n    m = isNaN(value) ? 1 : 0\n    e = eMax\n  } else {\n    e = Math.floor(Math.log(value) / Math.LN2)\n    if (value * (c = Math.pow(2, -e)) < 1) {\n      e--\n      c *= 2\n    }\n    if (e + eBias >= 1) {\n      value += rt / c\n    } else {\n      value += rt * Math.pow(2, 1 - eBias)\n    }\n    if (value * c >= 2) {\n      e++\n      c /= 2\n    }\n\n    if (e + eBias >= eMax) {\n      m = 0\n      e = eMax\n    } else if (e + eBias >= 1) {\n      m = ((value * c) - 1) * Math.pow(2, mLen)\n      e = e + eBias\n    } else {\n      m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n      e = 0\n    }\n  }\n\n  for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n  e = (e << mLen) | m\n  eLen += mLen\n  for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n  buffer[offset + i - d] |= s * 128\n}\n","import * as ieee754 from 'ieee754';\n// Primitive types\nfunction dv(array) {\n    return new DataView(array.buffer, array.byteOffset);\n}\n/**\n * 8-bit unsigned integer\n */\nexport const UINT8 = {\n    len: 1,\n    get(array, offset) {\n        return dv(array).getUint8(offset);\n    },\n    put(array, offset, value) {\n        dv(array).setUint8(offset, value);\n        return offset + 1;\n    }\n};\n/**\n * 16-bit unsigned integer, Little Endian byte order\n */\nexport const UINT16_LE = {\n    len: 2,\n    get(array, offset) {\n        return dv(array).getUint16(offset, true);\n    },\n    put(array, offset, value) {\n        dv(array).setUint16(offset, value, true);\n        return offset + 2;\n    }\n};\n/**\n * 16-bit unsigned integer, Big Endian byte order\n */\nexport const UINT16_BE = {\n    len: 2,\n    get(array, offset) {\n        return dv(array).getUint16(offset);\n    },\n    put(array, offset, value) {\n        dv(array).setUint16(offset, value);\n        return offset + 2;\n    }\n};\n/**\n * 24-bit unsigned integer, Little Endian byte order\n */\nexport const UINT24_LE = {\n    len: 3,\n    get(array, offset) {\n        const dataView = dv(array);\n        return dataView.getUint8(offset) + (dataView.getUint16(offset + 1, true) << 8);\n    },\n    put(array, offset, value) {\n        const dataView = dv(array);\n        dataView.setUint8(offset, value & 0xff);\n        dataView.setUint16(offset + 1, value >> 8, true);\n        return offset + 3;\n    }\n};\n/**\n * 24-bit unsigned integer, Big Endian byte order\n */\nexport const UINT24_BE = {\n    len: 3,\n    get(array, offset) {\n        const dataView = dv(array);\n        return (dataView.getUint16(offset) << 8) + dataView.getUint8(offset + 2);\n    },\n    put(array, offset, value) {\n        const dataView = dv(array);\n        dataView.setUint16(offset, value >> 8);\n        dataView.setUint8(offset + 2, value & 0xff);\n        return offset + 3;\n    }\n};\n/**\n * 32-bit unsigned integer, Little Endian byte order\n */\nexport const UINT32_LE = {\n    len: 4,\n    get(array, offset) {\n        return dv(array).getUint32(offset, true);\n    },\n    put(array, offset, value) {\n        dv(array).setUint32(offset, value, true);\n        return offset + 4;\n    }\n};\n/**\n * 32-bit unsigned integer, Big Endian byte order\n */\nexport const UINT32_BE = {\n    len: 4,\n    get(array, offset) {\n        return dv(array).getUint32(offset);\n    },\n    put(array, offset, value) {\n        dv(array).setUint32(offset, value);\n        return offset + 4;\n    }\n};\n/**\n * 8-bit signed integer\n */\nexport const INT8 = {\n    len: 1,\n    get(array, offset) {\n        return dv(array).getInt8(offset);\n    },\n    put(array, offset, value) {\n        dv(array).setInt8(offset, value);\n        return offset + 1;\n    }\n};\n/**\n * 16-bit signed integer, Big Endian byte order\n */\nexport const INT16_BE = {\n    len: 2,\n    get(array, offset) {\n        return dv(array).getInt16(offset);\n    },\n    put(array, offset, value) {\n        dv(array).setInt16(offset, value);\n        return offset + 2;\n    }\n};\n/**\n * 16-bit signed integer, Little Endian byte order\n */\nexport const INT16_LE = {\n    len: 2,\n    get(array, offset) {\n        return dv(array).getInt16(offset, true);\n    },\n    put(array, offset, value) {\n        dv(array).setInt16(offset, value, true);\n        return offset + 2;\n    }\n};\n/**\n * 24-bit signed integer, Little Endian byte order\n */\nexport const INT24_LE = {\n    len: 3,\n    get(array, offset) {\n        const unsigned = UINT24_LE.get(array, offset);\n        return unsigned > 0x7fffff ? unsigned - 0x1000000 : unsigned;\n    },\n    put(array, offset, value) {\n        const dataView = dv(array);\n        dataView.setUint8(offset, value & 0xff);\n        dataView.setUint16(offset + 1, value >> 8, true);\n        return offset + 3;\n    }\n};\n/**\n * 24-bit signed integer, Big Endian byte order\n */\nexport const INT24_BE = {\n    len: 3,\n    get(array, offset) {\n        const unsigned = UINT24_BE.get(array, offset);\n        return unsigned > 0x7fffff ? unsigned - 0x1000000 : unsigned;\n    },\n    put(array, offset, value) {\n        const dataView = dv(array);\n        dataView.setUint16(offset, value >> 8);\n        dataView.setUint8(offset + 2, value & 0xff);\n        return offset + 3;\n    }\n};\n/**\n * 32-bit signed integer, Big Endian byte order\n */\nexport const INT32_BE = {\n    len: 4,\n    get(array, offset) {\n        return dv(array).getInt32(offset);\n    },\n    put(array, offset, value) {\n        dv(array).setInt32(offset, value);\n        return offset + 4;\n    }\n};\n/**\n * 32-bit signed integer, Big Endian byte order\n */\nexport const INT32_LE = {\n    len: 4,\n    get(array, offset) {\n        return dv(array).getInt32(offset, true);\n    },\n    put(array, offset, value) {\n        dv(array).setInt32(offset, value, true);\n        return offset + 4;\n    }\n};\n/**\n * 64-bit unsigned integer, Little Endian byte order\n */\nexport const UINT64_LE = {\n    len: 8,\n    get(array, offset) {\n        return dv(array).getBigUint64(offset, true);\n    },\n    put(array, offset, value) {\n        dv(array).setBigUint64(offset, value, true);\n        return offset + 8;\n    }\n};\n/**\n * 64-bit signed integer, Little Endian byte order\n */\nexport const INT64_LE = {\n    len: 8,\n    get(array, offset) {\n        return dv(array).getBigInt64(offset, true);\n    },\n    put(array, offset, value) {\n        dv(array).setBigInt64(offset, value, true);\n        return offset + 8;\n    }\n};\n/**\n * 64-bit unsigned integer, Big Endian byte order\n */\nexport const UINT64_BE = {\n    len: 8,\n    get(array, offset) {\n        return dv(array).getBigUint64(offset);\n    },\n    put(array, offset, value) {\n        dv(array).setBigUint64(offset, value);\n        return offset + 8;\n    }\n};\n/**\n * 64-bit signed integer, Big Endian byte order\n */\nexport const INT64_BE = {\n    len: 8,\n    get(array, offset) {\n        return dv(array).getBigInt64(offset);\n    },\n    put(array, offset, value) {\n        dv(array).setBigInt64(offset, value);\n        return offset + 8;\n    }\n};\n/**\n * IEEE 754 16-bit (half precision) float, big endian\n */\nexport const Float16_BE = {\n    len: 2,\n    get(dataView, offset) {\n        return ieee754.read(dataView, offset, false, 10, this.len);\n    },\n    put(dataView, offset, value) {\n        ieee754.write(dataView, value, offset, false, 10, this.len);\n        return offset + this.len;\n    }\n};\n/**\n * IEEE 754 16-bit (half precision) float, little endian\n */\nexport const Float16_LE = {\n    len: 2,\n    get(array, offset) {\n        return ieee754.read(array, offset, true, 10, this.len);\n    },\n    put(array, offset, value) {\n        ieee754.write(array, value, offset, true, 10, this.len);\n        return offset + this.len;\n    }\n};\n/**\n * IEEE 754 32-bit (single precision) float, big endian\n */\nexport const Float32_BE = {\n    len: 4,\n    get(array, offset) {\n        return dv(array).getFloat32(offset);\n    },\n    put(array, offset, value) {\n        dv(array).setFloat32(offset, value);\n        return offset + 4;\n    }\n};\n/**\n * IEEE 754 32-bit (single precision) float, little endian\n */\nexport const Float32_LE = {\n    len: 4,\n    get(array, offset) {\n        return dv(array).getFloat32(offset, true);\n    },\n    put(array, offset, value) {\n        dv(array).setFloat32(offset, value, true);\n        return offset + 4;\n    }\n};\n/**\n * IEEE 754 64-bit (double precision) float, big endian\n */\nexport const Float64_BE = {\n    len: 8,\n    get(array, offset) {\n        return dv(array).getFloat64(offset);\n    },\n    put(array, offset, value) {\n        dv(array).setFloat64(offset, value);\n        return offset + 8;\n    }\n};\n/**\n * IEEE 754 64-bit (double precision) float, little endian\n */\nexport const Float64_LE = {\n    len: 8,\n    get(array, offset) {\n        return dv(array).getFloat64(offset, true);\n    },\n    put(array, offset, value) {\n        dv(array).setFloat64(offset, value, true);\n        return offset + 8;\n    }\n};\n/**\n * IEEE 754 80-bit (extended precision) float, big endian\n */\nexport const Float80_BE = {\n    len: 10,\n    get(array, offset) {\n        return ieee754.read(array, offset, false, 63, this.len);\n    },\n    put(array, offset, value) {\n        ieee754.write(array, value, offset, false, 63, this.len);\n        return offset + this.len;\n    }\n};\n/**\n * IEEE 754 80-bit (extended precision) float, little endian\n */\nexport const Float80_LE = {\n    len: 10,\n    get(array, offset) {\n        return ieee754.read(array, offset, true, 63, this.len);\n    },\n    put(array, offset, value) {\n        ieee754.write(array, value, offset, true, 63, this.len);\n        return offset + this.len;\n    }\n};\n/**\n * Ignore a given number of bytes\n */\nexport class IgnoreType {\n    /**\n     * @param len number of bytes to ignore\n     */\n    constructor(len) {\n        this.len = len;\n    }\n    // ToDo: don't read, but skip data\n    get(_array, _off) {\n    }\n}\nexport class Uint8ArrayType {\n    constructor(len) {\n        this.len = len;\n    }\n    get(array, offset) {\n        return array.subarray(offset, offset + this.len);\n    }\n}\n/**\n * Consume a fixed number of bytes from the stream and return a string with a specified encoding.\n * Supports all encodings supported by TextDecoder, plus 'windows-1252'.\n */\nexport class StringType {\n    constructor(len, encoding) {\n        this.len = len;\n        if (encoding && encoding.toLowerCase() === 'windows-1252') {\n            this.decoder = StringType.decodeWindows1252;\n        }\n        else {\n            const textDecoder = new TextDecoder(encoding);\n            this.decoder = (bytes) => textDecoder.decode(bytes);\n        }\n    }\n    get(data, offset = 0) {\n        const bytes = data.subarray(offset, offset + this.len);\n        return this.decoder(bytes);\n    }\n    static decodeWindows1252(bytes) {\n        let result = '';\n        for (let i = 0; i < bytes.length; i++) {\n            const byte = bytes[i];\n            result += byte < 0x80 || byte >= 0xA0\n                ? String.fromCharCode(byte)\n                : StringType.win1252Map[byte - 0x80];\n        }\n        return result;\n    }\n}\nStringType.win1252Map = '\\u20AC\\u0081\\u201A\\u0192\\u201E\\u2026\\u2020\\u2021\\u02C6\\u2030\\u0160\\u2039\\u0152\\u008D\\u017D\\u008F\\u0090\\u2018\\u2019\\u201C\\u201D\\u2022\\u2013\\u2014\\u02DC\\u2122\\u0161\\u203A\\u0153\\u009D\\u017E\\u0178';\n/**\n * ANSI Latin 1 String using Windows-1252 (Code Page 1252)\n * Windows-1252 is a superset of ISO 8859-1 / Latin-1.\n */\nexport class AnsiStringType extends StringType {\n    constructor(len) {\n        super(len, 'windows-1252');\n    }\n}\n","// DEFLATE is a complex format; to read this code, you should probably check the RFC first:\n// https://tools.ietf.org/html/rfc1951\n// You may also wish to take a look at the guide I made about this program:\n// https://gist.github.com/101arrowz/253f31eb5abc3d9275ab943003ffecad\n// Some of the following code is similar to that of UZIP.js:\n// https://github.com/photopea/UZIP.js\n// However, the vast majority of the codebase has diverged from UZIP.js to increase performance and reduce bundle size.\n// Sometimes 0 will appear where -1 would be more appropriate. This is because using a uint\n// is better for memory in most engines (I *think*).\nvar ch2 = {};\nvar wk = (function (c, id, msg, transfer, cb) {\n    var w = new Worker(ch2[id] || (ch2[id] = URL.createObjectURL(new Blob([\n        c + ';addEventListener(\"error\",function(e){e=e.error;postMessage({$e$:[e.message,e.code,e.stack]})})'\n    ], { type: 'text/javascript' }))));\n    w.onmessage = function (e) {\n        var d = e.data, ed = d.$e$;\n        if (ed) {\n            var err = new Error(ed[0]);\n            err['code'] = ed[1];\n            err.stack = ed[2];\n            cb(err, null);\n        }\n        else\n            cb(null, d);\n    };\n    w.postMessage(msg, transfer);\n    return w;\n});\n\n// aliases for shorter compressed code (most minifers don't do this)\nvar u8 = Uint8Array, u16 = Uint16Array, i32 = Int32Array;\n// fixed length extra bits\nvar fleb = new u8([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, /* unused */ 0, 0, /* impossible */ 0]);\n// fixed distance extra bits\nvar fdeb = new u8([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, /* unused */ 0, 0]);\n// code length index map\nvar clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\n// get base, reverse index map from extra bits\nvar freb = function (eb, start) {\n    var b = new u16(31);\n    for (var i = 0; i < 31; ++i) {\n        b[i] = start += 1 << eb[i - 1];\n    }\n    // numbers here are at max 18 bits\n    var r = new i32(b[30]);\n    for (var i = 1; i < 30; ++i) {\n        for (var j = b[i]; j < b[i + 1]; ++j) {\n            r[j] = ((j - b[i]) << 5) | i;\n        }\n    }\n    return { b: b, r: r };\n};\nvar _a = freb(fleb, 2), fl = _a.b, revfl = _a.r;\n// we can ignore the fact that the other numbers are wrong; they never happen anyway\nfl[28] = 258, revfl[258] = 28;\nvar _b = freb(fdeb, 0), fd = _b.b, revfd = _b.r;\n// map of value to reverse (assuming 16 bits)\nvar rev = new u16(32768);\nfor (var i = 0; i < 32768; ++i) {\n    // reverse table algorithm from SO\n    var x = ((i & 0xAAAA) >> 1) | ((i & 0x5555) << 1);\n    x = ((x & 0xCCCC) >> 2) | ((x & 0x3333) << 2);\n    x = ((x & 0xF0F0) >> 4) | ((x & 0x0F0F) << 4);\n    rev[i] = (((x & 0xFF00) >> 8) | ((x & 0x00FF) << 8)) >> 1;\n}\n// create huffman tree from u8 \"map\": index -> code length for code index\n// mb (max bits) must be at most 15\n// TODO: optimize/split up?\nvar hMap = (function (cd, mb, r) {\n    var s = cd.length;\n    // index\n    var i = 0;\n    // u16 \"map\": index -> # of codes with bit length = index\n    var l = new u16(mb);\n    // length of cd must be 288 (total # of codes)\n    for (; i < s; ++i) {\n        if (cd[i])\n            ++l[cd[i] - 1];\n    }\n    // u16 \"map\": index -> minimum code for bit length = index\n    var le = new u16(mb);\n    for (i = 1; i < mb; ++i) {\n        le[i] = (le[i - 1] + l[i - 1]) << 1;\n    }\n    var co;\n    if (r) {\n        // u16 \"map\": index -> number of actual bits, symbol for code\n        co = new u16(1 << mb);\n        // bits to remove for reverser\n        var rvb = 15 - mb;\n        for (i = 0; i < s; ++i) {\n            // ignore 0 lengths\n            if (cd[i]) {\n                // num encoding both symbol and bits read\n                var sv = (i << 4) | cd[i];\n                // free bits\n                var r_1 = mb - cd[i];\n                // start value\n                var v = le[cd[i] - 1]++ << r_1;\n                // m is end value\n                for (var m = v | ((1 << r_1) - 1); v <= m; ++v) {\n                    // every 16 bit value starting with the code yields the same result\n                    co[rev[v] >> rvb] = sv;\n                }\n            }\n        }\n    }\n    else {\n        co = new u16(s);\n        for (i = 0; i < s; ++i) {\n            if (cd[i]) {\n                co[i] = rev[le[cd[i] - 1]++] >> (15 - cd[i]);\n            }\n        }\n    }\n    return co;\n});\n// fixed length tree\nvar flt = new u8(288);\nfor (var i = 0; i < 144; ++i)\n    flt[i] = 8;\nfor (var i = 144; i < 256; ++i)\n    flt[i] = 9;\nfor (var i = 256; i < 280; ++i)\n    flt[i] = 7;\nfor (var i = 280; i < 288; ++i)\n    flt[i] = 8;\n// fixed distance tree\nvar fdt = new u8(32);\nfor (var i = 0; i < 32; ++i)\n    fdt[i] = 5;\n// fixed length map\nvar flm = /*#__PURE__*/ hMap(flt, 9, 0), flrm = /*#__PURE__*/ hMap(flt, 9, 1);\n// fixed distance map\nvar fdm = /*#__PURE__*/ hMap(fdt, 5, 0), fdrm = /*#__PURE__*/ hMap(fdt, 5, 1);\n// find max of array\nvar max = function (a) {\n    var m = a[0];\n    for (var i = 1; i < a.length; ++i) {\n        if (a[i] > m)\n            m = a[i];\n    }\n    return m;\n};\n// read d, starting at bit p and mask with m\nvar bits = function (d, p, m) {\n    var o = (p / 8) | 0;\n    return ((d[o] | (d[o + 1] << 8)) >> (p & 7)) & m;\n};\n// read d, starting at bit p continuing for at least 16 bits\nvar bits16 = function (d, p) {\n    var o = (p / 8) | 0;\n    return ((d[o] | (d[o + 1] << 8) | (d[o + 2] << 16)) >> (p & 7));\n};\n// get end of byte\nvar shft = function (p) { return ((p + 7) / 8) | 0; };\n// typed array slice - allows garbage collector to free original reference,\n// while being more compatible than .slice\nvar slc = function (v, s, e) {\n    if (s == null || s < 0)\n        s = 0;\n    if (e == null || e > v.length)\n        e = v.length;\n    // can't use .constructor in case user-supplied\n    return new u8(v.subarray(s, e));\n};\n/**\n * Codes for errors generated within this library\n */\nexport var FlateErrorCode = {\n    UnexpectedEOF: 0,\n    InvalidBlockType: 1,\n    InvalidLengthLiteral: 2,\n    InvalidDistance: 3,\n    StreamFinished: 4,\n    NoStreamHandler: 5,\n    InvalidHeader: 6,\n    NoCallback: 7,\n    InvalidUTF8: 8,\n    ExtraFieldTooLong: 9,\n    InvalidDate: 10,\n    FilenameTooLong: 11,\n    StreamFinishing: 12,\n    InvalidZipData: 13,\n    UnknownCompressionMethod: 14\n};\n// error codes\nvar ec = [\n    'unexpected EOF',\n    'invalid block type',\n    'invalid length/literal',\n    'invalid distance',\n    'stream finished',\n    'no stream handler',\n    ,\n    'no callback',\n    'invalid UTF-8 data',\n    'extra field too long',\n    'date not in range 1980-2099',\n    'filename too long',\n    'stream finishing',\n    'invalid zip data'\n    // determined by unknown compression method\n];\n;\nvar err = function (ind, msg, nt) {\n    var e = new Error(msg || ec[ind]);\n    e.code = ind;\n    if (Error.captureStackTrace)\n        Error.captureStackTrace(e, err);\n    if (!nt)\n        throw e;\n    return e;\n};\n// expands raw DEFLATE data\nvar inflt = function (dat, st, buf, dict) {\n    // source length       dict length\n    var sl = dat.length, dl = dict ? dict.length : 0;\n    if (!sl || st.f && !st.l)\n        return buf || new u8(0);\n    var noBuf = !buf;\n    // have to estimate size\n    var resize = noBuf || st.i != 2;\n    // no state\n    var noSt = st.i;\n    // Assumes roughly 33% compression ratio average\n    if (noBuf)\n        buf = new u8(sl * 3);\n    // ensure buffer can fit at least l elements\n    var cbuf = function (l) {\n        var bl = buf.length;\n        // need to increase size to fit\n        if (l > bl) {\n            // Double or set to necessary, whichever is greater\n            var nbuf = new u8(Math.max(bl * 2, l));\n            nbuf.set(buf);\n            buf = nbuf;\n        }\n    };\n    //  last chunk         bitpos           bytes\n    var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;\n    // total bits\n    var tbts = sl * 8;\n    do {\n        if (!lm) {\n            // BFINAL - this is only 1 when last chunk is next\n            final = bits(dat, pos, 1);\n            // type: 0 = no compression, 1 = fixed huffman, 2 = dynamic huffman\n            var type = bits(dat, pos + 1, 3);\n            pos += 3;\n            if (!type) {\n                // go to end of byte boundary\n                var s = shft(pos) + 4, l = dat[s - 4] | (dat[s - 3] << 8), t = s + l;\n                if (t > sl) {\n                    if (noSt)\n                        err(0);\n                    break;\n                }\n                // ensure size\n                if (resize)\n                    cbuf(bt + l);\n                // Copy over uncompressed data\n                buf.set(dat.subarray(s, t), bt);\n                // Get new bitpos, update byte count\n                st.b = bt += l, st.p = pos = t * 8, st.f = final;\n                continue;\n            }\n            else if (type == 1)\n                lm = flrm, dm = fdrm, lbt = 9, dbt = 5;\n            else if (type == 2) {\n                //  literal                            lengths\n                var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;\n                var tl = hLit + bits(dat, pos + 5, 31) + 1;\n                pos += 14;\n                // length+distance tree\n                var ldt = new u8(tl);\n                // code length tree\n                var clt = new u8(19);\n                for (var i = 0; i < hcLen; ++i) {\n                    // use index map to get real code\n                    clt[clim[i]] = bits(dat, pos + i * 3, 7);\n                }\n                pos += hcLen * 3;\n                // code lengths bits\n                var clb = max(clt), clbmsk = (1 << clb) - 1;\n                // code lengths map\n                var clm = hMap(clt, clb, 1);\n                for (var i = 0; i < tl;) {\n                    var r = clm[bits(dat, pos, clbmsk)];\n                    // bits read\n                    pos += r & 15;\n                    // symbol\n                    var s = r >> 4;\n                    // code length to copy\n                    if (s < 16) {\n                        ldt[i++] = s;\n                    }\n                    else {\n                        //  copy   count\n                        var c = 0, n = 0;\n                        if (s == 16)\n                            n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];\n                        else if (s == 17)\n                            n = 3 + bits(dat, pos, 7), pos += 3;\n                        else if (s == 18)\n                            n = 11 + bits(dat, pos, 127), pos += 7;\n                        while (n--)\n                            ldt[i++] = c;\n                    }\n                }\n                //    length tree                 distance tree\n                var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);\n                // max length bits\n                lbt = max(lt);\n                // max dist bits\n                dbt = max(dt);\n                lm = hMap(lt, lbt, 1);\n                dm = hMap(dt, dbt, 1);\n            }\n            else\n                err(1);\n            if (pos > tbts) {\n                if (noSt)\n                    err(0);\n                break;\n            }\n        }\n        // Make sure the buffer can hold this + the largest possible addition\n        // Maximum chunk size (practically, theoretically infinite) is 2^17\n        if (resize)\n            cbuf(bt + 131072);\n        var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;\n        var lpos = pos;\n        for (;; lpos = pos) {\n            // bits read, code\n            var c = lm[bits16(dat, pos) & lms], sym = c >> 4;\n            pos += c & 15;\n            if (pos > tbts) {\n                if (noSt)\n                    err(0);\n                break;\n            }\n            if (!c)\n                err(2);\n            if (sym < 256)\n                buf[bt++] = sym;\n            else if (sym == 256) {\n                lpos = pos, lm = null;\n                break;\n            }\n            else {\n                var add = sym - 254;\n                // no extra bits needed if less\n                if (sym > 264) {\n                    // index\n                    var i = sym - 257, b = fleb[i];\n                    add = bits(dat, pos, (1 << b) - 1) + fl[i];\n                    pos += b;\n                }\n                // dist\n                var d = dm[bits16(dat, pos) & dms], dsym = d >> 4;\n                if (!d)\n                    err(3);\n                pos += d & 15;\n                var dt = fd[dsym];\n                if (dsym > 3) {\n                    var b = fdeb[dsym];\n                    dt += bits16(dat, pos) & (1 << b) - 1, pos += b;\n                }\n                if (pos > tbts) {\n                    if (noSt)\n                        err(0);\n                    break;\n                }\n                if (resize)\n                    cbuf(bt + 131072);\n                var end = bt + add;\n                if (bt < dt) {\n                    var shift = dl - dt, dend = Math.min(dt, end);\n                    if (shift + bt < 0)\n                        err(3);\n                    for (; bt < dend; ++bt)\n                        buf[bt] = dict[shift + bt];\n                }\n                for (; bt < end; ++bt)\n                    buf[bt] = buf[bt - dt];\n            }\n        }\n        st.l = lm, st.p = lpos, st.b = bt, st.f = final;\n        if (lm)\n            final = 1, st.m = lbt, st.d = dm, st.n = dbt;\n    } while (!final);\n    // don't reallocate for streams or user buffers\n    return bt != buf.length && noBuf ? slc(buf, 0, bt) : buf.subarray(0, bt);\n};\n// starting at p, write the minimum number of bits that can hold v to d\nvar wbits = function (d, p, v) {\n    v <<= p & 7;\n    var o = (p / 8) | 0;\n    d[o] |= v;\n    d[o + 1] |= v >> 8;\n};\n// starting at p, write the minimum number of bits (>8) that can hold v to d\nvar wbits16 = function (d, p, v) {\n    v <<= p & 7;\n    var o = (p / 8) | 0;\n    d[o] |= v;\n    d[o + 1] |= v >> 8;\n    d[o + 2] |= v >> 16;\n};\n// creates code lengths from a frequency table\nvar hTree = function (d, mb) {\n    // Need extra info to make a tree\n    var t = [];\n    for (var i = 0; i < d.length; ++i) {\n        if (d[i])\n            t.push({ s: i, f: d[i] });\n    }\n    var s = t.length;\n    var t2 = t.slice();\n    if (!s)\n        return { t: et, l: 0 };\n    if (s == 1) {\n        var v = new u8(t[0].s + 1);\n        v[t[0].s] = 1;\n        return { t: v, l: 1 };\n    }\n    t.sort(function (a, b) { return a.f - b.f; });\n    // after i2 reaches last ind, will be stopped\n    // freq must be greater than largest possible number of symbols\n    t.push({ s: -1, f: 25001 });\n    var l = t[0], r = t[1], i0 = 0, i1 = 1, i2 = 2;\n    t[0] = { s: -1, f: l.f + r.f, l: l, r: r };\n    // efficient algorithm from UZIP.js\n    // i0 is lookbehind, i2 is lookahead - after processing two low-freq\n    // symbols that combined have high freq, will start processing i2 (high-freq,\n    // non-composite) symbols instead\n    // see https://reddit.com/r/photopea/comments/ikekht/uzipjs_questions/\n    while (i1 != s - 1) {\n        l = t[t[i0].f < t[i2].f ? i0++ : i2++];\n        r = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++];\n        t[i1++] = { s: -1, f: l.f + r.f, l: l, r: r };\n    }\n    var maxSym = t2[0].s;\n    for (var i = 1; i < s; ++i) {\n        if (t2[i].s > maxSym)\n            maxSym = t2[i].s;\n    }\n    // code lengths\n    var tr = new u16(maxSym + 1);\n    // max bits in tree\n    var mbt = ln(t[i1 - 1], tr, 0);\n    if (mbt > mb) {\n        // more algorithms from UZIP.js\n        // TODO: find out how this code works (debt)\n        //  ind    debt\n        var i = 0, dt = 0;\n        //    left            cost\n        var lft = mbt - mb, cst = 1 << lft;\n        t2.sort(function (a, b) { return tr[b.s] - tr[a.s] || a.f - b.f; });\n        for (; i < s; ++i) {\n            var i2_1 = t2[i].s;\n            if (tr[i2_1] > mb) {\n                dt += cst - (1 << (mbt - tr[i2_1]));\n                tr[i2_1] = mb;\n            }\n            else\n                break;\n        }\n        dt >>= lft;\n        while (dt > 0) {\n            var i2_2 = t2[i].s;\n            if (tr[i2_2] < mb)\n                dt -= 1 << (mb - tr[i2_2]++ - 1);\n            else\n                ++i;\n        }\n        for (; i >= 0 && dt; --i) {\n            var i2_3 = t2[i].s;\n            if (tr[i2_3] == mb) {\n                --tr[i2_3];\n                ++dt;\n            }\n        }\n        mbt = mb;\n    }\n    return { t: new u8(tr), l: mbt };\n};\n// get the max length and assign length codes\nvar ln = function (n, l, d) {\n    return n.s == -1\n        ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1))\n        : (l[n.s] = d);\n};\n// length codes generation\nvar lc = function (c) {\n    var s = c.length;\n    // Note that the semicolon was intentional\n    while (s && !c[--s])\n        ;\n    var cl = new u16(++s);\n    //  ind      num         streak\n    var cli = 0, cln = c[0], cls = 1;\n    var w = function (v) { cl[cli++] = v; };\n    for (var i = 1; i <= s; ++i) {\n        if (c[i] == cln && i != s)\n            ++cls;\n        else {\n            if (!cln && cls > 2) {\n                for (; cls > 138; cls -= 138)\n                    w(32754);\n                if (cls > 2) {\n                    w(cls > 10 ? ((cls - 11) << 5) | 28690 : ((cls - 3) << 5) | 12305);\n                    cls = 0;\n                }\n            }\n            else if (cls > 3) {\n                w(cln), --cls;\n                for (; cls > 6; cls -= 6)\n                    w(8304);\n                if (cls > 2)\n                    w(((cls - 3) << 5) | 8208), cls = 0;\n            }\n            while (cls--)\n                w(cln);\n            cls = 1;\n            cln = c[i];\n        }\n    }\n    return { c: cl.subarray(0, cli), n: s };\n};\n// calculate the length of output from tree, code lengths\nvar clen = function (cf, cl) {\n    var l = 0;\n    for (var i = 0; i < cl.length; ++i)\n        l += cf[i] * cl[i];\n    return l;\n};\n// writes a fixed block\n// returns the new bit pos\nvar wfblk = function (out, pos, dat) {\n    // no need to write 00 as type: TypedArray defaults to 0\n    var s = dat.length;\n    var o = shft(pos + 2);\n    out[o] = s & 255;\n    out[o + 1] = s >> 8;\n    out[o + 2] = out[o] ^ 255;\n    out[o + 3] = out[o + 1] ^ 255;\n    for (var i = 0; i < s; ++i)\n        out[o + i + 4] = dat[i];\n    return (o + 4 + s) * 8;\n};\n// writes a block\nvar wblk = function (dat, out, final, syms, lf, df, eb, li, bs, bl, p) {\n    wbits(out, p++, final);\n    ++lf[256];\n    var _a = hTree(lf, 15), dlt = _a.t, mlb = _a.l;\n    var _b = hTree(df, 15), ddt = _b.t, mdb = _b.l;\n    var _c = lc(dlt), lclt = _c.c, nlc = _c.n;\n    var _d = lc(ddt), lcdt = _d.c, ndc = _d.n;\n    var lcfreq = new u16(19);\n    for (var i = 0; i < lclt.length; ++i)\n        ++lcfreq[lclt[i] & 31];\n    for (var i = 0; i < lcdt.length; ++i)\n        ++lcfreq[lcdt[i] & 31];\n    var _e = hTree(lcfreq, 7), lct = _e.t, mlcb = _e.l;\n    var nlcc = 19;\n    for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc)\n        ;\n    var flen = (bl + 5) << 3;\n    var ftlen = clen(lf, flt) + clen(df, fdt) + eb;\n    var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + 2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18];\n    if (bs >= 0 && flen <= ftlen && flen <= dtlen)\n        return wfblk(out, p, dat.subarray(bs, bs + bl));\n    var lm, ll, dm, dl;\n    wbits(out, p, 1 + (dtlen < ftlen)), p += 2;\n    if (dtlen < ftlen) {\n        lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;\n        var llm = hMap(lct, mlcb, 0);\n        wbits(out, p, nlc - 257);\n        wbits(out, p + 5, ndc - 1);\n        wbits(out, p + 10, nlcc - 4);\n        p += 14;\n        for (var i = 0; i < nlcc; ++i)\n            wbits(out, p + 3 * i, lct[clim[i]]);\n        p += 3 * nlcc;\n        var lcts = [lclt, lcdt];\n        for (var it = 0; it < 2; ++it) {\n            var clct = lcts[it];\n            for (var i = 0; i < clct.length; ++i) {\n                var len = clct[i] & 31;\n                wbits(out, p, llm[len]), p += lct[len];\n                if (len > 15)\n                    wbits(out, p, (clct[i] >> 5) & 127), p += clct[i] >> 12;\n            }\n        }\n    }\n    else {\n        lm = flm, ll = flt, dm = fdm, dl = fdt;\n    }\n    for (var i = 0; i < li; ++i) {\n        var sym = syms[i];\n        if (sym > 255) {\n            var len = (sym >> 18) & 31;\n            wbits16(out, p, lm[len + 257]), p += ll[len + 257];\n            if (len > 7)\n                wbits(out, p, (sym >> 23) & 31), p += fleb[len];\n            var dst = sym & 31;\n            wbits16(out, p, dm[dst]), p += dl[dst];\n            if (dst > 3)\n                wbits16(out, p, (sym >> 5) & 8191), p += fdeb[dst];\n        }\n        else {\n            wbits16(out, p, lm[sym]), p += ll[sym];\n        }\n    }\n    wbits16(out, p, lm[256]);\n    return p + ll[256];\n};\n// deflate options (nice << 13) | chain\nvar deo = /*#__PURE__*/ new i32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]);\n// empty\nvar et = /*#__PURE__*/ new u8(0);\n// compresses data into a raw DEFLATE buffer\nvar dflt = function (dat, lvl, plvl, pre, post, st) {\n    var s = st.z || dat.length;\n    var o = new u8(pre + s + 5 * (1 + Math.ceil(s / 7000)) + post);\n    // writing to this writes to the output buffer\n    var w = o.subarray(pre, o.length - post);\n    var lst = st.l;\n    var pos = (st.r || 0) & 7;\n    if (lvl) {\n        if (pos)\n            w[0] = st.r >> 3;\n        var opt = deo[lvl - 1];\n        var n = opt >> 13, c = opt & 8191;\n        var msk_1 = (1 << plvl) - 1;\n        //    prev 2-byte val map    curr 2-byte val map\n        var prev = st.p || new u16(32768), head = st.h || new u16(msk_1 + 1);\n        var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;\n        var hsh = function (i) { return (dat[i] ^ (dat[i + 1] << bs1_1) ^ (dat[i + 2] << bs2_1)) & msk_1; };\n        // 24576 is an arbitrary number of maximum symbols per block\n        // 424 buffer for last block\n        var syms = new i32(25000);\n        // length/literal freq   distance freq\n        var lf = new u16(288), df = new u16(32);\n        //  l/lcnt  exbits  index          l/lind  waitdx          blkpos\n        var lc_1 = 0, eb = 0, i = st.i || 0, li = 0, wi = st.w || 0, bs = 0;\n        for (; i + 2 < s; ++i) {\n            // hash value\n            var hv = hsh(i);\n            // index mod 32768    previous index mod\n            var imod = i & 32767, pimod = head[hv];\n            prev[imod] = pimod;\n            head[hv] = imod;\n            // We always should modify head and prev, but only add symbols if\n            // this data is not yet processed (\"wait\" for wait index)\n            if (wi <= i) {\n                // bytes remaining\n                var rem = s - i;\n                if ((lc_1 > 7000 || li > 24576) && (rem > 423 || !lst)) {\n                    pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos);\n                    li = lc_1 = eb = 0, bs = i;\n                    for (var j = 0; j < 286; ++j)\n                        lf[j] = 0;\n                    for (var j = 0; j < 30; ++j)\n                        df[j] = 0;\n                }\n                //  len    dist   chain\n                var l = 2, d = 0, ch_1 = c, dif = imod - pimod & 32767;\n                if (rem > 2 && hv == hsh(i - dif)) {\n                    var maxn = Math.min(n, rem) - 1;\n                    var maxd = Math.min(32767, i);\n                    // max possible length\n                    // not capped at dif because decompressors implement \"rolling\" index population\n                    var ml = Math.min(258, rem);\n                    while (dif <= maxd && --ch_1 && imod != pimod) {\n                        if (dat[i + l] == dat[i + l - dif]) {\n                            var nl = 0;\n                            for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl)\n                                ;\n                            if (nl > l) {\n                                l = nl, d = dif;\n                                // break out early when we reach \"nice\" (we are satisfied enough)\n                                if (nl > maxn)\n                                    break;\n                                // now, find the rarest 2-byte sequence within this\n                                // length of literals and search for that instead.\n                                // Much faster than just using the start\n                                var mmd = Math.min(dif, nl - 2);\n                                var md = 0;\n                                for (var j = 0; j < mmd; ++j) {\n                                    var ti = i - dif + j & 32767;\n                                    var pti = prev[ti];\n                                    var cd = ti - pti & 32767;\n                                    if (cd > md)\n                                        md = cd, pimod = ti;\n                                }\n                            }\n                        }\n                        // check the previous match\n                        imod = pimod, pimod = prev[imod];\n                        dif += imod - pimod & 32767;\n                    }\n                }\n                // d will be nonzero only when a match was found\n                if (d) {\n                    // store both dist and len data in one int32\n                    // Make sure this is recognized as a len/dist with 28th bit (2^28)\n                    syms[li++] = 268435456 | (revfl[l] << 18) | revfd[d];\n                    var lin = revfl[l] & 31, din = revfd[d] & 31;\n                    eb += fleb[lin] + fdeb[din];\n                    ++lf[257 + lin];\n                    ++df[din];\n                    wi = i + l;\n                    ++lc_1;\n                }\n                else {\n                    syms[li++] = dat[i];\n                    ++lf[dat[i]];\n                }\n            }\n        }\n        for (i = Math.max(i, wi); i < s; ++i) {\n            syms[li++] = dat[i];\n            ++lf[dat[i]];\n        }\n        pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos);\n        if (!lst) {\n            st.r = (pos & 7) | w[(pos / 8) | 0] << 3;\n            // shft(pos) now 1 less if pos & 7 != 0\n            pos -= 7;\n            st.h = head, st.p = prev, st.i = i, st.w = wi;\n        }\n    }\n    else {\n        for (var i = st.w || 0; i < s + lst; i += 65535) {\n            // end\n            var e = i + 65535;\n            if (e >= s) {\n                // write final block\n                w[(pos / 8) | 0] = lst;\n                e = s;\n            }\n            pos = wfblk(w, pos + 1, dat.subarray(i, e));\n        }\n        st.i = s;\n    }\n    return slc(o, 0, pre + shft(pos) + post);\n};\n// CRC32 table\nvar crct = /*#__PURE__*/ (function () {\n    var t = new Int32Array(256);\n    for (var i = 0; i < 256; ++i) {\n        var c = i, k = 9;\n        while (--k)\n            c = ((c & 1) && -306674912) ^ (c >>> 1);\n        t[i] = c;\n    }\n    return t;\n})();\n// CRC32\nvar crc = function () {\n    var c = -1;\n    return {\n        p: function (d) {\n            // closures have awful performance\n            var cr = c;\n            for (var i = 0; i < d.length; ++i)\n                cr = crct[(cr & 255) ^ d[i]] ^ (cr >>> 8);\n            c = cr;\n        },\n        d: function () { return ~c; }\n    };\n};\n// Adler32\nvar adler = function () {\n    var a = 1, b = 0;\n    return {\n        p: function (d) {\n            // closures have awful performance\n            var n = a, m = b;\n            var l = d.length | 0;\n            for (var i = 0; i != l;) {\n                var e = Math.min(i + 2655, l);\n                for (; i < e; ++i)\n                    m += n += d[i];\n                n = (n & 65535) + 15 * (n >> 16), m = (m & 65535) + 15 * (m >> 16);\n            }\n            a = n, b = m;\n        },\n        d: function () {\n            a %= 65521, b %= 65521;\n            return (a & 255) << 24 | (a & 0xFF00) << 8 | (b & 255) << 8 | (b >> 8);\n        }\n    };\n};\n;\n// deflate with opts\nvar dopt = function (dat, opt, pre, post, st) {\n    if (!st) {\n        st = { l: 1 };\n        if (opt.dictionary) {\n            var dict = opt.dictionary.subarray(-32768);\n            var newDat = new u8(dict.length + dat.length);\n            newDat.set(dict);\n            newDat.set(dat, dict.length);\n            dat = newDat;\n            st.w = dict.length;\n        }\n    }\n    return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? (st.l ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : 20) : (12 + opt.mem), pre, post, st);\n};\n// Walmart object spread\nvar mrg = function (a, b) {\n    var o = {};\n    for (var k in a)\n        o[k] = a[k];\n    for (var k in b)\n        o[k] = b[k];\n    return o;\n};\n// worker clone\n// This is possibly the craziest part of the entire codebase, despite how simple it may seem.\n// The only parameter to this function is a closure that returns an array of variables outside of the function scope.\n// We're going to try to figure out the variable names used in the closure as strings because that is crucial for workerization.\n// We will return an object mapping of true variable name to value (basically, the current scope as a JS object).\n// The reason we can't just use the original variable names is minifiers mangling the toplevel scope.\n// This took me three weeks to figure out how to do.\nvar wcln = function (fn, fnStr, td) {\n    var dt = fn();\n    var st = fn.toString();\n    var ks = st.slice(st.indexOf('[') + 1, st.lastIndexOf(']')).replace(/\\s+/g, '').split(',');\n    for (var i = 0; i < dt.length; ++i) {\n        var v = dt[i], k = ks[i];\n        if (typeof v == 'function') {\n            fnStr += ';' + k + '=';\n            var st_1 = v.toString();\n            if (v.prototype) {\n                // for global objects\n                if (st_1.indexOf('[native code]') != -1) {\n                    var spInd = st_1.indexOf(' ', 8) + 1;\n                    fnStr += st_1.slice(spInd, st_1.indexOf('(', spInd));\n                }\n                else {\n                    fnStr += st_1;\n                    for (var t in v.prototype)\n                        fnStr += ';' + k + '.prototype.' + t + '=' + v.prototype[t].toString();\n                }\n            }\n            else\n                fnStr += st_1;\n        }\n        else\n            td[k] = v;\n    }\n    return fnStr;\n};\nvar ch = [];\n// clone bufs\nvar cbfs = function (v) {\n    var tl = [];\n    for (var k in v) {\n        if (v[k].buffer) {\n            tl.push((v[k] = new v[k].constructor(v[k])).buffer);\n        }\n    }\n    return tl;\n};\n// use a worker to execute code\nvar wrkr = function (fns, init, id, cb) {\n    if (!ch[id]) {\n        var fnStr = '', td_1 = {}, m = fns.length - 1;\n        for (var i = 0; i < m; ++i)\n            fnStr = wcln(fns[i], fnStr, td_1);\n        ch[id] = { c: wcln(fns[m], fnStr, td_1), e: td_1 };\n    }\n    var td = mrg({}, ch[id].e);\n    return wk(ch[id].c + ';onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage=' + init.toString() + '}', id, td, cbfs(td), cb);\n};\n// base async inflate fn\nvar bInflt = function () { return [u8, u16, i32, fleb, fdeb, clim, fl, fd, flrm, fdrm, rev, ec, hMap, max, bits, bits16, shft, slc, err, inflt, inflateSync, pbf, gopt]; };\nvar bDflt = function () { return [u8, u16, i32, fleb, fdeb, clim, revfl, revfd, flm, flt, fdm, fdt, rev, deo, et, hMap, wbits, wbits16, hTree, ln, lc, clen, wfblk, wblk, shft, slc, dflt, dopt, deflateSync, pbf]; };\n// gzip extra\nvar gze = function () { return [gzh, gzhl, wbytes, crc, crct]; };\n// gunzip extra\nvar guze = function () { return [gzs, gzl]; };\n// zlib extra\nvar zle = function () { return [zlh, wbytes, adler]; };\n// unzlib extra\nvar zule = function () { return [zls]; };\n// post buf\nvar pbf = function (msg) { return postMessage(msg, [msg.buffer]); };\n// get opts\nvar gopt = function (o) { return o && {\n    out: o.size && new u8(o.size),\n    dictionary: o.dictionary\n}; };\n// async helper\nvar cbify = function (dat, opts, fns, init, id, cb) {\n    var w = wrkr(fns, init, id, function (err, dat) {\n        w.terminate();\n        cb(err, dat);\n    });\n    w.postMessage([dat, opts], opts.consume ? [dat.buffer] : []);\n    return function () { w.terminate(); };\n};\n// auto stream\nvar astrm = function (strm) {\n    strm.ondata = function (dat, final) { return postMessage([dat, final], [dat.buffer]); };\n    return function (ev) {\n        if (ev.data.length) {\n            strm.push(ev.data[0], ev.data[1]);\n            postMessage([ev.data[0].length]);\n        }\n        else\n            strm.flush();\n    };\n};\n// async stream attach\nvar astrmify = function (fns, strm, opts, init, id, flush, ext) {\n    var t;\n    var w = wrkr(fns, init, id, function (err, dat) {\n        if (err)\n            w.terminate(), strm.ondata.call(strm, err);\n        else if (!Array.isArray(dat))\n            ext(dat);\n        else if (dat.length == 1) {\n            strm.queuedSize -= dat[0];\n            if (strm.ondrain)\n                strm.ondrain(dat[0]);\n        }\n        else {\n            if (dat[1])\n                w.terminate();\n            strm.ondata.call(strm, err, dat[0], dat[1]);\n        }\n    });\n    w.postMessage(opts);\n    strm.queuedSize = 0;\n    strm.push = function (d, f) {\n        if (!strm.ondata)\n            err(5);\n        if (t)\n            strm.ondata(err(4, 0, 1), null, !!f);\n        strm.queuedSize += d.length;\n        w.postMessage([d, t = f], [d.buffer]);\n    };\n    strm.terminate = function () { w.terminate(); };\n    if (flush) {\n        strm.flush = function () { w.postMessage([]); };\n    }\n};\n// read 2 bytes\nvar b2 = function (d, b) { return d[b] | (d[b + 1] << 8); };\n// read 4 bytes\nvar b4 = function (d, b) { return (d[b] | (d[b + 1] << 8) | (d[b + 2] << 16) | (d[b + 3] << 24)) >>> 0; };\nvar b8 = function (d, b) { return b4(d, b) + (b4(d, b + 4) * 4294967296); };\n// write bytes\nvar wbytes = function (d, b, v) {\n    for (; v; ++b)\n        d[b] = v, v >>>= 8;\n};\n// gzip header\nvar gzh = function (c, o) {\n    var fn = o.filename;\n    c[0] = 31, c[1] = 139, c[2] = 8, c[8] = o.level < 2 ? 4 : o.level == 9 ? 2 : 0, c[9] = 3; // assume Unix\n    if (o.mtime != 0)\n        wbytes(c, 4, Math.floor(new Date(o.mtime || Date.now()) / 1000));\n    if (fn) {\n        c[3] = 8;\n        for (var i = 0; i <= fn.length; ++i)\n            c[i + 10] = fn.charCodeAt(i);\n    }\n};\n// gzip footer: -8 to -4 = CRC, -4 to -0 is length\n// gzip start\nvar gzs = function (d) {\n    if (d[0] != 31 || d[1] != 139 || d[2] != 8)\n        err(6, 'invalid gzip data');\n    var flg = d[3];\n    var st = 10;\n    if (flg & 4)\n        st += (d[10] | d[11] << 8) + 2;\n    for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++])\n        ;\n    return st + (flg & 2);\n};\n// gzip length\nvar gzl = function (d) {\n    var l = d.length;\n    return (d[l - 4] | d[l - 3] << 8 | d[l - 2] << 16 | d[l - 1] << 24) >>> 0;\n};\n// gzip header length\nvar gzhl = function (o) { return 10 + (o.filename ? o.filename.length + 1 : 0); };\n// zlib header\nvar zlh = function (c, o) {\n    var lv = o.level, fl = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2;\n    c[0] = 120, c[1] = (fl << 6) | (o.dictionary && 32);\n    c[1] |= 31 - ((c[0] << 8) | c[1]) % 31;\n    if (o.dictionary) {\n        var h = adler();\n        h.p(o.dictionary);\n        wbytes(c, 2, h.d());\n    }\n};\n// zlib start\nvar zls = function (d, dict) {\n    if ((d[0] & 15) != 8 || (d[0] >> 4) > 7 || ((d[0] << 8 | d[1]) % 31))\n        err(6, 'invalid zlib data');\n    if ((d[1] >> 5 & 1) == +!dict)\n        err(6, 'invalid zlib data: ' + (d[1] & 32 ? 'need' : 'unexpected') + ' dictionary');\n    return (d[1] >> 3 & 4) + 2;\n};\nfunction StrmOpt(opts, cb) {\n    if (typeof opts == 'function')\n        cb = opts, opts = {};\n    this.ondata = cb;\n    return opts;\n}\n/**\n * Streaming DEFLATE compression\n */\nvar Deflate = /*#__PURE__*/ (function () {\n    function Deflate(opts, cb) {\n        if (typeof opts == 'function')\n            cb = opts, opts = {};\n        this.ondata = cb;\n        this.o = opts || {};\n        this.s = { l: 0, i: 32768, w: 32768, z: 32768 };\n        // Buffer length must always be 0 mod 32768 for index calculations to be correct when modifying head and prev\n        // 98304 = 32768 (lookback) + 65536 (common chunk size)\n        this.b = new u8(98304);\n        if (this.o.dictionary) {\n            var dict = this.o.dictionary.subarray(-32768);\n            this.b.set(dict, 32768 - dict.length);\n            this.s.i = 32768 - dict.length;\n        }\n    }\n    Deflate.prototype.p = function (c, f) {\n        this.ondata(dopt(c, this.o, 0, 0, this.s), f);\n    };\n    /**\n     * Pushes a chunk to be deflated\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    Deflate.prototype.push = function (chunk, final) {\n        if (!this.ondata)\n            err(5);\n        if (this.s.l)\n            err(4);\n        var endLen = chunk.length + this.s.z;\n        if (endLen > this.b.length) {\n            if (endLen > 2 * this.b.length - 32768) {\n                var newBuf = new u8(endLen & -32768);\n                newBuf.set(this.b.subarray(0, this.s.z));\n                this.b = newBuf;\n            }\n            var split = this.b.length - this.s.z;\n            this.b.set(chunk.subarray(0, split), this.s.z);\n            this.s.z = this.b.length;\n            this.p(this.b, false);\n            this.b.set(this.b.subarray(-32768));\n            this.b.set(chunk.subarray(split), 32768);\n            this.s.z = chunk.length - split + 32768;\n            this.s.i = 32766, this.s.w = 32768;\n        }\n        else {\n            this.b.set(chunk, this.s.z);\n            this.s.z += chunk.length;\n        }\n        this.s.l = final & 1;\n        if (this.s.z > this.s.w + 8191 || final) {\n            this.p(this.b, final || false);\n            this.s.w = this.s.i, this.s.i -= 2;\n        }\n    };\n    /**\n     * Flushes buffered uncompressed data. Useful to immediately retrieve the\n     * deflated output for small inputs.\n     */\n    Deflate.prototype.flush = function () {\n        if (!this.ondata)\n            err(5);\n        if (this.s.l)\n            err(4);\n        this.p(this.b, false);\n        this.s.w = this.s.i, this.s.i -= 2;\n    };\n    return Deflate;\n}());\nexport { Deflate };\n/**\n * Asynchronous streaming DEFLATE compression\n */\nvar AsyncDeflate = /*#__PURE__*/ (function () {\n    function AsyncDeflate(opts, cb) {\n        astrmify([\n            bDflt,\n            function () { return [astrm, Deflate]; }\n        ], this, StrmOpt.call(this, opts, cb), function (ev) {\n            var strm = new Deflate(ev.data);\n            onmessage = astrm(strm);\n        }, 6, 1);\n    }\n    return AsyncDeflate;\n}());\nexport { AsyncDeflate };\nexport function deflate(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        err(7);\n    return cbify(data, opts, [\n        bDflt,\n    ], function (ev) { return pbf(deflateSync(ev.data[0], ev.data[1])); }, 0, cb);\n}\n/**\n * Compresses data with DEFLATE without any wrapper\n * @param data The data to compress\n * @param opts The compression options\n * @returns The deflated version of the data\n */\nexport function deflateSync(data, opts) {\n    return dopt(data, opts || {}, 0, 0);\n}\n/**\n * Streaming DEFLATE decompression\n */\nvar Inflate = /*#__PURE__*/ (function () {\n    function Inflate(opts, cb) {\n        // no StrmOpt here to avoid adding to workerizer\n        if (typeof opts == 'function')\n            cb = opts, opts = {};\n        this.ondata = cb;\n        var dict = opts && opts.dictionary && opts.dictionary.subarray(-32768);\n        this.s = { i: 0, b: dict ? dict.length : 0 };\n        this.o = new u8(32768);\n        this.p = new u8(0);\n        if (dict)\n            this.o.set(dict);\n    }\n    Inflate.prototype.e = function (c) {\n        if (!this.ondata)\n            err(5);\n        if (this.d)\n            err(4);\n        if (!this.p.length)\n            this.p = c;\n        else if (c.length) {\n            var n = new u8(this.p.length + c.length);\n            n.set(this.p), n.set(c, this.p.length), this.p = n;\n        }\n    };\n    Inflate.prototype.c = function (final) {\n        this.s.i = +(this.d = final || false);\n        var bts = this.s.b;\n        var dt = inflt(this.p, this.s, this.o);\n        this.ondata(slc(dt, bts, this.s.b), this.d);\n        this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length;\n        this.p = slc(this.p, (this.s.p / 8) | 0), this.s.p &= 7;\n    };\n    /**\n     * Pushes a chunk to be inflated\n     * @param chunk The chunk to push\n     * @param final Whether this is the final chunk\n     */\n    Inflate.prototype.push = function (chunk, final) {\n        this.e(chunk), this.c(final);\n    };\n    return Inflate;\n}());\nexport { Inflate };\n/**\n * Asynchronous streaming DEFLATE decompression\n */\nvar AsyncInflate = /*#__PURE__*/ (function () {\n    function AsyncInflate(opts, cb) {\n        astrmify([\n            bInflt,\n            function () { return [astrm, Inflate]; }\n        ], this, StrmOpt.call(this, opts, cb), function (ev) {\n            var strm = new Inflate(ev.data);\n            onmessage = astrm(strm);\n        }, 7, 0);\n    }\n    return AsyncInflate;\n}());\nexport { AsyncInflate };\nexport function inflate(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        err(7);\n    return cbify(data, opts, [\n        bInflt\n    ], function (ev) { return pbf(inflateSync(ev.data[0], gopt(ev.data[1]))); }, 1, cb);\n}\n/**\n * Expands DEFLATE data with no wrapper\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function inflateSync(data, opts) {\n    return inflt(data, { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// before you yell at me for not just using extends, my reason is that TS inheritance is hard to workerize.\n/**\n * Streaming GZIP compression\n */\nvar Gzip = /*#__PURE__*/ (function () {\n    function Gzip(opts, cb) {\n        this.c = crc();\n        this.l = 0;\n        this.v = 1;\n        Deflate.call(this, opts, cb);\n    }\n    /**\n     * Pushes a chunk to be GZIPped\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    Gzip.prototype.push = function (chunk, final) {\n        this.c.p(chunk);\n        this.l += chunk.length;\n        Deflate.prototype.push.call(this, chunk, final);\n    };\n    Gzip.prototype.p = function (c, f) {\n        var raw = dopt(c, this.o, this.v && gzhl(this.o), f && 8, this.s);\n        if (this.v)\n            gzh(raw, this.o), this.v = 0;\n        if (f)\n            wbytes(raw, raw.length - 8, this.c.d()), wbytes(raw, raw.length - 4, this.l);\n        this.ondata(raw, f);\n    };\n    /**\n     * Flushes buffered uncompressed data. Useful to immediately retrieve the\n     * GZIPped output for small inputs.\n     */\n    Gzip.prototype.flush = function () {\n        Deflate.prototype.flush.call(this);\n    };\n    return Gzip;\n}());\nexport { Gzip };\n/**\n * Asynchronous streaming GZIP compression\n */\nvar AsyncGzip = /*#__PURE__*/ (function () {\n    function AsyncGzip(opts, cb) {\n        astrmify([\n            bDflt,\n            gze,\n            function () { return [astrm, Deflate, Gzip]; }\n        ], this, StrmOpt.call(this, opts, cb), function (ev) {\n            var strm = new Gzip(ev.data);\n            onmessage = astrm(strm);\n        }, 8, 1);\n    }\n    return AsyncGzip;\n}());\nexport { AsyncGzip };\nexport function gzip(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        err(7);\n    return cbify(data, opts, [\n        bDflt,\n        gze,\n        function () { return [gzipSync]; }\n    ], function (ev) { return pbf(gzipSync(ev.data[0], ev.data[1])); }, 2, cb);\n}\n/**\n * Compresses data with GZIP\n * @param data The data to compress\n * @param opts The compression options\n * @returns The gzipped version of the data\n */\nexport function gzipSync(data, opts) {\n    if (!opts)\n        opts = {};\n    var c = crc(), l = data.length;\n    c.p(data);\n    var d = dopt(data, opts, gzhl(opts), 8), s = d.length;\n    return gzh(d, opts), wbytes(d, s - 8, c.d()), wbytes(d, s - 4, l), d;\n}\n/**\n * Streaming single or multi-member GZIP decompression\n */\nvar Gunzip = /*#__PURE__*/ (function () {\n    function Gunzip(opts, cb) {\n        this.v = 1;\n        this.r = 0;\n        Inflate.call(this, opts, cb);\n    }\n    /**\n     * Pushes a chunk to be GUNZIPped\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    Gunzip.prototype.push = function (chunk, final) {\n        Inflate.prototype.e.call(this, chunk);\n        this.r += chunk.length;\n        if (this.v) {\n            var p = this.p.subarray(this.v - 1);\n            var s = p.length > 3 ? gzs(p) : 4;\n            if (s > p.length) {\n                if (!final)\n                    return;\n            }\n            else if (this.v > 1 && this.onmember) {\n                this.onmember(this.r - p.length);\n            }\n            this.p = p.subarray(s), this.v = 0;\n        }\n        // necessary to prevent TS from using the closure value\n        // This allows for workerization to function correctly\n        Inflate.prototype.c.call(this, final);\n        // process concatenated GZIP\n        if (this.s.f && !this.s.l && !final) {\n            this.v = shft(this.s.p) + 9;\n            this.s = { i: 0 };\n            this.o = new u8(0);\n            this.push(new u8(0), final);\n        }\n    };\n    return Gunzip;\n}());\nexport { Gunzip };\n/**\n * Asynchronous streaming single or multi-member GZIP decompression\n */\nvar AsyncGunzip = /*#__PURE__*/ (function () {\n    function AsyncGunzip(opts, cb) {\n        var _this = this;\n        astrmify([\n            bInflt,\n            guze,\n            function () { return [astrm, Inflate, Gunzip]; }\n        ], this, StrmOpt.call(this, opts, cb), function (ev) {\n            var strm = new Gunzip(ev.data);\n            strm.onmember = function (offset) { return postMessage(offset); };\n            onmessage = astrm(strm);\n        }, 9, 0, function (offset) { return _this.onmember && _this.onmember(offset); });\n    }\n    return AsyncGunzip;\n}());\nexport { AsyncGunzip };\nexport function gunzip(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        err(7);\n    return cbify(data, opts, [\n        bInflt,\n        guze,\n        function () { return [gunzipSync]; }\n    ], function (ev) { return pbf(gunzipSync(ev.data[0], ev.data[1])); }, 3, cb);\n}\n/**\n * Expands GZIP data\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function gunzipSync(data, opts) {\n    var st = gzs(data);\n    if (st + 8 > data.length)\n        err(6, 'invalid gzip data');\n    return inflt(data.subarray(st, -8), { i: 2 }, opts && opts.out || new u8(gzl(data)), opts && opts.dictionary);\n}\n/**\n * Streaming Zlib compression\n */\nvar Zlib = /*#__PURE__*/ (function () {\n    function Zlib(opts, cb) {\n        this.c = adler();\n        this.v = 1;\n        Deflate.call(this, opts, cb);\n    }\n    /**\n     * Pushes a chunk to be zlibbed\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    Zlib.prototype.push = function (chunk, final) {\n        this.c.p(chunk);\n        Deflate.prototype.push.call(this, chunk, final);\n    };\n    Zlib.prototype.p = function (c, f) {\n        var raw = dopt(c, this.o, this.v && (this.o.dictionary ? 6 : 2), f && 4, this.s);\n        if (this.v)\n            zlh(raw, this.o), this.v = 0;\n        if (f)\n            wbytes(raw, raw.length - 4, this.c.d());\n        this.ondata(raw, f);\n    };\n    /**\n     * Flushes buffered uncompressed data. Useful to immediately retrieve the\n     * zlibbed output for small inputs.\n     */\n    Zlib.prototype.flush = function () {\n        Deflate.prototype.flush.call(this);\n    };\n    return Zlib;\n}());\nexport { Zlib };\n/**\n * Asynchronous streaming Zlib compression\n */\nvar AsyncZlib = /*#__PURE__*/ (function () {\n    function AsyncZlib(opts, cb) {\n        astrmify([\n            bDflt,\n            zle,\n            function () { return [astrm, Deflate, Zlib]; }\n        ], this, StrmOpt.call(this, opts, cb), function (ev) {\n            var strm = new Zlib(ev.data);\n            onmessage = astrm(strm);\n        }, 10, 1);\n    }\n    return AsyncZlib;\n}());\nexport { AsyncZlib };\nexport function zlib(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        err(7);\n    return cbify(data, opts, [\n        bDflt,\n        zle,\n        function () { return [zlibSync]; }\n    ], function (ev) { return pbf(zlibSync(ev.data[0], ev.data[1])); }, 4, cb);\n}\n/**\n * Compress data with Zlib\n * @param data The data to compress\n * @param opts The compression options\n * @returns The zlib-compressed version of the data\n */\nexport function zlibSync(data, opts) {\n    if (!opts)\n        opts = {};\n    var a = adler();\n    a.p(data);\n    var d = dopt(data, opts, opts.dictionary ? 6 : 2, 4);\n    return zlh(d, opts), wbytes(d, d.length - 4, a.d()), d;\n}\n/**\n * Streaming Zlib decompression\n */\nvar Unzlib = /*#__PURE__*/ (function () {\n    function Unzlib(opts, cb) {\n        Inflate.call(this, opts, cb);\n        this.v = opts && opts.dictionary ? 2 : 1;\n    }\n    /**\n     * Pushes a chunk to be unzlibbed\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    Unzlib.prototype.push = function (chunk, final) {\n        Inflate.prototype.e.call(this, chunk);\n        if (this.v) {\n            if (this.p.length < 6 && !final)\n                return;\n            this.p = this.p.subarray(zls(this.p, this.v - 1)), this.v = 0;\n        }\n        if (final) {\n            if (this.p.length < 4)\n                err(6, 'invalid zlib data');\n            this.p = this.p.subarray(0, -4);\n        }\n        // necessary to prevent TS from using the closure value\n        // This allows for workerization to function correctly\n        Inflate.prototype.c.call(this, final);\n    };\n    return Unzlib;\n}());\nexport { Unzlib };\n/**\n * Asynchronous streaming Zlib decompression\n */\nvar AsyncUnzlib = /*#__PURE__*/ (function () {\n    function AsyncUnzlib(opts, cb) {\n        astrmify([\n            bInflt,\n            zule,\n            function () { return [astrm, Inflate, Unzlib]; }\n        ], this, StrmOpt.call(this, opts, cb), function (ev) {\n            var strm = new Unzlib(ev.data);\n            onmessage = astrm(strm);\n        }, 11, 0);\n    }\n    return AsyncUnzlib;\n}());\nexport { AsyncUnzlib };\nexport function unzlib(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        err(7);\n    return cbify(data, opts, [\n        bInflt,\n        zule,\n        function () { return [unzlibSync]; }\n    ], function (ev) { return pbf(unzlibSync(ev.data[0], gopt(ev.data[1]))); }, 5, cb);\n}\n/**\n * Expands Zlib data\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function unzlibSync(data, opts) {\n    return inflt(data.subarray(zls(data, opts && opts.dictionary), -4), { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// Default algorithm for compression (used because having a known output size allows faster decompression)\nexport { gzip as compress, AsyncGzip as AsyncCompress };\nexport { gzipSync as compressSync, Gzip as Compress };\n/**\n * Streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar Decompress = /*#__PURE__*/ (function () {\n    function Decompress(opts, cb) {\n        this.o = StrmOpt.call(this, opts, cb) || {};\n        this.G = Gunzip;\n        this.I = Inflate;\n        this.Z = Unzlib;\n    }\n    // init substream\n    // overriden by AsyncDecompress\n    Decompress.prototype.i = function () {\n        var _this = this;\n        this.s.ondata = function (dat, final) {\n            _this.ondata(dat, final);\n        };\n    };\n    /**\n     * Pushes a chunk to be decompressed\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    Decompress.prototype.push = function (chunk, final) {\n        if (!this.ondata)\n            err(5);\n        if (!this.s) {\n            if (this.p && this.p.length) {\n                var n = new u8(this.p.length + chunk.length);\n                n.set(this.p), n.set(chunk, this.p.length);\n            }\n            else\n                this.p = chunk;\n            if (this.p.length > 2) {\n                this.s = (this.p[0] == 31 && this.p[1] == 139 && this.p[2] == 8)\n                    ? new this.G(this.o)\n                    : ((this.p[0] & 15) != 8 || (this.p[0] >> 4) > 7 || ((this.p[0] << 8 | this.p[1]) % 31))\n                        ? new this.I(this.o)\n                        : new this.Z(this.o);\n                this.i();\n                this.s.push(this.p, final);\n                this.p = null;\n            }\n        }\n        else\n            this.s.push(chunk, final);\n    };\n    return Decompress;\n}());\nexport { Decompress };\n/**\n * Asynchronous streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar AsyncDecompress = /*#__PURE__*/ (function () {\n    function AsyncDecompress(opts, cb) {\n        Decompress.call(this, opts, cb);\n        this.queuedSize = 0;\n        this.G = AsyncGunzip;\n        this.I = AsyncInflate;\n        this.Z = AsyncUnzlib;\n    }\n    AsyncDecompress.prototype.i = function () {\n        var _this = this;\n        this.s.ondata = function (err, dat, final) {\n            _this.ondata(err, dat, final);\n        };\n        this.s.ondrain = function (size) {\n            _this.queuedSize -= size;\n            if (_this.ondrain)\n                _this.ondrain(size);\n        };\n    };\n    /**\n     * Pushes a chunk to be decompressed\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    AsyncDecompress.prototype.push = function (chunk, final) {\n        this.queuedSize += chunk.length;\n        Decompress.prototype.push.call(this, chunk, final);\n    };\n    return AsyncDecompress;\n}());\nexport { AsyncDecompress };\nexport function decompress(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        err(7);\n    return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n        ? gunzip(data, opts, cb)\n        : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n            ? inflate(data, opts, cb)\n            : unzlib(data, opts, cb);\n}\n/**\n * Expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function decompressSync(data, opts) {\n    return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n        ? gunzipSync(data, opts)\n        : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n            ? inflateSync(data, opts)\n            : unzlibSync(data, opts);\n}\n// flatten a directory structure\nvar fltn = function (d, p, t, o) {\n    for (var k in d) {\n        var val = d[k], n = p + k, op = o;\n        if (Array.isArray(val))\n            op = mrg(o, val[1]), val = val[0];\n        if (val instanceof u8)\n            t[n] = [val, op];\n        else {\n            t[n += '/'] = [new u8(0), op];\n            fltn(val, n, t, o);\n        }\n    }\n};\n// text encoder\nvar te = typeof TextEncoder != 'undefined' && /*#__PURE__*/ new TextEncoder();\n// text decoder\nvar td = typeof TextDecoder != 'undefined' && /*#__PURE__*/ new TextDecoder();\n// text decoder stream\nvar tds = 0;\ntry {\n    td.decode(et, { stream: true });\n    tds = 1;\n}\ncatch (e) { }\n// decode UTF8\nvar dutf8 = function (d) {\n    for (var r = '', i = 0;;) {\n        var c = d[i++];\n        var eb = (c > 127) + (c > 223) + (c > 239);\n        if (i + eb > d.length)\n            return { s: r, r: slc(d, i - 1) };\n        if (!eb)\n            r += String.fromCharCode(c);\n        else if (eb == 3) {\n            c = ((c & 15) << 18 | (d[i++] & 63) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63)) - 65536,\n                r += String.fromCharCode(55296 | (c >> 10), 56320 | (c & 1023));\n        }\n        else if (eb & 1)\n            r += String.fromCharCode((c & 31) << 6 | (d[i++] & 63));\n        else\n            r += String.fromCharCode((c & 15) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63));\n    }\n};\n/**\n * Streaming UTF-8 decoding\n */\nvar DecodeUTF8 = /*#__PURE__*/ (function () {\n    /**\n     * Creates a UTF-8 decoding stream\n     * @param cb The callback to call whenever data is decoded\n     */\n    function DecodeUTF8(cb) {\n        this.ondata = cb;\n        if (tds)\n            this.t = new TextDecoder();\n        else\n            this.p = et;\n    }\n    /**\n     * Pushes a chunk to be decoded from UTF-8 binary\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    DecodeUTF8.prototype.push = function (chunk, final) {\n        if (!this.ondata)\n            err(5);\n        final = !!final;\n        if (this.t) {\n            this.ondata(this.t.decode(chunk, { stream: true }), final);\n            if (final) {\n                if (this.t.decode().length)\n                    err(8);\n                this.t = null;\n            }\n            return;\n        }\n        if (!this.p)\n            err(4);\n        var dat = new u8(this.p.length + chunk.length);\n        dat.set(this.p);\n        dat.set(chunk, this.p.length);\n        var _a = dutf8(dat), s = _a.s, r = _a.r;\n        if (final) {\n            if (r.length)\n                err(8);\n            this.p = null;\n        }\n        else\n            this.p = r;\n        this.ondata(s, final);\n    };\n    return DecodeUTF8;\n}());\nexport { DecodeUTF8 };\n/**\n * Streaming UTF-8 encoding\n */\nvar EncodeUTF8 = /*#__PURE__*/ (function () {\n    /**\n     * Creates a UTF-8 decoding stream\n     * @param cb The callback to call whenever data is encoded\n     */\n    function EncodeUTF8(cb) {\n        this.ondata = cb;\n    }\n    /**\n     * Pushes a chunk to be encoded to UTF-8\n     * @param chunk The string data to push\n     * @param final Whether this is the last chunk\n     */\n    EncodeUTF8.prototype.push = function (chunk, final) {\n        if (!this.ondata)\n            err(5);\n        if (this.d)\n            err(4);\n        this.ondata(strToU8(chunk), this.d = final || false);\n    };\n    return EncodeUTF8;\n}());\nexport { EncodeUTF8 };\n/**\n * Converts a string into a Uint8Array for use with compression/decompression methods\n * @param str The string to encode\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n *               not need to be true unless decoding a binary string.\n * @returns The string encoded in UTF-8/Latin-1 binary\n */\nexport function strToU8(str, latin1) {\n    if (latin1) {\n        var ar_1 = new u8(str.length);\n        for (var i = 0; i < str.length; ++i)\n            ar_1[i] = str.charCodeAt(i);\n        return ar_1;\n    }\n    if (te)\n        return te.encode(str);\n    var l = str.length;\n    var ar = new u8(str.length + (str.length >> 1));\n    var ai = 0;\n    var w = function (v) { ar[ai++] = v; };\n    for (var i = 0; i < l; ++i) {\n        if (ai + 5 > ar.length) {\n            var n = new u8(ai + 8 + ((l - i) << 1));\n            n.set(ar);\n            ar = n;\n        }\n        var c = str.charCodeAt(i);\n        if (c < 128 || latin1)\n            w(c);\n        else if (c < 2048)\n            w(192 | (c >> 6)), w(128 | (c & 63));\n        else if (c > 55295 && c < 57344)\n            c = 65536 + (c & 1023 << 10) | (str.charCodeAt(++i) & 1023),\n                w(240 | (c >> 18)), w(128 | ((c >> 12) & 63)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n        else\n            w(224 | (c >> 12)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n    }\n    return slc(ar, 0, ai);\n}\n/**\n * Converts a Uint8Array to a string\n * @param dat The data to decode to string\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n *               not need to be true unless encoding to binary string.\n * @returns The original UTF-8/Latin-1 string\n */\nexport function strFromU8(dat, latin1) {\n    if (latin1) {\n        var r = '';\n        for (var i = 0; i < dat.length; i += 16384)\n            r += String.fromCharCode.apply(null, dat.subarray(i, i + 16384));\n        return r;\n    }\n    else if (td) {\n        return td.decode(dat);\n    }\n    else {\n        var _a = dutf8(dat), s = _a.s, r = _a.r;\n        if (r.length)\n            err(8);\n        return s;\n    }\n}\n;\n// deflate bit flag\nvar dbf = function (l) { return l == 1 ? 3 : l < 6 ? 2 : l == 9 ? 1 : 0; };\n// skip local zip header\nvar slzh = function (d, b) { return b + 30 + b2(d, b + 26) + b2(d, b + 28); };\n// read zip header\nvar zh = function (d, b, z) {\n    var fnl = b2(d, b + 28), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl, bs = b4(d, b + 20);\n    var _a = z && bs == 4294967295 ? z64e(d, es) : [bs, b4(d, b + 24), b4(d, b + 42)], sc = _a[0], su = _a[1], off = _a[2];\n    return [b2(d, b + 10), sc, su, fn, es + b2(d, b + 30) + b2(d, b + 32), off];\n};\n// read zip64 extra field\nvar z64e = function (d, b) {\n    for (; b2(d, b) != 1; b += 4 + b2(d, b + 2))\n        ;\n    return [b8(d, b + 12), b8(d, b + 4), b8(d, b + 20)];\n};\n// extra field length\nvar exfl = function (ex) {\n    var le = 0;\n    if (ex) {\n        for (var k in ex) {\n            var l = ex[k].length;\n            if (l > 65535)\n                err(9);\n            le += l + 4;\n        }\n    }\n    return le;\n};\n// write zip header\nvar wzh = function (d, b, f, fn, u, c, ce, co) {\n    var fl = fn.length, ex = f.extra, col = co && co.length;\n    var exl = exfl(ex);\n    wbytes(d, b, ce != null ? 0x2014B50 : 0x4034B50), b += 4;\n    if (ce != null)\n        d[b++] = 20, d[b++] = f.os;\n    d[b] = 20, b += 2; // spec compliance? what's that?\n    d[b++] = (f.flag << 1) | (c < 0 && 8), d[b++] = u && 8;\n    d[b++] = f.compression & 255, d[b++] = f.compression >> 8;\n    var dt = new Date(f.mtime == null ? Date.now() : f.mtime), y = dt.getFullYear() - 1980;\n    if (y < 0 || y > 119)\n        err(10);\n    wbytes(d, b, (y << 25) | ((dt.getMonth() + 1) << 21) | (dt.getDate() << 16) | (dt.getHours() << 11) | (dt.getMinutes() << 5) | (dt.getSeconds() >> 1)), b += 4;\n    if (c != -1) {\n        wbytes(d, b, f.crc);\n        wbytes(d, b + 4, c < 0 ? -c - 2 : c);\n        wbytes(d, b + 8, f.size);\n    }\n    wbytes(d, b + 12, fl);\n    wbytes(d, b + 14, exl), b += 16;\n    if (ce != null) {\n        wbytes(d, b, col);\n        wbytes(d, b + 6, f.attrs);\n        wbytes(d, b + 10, ce), b += 14;\n    }\n    d.set(fn, b);\n    b += fl;\n    if (exl) {\n        for (var k in ex) {\n            var exf = ex[k], l = exf.length;\n            wbytes(d, b, +k);\n            wbytes(d, b + 2, l);\n            d.set(exf, b + 4), b += 4 + l;\n        }\n    }\n    if (col)\n        d.set(co, b), b += col;\n    return b;\n};\n// write zip footer (end of central directory)\nvar wzf = function (o, b, c, d, e) {\n    wbytes(o, b, 0x6054B50); // skip disk\n    wbytes(o, b + 8, c);\n    wbytes(o, b + 10, c);\n    wbytes(o, b + 12, d);\n    wbytes(o, b + 16, e);\n};\n/**\n * A pass-through stream to keep data uncompressed in a ZIP archive.\n */\nvar ZipPassThrough = /*#__PURE__*/ (function () {\n    /**\n     * Creates a pass-through stream that can be added to ZIP archives\n     * @param filename The filename to associate with this data stream\n     */\n    function ZipPassThrough(filename) {\n        this.filename = filename;\n        this.c = crc();\n        this.size = 0;\n        this.compression = 0;\n    }\n    /**\n     * Processes a chunk and pushes to the output stream. You can override this\n     * method in a subclass for custom behavior, but by default this passes\n     * the data through. You must call this.ondata(err, chunk, final) at some\n     * point in this method.\n     * @param chunk The chunk to process\n     * @param final Whether this is the last chunk\n     */\n    ZipPassThrough.prototype.process = function (chunk, final) {\n        this.ondata(null, chunk, final);\n    };\n    /**\n     * Pushes a chunk to be added. If you are subclassing this with a custom\n     * compression algorithm, note that you must push data from the source\n     * file only, pre-compression.\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    ZipPassThrough.prototype.push = function (chunk, final) {\n        if (!this.ondata)\n            err(5);\n        this.c.p(chunk);\n        this.size += chunk.length;\n        if (final)\n            this.crc = this.c.d();\n        this.process(chunk, final || false);\n    };\n    return ZipPassThrough;\n}());\nexport { ZipPassThrough };\n// I don't extend because TypeScript extension adds 1kB of runtime bloat\n/**\n * Streaming DEFLATE compression for ZIP archives. Prefer using AsyncZipDeflate\n * for better performance\n */\nvar ZipDeflate = /*#__PURE__*/ (function () {\n    /**\n     * Creates a DEFLATE stream that can be added to ZIP archives\n     * @param filename The filename to associate with this data stream\n     * @param opts The compression options\n     */\n    function ZipDeflate(filename, opts) {\n        var _this = this;\n        if (!opts)\n            opts = {};\n        ZipPassThrough.call(this, filename);\n        this.d = new Deflate(opts, function (dat, final) {\n            _this.ondata(null, dat, final);\n        });\n        this.compression = 8;\n        this.flag = dbf(opts.level);\n    }\n    ZipDeflate.prototype.process = function (chunk, final) {\n        try {\n            this.d.push(chunk, final);\n        }\n        catch (e) {\n            this.ondata(e, null, final);\n        }\n    };\n    /**\n     * Pushes a chunk to be deflated\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    ZipDeflate.prototype.push = function (chunk, final) {\n        ZipPassThrough.prototype.push.call(this, chunk, final);\n    };\n    return ZipDeflate;\n}());\nexport { ZipDeflate };\n/**\n * Asynchronous streaming DEFLATE compression for ZIP archives\n */\nvar AsyncZipDeflate = /*#__PURE__*/ (function () {\n    /**\n     * Creates an asynchronous DEFLATE stream that can be added to ZIP archives\n     * @param filename The filename to associate with this data stream\n     * @param opts The compression options\n     */\n    function AsyncZipDeflate(filename, opts) {\n        var _this = this;\n        if (!opts)\n            opts = {};\n        ZipPassThrough.call(this, filename);\n        this.d = new AsyncDeflate(opts, function (err, dat, final) {\n            _this.ondata(err, dat, final);\n        });\n        this.compression = 8;\n        this.flag = dbf(opts.level);\n        this.terminate = this.d.terminate;\n    }\n    AsyncZipDeflate.prototype.process = function (chunk, final) {\n        this.d.push(chunk, final);\n    };\n    /**\n     * Pushes a chunk to be deflated\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    AsyncZipDeflate.prototype.push = function (chunk, final) {\n        ZipPassThrough.prototype.push.call(this, chunk, final);\n    };\n    return AsyncZipDeflate;\n}());\nexport { AsyncZipDeflate };\n// TODO: Better tree shaking\n/**\n * A zippable archive to which files can incrementally be added\n */\nvar Zip = /*#__PURE__*/ (function () {\n    /**\n     * Creates an empty ZIP archive to which files can be added\n     * @param cb The callback to call whenever data for the generated ZIP archive\n     *           is available\n     */\n    function Zip(cb) {\n        this.ondata = cb;\n        this.u = [];\n        this.d = 1;\n    }\n    /**\n     * Adds a file to the ZIP archive\n     * @param file The file stream to add\n     */\n    Zip.prototype.add = function (file) {\n        var _this = this;\n        if (!this.ondata)\n            err(5);\n        // finishing or finished\n        if (this.d & 2)\n            this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, false);\n        else {\n            var f = strToU8(file.filename), fl_1 = f.length;\n            var com = file.comment, o = com && strToU8(com);\n            var u = fl_1 != file.filename.length || (o && (com.length != o.length));\n            var hl_1 = fl_1 + exfl(file.extra) + 30;\n            if (fl_1 > 65535)\n                this.ondata(err(11, 0, 1), null, false);\n            var header = new u8(hl_1);\n            wzh(header, 0, file, f, u, -1);\n            var chks_1 = [header];\n            var pAll_1 = function () {\n                for (var _i = 0, chks_2 = chks_1; _i < chks_2.length; _i++) {\n                    var chk = chks_2[_i];\n                    _this.ondata(null, chk, false);\n                }\n                chks_1 = [];\n            };\n            var tr_1 = this.d;\n            this.d = 0;\n            var ind_1 = this.u.length;\n            var uf_1 = mrg(file, {\n                f: f,\n                u: u,\n                o: o,\n                t: function () {\n                    if (file.terminate)\n                        file.terminate();\n                },\n                r: function () {\n                    pAll_1();\n                    if (tr_1) {\n                        var nxt = _this.u[ind_1 + 1];\n                        if (nxt)\n                            nxt.r();\n                        else\n                            _this.d = 1;\n                    }\n                    tr_1 = 1;\n                }\n            });\n            var cl_1 = 0;\n            file.ondata = function (err, dat, final) {\n                if (err) {\n                    _this.ondata(err, dat, final);\n                    _this.terminate();\n                }\n                else {\n                    cl_1 += dat.length;\n                    chks_1.push(dat);\n                    if (final) {\n                        var dd = new u8(16);\n                        wbytes(dd, 0, 0x8074B50);\n                        wbytes(dd, 4, file.crc);\n                        wbytes(dd, 8, cl_1);\n                        wbytes(dd, 12, file.size);\n                        chks_1.push(dd);\n                        uf_1.c = cl_1, uf_1.b = hl_1 + cl_1 + 16, uf_1.crc = file.crc, uf_1.size = file.size;\n                        if (tr_1)\n                            uf_1.r();\n                        tr_1 = 1;\n                    }\n                    else if (tr_1)\n                        pAll_1();\n                }\n            };\n            this.u.push(uf_1);\n        }\n    };\n    /**\n     * Ends the process of adding files and prepares to emit the final chunks.\n     * This *must* be called after adding all desired files for the resulting\n     * ZIP file to work properly.\n     */\n    Zip.prototype.end = function () {\n        var _this = this;\n        if (this.d & 2) {\n            this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, true);\n            return;\n        }\n        if (this.d)\n            this.e();\n        else\n            this.u.push({\n                r: function () {\n                    if (!(_this.d & 1))\n                        return;\n                    _this.u.splice(-1, 1);\n                    _this.e();\n                },\n                t: function () { }\n            });\n        this.d = 3;\n    };\n    Zip.prototype.e = function () {\n        var bt = 0, l = 0, tl = 0;\n        for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n            var f = _a[_i];\n            tl += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0);\n        }\n        var out = new u8(tl + 22);\n        for (var _b = 0, _c = this.u; _b < _c.length; _b++) {\n            var f = _c[_b];\n            wzh(out, bt, f, f.f, f.u, -f.c - 2, l, f.o);\n            bt += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0), l += f.b;\n        }\n        wzf(out, bt, this.u.length, tl, l);\n        this.ondata(null, out, true);\n        this.d = 2;\n    };\n    /**\n     * A method to terminate any internal workers used by the stream. Subsequent\n     * calls to add() will fail.\n     */\n    Zip.prototype.terminate = function () {\n        for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n            var f = _a[_i];\n            f.t();\n        }\n        this.d = 2;\n    };\n    return Zip;\n}());\nexport { Zip };\nexport function zip(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        err(7);\n    var r = {};\n    fltn(data, '', r, opts);\n    var k = Object.keys(r);\n    var lft = k.length, o = 0, tot = 0;\n    var slft = lft, files = new Array(lft);\n    var term = [];\n    var tAll = function () {\n        for (var i = 0; i < term.length; ++i)\n            term[i]();\n    };\n    var cbd = function (a, b) {\n        mt(function () { cb(a, b); });\n    };\n    mt(function () { cbd = cb; });\n    var cbf = function () {\n        var out = new u8(tot + 22), oe = o, cdl = tot - o;\n        tot = 0;\n        for (var i = 0; i < slft; ++i) {\n            var f = files[i];\n            try {\n                var l = f.c.length;\n                wzh(out, tot, f, f.f, f.u, l);\n                var badd = 30 + f.f.length + exfl(f.extra);\n                var loc = tot + badd;\n                out.set(f.c, loc);\n                wzh(out, o, f, f.f, f.u, l, tot, f.m), o += 16 + badd + (f.m ? f.m.length : 0), tot = loc + l;\n            }\n            catch (e) {\n                return cbd(e, null);\n            }\n        }\n        wzf(out, o, files.length, cdl, oe);\n        cbd(null, out);\n    };\n    if (!lft)\n        cbf();\n    var _loop_1 = function (i) {\n        var fn = k[i];\n        var _a = r[fn], file = _a[0], p = _a[1];\n        var c = crc(), size = file.length;\n        c.p(file);\n        var f = strToU8(fn), s = f.length;\n        var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n        var exl = exfl(p.extra);\n        var compression = p.level == 0 ? 0 : 8;\n        var cbl = function (e, d) {\n            if (e) {\n                tAll();\n                cbd(e, null);\n            }\n            else {\n                var l = d.length;\n                files[i] = mrg(p, {\n                    size: size,\n                    crc: c.d(),\n                    c: d,\n                    f: f,\n                    m: m,\n                    u: s != fn.length || (m && (com.length != ms)),\n                    compression: compression\n                });\n                o += 30 + s + exl + l;\n                tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n                if (!--lft)\n                    cbf();\n            }\n        };\n        if (s > 65535)\n            cbl(err(11, 0, 1), null);\n        if (!compression)\n            cbl(null, file);\n        else if (size < 160000) {\n            try {\n                cbl(null, deflateSync(file, p));\n            }\n            catch (e) {\n                cbl(e, null);\n            }\n        }\n        else\n            term.push(deflate(file, p, cbl));\n    };\n    // Cannot use lft because it can decrease\n    for (var i = 0; i < slft; ++i) {\n        _loop_1(i);\n    }\n    return tAll;\n}\n/**\n * Synchronously creates a ZIP file. Prefer using `zip` for better performance\n * with more than one file.\n * @param data The directory structure for the ZIP archive\n * @param opts The main options, merged with per-file options\n * @returns The generated ZIP archive\n */\nexport function zipSync(data, opts) {\n    if (!opts)\n        opts = {};\n    var r = {};\n    var files = [];\n    fltn(data, '', r, opts);\n    var o = 0;\n    var tot = 0;\n    for (var fn in r) {\n        var _a = r[fn], file = _a[0], p = _a[1];\n        var compression = p.level == 0 ? 0 : 8;\n        var f = strToU8(fn), s = f.length;\n        var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n        var exl = exfl(p.extra);\n        if (s > 65535)\n            err(11);\n        var d = compression ? deflateSync(file, p) : file, l = d.length;\n        var c = crc();\n        c.p(file);\n        files.push(mrg(p, {\n            size: file.length,\n            crc: c.d(),\n            c: d,\n            f: f,\n            m: m,\n            u: s != fn.length || (m && (com.length != ms)),\n            o: o,\n            compression: compression\n        }));\n        o += 30 + s + exl + l;\n        tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n    }\n    var out = new u8(tot + 22), oe = o, cdl = tot - o;\n    for (var i = 0; i < files.length; ++i) {\n        var f = files[i];\n        wzh(out, f.o, f, f.f, f.u, f.c.length);\n        var badd = 30 + f.f.length + exfl(f.extra);\n        out.set(f.c, f.o + badd);\n        wzh(out, o, f, f.f, f.u, f.c.length, f.o, f.m), o += 16 + badd + (f.m ? f.m.length : 0);\n    }\n    wzf(out, o, files.length, cdl, oe);\n    return out;\n}\n/**\n * Streaming pass-through decompression for ZIP archives\n */\nvar UnzipPassThrough = /*#__PURE__*/ (function () {\n    function UnzipPassThrough() {\n    }\n    UnzipPassThrough.prototype.push = function (data, final) {\n        this.ondata(null, data, final);\n    };\n    UnzipPassThrough.compression = 0;\n    return UnzipPassThrough;\n}());\nexport { UnzipPassThrough };\n/**\n * Streaming DEFLATE decompression for ZIP archives. Prefer AsyncZipInflate for\n * better performance.\n */\nvar UnzipInflate = /*#__PURE__*/ (function () {\n    /**\n     * Creates a DEFLATE decompression that can be used in ZIP archives\n     */\n    function UnzipInflate() {\n        var _this = this;\n        this.i = new Inflate(function (dat, final) {\n            _this.ondata(null, dat, final);\n        });\n    }\n    UnzipInflate.prototype.push = function (data, final) {\n        try {\n            this.i.push(data, final);\n        }\n        catch (e) {\n            this.ondata(e, null, final);\n        }\n    };\n    UnzipInflate.compression = 8;\n    return UnzipInflate;\n}());\nexport { UnzipInflate };\n/**\n * Asynchronous streaming DEFLATE decompression for ZIP archives\n */\nvar AsyncUnzipInflate = /*#__PURE__*/ (function () {\n    /**\n     * Creates a DEFLATE decompression that can be used in ZIP archives\n     */\n    function AsyncUnzipInflate(_, sz) {\n        var _this = this;\n        if (sz < 320000) {\n            this.i = new Inflate(function (dat, final) {\n                _this.ondata(null, dat, final);\n            });\n        }\n        else {\n            this.i = new AsyncInflate(function (err, dat, final) {\n                _this.ondata(err, dat, final);\n            });\n            this.terminate = this.i.terminate;\n        }\n    }\n    AsyncUnzipInflate.prototype.push = function (data, final) {\n        if (this.i.terminate)\n            data = slc(data, 0);\n        this.i.push(data, final);\n    };\n    AsyncUnzipInflate.compression = 8;\n    return AsyncUnzipInflate;\n}());\nexport { AsyncUnzipInflate };\n/**\n * A ZIP archive decompression stream that emits files as they are discovered\n */\nvar Unzip = /*#__PURE__*/ (function () {\n    /**\n     * Creates a ZIP decompression stream\n     * @param cb The callback to call whenever a file in the ZIP archive is found\n     */\n    function Unzip(cb) {\n        this.onfile = cb;\n        this.k = [];\n        this.o = {\n            0: UnzipPassThrough\n        };\n        this.p = et;\n    }\n    /**\n     * Pushes a chunk to be unzipped\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    Unzip.prototype.push = function (chunk, final) {\n        var _this = this;\n        if (!this.onfile)\n            err(5);\n        if (!this.p)\n            err(4);\n        if (this.c > 0) {\n            var len = Math.min(this.c, chunk.length);\n            var toAdd = chunk.subarray(0, len);\n            this.c -= len;\n            if (this.d)\n                this.d.push(toAdd, !this.c);\n            else\n                this.k[0].push(toAdd);\n            chunk = chunk.subarray(len);\n            if (chunk.length)\n                return this.push(chunk, final);\n        }\n        else {\n            var f = 0, i = 0, is = void 0, buf = void 0;\n            if (!this.p.length)\n                buf = chunk;\n            else if (!chunk.length)\n                buf = this.p;\n            else {\n                buf = new u8(this.p.length + chunk.length);\n                buf.set(this.p), buf.set(chunk, this.p.length);\n            }\n            var l = buf.length, oc = this.c, add = oc && this.d;\n            var _loop_2 = function () {\n                var _a;\n                var sig = b4(buf, i);\n                if (sig == 0x4034B50) {\n                    f = 1, is = i;\n                    this_1.d = null;\n                    this_1.c = 0;\n                    var bf = b2(buf, i + 6), cmp_1 = b2(buf, i + 8), u = bf & 2048, dd = bf & 8, fnl = b2(buf, i + 26), es = b2(buf, i + 28);\n                    if (l > i + 30 + fnl + es) {\n                        var chks_3 = [];\n                        this_1.k.unshift(chks_3);\n                        f = 2;\n                        var sc_1 = b4(buf, i + 18), su_1 = b4(buf, i + 22);\n                        var fn_1 = strFromU8(buf.subarray(i + 30, i += 30 + fnl), !u);\n                        if (sc_1 == 4294967295) {\n                            _a = dd ? [-2] : z64e(buf, i), sc_1 = _a[0], su_1 = _a[1];\n                        }\n                        else if (dd)\n                            sc_1 = -1;\n                        i += es;\n                        this_1.c = sc_1;\n                        var d_1;\n                        var file_1 = {\n                            name: fn_1,\n                            compression: cmp_1,\n                            start: function () {\n                                if (!file_1.ondata)\n                                    err(5);\n                                if (!sc_1)\n                                    file_1.ondata(null, et, true);\n                                else {\n                                    var ctr = _this.o[cmp_1];\n                                    if (!ctr)\n                                        file_1.ondata(err(14, 'unknown compression type ' + cmp_1, 1), null, false);\n                                    d_1 = sc_1 < 0 ? new ctr(fn_1) : new ctr(fn_1, sc_1, su_1);\n                                    d_1.ondata = function (err, dat, final) { file_1.ondata(err, dat, final); };\n                                    for (var _i = 0, chks_4 = chks_3; _i < chks_4.length; _i++) {\n                                        var dat = chks_4[_i];\n                                        d_1.push(dat, false);\n                                    }\n                                    if (_this.k[0] == chks_3 && _this.c)\n                                        _this.d = d_1;\n                                    else\n                                        d_1.push(et, true);\n                                }\n                            },\n                            terminate: function () {\n                                if (d_1 && d_1.terminate)\n                                    d_1.terminate();\n                            }\n                        };\n                        if (sc_1 >= 0)\n                            file_1.size = sc_1, file_1.originalSize = su_1;\n                        this_1.onfile(file_1);\n                    }\n                    return \"break\";\n                }\n                else if (oc) {\n                    if (sig == 0x8074B50) {\n                        is = i += 12 + (oc == -2 && 8), f = 3, this_1.c = 0;\n                        return \"break\";\n                    }\n                    else if (sig == 0x2014B50) {\n                        is = i -= 4, f = 3, this_1.c = 0;\n                        return \"break\";\n                    }\n                }\n            };\n            var this_1 = this;\n            for (; i < l - 4; ++i) {\n                var state_1 = _loop_2();\n                if (state_1 === \"break\")\n                    break;\n            }\n            this.p = et;\n            if (oc < 0) {\n                var dat = f ? buf.subarray(0, is - 12 - (oc == -2 && 8) - (b4(buf, is - 16) == 0x8074B50 && 4)) : buf.subarray(0, i);\n                if (add)\n                    add.push(dat, !!f);\n                else\n                    this.k[+(f == 2)].push(dat);\n            }\n            if (f & 2)\n                return this.push(buf.subarray(i), final);\n            this.p = buf.subarray(i);\n        }\n        if (final) {\n            if (this.c)\n                err(13);\n            this.p = null;\n        }\n    };\n    /**\n     * Registers a decoder with the stream, allowing for files compressed with\n     * the compression type provided to be expanded correctly\n     * @param decoder The decoder constructor\n     */\n    Unzip.prototype.register = function (decoder) {\n        this.o[decoder.compression] = decoder;\n    };\n    return Unzip;\n}());\nexport { Unzip };\nvar mt = typeof queueMicrotask == 'function' ? queueMicrotask : typeof setTimeout == 'function' ? setTimeout : function (fn) { fn(); };\nexport function unzip(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        err(7);\n    var term = [];\n    var tAll = function () {\n        for (var i = 0; i < term.length; ++i)\n            term[i]();\n    };\n    var files = {};\n    var cbd = function (a, b) {\n        mt(function () { cb(a, b); });\n    };\n    mt(function () { cbd = cb; });\n    var e = data.length - 22;\n    for (; b4(data, e) != 0x6054B50; --e) {\n        if (!e || data.length - e > 65558) {\n            cbd(err(13, 0, 1), null);\n            return tAll;\n        }\n    }\n    ;\n    var lft = b2(data, e + 8);\n    if (lft) {\n        var c = lft;\n        var o = b4(data, e + 16);\n        var z = o == 4294967295 || c == 65535;\n        if (z) {\n            var ze = b4(data, e - 12);\n            z = b4(data, ze) == 0x6064B50;\n            if (z) {\n                c = lft = b4(data, ze + 32);\n                o = b4(data, ze + 48);\n            }\n        }\n        var fltr = opts && opts.filter;\n        var _loop_3 = function (i) {\n            var _a = zh(data, o, z), c_1 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n            o = no;\n            var cbl = function (e, d) {\n                if (e) {\n                    tAll();\n                    cbd(e, null);\n                }\n                else {\n                    if (d)\n                        files[fn] = d;\n                    if (!--lft)\n                        cbd(null, files);\n                }\n            };\n            if (!fltr || fltr({\n                name: fn,\n                size: sc,\n                originalSize: su,\n                compression: c_1\n            })) {\n                if (!c_1)\n                    cbl(null, slc(data, b, b + sc));\n                else if (c_1 == 8) {\n                    var infl = data.subarray(b, b + sc);\n                    // Synchronously decompress under 512KB, or barely-compressed data\n                    if (su < 524288 || sc > 0.8 * su) {\n                        try {\n                            cbl(null, inflateSync(infl, { out: new u8(su) }));\n                        }\n                        catch (e) {\n                            cbl(e, null);\n                        }\n                    }\n                    else\n                        term.push(inflate(infl, { size: su }, cbl));\n                }\n                else\n                    cbl(err(14, 'unknown compression type ' + c_1, 1), null);\n            }\n            else\n                cbl(null, null);\n        };\n        for (var i = 0; i < c; ++i) {\n            _loop_3(i);\n        }\n    }\n    else\n        cbd(null, {});\n    return tAll;\n}\n/**\n * Synchronously decompresses a ZIP archive. Prefer using `unzip` for better\n * performance with more than one file.\n * @param data The raw compressed ZIP file\n * @param opts The ZIP extraction options\n * @returns The decompressed files\n */\nexport function unzipSync(data, opts) {\n    var files = {};\n    var e = data.length - 22;\n    for (; b4(data, e) != 0x6054B50; --e) {\n        if (!e || data.length - e > 65558)\n            err(13);\n    }\n    ;\n    var c = b2(data, e + 8);\n    if (!c)\n        return {};\n    var o = b4(data, e + 16);\n    var z = o == 4294967295 || c == 65535;\n    if (z) {\n        var ze = b4(data, e - 12);\n        z = b4(data, ze) == 0x6064B50;\n        if (z) {\n            c = b4(data, ze + 32);\n            o = b4(data, ze + 48);\n        }\n    }\n    var fltr = opts && opts.filter;\n    for (var i = 0; i < c; ++i) {\n        var _a = zh(data, o, z), c_2 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n        o = no;\n        if (!fltr || fltr({\n            name: fn,\n            size: sc,\n            originalSize: su,\n            compression: c_2\n        })) {\n            if (!c_2)\n                files[fn] = slc(data, b, b + sc);\n            else if (c_2 == 8)\n                files[fn] = inflateSync(data.subarray(b, b + sc), { out: new u8(su) });\n            else\n                err(14, 'unknown compression type ' + c_2);\n        }\n    }\n    return files;\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '')\n\t\t\t.trim()\n\t\t\t.replace(/\\s+/g, ',')\n\t\t\t.split(',')\n\t\t\t.filter(Boolean);\n\n\t\tfor (const ns of split) {\n\t\t\tif (ns[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(ns.slice(1));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(ns);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the given string matches a namespace template, honoring\n\t * asterisks as wildcards.\n\t *\n\t * @param {String} search\n\t * @param {String} template\n\t * @return {Boolean}\n\t */\n\tfunction matchesTemplate(search, template) {\n\t\tlet searchIndex = 0;\n\t\tlet templateIndex = 0;\n\t\tlet starIndex = -1;\n\t\tlet matchIndex = 0;\n\n\t\twhile (searchIndex < search.length) {\n\t\t\tif (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === '*')) {\n\t\t\t\t// Match character or proceed with wildcard\n\t\t\t\tif (template[templateIndex] === '*') {\n\t\t\t\t\tstarIndex = templateIndex;\n\t\t\t\t\tmatchIndex = searchIndex;\n\t\t\t\t\ttemplateIndex++; // Skip the '*'\n\t\t\t\t} else {\n\t\t\t\t\tsearchIndex++;\n\t\t\t\t\ttemplateIndex++;\n\t\t\t\t}\n\t\t\t} else if (starIndex !== -1) { // eslint-disable-line no-negated-condition\n\t\t\t\t// Backtrack to the last '*' and try to match more characters\n\t\t\t\ttemplateIndex = starIndex + 1;\n\t\t\t\tmatchIndex++;\n\t\t\t\tsearchIndex = matchIndex;\n\t\t\t} else {\n\t\t\t\treturn false; // No match\n\t\t\t}\n\t\t}\n\n\t\t// Handle trailing '*' in template\n\t\twhile (templateIndex < template.length && template[templateIndex] === '*') {\n\t\t\ttemplateIndex++;\n\t\t}\n\n\t\treturn templateIndex === template.length;\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names,\n\t\t\t...createDebug.skips.map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tfor (const skip of createDebug.skips) {\n\t\t\tif (matchesTemplate(name, skip)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (const ns of createDebug.names) {\n\t\t\tif (matchesTemplate(name, ns)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n *  - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n  options = options || {};\n  var type = typeof val;\n  if (type === 'string' && val.length > 0) {\n    return parse(val);\n  } else if (type === 'number' && isFinite(val)) {\n    return options.long ? fmtLong(val) : fmtShort(val);\n  }\n  throw new Error(\n    'val is not a non-empty string or a valid number. val=' +\n      JSON.stringify(val)\n  );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n  str = String(str);\n  if (str.length > 100) {\n    return;\n  }\n  var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n    str\n  );\n  if (!match) {\n    return;\n  }\n  var n = parseFloat(match[1]);\n  var type = (match[2] || 'ms').toLowerCase();\n  switch (type) {\n    case 'years':\n    case 'year':\n    case 'yrs':\n    case 'yr':\n    case 'y':\n      return n * y;\n    case 'weeks':\n    case 'week':\n    case 'w':\n      return n * w;\n    case 'days':\n    case 'day':\n    case 'd':\n      return n * d;\n    case 'hours':\n    case 'hour':\n    case 'hrs':\n    case 'hr':\n    case 'h':\n      return n * h;\n    case 'minutes':\n    case 'minute':\n    case 'mins':\n    case 'min':\n    case 'm':\n      return n * m;\n    case 'seconds':\n    case 'second':\n    case 'secs':\n    case 'sec':\n    case 's':\n      return n * s;\n    case 'milliseconds':\n    case 'millisecond':\n    case 'msecs':\n    case 'msec':\n    case 'ms':\n      return n;\n    default:\n      return undefined;\n  }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n  var msAbs = Math.abs(ms);\n  if (msAbs >= d) {\n    return Math.round(ms / d) + 'd';\n  }\n  if (msAbs >= h) {\n    return Math.round(ms / h) + 'h';\n  }\n  if (msAbs >= m) {\n    return Math.round(ms / m) + 'm';\n  }\n  if (msAbs >= s) {\n    return Math.round(ms / s) + 's';\n  }\n  return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n  var msAbs = Math.abs(ms);\n  if (msAbs >= d) {\n    return plural(ms, msAbs, d, 'day');\n  }\n  if (msAbs >= h) {\n    return plural(ms, msAbs, h, 'hour');\n  }\n  if (msAbs >= m) {\n    return plural(ms, msAbs, m, 'minute');\n  }\n  if (msAbs >= s) {\n    return plural(ms, msAbs, s, 'second');\n  }\n  return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n  var isPlural = msAbs >= n * 1.5;\n  return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\tlet m;\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\t// eslint-disable-next-line no-return-assign\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)) && parseInt(m[1], 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug') || exports.storage.getItem('DEBUG') ;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","/**\n * Ref https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT\n */\nimport { UINT16_LE, UINT32_LE } from \"token-types\";\nexport const Signature = {\n    LocalFileHeader: 0x04034b50,\n    DataDescriptor: 0x08074b50,\n    CentralFileHeader: 0x02014b50,\n    EndOfCentralDirectory: 0x06054b50\n};\nexport const DataDescriptor = {\n    get(array) {\n        const flags = UINT16_LE.get(array, 6);\n        return {\n            signature: UINT32_LE.get(array, 0),\n            compressedSize: UINT32_LE.get(array, 8),\n            uncompressedSize: UINT32_LE.get(array, 12),\n        };\n    }, len: 16\n};\n/**\n * First part of the ZIP Local File Header\n * Offset | Bytes| Description\n * -------|------+-------------------------------------------------------------------\n *      0 |    4 | Signature (0x04034b50)\n *      4 |    2 | Minimum version needed to extract\n *      6 |    2 | Bit flag\n *      8 |    2 | Compression method\n *     10 |    2 | File last modification time (MS-DOS format)\n *     12 |    2 | File last modification date (MS-DOS format)\n *     14 |    4 | CRC-32 of uncompressed data\n *     18 |    4 | Compressed size\n *     22 |    4 | Uncompressed size\n *     26 |    2 | File name length (n)\n *     28 |    2 | Extra field length (m)\n *     30 |    n | File name\n * 30 + n |    m | Extra field\n */\nexport const LocalFileHeaderToken = {\n    get(array) {\n        const flags = UINT16_LE.get(array, 6);\n        return {\n            signature: UINT32_LE.get(array, 0),\n            minVersion: UINT16_LE.get(array, 4),\n            dataDescriptor: !!(flags & 0x0008),\n            compressedMethod: UINT16_LE.get(array, 8),\n            compressedSize: UINT32_LE.get(array, 18),\n            uncompressedSize: UINT32_LE.get(array, 22),\n            filenameLength: UINT16_LE.get(array, 26),\n            extraFieldLength: UINT16_LE.get(array, 28),\n            filename: null\n        };\n    }, len: 30\n};\n/**\n * 4.3.16  End of central directory record:\n *  end of central dir signature (0x06064b50)                                      4 bytes\n *  number of this disk                                                            2 bytes\n *  number of the disk with the start of the central directory                     2 bytes\n *  total number of entries in the central directory on this disk                  2 bytes\n *  total number of entries in the size of the central directory                   2 bytes\n *  sizeOfTheCentralDirectory                                                      4 bytes\n *  offset of start of central directory with respect to the starting disk number  4 bytes\n *  .ZIP file comment length                                                       2 bytes\n *  .ZIP file comment       (variable size)\n */\nexport const EndOfCentralDirectoryRecordToken = {\n    get(array) {\n        return {\n            signature: UINT32_LE.get(array, 0),\n            nrOfThisDisk: UINT16_LE.get(array, 4),\n            nrOfThisDiskWithTheStart: UINT16_LE.get(array, 6),\n            nrOfEntriesOnThisDisk: UINT16_LE.get(array, 8),\n            nrOfEntriesOfSize: UINT16_LE.get(array, 10),\n            sizeOfCd: UINT32_LE.get(array, 12),\n            offsetOfStartOfCd: UINT32_LE.get(array, 16),\n            zipFileCommentLength: UINT16_LE.get(array, 20),\n        };\n    }, len: 22\n};\n/**\n * File header:\n *    central file header signature   4 bytes   0 (0x02014b50)\n *    version made by                 2 bytes   4\n *    version needed to extract       2 bytes   6\n *    general purpose bit flag        2 bytes   8\n *    compression method              2 bytes  10\n *    last mod file time              2 bytes  12\n *    last mod file date              2 bytes  14\n *    crc-32                          4 bytes  16\n *    compressed size                 4 bytes  20\n *    uncompressed size               4 bytes  24\n *    file name length                2 bytes  28\n *    extra field length              2 bytes  30\n *    file comment length             2 bytes  32\n *    disk number start               2 bytes  34\n *    internal file attributes        2 bytes  36\n *    external file attributes        4 bytes  38\n *    relative offset of local header 4 bytes  42\n */\nexport const FileHeader = {\n    get(array) {\n        const flags = UINT16_LE.get(array, 8);\n        return {\n            signature: UINT32_LE.get(array, 0),\n            minVersion: UINT16_LE.get(array, 6),\n            dataDescriptor: !!(flags & 0x0008),\n            compressedMethod: UINT16_LE.get(array, 10),\n            compressedSize: UINT32_LE.get(array, 20),\n            uncompressedSize: UINT32_LE.get(array, 24),\n            filenameLength: UINT16_LE.get(array, 28),\n            extraFieldLength: UINT16_LE.get(array, 30),\n            fileCommentLength: UINT16_LE.get(array, 32),\n            relativeOffsetOfLocalHeader: UINT32_LE.get(array, 42),\n            filename: null\n        };\n    }, len: 46\n};\n","import { StringType, UINT32_LE } from 'token-types';\nimport { decompressSync } from 'fflate';\nimport initDebug from 'debug';\nimport { DataDescriptor, EndOfCentralDirectoryRecordToken, FileHeader, LocalFileHeaderToken, Signature } from \"./ZipToken.js\";\nfunction signatureToArray(signature) {\n    const signatureBytes = new Uint8Array(UINT32_LE.len);\n    UINT32_LE.put(signatureBytes, 0, signature);\n    return signatureBytes;\n}\nconst debug = initDebug('tokenizer:inflate');\nconst syncBufferSize = 256 * 1024;\nconst ddSignatureArray = signatureToArray(Signature.DataDescriptor);\nconst eocdSignatureBytes = signatureToArray(Signature.EndOfCentralDirectory);\nexport class ZipHandler {\n    constructor(tokenizer) {\n        this.tokenizer = tokenizer;\n        this.syncBuffer = new Uint8Array(syncBufferSize);\n    }\n    async isZip() {\n        return await this.peekSignature() === Signature.LocalFileHeader;\n    }\n    peekSignature() {\n        return this.tokenizer.peekToken(UINT32_LE);\n    }\n    async findEndOfCentralDirectoryLocator() {\n        const randomReadTokenizer = this.tokenizer;\n        const chunkLength = Math.min(16 * 1024, randomReadTokenizer.fileInfo.size);\n        const buffer = this.syncBuffer.subarray(0, chunkLength);\n        await this.tokenizer.readBuffer(buffer, { position: randomReadTokenizer.fileInfo.size - chunkLength });\n        // Search the buffer from end to beginning for EOCD signature\n        // const signature = 0x06054b50;\n        for (let i = buffer.length - 4; i >= 0; i--) {\n            // Compare 4 bytes directly without calling readUInt32LE\n            if (buffer[i] === eocdSignatureBytes[0] &&\n                buffer[i + 1] === eocdSignatureBytes[1] &&\n                buffer[i + 2] === eocdSignatureBytes[2] &&\n                buffer[i + 3] === eocdSignatureBytes[3]) {\n                return randomReadTokenizer.fileInfo.size - chunkLength + i;\n            }\n        }\n        return -1;\n    }\n    async readCentralDirectory() {\n        if (!this.tokenizer.supportsRandomAccess()) {\n            debug('Cannot reading central-directory without random-read support');\n            return;\n        }\n        debug('Reading central-directory...');\n        const pos = this.tokenizer.position;\n        const offset = await this.findEndOfCentralDirectoryLocator();\n        if (offset > 0) {\n            debug('Central-directory 32-bit signature found');\n            const eocdHeader = await this.tokenizer.readToken(EndOfCentralDirectoryRecordToken, offset);\n            const files = [];\n            this.tokenizer.setPosition(eocdHeader.offsetOfStartOfCd);\n            for (let n = 0; n < eocdHeader.nrOfEntriesOfSize; ++n) {\n                const entry = await this.tokenizer.readToken(FileHeader);\n                if (entry.signature !== Signature.CentralFileHeader) {\n                    throw new Error('Expected Central-File-Header signature');\n                }\n                entry.filename = await this.tokenizer.readToken(new StringType(entry.filenameLength, 'utf-8'));\n                await this.tokenizer.ignore(entry.extraFieldLength);\n                await this.tokenizer.ignore(entry.fileCommentLength);\n                files.push(entry);\n                debug(`Add central-directory file-entry: n=${n + 1}/${files.length}: filename=${files[n].filename}`);\n            }\n            this.tokenizer.setPosition(pos);\n            return files;\n        }\n        this.tokenizer.setPosition(pos);\n    }\n    async unzip(fileCb) {\n        const entries = await this.readCentralDirectory();\n        if (entries) {\n            // Use Central Directory to iterate over files\n            return this.iterateOverCentralDirectory(entries, fileCb);\n        }\n        // Scan Zip files for local-file-header\n        let stop = false;\n        do {\n            const zipHeader = await this.readLocalFileHeader();\n            if (!zipHeader)\n                break;\n            const next = fileCb(zipHeader);\n            stop = !!next.stop;\n            let fileData = undefined;\n            await this.tokenizer.ignore(zipHeader.extraFieldLength);\n            if (zipHeader.dataDescriptor && zipHeader.compressedSize === 0) {\n                const chunks = [];\n                let len = syncBufferSize;\n                debug('Compressed-file-size unknown, scanning for next data-descriptor-signature....');\n                let nextHeaderIndex = -1;\n                while (nextHeaderIndex < 0 && len === syncBufferSize) {\n                    len = await this.tokenizer.peekBuffer(this.syncBuffer, { mayBeLess: true });\n                    nextHeaderIndex = indexOf(this.syncBuffer.subarray(0, len), ddSignatureArray);\n                    const size = nextHeaderIndex >= 0 ? nextHeaderIndex : len;\n                    if (next.handler) {\n                        const data = new Uint8Array(size);\n                        await this.tokenizer.readBuffer(data);\n                        chunks.push(data);\n                    }\n                    else {\n                        // Move position to the next header if found, skip the whole buffer otherwise\n                        await this.tokenizer.ignore(size);\n                    }\n                }\n                debug(`Found data-descriptor-signature at pos=${this.tokenizer.position}`);\n                if (next.handler) {\n                    await this.inflate(zipHeader, mergeArrays(chunks), next.handler);\n                }\n            }\n            else {\n                if (next.handler) {\n                    debug(`Reading compressed-file-data: ${zipHeader.compressedSize} bytes`);\n                    fileData = new Uint8Array(zipHeader.compressedSize);\n                    await this.tokenizer.readBuffer(fileData);\n                    await this.inflate(zipHeader, fileData, next.handler);\n                }\n                else {\n                    debug(`Ignoring compressed-file-data: ${zipHeader.compressedSize} bytes`);\n                    await this.tokenizer.ignore(zipHeader.compressedSize);\n                }\n            }\n            debug(`Reading data-descriptor at pos=${this.tokenizer.position}`);\n            if (zipHeader.dataDescriptor) {\n                // await this.tokenizer.ignore(DataDescriptor.len);\n                const dataDescriptor = await this.tokenizer.readToken(DataDescriptor);\n                if (dataDescriptor.signature !== 0x08074b50) {\n                    throw new Error(`Expected data-descriptor-signature at position ${this.tokenizer.position - DataDescriptor.len}`);\n                }\n            }\n        } while (!stop);\n    }\n    async iterateOverCentralDirectory(entries, fileCb) {\n        for (const fileHeader of entries) {\n            const next = fileCb(fileHeader);\n            if (next.handler) {\n                this.tokenizer.setPosition(fileHeader.relativeOffsetOfLocalHeader);\n                const zipHeader = await this.readLocalFileHeader();\n                if (zipHeader) {\n                    await this.tokenizer.ignore(zipHeader.extraFieldLength);\n                    const fileData = new Uint8Array(fileHeader.compressedSize);\n                    await this.tokenizer.readBuffer(fileData);\n                    await this.inflate(zipHeader, fileData, next.handler);\n                }\n            }\n            if (next.stop)\n                break;\n        }\n    }\n    inflate(zipHeader, fileData, cb) {\n        if (zipHeader.compressedMethod === 0) {\n            return cb(fileData);\n        }\n        debug(`Decompress filename=${zipHeader.filename}, compressed-size=${fileData.length}`);\n        const uncompressedData = decompressSync(fileData);\n        return cb(uncompressedData);\n    }\n    async readLocalFileHeader() {\n        const signature = await this.tokenizer.peekToken(UINT32_LE);\n        if (signature === Signature.LocalFileHeader) {\n            const header = await this.tokenizer.readToken(LocalFileHeaderToken);\n            header.filename = await this.tokenizer.readToken(new StringType(header.filenameLength, 'utf-8'));\n            return header;\n        }\n        if (signature === Signature.CentralFileHeader) {\n            return false;\n        }\n        if (signature === 0xE011CFD0) {\n            throw new Error('Encrypted ZIP');\n        }\n        throw new Error('Unexpected signature');\n    }\n}\nfunction indexOf(buffer, portion) {\n    const bufferLength = buffer.length;\n    const portionLength = portion.length;\n    // Return -1 if the portion is longer than the buffer\n    if (portionLength > bufferLength)\n        return -1;\n    // Search for the portion in the buffer\n    for (let i = 0; i <= bufferLength - portionLength; i++) {\n        let found = true;\n        for (let j = 0; j < portionLength; j++) {\n            if (buffer[i + j] !== portion[j]) {\n                found = false;\n                break;\n            }\n        }\n        if (found) {\n            return i; // Return the starting offset\n        }\n    }\n    return -1; // Not found\n}\nfunction mergeArrays(chunks) {\n    // Concatenate chunks into a single Uint8Array\n    const totalLength = chunks.reduce((acc, curr) => acc + curr.length, 0);\n    const mergedArray = new Uint8Array(totalLength);\n    let offset = 0;\n    for (const chunk of chunks) {\n        mergedArray.set(chunk, offset);\n        offset += chunk.length;\n    }\n    return mergedArray;\n}\n","const objectToString = Object.prototype.toString;\nconst uint8ArrayStringified = '[object Uint8Array]';\nconst arrayBufferStringified = '[object ArrayBuffer]';\n\nfunction isType(value, typeConstructor, typeStringified) {\n\tif (!value) {\n\t\treturn false;\n\t}\n\n\tif (value.constructor === typeConstructor) {\n\t\treturn true;\n\t}\n\n\treturn objectToString.call(value) === typeStringified;\n}\n\nexport function isUint8Array(value) {\n\treturn isType(value, Uint8Array, uint8ArrayStringified);\n}\n\nfunction isArrayBuffer(value) {\n\treturn isType(value, ArrayBuffer, arrayBufferStringified);\n}\n\nfunction isUint8ArrayOrArrayBuffer(value) {\n\treturn isUint8Array(value) || isArrayBuffer(value);\n}\n\nexport function assertUint8Array(value) {\n\tif (!isUint8Array(value)) {\n\t\tthrow new TypeError(`Expected \\`Uint8Array\\`, got \\`${typeof value}\\``);\n\t}\n}\n\nexport function assertUint8ArrayOrArrayBuffer(value) {\n\tif (!isUint8ArrayOrArrayBuffer(value)) {\n\t\tthrow new TypeError(`Expected \\`Uint8Array\\` or \\`ArrayBuffer\\`, got \\`${typeof value}\\``);\n\t}\n}\n\nexport function toUint8Array(value) {\n\tif (value instanceof ArrayBuffer) {\n\t\treturn new Uint8Array(value);\n\t}\n\n\tif (ArrayBuffer.isView(value)) {\n\t\treturn new Uint8Array(value.buffer, value.byteOffset, value.byteLength);\n\t}\n\n\tthrow new TypeError(`Unsupported value, got \\`${typeof value}\\`.`);\n}\n\nexport function concatUint8Arrays(arrays, totalLength) {\n\tif (arrays.length === 0) {\n\t\treturn new Uint8Array(0);\n\t}\n\n\ttotalLength ??= arrays.reduce((accumulator, currentValue) => accumulator + currentValue.length, 0);\n\n\tconst returnValue = new Uint8Array(totalLength);\n\n\tlet offset = 0;\n\tfor (const array of arrays) {\n\t\tassertUint8Array(array);\n\t\treturnValue.set(array, offset);\n\t\toffset += array.length;\n\t}\n\n\treturn returnValue;\n}\n\nexport function areUint8ArraysEqual(a, b) {\n\tassertUint8Array(a);\n\tassertUint8Array(b);\n\n\tif (a === b) {\n\t\treturn true;\n\t}\n\n\tif (a.length !== b.length) {\n\t\treturn false;\n\t}\n\n\t// eslint-disable-next-line unicorn/no-for-loop\n\tfor (let index = 0; index < a.length; index++) {\n\t\tif (a[index] !== b[index]) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\nexport function compareUint8Arrays(a, b) {\n\tassertUint8Array(a);\n\tassertUint8Array(b);\n\n\tconst length = Math.min(a.length, b.length);\n\n\tfor (let index = 0; index < length; index++) {\n\t\tconst diff = a[index] - b[index];\n\t\tif (diff !== 0) {\n\t\t\treturn Math.sign(diff);\n\t\t}\n\t}\n\n\t// At this point, all the compared elements are equal.\n\t// The shorter array should come first if the arrays are of different lengths.\n\treturn Math.sign(a.length - b.length);\n}\n\nconst cachedDecoders = {\n\tutf8: new globalThis.TextDecoder('utf8'),\n};\n\nexport function uint8ArrayToString(array, encoding = 'utf8') {\n\tassertUint8ArrayOrArrayBuffer(array);\n\tcachedDecoders[encoding] ??= new globalThis.TextDecoder(encoding);\n\treturn cachedDecoders[encoding].decode(array);\n}\n\nfunction assertString(value) {\n\tif (typeof value !== 'string') {\n\t\tthrow new TypeError(`Expected \\`string\\`, got \\`${typeof value}\\``);\n\t}\n}\n\nconst cachedEncoder = new globalThis.TextEncoder();\n\nexport function stringToUint8Array(string) {\n\tassertString(string);\n\treturn cachedEncoder.encode(string);\n}\n\nfunction base64ToBase64Url(base64) {\n\treturn base64.replaceAll('+', '-').replaceAll('/', '_').replace(/=+$/, '');\n}\n\nfunction base64UrlToBase64(base64url) {\n\treturn base64url.replaceAll('-', '+').replaceAll('_', '/');\n}\n\n// Reference: https://phuoc.ng/collection/this-vs-that/concat-vs-push/\nconst MAX_BLOCK_SIZE = 65_535;\n\nexport function uint8ArrayToBase64(array, {urlSafe = false} = {}) {\n\tassertUint8Array(array);\n\n\tlet base64;\n\n\tif (array.length < MAX_BLOCK_SIZE) {\n\t// Required as `btoa` and `atob` don't properly support Unicode: https://developer.mozilla.org/en-US/docs/Glossary/Base64#the_unicode_problem\n\t\tbase64 = globalThis.btoa(String.fromCodePoint.apply(this, array));\n\t} else {\n\t\tbase64 = '';\n\t\tfor (const value of array) {\n\t\t\tbase64 += String.fromCodePoint(value);\n\t\t}\n\n\t\tbase64 = globalThis.btoa(base64);\n\t}\n\n\treturn urlSafe ? base64ToBase64Url(base64) : base64;\n}\n\nexport function base64ToUint8Array(base64String) {\n\tassertString(base64String);\n\treturn Uint8Array.from(globalThis.atob(base64UrlToBase64(base64String)), x => x.codePointAt(0));\n}\n\nexport function stringToBase64(string, {urlSafe = false} = {}) {\n\tassertString(string);\n\treturn uint8ArrayToBase64(stringToUint8Array(string), {urlSafe});\n}\n\nexport function base64ToString(base64String) {\n\tassertString(base64String);\n\treturn uint8ArrayToString(base64ToUint8Array(base64String));\n}\n\nconst byteToHexLookupTable = Array.from({length: 256}, (_, index) => index.toString(16).padStart(2, '0'));\n\nexport function uint8ArrayToHex(array) {\n\tassertUint8Array(array);\n\n\t// Concatenating a string is faster than using an array.\n\tlet hexString = '';\n\n\t// eslint-disable-next-line unicorn/no-for-loop -- Max performance is critical.\n\tfor (let index = 0; index < array.length; index++) {\n\t\thexString += byteToHexLookupTable[array[index]];\n\t}\n\n\treturn hexString;\n}\n\nconst hexToDecimalLookupTable = {\n\t0: 0,\n\t1: 1,\n\t2: 2,\n\t3: 3,\n\t4: 4,\n\t5: 5,\n\t6: 6,\n\t7: 7,\n\t8: 8,\n\t9: 9,\n\ta: 10,\n\tb: 11,\n\tc: 12,\n\td: 13,\n\te: 14,\n\tf: 15,\n\tA: 10,\n\tB: 11,\n\tC: 12,\n\tD: 13,\n\tE: 14,\n\tF: 15,\n};\n\nexport function hexToUint8Array(hexString) {\n\tassertString(hexString);\n\n\tif (hexString.length % 2 !== 0) {\n\t\tthrow new Error('Invalid Hex string length.');\n\t}\n\n\tconst resultLength = hexString.length / 2;\n\tconst bytes = new Uint8Array(resultLength);\n\n\tfor (let index = 0; index < resultLength; index++) {\n\t\tconst highNibble = hexToDecimalLookupTable[hexString[index * 2]];\n\t\tconst lowNibble = hexToDecimalLookupTable[hexString[(index * 2) + 1]];\n\n\t\tif (highNibble === undefined || lowNibble === undefined) {\n\t\t\tthrow new Error(`Invalid Hex character encountered at position ${index * 2}`);\n\t\t}\n\n\t\tbytes[index] = (highNibble << 4) | lowNibble; // eslint-disable-line no-bitwise\n\t}\n\n\treturn bytes;\n}\n\n/**\n@param {DataView} view\n@returns {number}\n*/\nexport function getUintBE(view) {\n\tconst {byteLength} = view;\n\n\tif (byteLength === 6) {\n\t\treturn (view.getUint16(0) * (2 ** 32)) + view.getUint32(2);\n\t}\n\n\tif (byteLength === 5) {\n\t\treturn (view.getUint8(0) * (2 ** 32)) + view.getUint32(1);\n\t}\n\n\tif (byteLength === 4) {\n\t\treturn view.getUint32(0);\n\t}\n\n\tif (byteLength === 3) {\n\t\treturn (view.getUint8(0) * (2 ** 16)) + view.getUint16(1);\n\t}\n\n\tif (byteLength === 2) {\n\t\treturn view.getUint16(0);\n\t}\n\n\tif (byteLength === 1) {\n\t\treturn view.getUint8(0);\n\t}\n}\n\n/**\n@param {Uint8Array} array\n@param {Uint8Array} value\n@returns {number}\n*/\nexport function indexOf(array, value) {\n\tconst arrayLength = array.length;\n\tconst valueLength = value.length;\n\n\tif (valueLength === 0) {\n\t\treturn -1;\n\t}\n\n\tif (valueLength > arrayLength) {\n\t\treturn -1;\n\t}\n\n\tconst validOffsetLength = arrayLength - valueLength;\n\n\tfor (let index = 0; index <= validOffsetLength; index++) {\n\t\tlet isMatch = true;\n\t\tfor (let index2 = 0; index2 < valueLength; index2++) {\n\t\t\tif (array[index + index2] !== value[index2]) {\n\t\t\t\tisMatch = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif (isMatch) {\n\t\t\treturn index;\n\t\t}\n\t}\n\n\treturn -1;\n}\n\n/**\n@param {Uint8Array} array\n@param {Uint8Array} value\n@returns {boolean}\n*/\nexport function includes(array, value) {\n\treturn indexOf(array, value) !== -1;\n}\n","import {StringType} from 'token-types';\n\nexport function stringToBytes(string) {\n\treturn [...string].map(character => character.charCodeAt(0)); // eslint-disable-line unicorn/prefer-code-point\n}\n\n/**\nChecks whether the TAR checksum is valid.\n\n@param {Uint8Array} arrayBuffer - The TAR header `[offset ... offset + 512]`.\n@param {number} offset - TAR header offset.\n@returns {boolean} `true` if the TAR checksum is valid, otherwise `false`.\n*/\nexport function tarHeaderChecksumMatches(arrayBuffer, offset = 0) {\n\tconst readSum = Number.parseInt(new StringType(6).get(arrayBuffer, 148).replace(/\\0.*$/, '').trim(), 8); // Read sum in header\n\tif (Number.isNaN(readSum)) {\n\t\treturn false;\n\t}\n\n\tlet sum = 8 * 0x20; // Initialize signed bit sum\n\n\tfor (let index = offset; index < offset + 148; index++) {\n\t\tsum += arrayBuffer[index];\n\t}\n\n\tfor (let index = offset + 156; index < offset + 512; index++) {\n\t\tsum += arrayBuffer[index];\n\t}\n\n\treturn readSum === sum;\n}\n\n/**\nID3 UINT32 sync-safe tokenizer token.\n28 bits (representing up to 256MB) integer, the msb is 0 to avoid \"false syncsignals\".\n*/\nexport const uint32SyncSafeToken = {\n\tget: (buffer, offset) => (buffer[offset + 3] & 0x7F) | ((buffer[offset + 2]) << 7) | ((buffer[offset + 1]) << 14) | ((buffer[offset]) << 21),\n\tlen: 4,\n};\n","/**\nPrimary entry point, Node.js specific entry point is index.js\n*/\n\nimport * as Token from 'token-types';\nimport * as strtok3 from 'strtok3/core';\nimport {ZipHandler} from '@tokenizer/inflate';\nimport {getUintBE} from 'uint8array-extras';\nimport {\n\tstringToBytes,\n\ttarHeaderChecksumMatches,\n\tuint32SyncSafeToken,\n} from './util.js';\nimport {extensions, mimeTypes} from './supported.js';\n\nexport const reasonableDetectionSizeInBytes = 4100; // A fair amount of file-types are detectable within this range.\n\nexport async function fileTypeFromStream(stream, options) {\n\treturn new FileTypeParser(options).fromStream(stream);\n}\n\nexport async function fileTypeFromBuffer(input, options) {\n\treturn new FileTypeParser(options).fromBuffer(input);\n}\n\nexport async function fileTypeFromBlob(blob, options) {\n\treturn new FileTypeParser(options).fromBlob(blob);\n}\n\nfunction getFileTypeFromMimeType(mimeType) {\n\tmimeType = mimeType.toLowerCase();\n\tswitch (mimeType) {\n\t\tcase 'application/epub+zip':\n\t\t\treturn {\n\t\t\t\text: 'epub',\n\t\t\t\tmime: mimeType,\n\t\t\t};\n\t\tcase 'application/vnd.oasis.opendocument.text':\n\t\t\treturn {\n\t\t\t\text: 'odt',\n\t\t\t\tmime: mimeType,\n\t\t\t};\n\t\tcase 'application/vnd.oasis.opendocument.text-template':\n\t\t\treturn {\n\t\t\t\text: 'ott',\n\t\t\t\tmime: mimeType,\n\t\t\t};\n\t\tcase 'application/vnd.oasis.opendocument.spreadsheet':\n\t\t\treturn {\n\t\t\t\text: 'ods',\n\t\t\t\tmime: mimeType,\n\t\t\t};\n\t\tcase 'application/vnd.oasis.opendocument.spreadsheet-template':\n\t\t\treturn {\n\t\t\t\text: 'ots',\n\t\t\t\tmime: mimeType,\n\t\t\t};\n\t\tcase 'application/vnd.oasis.opendocument.presentation':\n\t\t\treturn {\n\t\t\t\text: 'odp',\n\t\t\t\tmime: mimeType,\n\t\t\t};\n\t\tcase 'application/vnd.oasis.opendocument.presentation-template':\n\t\t\treturn {\n\t\t\t\text: 'otp',\n\t\t\t\tmime: mimeType,\n\t\t\t};\n\t\tcase 'application/vnd.oasis.opendocument.graphics':\n\t\t\treturn {\n\t\t\t\text: 'odg',\n\t\t\t\tmime: mimeType,\n\t\t\t};\n\t\tcase 'application/vnd.oasis.opendocument.graphics-template':\n\t\t\treturn {\n\t\t\t\text: 'otg',\n\t\t\t\tmime: mimeType,\n\t\t\t};\n\t\tcase 'application/vnd.openxmlformats-officedocument.presentationml.slideshow':\n\t\t\treturn {\n\t\t\t\text: 'ppsx',\n\t\t\t\tmime: mimeType,\n\t\t\t};\n\t\tcase 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet':\n\t\t\treturn {\n\t\t\t\text: 'xlsx',\n\t\t\t\tmime: mimeType,\n\t\t\t};\n\t\tcase 'application/vnd.ms-excel.sheet.macroenabled':\n\t\t\treturn {\n\t\t\t\text: 'xlsm',\n\t\t\t\tmime: 'application/vnd.ms-excel.sheet.macroenabled.12',\n\t\t\t};\n\t\tcase 'application/vnd.openxmlformats-officedocument.spreadsheetml.template':\n\t\t\treturn {\n\t\t\t\text: 'xltx',\n\t\t\t\tmime: mimeType,\n\t\t\t};\n\t\tcase 'application/vnd.ms-excel.template.macroenabled':\n\t\t\treturn {\n\t\t\t\text: 'xltm',\n\t\t\t\tmime: 'application/vnd.ms-excel.template.macroenabled.12',\n\t\t\t};\n\t\tcase 'application/vnd.ms-powerpoint.slideshow.macroenabled':\n\t\t\treturn {\n\t\t\t\text: 'ppsm',\n\t\t\t\tmime: 'application/vnd.ms-powerpoint.slideshow.macroenabled.12',\n\t\t\t};\n\t\tcase 'application/vnd.openxmlformats-officedocument.wordprocessingml.document':\n\t\t\treturn {\n\t\t\t\text: 'docx',\n\t\t\t\tmime: mimeType,\n\t\t\t};\n\t\tcase 'application/vnd.ms-word.document.macroenabled':\n\t\t\treturn {\n\t\t\t\text: 'docm',\n\t\t\t\tmime: 'application/vnd.ms-word.document.macroenabled.12',\n\t\t\t};\n\t\tcase 'application/vnd.openxmlformats-officedocument.wordprocessingml.template':\n\t\t\treturn {\n\t\t\t\text: 'dotx',\n\t\t\t\tmime: mimeType,\n\t\t\t};\n\t\tcase 'application/vnd.ms-word.template.macroenabledtemplate':\n\t\t\treturn {\n\t\t\t\text: 'dotm',\n\t\t\t\tmime: 'application/vnd.ms-word.template.macroenabled.12',\n\t\t\t};\n\t\tcase 'application/vnd.openxmlformats-officedocument.presentationml.template':\n\t\t\treturn {\n\t\t\t\text: 'potx',\n\t\t\t\tmime: mimeType,\n\t\t\t};\n\t\tcase 'application/vnd.ms-powerpoint.template.macroenabled':\n\t\t\treturn {\n\t\t\t\text: 'potm',\n\t\t\t\tmime: 'application/vnd.ms-powerpoint.template.macroenabled.12',\n\t\t\t};\n\t\tcase 'application/vnd.openxmlformats-officedocument.presentationml.presentation':\n\t\t\treturn {\n\t\t\t\text: 'pptx',\n\t\t\t\tmime: mimeType,\n\t\t\t};\n\t\tcase 'application/vnd.ms-powerpoint.presentation.macroenabled':\n\t\t\treturn {\n\t\t\t\text: 'pptm',\n\t\t\t\tmime: 'application/vnd.ms-powerpoint.presentation.macroenabled.12',\n\t\t\t};\n\t\tcase 'application/vnd.ms-visio.drawing':\n\t\t\treturn {\n\t\t\t\text: 'vsdx',\n\t\t\t\tmime: 'application/vnd.visio',\n\t\t\t};\n\t\tcase 'application/vnd.ms-package.3dmanufacturing-3dmodel+xml':\n\t\t\treturn {\n\t\t\t\text: '3mf',\n\t\t\t\tmime: 'model/3mf',\n\t\t\t};\n\t\tdefault:\n\t}\n}\n\nfunction _check(buffer, headers, options) {\n\toptions = {\n\t\toffset: 0,\n\t\t...options,\n\t};\n\n\tfor (const [index, header] of headers.entries()) {\n\t\t// If a bitmask is set\n\t\tif (options.mask) {\n\t\t\t// If header doesn't equal `buf` with bits masked off\n\t\t\tif (header !== (options.mask[index] & buffer[index + options.offset])) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} else if (header !== buffer[index + options.offset]) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\nexport async function fileTypeFromTokenizer(tokenizer, options) {\n\treturn new FileTypeParser(options).fromTokenizer(tokenizer);\n}\n\nexport async function fileTypeStream(webStream, options) {\n\treturn new FileTypeParser(options).toDetectionStream(webStream, options);\n}\n\nexport class FileTypeParser {\n\tconstructor(options) {\n\t\tthis.options = {\n\t\t\tmpegOffsetTolerance: 0,\n\t\t\t...options,\n\t\t};\n\n\t\tthis.detectors = [...(options?.customDetectors ?? []),\n\t\t\t{id: 'core', detect: this.detectConfident},\n\t\t\t{id: 'core.imprecise', detect: this.detectImprecise}];\n\t\tthis.tokenizerOptions = {\n\t\t\tabortSignal: options?.signal,\n\t\t};\n\t}\n\n\tasync fromTokenizer(tokenizer) {\n\t\tconst initialPosition = tokenizer.position;\n\n\t\t// Iterate through all file-type detectors\n\t\tfor (const detector of this.detectors) {\n\t\t\tconst fileType = await detector.detect(tokenizer);\n\t\t\tif (fileType) {\n\t\t\t\treturn fileType;\n\t\t\t}\n\n\t\t\tif (initialPosition !== tokenizer.position) {\n\t\t\t\treturn undefined; // Cannot proceed scanning of the tokenizer is at an arbitrary position\n\t\t\t}\n\t\t}\n\t}\n\n\tasync fromBuffer(input) {\n\t\tif (!(input instanceof Uint8Array || input instanceof ArrayBuffer)) {\n\t\t\tthrow new TypeError(`Expected the \\`input\\` argument to be of type \\`Uint8Array\\` or \\`ArrayBuffer\\`, got \\`${typeof input}\\``);\n\t\t}\n\n\t\tconst buffer = input instanceof Uint8Array ? input : new Uint8Array(input);\n\n\t\tif (!(buffer?.length > 1)) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn this.fromTokenizer(strtok3.fromBuffer(buffer, this.tokenizerOptions));\n\t}\n\n\tasync fromBlob(blob) {\n\t\treturn this.fromStream(blob.stream());\n\t}\n\n\tasync fromStream(stream) {\n\t\tconst tokenizer = await strtok3.fromWebStream(stream, this.tokenizerOptions);\n\t\ttry {\n\t\t\treturn await this.fromTokenizer(tokenizer);\n\t\t} finally {\n\t\t\tawait tokenizer.close();\n\t\t}\n\t}\n\n\tasync toDetectionStream(stream, options) {\n\t\tconst {sampleSize = reasonableDetectionSizeInBytes} = options;\n\t\tlet detectedFileType;\n\t\tlet firstChunk;\n\n\t\tconst reader = stream.getReader({mode: 'byob'});\n\t\ttry {\n\t\t\t// Read the first chunk from the stream\n\t\t\tconst {value: chunk, done} = await reader.read(new Uint8Array(sampleSize));\n\t\t\tfirstChunk = chunk;\n\t\t\tif (!done && chunk) {\n\t\t\t\ttry {\n\t\t\t\t\t// Attempt to detect the file type from the chunk\n\t\t\t\t\tdetectedFileType = await this.fromBuffer(chunk.subarray(0, sampleSize));\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif (!(error instanceof strtok3.EndOfStreamError)) {\n\t\t\t\t\t\tthrow error; // Re-throw non-EndOfStreamError\n\t\t\t\t\t}\n\n\t\t\t\t\tdetectedFileType = undefined;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfirstChunk = chunk;\n\t\t} finally {\n\t\t\treader.releaseLock(); // Ensure the reader is released\n\t\t}\n\n\t\t// Create a new ReadableStream to manage locking issues\n\t\tconst transformStream = new TransformStream({\n\t\t\tasync start(controller) {\n\t\t\t\tcontroller.enqueue(firstChunk); // Enqueue the initial chunk\n\t\t\t},\n\t\t\ttransform(chunk, controller) {\n\t\t\t\t// Pass through the chunks without modification\n\t\t\t\tcontroller.enqueue(chunk);\n\t\t\t},\n\t\t});\n\n\t\tconst newStream = stream.pipeThrough(transformStream);\n\t\tnewStream.fileType = detectedFileType;\n\n\t\treturn newStream;\n\t}\n\n\tcheck(header, options) {\n\t\treturn _check(this.buffer, header, options);\n\t}\n\n\tcheckString(header, options) {\n\t\treturn this.check(stringToBytes(header), options);\n\t}\n\n\t// Detections with a high degree of certainty in identifying the correct file type\n\tdetectConfident = async tokenizer => {\n\t\tthis.buffer = new Uint8Array(reasonableDetectionSizeInBytes);\n\n\t\t// Keep reading until EOF if the file size is unknown.\n\t\tif (tokenizer.fileInfo.size === undefined) {\n\t\t\ttokenizer.fileInfo.size = Number.MAX_SAFE_INTEGER;\n\t\t}\n\n\t\tthis.tokenizer = tokenizer;\n\n\t\tawait tokenizer.peekBuffer(this.buffer, {length: 12, mayBeLess: true});\n\n\t\t// -- 2-byte signatures --\n\n\t\tif (this.check([0x42, 0x4D])) {\n\t\t\treturn {\n\t\t\t\text: 'bmp',\n\t\t\t\tmime: 'image/bmp',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x0B, 0x77])) {\n\t\t\treturn {\n\t\t\t\text: 'ac3',\n\t\t\t\tmime: 'audio/vnd.dolby.dd-raw',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x78, 0x01])) {\n\t\t\treturn {\n\t\t\t\text: 'dmg',\n\t\t\t\tmime: 'application/x-apple-diskimage',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x4D, 0x5A])) {\n\t\t\treturn {\n\t\t\t\text: 'exe',\n\t\t\t\tmime: 'application/x-msdownload',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x25, 0x21])) {\n\t\t\tawait tokenizer.peekBuffer(this.buffer, {length: 24, mayBeLess: true});\n\n\t\t\tif (\n\t\t\t\tthis.checkString('PS-Adobe-', {offset: 2})\n\t\t\t\t&& this.checkString(' EPSF-', {offset: 14})\n\t\t\t) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'eps',\n\t\t\t\t\tmime: 'application/eps',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\text: 'ps',\n\t\t\t\tmime: 'application/postscript',\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tthis.check([0x1F, 0xA0])\n\t\t\t|| this.check([0x1F, 0x9D])\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'Z',\n\t\t\t\tmime: 'application/x-compress',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0xC7, 0x71])) {\n\t\t\treturn {\n\t\t\t\text: 'cpio',\n\t\t\t\tmime: 'application/x-cpio',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x60, 0xEA])) {\n\t\t\treturn {\n\t\t\t\text: 'arj',\n\t\t\t\tmime: 'application/x-arj',\n\t\t\t};\n\t\t}\n\n\t\t// -- 3-byte signatures --\n\n\t\tif (this.check([0xEF, 0xBB, 0xBF])) { // UTF-8-BOM\n\t\t\t// Strip off UTF-8-BOM\n\t\t\tthis.tokenizer.ignore(3);\n\t\t\treturn this.detectConfident(tokenizer);\n\t\t}\n\n\t\tif (this.check([0x47, 0x49, 0x46])) {\n\t\t\treturn {\n\t\t\t\text: 'gif',\n\t\t\t\tmime: 'image/gif',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x49, 0x49, 0xBC])) {\n\t\t\treturn {\n\t\t\t\text: 'jxr',\n\t\t\t\tmime: 'image/vnd.ms-photo',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x1F, 0x8B, 0x8])) {\n\t\t\treturn {\n\t\t\t\text: 'gz',\n\t\t\t\tmime: 'application/gzip',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x42, 0x5A, 0x68])) {\n\t\t\treturn {\n\t\t\t\text: 'bz2',\n\t\t\t\tmime: 'application/x-bzip2',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('ID3')) {\n\t\t\tawait tokenizer.ignore(6); // Skip ID3 header until the header size\n\t\t\tconst id3HeaderLength = await tokenizer.readToken(uint32SyncSafeToken);\n\t\t\tif (tokenizer.position + id3HeaderLength > tokenizer.fileInfo.size) {\n\t\t\t\t// Guess file type based on ID3 header for backward compatibility\n\t\t\t\treturn {\n\t\t\t\t\text: 'mp3',\n\t\t\t\t\tmime: 'audio/mpeg',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tawait tokenizer.ignore(id3HeaderLength);\n\t\t\treturn this.fromTokenizer(tokenizer); // Skip ID3 header, recursion\n\t\t}\n\n\t\t// Musepack, SV7\n\t\tif (this.checkString('MP+')) {\n\t\t\treturn {\n\t\t\t\text: 'mpc',\n\t\t\t\tmime: 'audio/x-musepack',\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\t(this.buffer[0] === 0x43 || this.buffer[0] === 0x46)\n\t\t\t&& this.check([0x57, 0x53], {offset: 1})\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'swf',\n\t\t\t\tmime: 'application/x-shockwave-flash',\n\t\t\t};\n\t\t}\n\n\t\t// -- 4-byte signatures --\n\n\t\t// Requires a sample size of 4 bytes\n\t\tif (this.check([0xFF, 0xD8, 0xFF])) {\n\t\t\tif (this.check([0xF7], {offset: 3})) { // JPG7/SOF55, indicating a ISO/IEC 14495 / JPEG-LS file\n\t\t\t\treturn {\n\t\t\t\t\text: 'jls',\n\t\t\t\t\tmime: 'image/jls',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\text: 'jpg',\n\t\t\t\tmime: 'image/jpeg',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x4F, 0x62, 0x6A, 0x01])) {\n\t\t\treturn {\n\t\t\t\text: 'avro',\n\t\t\t\tmime: 'application/avro',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('FLIF')) {\n\t\t\treturn {\n\t\t\t\text: 'flif',\n\t\t\t\tmime: 'image/flif',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('8BPS')) {\n\t\t\treturn {\n\t\t\t\text: 'psd',\n\t\t\t\tmime: 'image/vnd.adobe.photoshop',\n\t\t\t};\n\t\t}\n\n\t\t// Musepack, SV8\n\t\tif (this.checkString('MPCK')) {\n\t\t\treturn {\n\t\t\t\text: 'mpc',\n\t\t\t\tmime: 'audio/x-musepack',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('FORM')) {\n\t\t\treturn {\n\t\t\t\text: 'aif',\n\t\t\t\tmime: 'audio/aiff',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('icns', {offset: 0})) {\n\t\t\treturn {\n\t\t\t\text: 'icns',\n\t\t\t\tmime: 'image/icns',\n\t\t\t};\n\t\t}\n\n\t\t// Zip-based file formats\n\t\t// Need to be before the `zip` check\n\t\tif (this.check([0x50, 0x4B, 0x3, 0x4])) { // Local file header signature\n\t\t\tlet fileType;\n\t\t\tawait new ZipHandler(tokenizer).unzip(zipHeader => {\n\t\t\t\tswitch (zipHeader.filename) {\n\t\t\t\t\tcase 'META-INF/mozilla.rsa':\n\t\t\t\t\t\tfileType = {\n\t\t\t\t\t\t\text: 'xpi',\n\t\t\t\t\t\t\tmime: 'application/x-xpinstall',\n\t\t\t\t\t\t};\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tstop: true,\n\t\t\t\t\t\t};\n\t\t\t\t\tcase 'META-INF/MANIFEST.MF':\n\t\t\t\t\t\tfileType = {\n\t\t\t\t\t\t\text: 'jar',\n\t\t\t\t\t\t\tmime: 'application/java-archive',\n\t\t\t\t\t\t};\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tstop: true,\n\t\t\t\t\t\t};\n\t\t\t\t\tcase 'mimetype':\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tasync handler(fileData) {\n\t\t\t\t\t\t\t\t// Use TextDecoder to decode the UTF-8 encoded data\n\t\t\t\t\t\t\t\tconst mimeType = new TextDecoder('utf-8').decode(fileData).trim();\n\t\t\t\t\t\t\t\tfileType = getFileTypeFromMimeType(mimeType);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tstop: true,\n\t\t\t\t\t\t};\n\n\t\t\t\t\tcase '[Content_Types].xml':\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tasync handler(fileData) {\n\t\t\t\t\t\t\t\t// Use TextDecoder to decode the UTF-8 encoded data\n\t\t\t\t\t\t\t\tlet xmlContent = new TextDecoder('utf-8').decode(fileData);\n\t\t\t\t\t\t\t\tconst endPos = xmlContent.indexOf('.main+xml\"');\n\t\t\t\t\t\t\t\tif (endPos === -1) {\n\t\t\t\t\t\t\t\t\tconst mimeType = 'application/vnd.ms-package.3dmanufacturing-3dmodel+xml';\n\t\t\t\t\t\t\t\t\tif (xmlContent.includes(`ContentType=\"${mimeType}\"`)) {\n\t\t\t\t\t\t\t\t\t\tfileType = getFileTypeFromMimeType(mimeType);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\txmlContent = xmlContent.slice(0, Math.max(0, endPos));\n\t\t\t\t\t\t\t\t\tconst firstPos = xmlContent.lastIndexOf('\"');\n\t\t\t\t\t\t\t\t\tconst mimeType = xmlContent.slice(Math.max(0, firstPos + 1));\n\t\t\t\t\t\t\t\t\tfileType = getFileTypeFromMimeType(mimeType);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tstop: true,\n\t\t\t\t\t\t};\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tif (/classes\\d*\\.dex/.test(zipHeader.filename)) {\n\t\t\t\t\t\t\tfileType = {\n\t\t\t\t\t\t\t\text: 'apk',\n\t\t\t\t\t\t\t\tmime: 'application/vnd.android.package-archive',\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\treturn {stop: true};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn {};\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn fileType ?? {\n\t\t\t\text: 'zip',\n\t\t\t\tmime: 'application/zip',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('OggS')) {\n\t\t\t// This is an OGG container\n\t\t\tawait tokenizer.ignore(28);\n\t\t\tconst type = new Uint8Array(8);\n\t\t\tawait tokenizer.readBuffer(type);\n\n\t\t\t// Needs to be before `ogg` check\n\t\t\tif (_check(type, [0x4F, 0x70, 0x75, 0x73, 0x48, 0x65, 0x61, 0x64])) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'opus',\n\t\t\t\t\tmime: 'audio/ogg; codecs=opus',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// If ' theora' in header.\n\t\t\tif (_check(type, [0x80, 0x74, 0x68, 0x65, 0x6F, 0x72, 0x61])) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'ogv',\n\t\t\t\t\tmime: 'video/ogg',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// If '\\x01video' in header.\n\t\t\tif (_check(type, [0x01, 0x76, 0x69, 0x64, 0x65, 0x6F, 0x00])) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'ogm',\n\t\t\t\t\tmime: 'video/ogg',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// If ' FLAC' in header  https://xiph.org/flac/faq.html\n\t\t\tif (_check(type, [0x7F, 0x46, 0x4C, 0x41, 0x43])) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'oga',\n\t\t\t\t\tmime: 'audio/ogg',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// 'Speex  ' in header https://en.wikipedia.org/wiki/Speex\n\t\t\tif (_check(type, [0x53, 0x70, 0x65, 0x65, 0x78, 0x20, 0x20])) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'spx',\n\t\t\t\t\tmime: 'audio/ogg',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// If '\\x01vorbis' in header\n\t\t\tif (_check(type, [0x01, 0x76, 0x6F, 0x72, 0x62, 0x69, 0x73])) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'ogg',\n\t\t\t\t\tmime: 'audio/ogg',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// Default OGG container https://www.iana.org/assignments/media-types/application/ogg\n\t\t\treturn {\n\t\t\t\text: 'ogx',\n\t\t\t\tmime: 'application/ogg',\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tthis.check([0x50, 0x4B])\n\t\t\t&& (this.buffer[2] === 0x3 || this.buffer[2] === 0x5 || this.buffer[2] === 0x7)\n\t\t\t&& (this.buffer[3] === 0x4 || this.buffer[3] === 0x6 || this.buffer[3] === 0x8)\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'zip',\n\t\t\t\tmime: 'application/zip',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('MThd')) {\n\t\t\treturn {\n\t\t\t\text: 'mid',\n\t\t\t\tmime: 'audio/midi',\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tthis.checkString('wOFF')\n\t\t\t&& (\n\t\t\t\tthis.check([0x00, 0x01, 0x00, 0x00], {offset: 4})\n\t\t\t\t|| this.checkString('OTTO', {offset: 4})\n\t\t\t)\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'woff',\n\t\t\t\tmime: 'font/woff',\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tthis.checkString('wOF2')\n\t\t\t&& (\n\t\t\t\tthis.check([0x00, 0x01, 0x00, 0x00], {offset: 4})\n\t\t\t\t|| this.checkString('OTTO', {offset: 4})\n\t\t\t)\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'woff2',\n\t\t\t\tmime: 'font/woff2',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0xD4, 0xC3, 0xB2, 0xA1]) || this.check([0xA1, 0xB2, 0xC3, 0xD4])) {\n\t\t\treturn {\n\t\t\t\text: 'pcap',\n\t\t\t\tmime: 'application/vnd.tcpdump.pcap',\n\t\t\t};\n\t\t}\n\n\t\t// Sony DSD Stream File (DSF)\n\t\tif (this.checkString('DSD ')) {\n\t\t\treturn {\n\t\t\t\text: 'dsf',\n\t\t\t\tmime: 'audio/x-dsf', // Non-standard\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('LZIP')) {\n\t\t\treturn {\n\t\t\t\text: 'lz',\n\t\t\t\tmime: 'application/x-lzip',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('fLaC')) {\n\t\t\treturn {\n\t\t\t\text: 'flac',\n\t\t\t\tmime: 'audio/flac',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x42, 0x50, 0x47, 0xFB])) {\n\t\t\treturn {\n\t\t\t\text: 'bpg',\n\t\t\t\tmime: 'image/bpg',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('wvpk')) {\n\t\t\treturn {\n\t\t\t\text: 'wv',\n\t\t\t\tmime: 'audio/wavpack',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('%PDF')) {\n\t\t\t// Assume this is just a normal PDF\n\t\t\treturn {\n\t\t\t\text: 'pdf',\n\t\t\t\tmime: 'application/pdf',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x00, 0x61, 0x73, 0x6D])) {\n\t\t\treturn {\n\t\t\t\text: 'wasm',\n\t\t\t\tmime: 'application/wasm',\n\t\t\t};\n\t\t}\n\n\t\t// TIFF, little-endian type\n\t\tif (this.check([0x49, 0x49])) {\n\t\t\tconst fileType = await this.readTiffHeader(false);\n\t\t\tif (fileType) {\n\t\t\t\treturn fileType;\n\t\t\t}\n\t\t}\n\n\t\t// TIFF, big-endian type\n\t\tif (this.check([0x4D, 0x4D])) {\n\t\t\tconst fileType = await this.readTiffHeader(true);\n\t\t\tif (fileType) {\n\t\t\t\treturn fileType;\n\t\t\t}\n\t\t}\n\n\t\tif (this.checkString('MAC ')) {\n\t\t\treturn {\n\t\t\t\text: 'ape',\n\t\t\t\tmime: 'audio/ape',\n\t\t\t};\n\t\t}\n\n\t\t// https://github.com/file/file/blob/master/magic/Magdir/matroska\n\t\tif (this.check([0x1A, 0x45, 0xDF, 0xA3])) { // Root element: EBML\n\t\t\tasync function readField() {\n\t\t\t\tconst msb = await tokenizer.peekNumber(Token.UINT8);\n\t\t\t\tlet mask = 0x80;\n\t\t\t\tlet ic = 0; // 0 = A, 1 = B, 2 = C, 3 = D\n\n\t\t\t\twhile ((msb & mask) === 0 && mask !== 0) {\n\t\t\t\t\t++ic;\n\t\t\t\t\tmask >>= 1;\n\t\t\t\t}\n\n\t\t\t\tconst id = new Uint8Array(ic + 1);\n\t\t\t\tawait tokenizer.readBuffer(id);\n\t\t\t\treturn id;\n\t\t\t}\n\n\t\t\tasync function readElement() {\n\t\t\t\tconst idField = await readField();\n\t\t\t\tconst lengthField = await readField();\n\n\t\t\t\tlengthField[0] ^= 0x80 >> (lengthField.length - 1);\n\t\t\t\tconst nrLength = Math.min(6, lengthField.length); // JavaScript can max read 6 bytes integer\n\n\t\t\t\tconst idView = new DataView(idField.buffer);\n\t\t\t\tconst lengthView = new DataView(lengthField.buffer, lengthField.length - nrLength, nrLength);\n\n\t\t\t\treturn {\n\t\t\t\t\tid: getUintBE(idView),\n\t\t\t\t\tlen: getUintBE(lengthView),\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tasync function readChildren(children) {\n\t\t\t\twhile (children > 0) {\n\t\t\t\t\tconst element = await readElement();\n\t\t\t\t\tif (element.id === 0x42_82) {\n\t\t\t\t\t\tconst rawValue = await tokenizer.readToken(new Token.StringType(element.len));\n\t\t\t\t\t\treturn rawValue.replaceAll(/\\00.*$/g, ''); // Return DocType\n\t\t\t\t\t}\n\n\t\t\t\t\tawait tokenizer.ignore(element.len); // ignore payload\n\t\t\t\t\t--children;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst re = await readElement();\n\t\t\tconst documentType = await readChildren(re.len);\n\n\t\t\tswitch (documentType) {\n\t\t\t\tcase 'webm':\n\t\t\t\t\treturn {\n\t\t\t\t\t\text: 'webm',\n\t\t\t\t\t\tmime: 'video/webm',\n\t\t\t\t\t};\n\n\t\t\t\tcase 'matroska':\n\t\t\t\t\treturn {\n\t\t\t\t\t\text: 'mkv',\n\t\t\t\t\t\tmime: 'video/matroska',\n\t\t\t\t\t};\n\n\t\t\t\tdefault:\n\t\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif (this.checkString('SQLi')) {\n\t\t\treturn {\n\t\t\t\text: 'sqlite',\n\t\t\t\tmime: 'application/x-sqlite3',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x4E, 0x45, 0x53, 0x1A])) {\n\t\t\treturn {\n\t\t\t\text: 'nes',\n\t\t\t\tmime: 'application/x-nintendo-nes-rom',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('Cr24')) {\n\t\t\treturn {\n\t\t\t\text: 'crx',\n\t\t\t\tmime: 'application/x-google-chrome-extension',\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tthis.checkString('MSCF')\n\t\t\t|| this.checkString('ISc(')\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'cab',\n\t\t\t\tmime: 'application/vnd.ms-cab-compressed',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0xED, 0xAB, 0xEE, 0xDB])) {\n\t\t\treturn {\n\t\t\t\text: 'rpm',\n\t\t\t\tmime: 'application/x-rpm',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0xC5, 0xD0, 0xD3, 0xC6])) {\n\t\t\treturn {\n\t\t\t\text: 'eps',\n\t\t\t\tmime: 'application/eps',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x28, 0xB5, 0x2F, 0xFD])) {\n\t\t\treturn {\n\t\t\t\text: 'zst',\n\t\t\t\tmime: 'application/zstd',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x7F, 0x45, 0x4C, 0x46])) {\n\t\t\treturn {\n\t\t\t\text: 'elf',\n\t\t\t\tmime: 'application/x-elf',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x21, 0x42, 0x44, 0x4E])) {\n\t\t\treturn {\n\t\t\t\text: 'pst',\n\t\t\t\tmime: 'application/vnd.ms-outlook',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('PAR1') || this.checkString('PARE')) {\n\t\t\treturn {\n\t\t\t\text: 'parquet',\n\t\t\t\tmime: 'application/vnd.apache.parquet',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('ttcf')) {\n\t\t\treturn {\n\t\t\t\text: 'ttc',\n\t\t\t\tmime: 'font/collection',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0xCF, 0xFA, 0xED, 0xFE])) {\n\t\t\treturn {\n\t\t\t\text: 'macho',\n\t\t\t\tmime: 'application/x-mach-binary',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x04, 0x22, 0x4D, 0x18])) {\n\t\t\treturn {\n\t\t\t\text: 'lz4',\n\t\t\t\tmime: 'application/x-lz4', // Invented by us\n\t\t\t};\n\t\t}\n\n\t\t// -- 5-byte signatures --\n\n\t\tif (this.check([0x4F, 0x54, 0x54, 0x4F, 0x00])) {\n\t\t\treturn {\n\t\t\t\text: 'otf',\n\t\t\t\tmime: 'font/otf',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('#!AMR')) {\n\t\t\treturn {\n\t\t\t\text: 'amr',\n\t\t\t\tmime: 'audio/amr',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('{\\\\rtf')) {\n\t\t\treturn {\n\t\t\t\text: 'rtf',\n\t\t\t\tmime: 'application/rtf',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x46, 0x4C, 0x56, 0x01])) {\n\t\t\treturn {\n\t\t\t\text: 'flv',\n\t\t\t\tmime: 'video/x-flv',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('IMPM')) {\n\t\t\treturn {\n\t\t\t\text: 'it',\n\t\t\t\tmime: 'audio/x-it',\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tthis.checkString('-lh0-', {offset: 2})\n\t\t\t|| this.checkString('-lh1-', {offset: 2})\n\t\t\t|| this.checkString('-lh2-', {offset: 2})\n\t\t\t|| this.checkString('-lh3-', {offset: 2})\n\t\t\t|| this.checkString('-lh4-', {offset: 2})\n\t\t\t|| this.checkString('-lh5-', {offset: 2})\n\t\t\t|| this.checkString('-lh6-', {offset: 2})\n\t\t\t|| this.checkString('-lh7-', {offset: 2})\n\t\t\t|| this.checkString('-lzs-', {offset: 2})\n\t\t\t|| this.checkString('-lz4-', {offset: 2})\n\t\t\t|| this.checkString('-lz5-', {offset: 2})\n\t\t\t|| this.checkString('-lhd-', {offset: 2})\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'lzh',\n\t\t\t\tmime: 'application/x-lzh-compressed',\n\t\t\t};\n\t\t}\n\n\t\t// MPEG program stream (PS or MPEG-PS)\n\t\tif (this.check([0x00, 0x00, 0x01, 0xBA])) {\n\t\t\t//  MPEG-PS, MPEG-1 Part 1\n\t\t\tif (this.check([0x21], {offset: 4, mask: [0xF1]})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'mpg', // May also be .ps, .mpeg\n\t\t\t\t\tmime: 'video/MP1S',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// MPEG-PS, MPEG-2 Part 1\n\t\t\tif (this.check([0x44], {offset: 4, mask: [0xC4]})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'mpg', // May also be .mpg, .m2p, .vob or .sub\n\t\t\t\t\tmime: 'video/MP2P',\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif (this.checkString('ITSF')) {\n\t\t\treturn {\n\t\t\t\text: 'chm',\n\t\t\t\tmime: 'application/vnd.ms-htmlhelp',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0xCA, 0xFE, 0xBA, 0xBE])) {\n\t\t\treturn {\n\t\t\t\text: 'class',\n\t\t\t\tmime: 'application/java-vm',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('.RMF')) {\n\t\t\treturn {\n\t\t\t\text: 'rm',\n\t\t\t\tmime: 'application/vnd.rn-realmedia',\n\t\t\t};\n\t\t}\n\n\t\t// -- 5-byte signatures --\n\n\t\tif (this.checkString('DRACO')) {\n\t\t\treturn {\n\t\t\t\text: 'drc',\n\t\t\t\tmime: 'application/vnd.google.draco', // Invented by us\n\t\t\t};\n\t\t}\n\n\t\t// -- 6-byte signatures --\n\n\t\tif (this.check([0xFD, 0x37, 0x7A, 0x58, 0x5A, 0x00])) {\n\t\t\treturn {\n\t\t\t\text: 'xz',\n\t\t\t\tmime: 'application/x-xz',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('<?xml ')) {\n\t\t\treturn {\n\t\t\t\text: 'xml',\n\t\t\t\tmime: 'application/xml',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x37, 0x7A, 0xBC, 0xAF, 0x27, 0x1C])) {\n\t\t\treturn {\n\t\t\t\text: '7z',\n\t\t\t\tmime: 'application/x-7z-compressed',\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tthis.check([0x52, 0x61, 0x72, 0x21, 0x1A, 0x7])\n\t\t\t&& (this.buffer[6] === 0x0 || this.buffer[6] === 0x1)\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'rar',\n\t\t\t\tmime: 'application/x-rar-compressed',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('solid ')) {\n\t\t\treturn {\n\t\t\t\text: 'stl',\n\t\t\t\tmime: 'model/stl',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('AC')) {\n\t\t\tconst version = new Token.StringType(4, 'latin1').get(this.buffer, 2);\n\t\t\tif (version.match('^d*') && version >= 1000 && version <= 1050) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'dwg',\n\t\t\t\t\tmime: 'image/vnd.dwg',\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif (this.checkString('070707')) {\n\t\t\treturn {\n\t\t\t\text: 'cpio',\n\t\t\t\tmime: 'application/x-cpio',\n\t\t\t};\n\t\t}\n\n\t\t// -- 7-byte signatures --\n\n\t\tif (this.checkString('BLENDER')) {\n\t\t\treturn {\n\t\t\t\text: 'blend',\n\t\t\t\tmime: 'application/x-blender',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('!<arch>')) {\n\t\t\tawait tokenizer.ignore(8);\n\t\t\tconst string = await tokenizer.readToken(new Token.StringType(13, 'ascii'));\n\t\t\tif (string === 'debian-binary') {\n\t\t\t\treturn {\n\t\t\t\t\text: 'deb',\n\t\t\t\t\tmime: 'application/x-deb',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\text: 'ar',\n\t\t\t\tmime: 'application/x-unix-archive',\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tthis.checkString('WEBVTT')\n\t\t\t&&\t(\n\t\t\t\t// One of LF, CR, tab, space, or end of file must follow \"WEBVTT\" per the spec (see `fixture/fixture-vtt-*.vtt` for examples). Note that `\\0` is technically the null character (there is no such thing as an EOF character). However, checking for `\\0` gives us the same result as checking for the end of the stream.\n\t\t\t\t(['\\n', '\\r', '\\t', ' ', '\\0'].some(char7 => this.checkString(char7, {offset: 6}))))\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'vtt',\n\t\t\t\tmime: 'text/vtt',\n\t\t\t};\n\t\t}\n\n\t\t// -- 8-byte signatures --\n\n\t\tif (this.check([0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A])) {\n\t\t\t// APNG format (https://wiki.mozilla.org/APNG_Specification)\n\t\t\t// 1. Find the first IDAT (image data) chunk (49 44 41 54)\n\t\t\t// 2. Check if there is an \"acTL\" chunk before the IDAT one (61 63 54 4C)\n\n\t\t\t// Offset calculated as follows:\n\t\t\t// - 8 bytes: PNG signature\n\t\t\t// - 4 (length) + 4 (chunk type) + 13 (chunk data) + 4 (CRC): IHDR chunk\n\n\t\t\tawait tokenizer.ignore(8); // ignore PNG signature\n\n\t\t\tasync function readChunkHeader() {\n\t\t\t\treturn {\n\t\t\t\t\tlength: await tokenizer.readToken(Token.INT32_BE),\n\t\t\t\t\ttype: await tokenizer.readToken(new Token.StringType(4, 'latin1')),\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tdo {\n\t\t\t\tconst chunk = await readChunkHeader();\n\t\t\t\tif (chunk.length < 0) {\n\t\t\t\t\treturn; // Invalid chunk length\n\t\t\t\t}\n\n\t\t\t\tswitch (chunk.type) {\n\t\t\t\t\tcase 'IDAT':\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\text: 'png',\n\t\t\t\t\t\t\tmime: 'image/png',\n\t\t\t\t\t\t};\n\t\t\t\t\tcase 'acTL':\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\text: 'apng',\n\t\t\t\t\t\t\tmime: 'image/apng',\n\t\t\t\t\t\t};\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tawait tokenizer.ignore(chunk.length + 4); // Ignore chunk-data + CRC\n\t\t\t\t}\n\t\t\t} while (tokenizer.position + 8 < tokenizer.fileInfo.size);\n\n\t\t\treturn {\n\t\t\t\text: 'png',\n\t\t\t\tmime: 'image/png',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x41, 0x52, 0x52, 0x4F, 0x57, 0x31, 0x00, 0x00])) {\n\t\t\treturn {\n\t\t\t\text: 'arrow',\n\t\t\t\tmime: 'application/vnd.apache.arrow.file',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x67, 0x6C, 0x54, 0x46, 0x02, 0x00, 0x00, 0x00])) {\n\t\t\treturn {\n\t\t\t\text: 'glb',\n\t\t\t\tmime: 'model/gltf-binary',\n\t\t\t};\n\t\t}\n\n\t\t// `mov` format variants\n\t\tif (\n\t\t\tthis.check([0x66, 0x72, 0x65, 0x65], {offset: 4}) // `free`\n\t\t\t|| this.check([0x6D, 0x64, 0x61, 0x74], {offset: 4}) // `mdat` MJPEG\n\t\t\t|| this.check([0x6D, 0x6F, 0x6F, 0x76], {offset: 4}) // `moov`\n\t\t\t|| this.check([0x77, 0x69, 0x64, 0x65], {offset: 4}) // `wide`\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'mov',\n\t\t\t\tmime: 'video/quicktime',\n\t\t\t};\n\t\t}\n\n\t\t// -- 9-byte signatures --\n\n\t\tif (this.check([0x49, 0x49, 0x52, 0x4F, 0x08, 0x00, 0x00, 0x00, 0x18])) {\n\t\t\treturn {\n\t\t\t\text: 'orf',\n\t\t\t\tmime: 'image/x-olympus-orf',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('gimp xcf ')) {\n\t\t\treturn {\n\t\t\t\text: 'xcf',\n\t\t\t\tmime: 'image/x-xcf',\n\t\t\t};\n\t\t}\n\n\t\t// File Type Box (https://en.wikipedia.org/wiki/ISO_base_media_file_format)\n\t\t// It's not required to be first, but it's recommended to be. Almost all ISO base media files start with `ftyp` box.\n\t\t// `ftyp` box must contain a brand major identifier, which must consist of ISO 8859-1 printable characters.\n\t\t// Here we check for 8859-1 printable characters (for simplicity, it's a mask which also catches one non-printable character).\n\t\tif (\n\t\t\tthis.checkString('ftyp', {offset: 4})\n\t\t\t&& (this.buffer[8] & 0x60) !== 0x00 // Brand major, first character ASCII?\n\t\t) {\n\t\t\t// They all can have MIME `video/mp4` except `application/mp4` special-case which is hard to detect.\n\t\t\t// For some cases, we're specific, everything else falls to `video/mp4` with `mp4` extension.\n\t\t\tconst brandMajor = new Token.StringType(4, 'latin1').get(this.buffer, 8).replace('\\0', ' ').trim();\n\t\t\tswitch (brandMajor) {\n\t\t\t\tcase 'avif':\n\t\t\t\tcase 'avis':\n\t\t\t\t\treturn {ext: 'avif', mime: 'image/avif'};\n\t\t\t\tcase 'mif1':\n\t\t\t\t\treturn {ext: 'heic', mime: 'image/heif'};\n\t\t\t\tcase 'msf1':\n\t\t\t\t\treturn {ext: 'heic', mime: 'image/heif-sequence'};\n\t\t\t\tcase 'heic':\n\t\t\t\tcase 'heix':\n\t\t\t\t\treturn {ext: 'heic', mime: 'image/heic'};\n\t\t\t\tcase 'hevc':\n\t\t\t\tcase 'hevx':\n\t\t\t\t\treturn {ext: 'heic', mime: 'image/heic-sequence'};\n\t\t\t\tcase 'qt':\n\t\t\t\t\treturn {ext: 'mov', mime: 'video/quicktime'};\n\t\t\t\tcase 'M4V':\n\t\t\t\tcase 'M4VH':\n\t\t\t\tcase 'M4VP':\n\t\t\t\t\treturn {ext: 'm4v', mime: 'video/x-m4v'};\n\t\t\t\tcase 'M4P':\n\t\t\t\t\treturn {ext: 'm4p', mime: 'video/mp4'};\n\t\t\t\tcase 'M4B':\n\t\t\t\t\treturn {ext: 'm4b', mime: 'audio/mp4'};\n\t\t\t\tcase 'M4A':\n\t\t\t\t\treturn {ext: 'm4a', mime: 'audio/x-m4a'};\n\t\t\t\tcase 'F4V':\n\t\t\t\t\treturn {ext: 'f4v', mime: 'video/mp4'};\n\t\t\t\tcase 'F4P':\n\t\t\t\t\treturn {ext: 'f4p', mime: 'video/mp4'};\n\t\t\t\tcase 'F4A':\n\t\t\t\t\treturn {ext: 'f4a', mime: 'audio/mp4'};\n\t\t\t\tcase 'F4B':\n\t\t\t\t\treturn {ext: 'f4b', mime: 'audio/mp4'};\n\t\t\t\tcase 'crx':\n\t\t\t\t\treturn {ext: 'cr3', mime: 'image/x-canon-cr3'};\n\t\t\t\tdefault:\n\t\t\t\t\tif (brandMajor.startsWith('3g')) {\n\t\t\t\t\t\tif (brandMajor.startsWith('3g2')) {\n\t\t\t\t\t\t\treturn {ext: '3g2', mime: 'video/3gpp2'};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn {ext: '3gp', mime: 'video/3gpp'};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn {ext: 'mp4', mime: 'video/mp4'};\n\t\t\t}\n\t\t}\n\n\t\t// -- 12-byte signatures --\n\n\t\t// RIFF file format which might be AVI, WAV, QCP, etc\n\t\tif (this.check([0x52, 0x49, 0x46, 0x46])) {\n\t\t\tif (this.checkString('WEBP', {offset: 8})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'webp',\n\t\t\t\t\tmime: 'image/webp',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (this.check([0x41, 0x56, 0x49], {offset: 8})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'avi',\n\t\t\t\t\tmime: 'video/vnd.avi',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (this.check([0x57, 0x41, 0x56, 0x45], {offset: 8})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'wav',\n\t\t\t\t\tmime: 'audio/wav',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// QLCM, QCP file\n\t\t\tif (this.check([0x51, 0x4C, 0x43, 0x4D], {offset: 8})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'qcp',\n\t\t\t\t\tmime: 'audio/qcelp',\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif (this.check([0x49, 0x49, 0x55, 0x00, 0x18, 0x00, 0x00, 0x00, 0x88, 0xE7, 0x74, 0xD8])) {\n\t\t\treturn {\n\t\t\t\text: 'rw2',\n\t\t\t\tmime: 'image/x-panasonic-rw2',\n\t\t\t};\n\t\t}\n\n\t\t// ASF_Header_Object first 80 bytes\n\t\tif (this.check([0x30, 0x26, 0xB2, 0x75, 0x8E, 0x66, 0xCF, 0x11, 0xA6, 0xD9])) {\n\t\t\tasync function readHeader() {\n\t\t\t\tconst guid = new Uint8Array(16);\n\t\t\t\tawait tokenizer.readBuffer(guid);\n\t\t\t\treturn {\n\t\t\t\t\tid: guid,\n\t\t\t\t\tsize: Number(await tokenizer.readToken(Token.UINT64_LE)),\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tawait tokenizer.ignore(30);\n\t\t\t// Search for header should be in first 1KB of file.\n\t\t\twhile (tokenizer.position + 24 < tokenizer.fileInfo.size) {\n\t\t\t\tconst header = await readHeader();\n\t\t\t\tlet payload = header.size - 24;\n\t\t\t\tif (_check(header.id, [0x91, 0x07, 0xDC, 0xB7, 0xB7, 0xA9, 0xCF, 0x11, 0x8E, 0xE6, 0x00, 0xC0, 0x0C, 0x20, 0x53, 0x65])) {\n\t\t\t\t\t// Sync on Stream-Properties-Object (B7DC0791-A9B7-11CF-8EE6-00C00C205365)\n\t\t\t\t\tconst typeId = new Uint8Array(16);\n\t\t\t\t\tpayload -= await tokenizer.readBuffer(typeId);\n\n\t\t\t\t\tif (_check(typeId, [0x40, 0x9E, 0x69, 0xF8, 0x4D, 0x5B, 0xCF, 0x11, 0xA8, 0xFD, 0x00, 0x80, 0x5F, 0x5C, 0x44, 0x2B])) {\n\t\t\t\t\t\t// Found audio:\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\text: 'asf',\n\t\t\t\t\t\t\tmime: 'audio/x-ms-asf',\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\tif (_check(typeId, [0xC0, 0xEF, 0x19, 0xBC, 0x4D, 0x5B, 0xCF, 0x11, 0xA8, 0xFD, 0x00, 0x80, 0x5F, 0x5C, 0x44, 0x2B])) {\n\t\t\t\t\t\t// Found video:\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\text: 'asf',\n\t\t\t\t\t\t\tmime: 'video/x-ms-asf',\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tawait tokenizer.ignore(payload);\n\t\t\t}\n\n\t\t\t// Default to ASF generic extension\n\t\t\treturn {\n\t\t\t\text: 'asf',\n\t\t\t\tmime: 'application/vnd.ms-asf',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0xAB, 0x4B, 0x54, 0x58, 0x20, 0x31, 0x31, 0xBB, 0x0D, 0x0A, 0x1A, 0x0A])) {\n\t\t\treturn {\n\t\t\t\text: 'ktx',\n\t\t\t\tmime: 'image/ktx',\n\t\t\t};\n\t\t}\n\n\t\tif ((this.check([0x7E, 0x10, 0x04]) || this.check([0x7E, 0x18, 0x04])) && this.check([0x30, 0x4D, 0x49, 0x45], {offset: 4})) {\n\t\t\treturn {\n\t\t\t\text: 'mie',\n\t\t\t\tmime: 'application/x-mie',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x27, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00], {offset: 2})) {\n\t\t\treturn {\n\t\t\t\text: 'shp',\n\t\t\t\tmime: 'application/x-esri-shape',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0xFF, 0x4F, 0xFF, 0x51])) {\n\t\t\treturn {\n\t\t\t\text: 'j2c',\n\t\t\t\tmime: 'image/j2c',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x00, 0x00, 0x00, 0x0C, 0x6A, 0x50, 0x20, 0x20, 0x0D, 0x0A, 0x87, 0x0A])) {\n\t\t\t// JPEG-2000 family\n\n\t\t\tawait tokenizer.ignore(20);\n\t\t\tconst type = await tokenizer.readToken(new Token.StringType(4, 'ascii'));\n\t\t\tswitch (type) {\n\t\t\t\tcase 'jp2 ':\n\t\t\t\t\treturn {\n\t\t\t\t\t\text: 'jp2',\n\t\t\t\t\t\tmime: 'image/jp2',\n\t\t\t\t\t};\n\t\t\t\tcase 'jpx ':\n\t\t\t\t\treturn {\n\t\t\t\t\t\text: 'jpx',\n\t\t\t\t\t\tmime: 'image/jpx',\n\t\t\t\t\t};\n\t\t\t\tcase 'jpm ':\n\t\t\t\t\treturn {\n\t\t\t\t\t\text: 'jpm',\n\t\t\t\t\t\tmime: 'image/jpm',\n\t\t\t\t\t};\n\t\t\t\tcase 'mjp2':\n\t\t\t\t\treturn {\n\t\t\t\t\t\text: 'mj2',\n\t\t\t\t\t\tmime: 'image/mj2',\n\t\t\t\t\t};\n\t\t\t\tdefault:\n\t\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif (\n\t\t\tthis.check([0xFF, 0x0A])\n\t\t\t|| this.check([0x00, 0x00, 0x00, 0x0C, 0x4A, 0x58, 0x4C, 0x20, 0x0D, 0x0A, 0x87, 0x0A])\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'jxl',\n\t\t\t\tmime: 'image/jxl',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0xFE, 0xFF])) { // UTF-16-BOM-LE\n\t\t\tif (this.check([0, 60, 0, 63, 0, 120, 0, 109, 0, 108], {offset: 2})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'xml',\n\t\t\t\t\tmime: 'application/xml',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn undefined; // Some unknown text based format\n\t\t}\n\n\t\tif (this.check([0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1])) {\n\t\t\t// Detected Microsoft Compound File Binary File (MS-CFB) Format.\n\t\t\treturn {\n\t\t\t\text: 'cfb',\n\t\t\t\tmime: 'application/x-cfb',\n\t\t\t};\n\t\t}\n\n\t\t// Increase sample size from 12 to 256.\n\t\tawait tokenizer.peekBuffer(this.buffer, {length: Math.min(256, tokenizer.fileInfo.size), mayBeLess: true});\n\n\t\tif (this.check([0x61, 0x63, 0x73, 0x70], {offset: 36})) {\n\t\t\treturn {\n\t\t\t\text: 'icc',\n\t\t\t\tmime: 'application/vnd.iccprofile',\n\t\t\t};\n\t\t}\n\n\t\t// ACE: requires 14 bytes in the buffer\n\t\tif (this.checkString('**ACE', {offset: 7}) && this.checkString('**', {offset: 12})) {\n\t\t\treturn {\n\t\t\t\text: 'ace',\n\t\t\t\tmime: 'application/x-ace-compressed',\n\t\t\t};\n\t\t}\n\n\t\t// -- 15-byte signatures --\n\n\t\tif (this.checkString('BEGIN:')) {\n\t\t\tif (this.checkString('VCARD', {offset: 6})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'vcf',\n\t\t\t\t\tmime: 'text/vcard',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (this.checkString('VCALENDAR', {offset: 6})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'ics',\n\t\t\t\t\tmime: 'text/calendar',\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\t// `raf` is here just to keep all the raw image detectors together.\n\t\tif (this.checkString('FUJIFILMCCD-RAW')) {\n\t\t\treturn {\n\t\t\t\text: 'raf',\n\t\t\t\tmime: 'image/x-fujifilm-raf',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('Extended Module:')) {\n\t\t\treturn {\n\t\t\t\text: 'xm',\n\t\t\t\tmime: 'audio/x-xm',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('Creative Voice File')) {\n\t\t\treturn {\n\t\t\t\text: 'voc',\n\t\t\t\tmime: 'audio/x-voc',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x04, 0x00, 0x00, 0x00]) && this.buffer.length >= 16) { // Rough & quick check Pickle/ASAR\n\t\t\tconst jsonSize = new DataView(this.buffer.buffer).getUint32(12, true);\n\n\t\t\tif (jsonSize > 12 && this.buffer.length >= jsonSize + 16) {\n\t\t\t\ttry {\n\t\t\t\t\tconst header = new TextDecoder().decode(this.buffer.subarray(16, jsonSize + 16));\n\t\t\t\t\tconst json = JSON.parse(header);\n\t\t\t\t\t// Check if Pickle is ASAR\n\t\t\t\t\tif (json.files) { // Final check, assuring Pickle/ASAR format\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\text: 'asar',\n\t\t\t\t\t\t\tmime: 'application/x-asar',\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t} catch {}\n\t\t\t}\n\t\t}\n\n\t\tif (this.check([0x06, 0x0E, 0x2B, 0x34, 0x02, 0x05, 0x01, 0x01, 0x0D, 0x01, 0x02, 0x01, 0x01, 0x02])) {\n\t\t\treturn {\n\t\t\t\text: 'mxf',\n\t\t\t\tmime: 'application/mxf',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('SCRM', {offset: 44})) {\n\t\t\treturn {\n\t\t\t\text: 's3m',\n\t\t\t\tmime: 'audio/x-s3m',\n\t\t\t};\n\t\t}\n\n\t\t// Raw MPEG-2 transport stream (188-byte packets)\n\t\tif (this.check([0x47]) && this.check([0x47], {offset: 188})) {\n\t\t\treturn {\n\t\t\t\text: 'mts',\n\t\t\t\tmime: 'video/mp2t',\n\t\t\t};\n\t\t}\n\n\t\t// Blu-ray Disc Audio-Video (BDAV) MPEG-2 transport stream has 4-byte TP_extra_header before each 188-byte packet\n\t\tif (this.check([0x47], {offset: 4}) && this.check([0x47], {offset: 196})) {\n\t\t\treturn {\n\t\t\t\text: 'mts',\n\t\t\t\tmime: 'video/mp2t',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x42, 0x4F, 0x4F, 0x4B, 0x4D, 0x4F, 0x42, 0x49], {offset: 60})) {\n\t\t\treturn {\n\t\t\t\text: 'mobi',\n\t\t\t\tmime: 'application/x-mobipocket-ebook',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x44, 0x49, 0x43, 0x4D], {offset: 128})) {\n\t\t\treturn {\n\t\t\t\text: 'dcm',\n\t\t\t\tmime: 'application/dicom',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x4C, 0x00, 0x00, 0x00, 0x01, 0x14, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46])) {\n\t\t\treturn {\n\t\t\t\text: 'lnk',\n\t\t\t\tmime: 'application/x.ms.shortcut', // Invented by us\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x62, 0x6F, 0x6F, 0x6B, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x61, 0x72, 0x6B, 0x00, 0x00, 0x00, 0x00])) {\n\t\t\treturn {\n\t\t\t\text: 'alias',\n\t\t\t\tmime: 'application/x.apple.alias', // Invented by us\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('Kaydara FBX Binary  \\u0000')) {\n\t\t\treturn {\n\t\t\t\text: 'fbx',\n\t\t\t\tmime: 'application/x.autodesk.fbx', // Invented by us\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tthis.check([0x4C, 0x50], {offset: 34})\n\t\t\t&& (\n\t\t\t\tthis.check([0x00, 0x00, 0x01], {offset: 8})\n\t\t\t\t|| this.check([0x01, 0x00, 0x02], {offset: 8})\n\t\t\t\t|| this.check([0x02, 0x00, 0x02], {offset: 8})\n\t\t\t)\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'eot',\n\t\t\t\tmime: 'application/vnd.ms-fontobject',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x06, 0x06, 0xED, 0xF5, 0xD8, 0x1D, 0x46, 0xE5, 0xBD, 0x31, 0xEF, 0xE7, 0xFE, 0x74, 0xB7, 0x1D])) {\n\t\t\treturn {\n\t\t\t\text: 'indd',\n\t\t\t\tmime: 'application/x-indesign',\n\t\t\t};\n\t\t}\n\n\t\t// Increase sample size from 256 to 512\n\t\tawait tokenizer.peekBuffer(this.buffer, {length: Math.min(512, tokenizer.fileInfo.size), mayBeLess: true});\n\n\t\t// Requires a buffer size of 512 bytes\n\t\tif ((this.checkString('ustar', {offset: 257}) && (this.checkString('\\0', {offset: 262}) || this.checkString(' ', {offset: 262})))\n\t\t\t|| (this.check([0, 0, 0, 0, 0, 0], {offset: 257}) && tarHeaderChecksumMatches(this.buffer))) {\n\t\t\treturn {\n\t\t\t\text: 'tar',\n\t\t\t\tmime: 'application/x-tar',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0xFF, 0xFE])) { // UTF-16-BOM-BE\n\t\t\tif (this.check([60, 0, 63, 0, 120, 0, 109, 0, 108, 0], {offset: 2})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'xml',\n\t\t\t\t\tmime: 'application/xml',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (this.check([0xFF, 0x0E, 0x53, 0x00, 0x6B, 0x00, 0x65, 0x00, 0x74, 0x00, 0x63, 0x00, 0x68, 0x00, 0x55, 0x00, 0x70, 0x00, 0x20, 0x00, 0x4D, 0x00, 0x6F, 0x00, 0x64, 0x00, 0x65, 0x00, 0x6C, 0x00], {offset: 2})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'skp',\n\t\t\t\t\tmime: 'application/vnd.sketchup.skp',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn undefined; // Some text based format\n\t\t}\n\n\t\tif (this.checkString('-----BEGIN PGP MESSAGE-----')) {\n\t\t\treturn {\n\t\t\t\text: 'pgp',\n\t\t\t\tmime: 'application/pgp-encrypted',\n\t\t\t};\n\t\t}\n\t};\n\t// Detections with limited supporting data, resulting in a higher likelihood of false positives\n\tdetectImprecise = async tokenizer => {\n\t\tthis.buffer = new Uint8Array(reasonableDetectionSizeInBytes);\n\n\t\t// Read initial sample size of 8 bytes\n\t\tawait tokenizer.peekBuffer(this.buffer, {length: Math.min(8, tokenizer.fileInfo.size), mayBeLess: true});\n\n\t\tif (\n\t\t\tthis.check([0x0, 0x0, 0x1, 0xBA])\n\t\t\t|| this.check([0x0, 0x0, 0x1, 0xB3])\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'mpg',\n\t\t\t\tmime: 'video/mpeg',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x00, 0x01, 0x00, 0x00, 0x00])) {\n\t\t\treturn {\n\t\t\t\text: 'ttf',\n\t\t\t\tmime: 'font/ttf',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x00, 0x00, 0x01, 0x00])) {\n\t\t\treturn {\n\t\t\t\text: 'ico',\n\t\t\t\tmime: 'image/x-icon',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x00, 0x00, 0x02, 0x00])) {\n\t\t\treturn {\n\t\t\t\text: 'cur',\n\t\t\t\tmime: 'image/x-icon',\n\t\t\t};\n\t\t}\n\n\t\t// Adjust buffer to `mpegOffsetTolerance`\n\t\tawait tokenizer.peekBuffer(this.buffer, {length: Math.min(2 + this.options.mpegOffsetTolerance, tokenizer.fileInfo.size), mayBeLess: true});\n\n\t\t// Check MPEG 1 or 2 Layer 3 header, or 'layer 0' for ADTS (MPEG sync-word 0xFFE)\n\t\tif (this.buffer.length >= (2 + this.options.mpegOffsetTolerance)) {\n\t\t\tfor (let depth = 0; depth <= this.options.mpegOffsetTolerance; ++depth) {\n\t\t\t\tconst type = this.scanMpeg(depth);\n\t\t\t\tif (type) {\n\t\t\t\t\treturn type;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tasync readTiffTag(bigEndian) {\n\t\tconst tagId = await this.tokenizer.readToken(bigEndian ? Token.UINT16_BE : Token.UINT16_LE);\n\t\tthis.tokenizer.ignore(10);\n\t\tswitch (tagId) {\n\t\t\tcase 50_341:\n\t\t\t\treturn {\n\t\t\t\t\text: 'arw',\n\t\t\t\t\tmime: 'image/x-sony-arw',\n\t\t\t\t};\n\t\t\tcase 50_706:\n\t\t\t\treturn {\n\t\t\t\t\text: 'dng',\n\t\t\t\t\tmime: 'image/x-adobe-dng',\n\t\t\t\t};\n\t\t\tdefault:\n\t\t}\n\t}\n\n\tasync readTiffIFD(bigEndian) {\n\t\tconst numberOfTags = await this.tokenizer.readToken(bigEndian ? Token.UINT16_BE : Token.UINT16_LE);\n\t\tfor (let n = 0; n < numberOfTags; ++n) {\n\t\t\tconst fileType = await this.readTiffTag(bigEndian);\n\t\t\tif (fileType) {\n\t\t\t\treturn fileType;\n\t\t\t}\n\t\t}\n\t}\n\n\tasync readTiffHeader(bigEndian) {\n\t\tconst version = (bigEndian ? Token.UINT16_BE : Token.UINT16_LE).get(this.buffer, 2);\n\t\tconst ifdOffset = (bigEndian ? Token.UINT32_BE : Token.UINT32_LE).get(this.buffer, 4);\n\n\t\tif (version === 42) {\n\t\t\t// TIFF file header\n\t\t\tif (ifdOffset >= 6) {\n\t\t\t\tif (this.checkString('CR', {offset: 8})) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\text: 'cr2',\n\t\t\t\t\t\tmime: 'image/x-canon-cr2',\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tif (ifdOffset >= 8) {\n\t\t\t\t\tconst someId1 = (bigEndian ? Token.UINT16_BE : Token.UINT16_LE).get(this.buffer, 8);\n\t\t\t\t\tconst someId2 = (bigEndian ? Token.UINT16_BE : Token.UINT16_LE).get(this.buffer, 10);\n\n\t\t\t\t\tif (\n\t\t\t\t\t\t(someId1 === 0x1C && someId2 === 0xFE)\n\t\t\t\t\t\t|| (someId1 === 0x1F && someId2 === 0x0B)) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\text: 'nef',\n\t\t\t\t\t\t\tmime: 'image/x-nikon-nef',\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tawait this.tokenizer.ignore(ifdOffset);\n\t\t\tconst fileType = await this.readTiffIFD(bigEndian);\n\t\t\treturn fileType ?? {\n\t\t\t\text: 'tif',\n\t\t\t\tmime: 'image/tiff',\n\t\t\t};\n\t\t}\n\n\t\tif (version === 43) {\t// Big TIFF file header\n\t\t\treturn {\n\t\t\t\text: 'tif',\n\t\t\t\tmime: 'image/tiff',\n\t\t\t};\n\t\t}\n\t}\n\n\t/**\n\tScan check MPEG 1 or 2 Layer 3 header, or 'layer 0' for ADTS (MPEG sync-word 0xFFE).\n\n\t@param offset - Offset to scan for sync-preamble.\n\t@returns {{ext: string, mime: string}}\n\t*/\n\tscanMpeg(offset) {\n\t\tif (this.check([0xFF, 0xE0], {offset, mask: [0xFF, 0xE0]})) {\n\t\t\tif (this.check([0x10], {offset: offset + 1, mask: [0x16]})) {\n\t\t\t\t// Check for (ADTS) MPEG-2\n\t\t\t\tif (this.check([0x08], {offset: offset + 1, mask: [0x08]})) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\text: 'aac',\n\t\t\t\t\t\tmime: 'audio/aac',\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Must be (ADTS) MPEG-4\n\t\t\t\treturn {\n\t\t\t\t\text: 'aac',\n\t\t\t\t\tmime: 'audio/aac',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// MPEG 1 or 2 Layer 3 header\n\t\t\t// Check for MPEG layer 3\n\t\t\tif (this.check([0x02], {offset: offset + 1, mask: [0x06]})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'mp3',\n\t\t\t\t\tmime: 'audio/mpeg',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// Check for MPEG layer 2\n\t\t\tif (this.check([0x04], {offset: offset + 1, mask: [0x06]})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'mp2',\n\t\t\t\t\tmime: 'audio/mpeg',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// Check for MPEG layer 1\n\t\t\tif (this.check([0x06], {offset: offset + 1, mask: [0x06]})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'mp1',\n\t\t\t\t\tmime: 'audio/mpeg',\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport const supportedExtensions = new Set(extensions);\nexport const supportedMimeTypes = new Set(mimeTypes);\n","export const extensions = [\n\t'jpg',\n\t'png',\n\t'apng',\n\t'gif',\n\t'webp',\n\t'flif',\n\t'xcf',\n\t'cr2',\n\t'cr3',\n\t'orf',\n\t'arw',\n\t'dng',\n\t'nef',\n\t'rw2',\n\t'raf',\n\t'tif',\n\t'bmp',\n\t'icns',\n\t'jxr',\n\t'psd',\n\t'indd',\n\t'zip',\n\t'tar',\n\t'rar',\n\t'gz',\n\t'bz2',\n\t'7z',\n\t'dmg',\n\t'mp4',\n\t'mid',\n\t'mkv',\n\t'webm',\n\t'mov',\n\t'avi',\n\t'mpg',\n\t'mp2',\n\t'mp3',\n\t'm4a',\n\t'oga',\n\t'ogg',\n\t'ogv',\n\t'opus',\n\t'flac',\n\t'wav',\n\t'spx',\n\t'amr',\n\t'pdf',\n\t'epub',\n\t'elf',\n\t'macho',\n\t'exe',\n\t'swf',\n\t'rtf',\n\t'wasm',\n\t'woff',\n\t'woff2',\n\t'eot',\n\t'ttf',\n\t'otf',\n\t'ttc',\n\t'ico',\n\t'flv',\n\t'ps',\n\t'xz',\n\t'sqlite',\n\t'nes',\n\t'crx',\n\t'xpi',\n\t'cab',\n\t'deb',\n\t'ar',\n\t'rpm',\n\t'Z',\n\t'lz',\n\t'cfb',\n\t'mxf',\n\t'mts',\n\t'blend',\n\t'bpg',\n\t'docx',\n\t'pptx',\n\t'xlsx',\n\t'3gp',\n\t'3g2',\n\t'j2c',\n\t'jp2',\n\t'jpm',\n\t'jpx',\n\t'mj2',\n\t'aif',\n\t'qcp',\n\t'odt',\n\t'ods',\n\t'odp',\n\t'xml',\n\t'mobi',\n\t'heic',\n\t'cur',\n\t'ktx',\n\t'ape',\n\t'wv',\n\t'dcm',\n\t'ics',\n\t'glb',\n\t'pcap',\n\t'dsf',\n\t'lnk',\n\t'alias',\n\t'voc',\n\t'ac3',\n\t'm4v',\n\t'm4p',\n\t'm4b',\n\t'f4v',\n\t'f4p',\n\t'f4b',\n\t'f4a',\n\t'mie',\n\t'asf',\n\t'ogm',\n\t'ogx',\n\t'mpc',\n\t'arrow',\n\t'shp',\n\t'aac',\n\t'mp1',\n\t'it',\n\t's3m',\n\t'xm',\n\t'skp',\n\t'avif',\n\t'eps',\n\t'lzh',\n\t'pgp',\n\t'asar',\n\t'stl',\n\t'chm',\n\t'3mf',\n\t'zst',\n\t'jxl',\n\t'vcf',\n\t'jls',\n\t'pst',\n\t'dwg',\n\t'parquet',\n\t'class',\n\t'arj',\n\t'cpio',\n\t'ace',\n\t'avro',\n\t'icc',\n\t'fbx',\n\t'vsdx',\n\t'vtt',\n\t'apk',\n\t'drc',\n\t'lz4',\n\t'potx',\n\t'xltx',\n\t'dotx',\n\t'xltm',\n\t'ott',\n\t'ots',\n\t'otp',\n\t'odg',\n\t'otg',\n\t'xlsm',\n\t'docm',\n\t'dotm',\n\t'potm',\n\t'pptm',\n\t'jar',\n\t'rm',\n\t'ppsm',\n\t'ppsx',\n];\n\nexport const mimeTypes = [\n\t'image/jpeg',\n\t'image/png',\n\t'image/gif',\n\t'image/webp',\n\t'image/flif',\n\t'image/x-xcf',\n\t'image/x-canon-cr2',\n\t'image/x-canon-cr3',\n\t'image/tiff',\n\t'image/bmp',\n\t'image/vnd.ms-photo',\n\t'image/vnd.adobe.photoshop',\n\t'application/x-indesign',\n\t'application/epub+zip',\n\t'application/x-xpinstall',\n\t'application/vnd.ms-powerpoint.slideshow.macroenabled.12',\n\t'application/vnd.oasis.opendocument.text',\n\t'application/vnd.oasis.opendocument.spreadsheet',\n\t'application/vnd.oasis.opendocument.presentation',\n\t'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n\t'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n\t'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n\t'application/vnd.openxmlformats-officedocument.presentationml.slideshow',\n\t'application/zip',\n\t'application/x-tar',\n\t'application/x-rar-compressed',\n\t'application/gzip',\n\t'application/x-bzip2',\n\t'application/x-7z-compressed',\n\t'application/x-apple-diskimage',\n\t'application/vnd.apache.arrow.file',\n\t'video/mp4',\n\t'audio/midi',\n\t'video/matroska',\n\t'video/webm',\n\t'video/quicktime',\n\t'video/vnd.avi',\n\t'audio/wav',\n\t'audio/qcelp',\n\t'audio/x-ms-asf',\n\t'video/x-ms-asf',\n\t'application/vnd.ms-asf',\n\t'video/mpeg',\n\t'video/3gpp',\n\t'audio/mpeg',\n\t'audio/mp4', // RFC 4337\n\t'video/ogg',\n\t'audio/ogg',\n\t'audio/ogg; codecs=opus',\n\t'application/ogg',\n\t'audio/flac',\n\t'audio/ape',\n\t'audio/wavpack',\n\t'audio/amr',\n\t'application/pdf',\n\t'application/x-elf',\n\t'application/x-mach-binary',\n\t'application/x-msdownload',\n\t'application/x-shockwave-flash',\n\t'application/rtf',\n\t'application/wasm',\n\t'font/woff',\n\t'font/woff2',\n\t'application/vnd.ms-fontobject',\n\t'font/ttf',\n\t'font/otf',\n\t'font/collection',\n\t'image/x-icon',\n\t'video/x-flv',\n\t'application/postscript',\n\t'application/eps',\n\t'application/x-xz',\n\t'application/x-sqlite3',\n\t'application/x-nintendo-nes-rom',\n\t'application/x-google-chrome-extension',\n\t'application/vnd.ms-cab-compressed',\n\t'application/x-deb',\n\t'application/x-unix-archive',\n\t'application/x-rpm',\n\t'application/x-compress',\n\t'application/x-lzip',\n\t'application/x-cfb',\n\t'application/x-mie',\n\t'application/mxf',\n\t'video/mp2t',\n\t'application/x-blender',\n\t'image/bpg',\n\t'image/j2c',\n\t'image/jp2',\n\t'image/jpx',\n\t'image/jpm',\n\t'image/mj2',\n\t'audio/aiff',\n\t'application/xml',\n\t'application/x-mobipocket-ebook',\n\t'image/heif',\n\t'image/heif-sequence',\n\t'image/heic',\n\t'image/heic-sequence',\n\t'image/icns',\n\t'image/ktx',\n\t'application/dicom',\n\t'audio/x-musepack',\n\t'text/calendar',\n\t'text/vcard',\n\t'text/vtt',\n\t'model/gltf-binary',\n\t'application/vnd.tcpdump.pcap',\n\t'audio/x-dsf', // Non-standard\n\t'application/x.ms.shortcut', // Invented by us\n\t'application/x.apple.alias', // Invented by us\n\t'audio/x-voc',\n\t'audio/vnd.dolby.dd-raw',\n\t'audio/x-m4a',\n\t'image/apng',\n\t'image/x-olympus-orf',\n\t'image/x-sony-arw',\n\t'image/x-adobe-dng',\n\t'image/x-nikon-nef',\n\t'image/x-panasonic-rw2',\n\t'image/x-fujifilm-raf',\n\t'video/x-m4v',\n\t'video/3gpp2',\n\t'application/x-esri-shape',\n\t'audio/aac',\n\t'audio/x-it',\n\t'audio/x-s3m',\n\t'audio/x-xm',\n\t'video/MP1S',\n\t'video/MP2P',\n\t'application/vnd.sketchup.skp',\n\t'image/avif',\n\t'application/x-lzh-compressed',\n\t'application/pgp-encrypted',\n\t'application/x-asar',\n\t'model/stl',\n\t'application/vnd.ms-htmlhelp',\n\t'model/3mf',\n\t'image/jxl',\n\t'application/zstd',\n\t'image/jls',\n\t'application/vnd.ms-outlook',\n\t'image/vnd.dwg',\n\t'application/vnd.apache.parquet',\n\t'application/java-vm',\n\t'application/x-arj',\n\t'application/x-cpio',\n\t'application/x-ace-compressed',\n\t'application/avro',\n\t'application/vnd.iccprofile',\n\t'application/x.autodesk.fbx', // Invented by us\n\t'application/vnd.visio',\n\t'application/vnd.android.package-archive',\n\t'application/vnd.google.draco', // Invented by us\n\t'application/x-lz4', // Invented by us\n\t'application/vnd.openxmlformats-officedocument.presentationml.template',\n\t'application/vnd.openxmlformats-officedocument.spreadsheetml.template',\n\t'application/vnd.openxmlformats-officedocument.wordprocessingml.template',\n\t'application/vnd.ms-excel.template.macroenabled.12',\n\t'application/vnd.oasis.opendocument.text-template',\n\t'application/vnd.oasis.opendocument.spreadsheet-template',\n\t'application/vnd.oasis.opendocument.presentation-template',\n\t'application/vnd.oasis.opendocument.graphics',\n\t'application/vnd.oasis.opendocument.graphics-template',\n\t'application/vnd.ms-excel.sheet.macroenabled.12',\n\t'application/vnd.ms-word.document.macroenabled.12',\n\t'application/vnd.ms-word.template.macroenabled.12',\n\t'application/vnd.ms-powerpoint.template.macroenabled.12',\n\t'application/vnd.ms-powerpoint.presentation.macroenabled.12',\n\t'application/java-archive',\n\t'application/vnd.rn-realmedia',\n];\n","/*!\n * content-type\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * RegExp to match *( \";\" parameter ) in RFC 7231 sec 3.1.1.1\n *\n * parameter     = token \"=\" ( token / quoted-string )\n * token         = 1*tchar\n * tchar         = \"!\" / \"#\" / \"$\" / \"%\" / \"&\" / \"'\" / \"*\"\n *               / \"+\" / \"-\" / \".\" / \"^\" / \"_\" / \"`\" / \"|\" / \"~\"\n *               / DIGIT / ALPHA\n *               ; any VCHAR, except delimiters\n * quoted-string = DQUOTE *( qdtext / quoted-pair ) DQUOTE\n * qdtext        = HTAB / SP / %x21 / %x23-5B / %x5D-7E / obs-text\n * obs-text      = %x80-FF\n * quoted-pair   = \"\\\" ( HTAB / SP / VCHAR / obs-text )\n */\nvar PARAM_REGEXP = /; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *(\"(?:[\\u000b\\u0020\\u0021\\u0023-\\u005b\\u005d-\\u007e\\u0080-\\u00ff]|\\\\[\\u000b\\u0020-\\u00ff])*\"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g // eslint-disable-line no-control-regex\nvar TEXT_REGEXP = /^[\\u000b\\u0020-\\u007e\\u0080-\\u00ff]+$/ // eslint-disable-line no-control-regex\nvar TOKEN_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/\n\n/**\n * RegExp to match quoted-pair in RFC 7230 sec 3.2.6\n *\n * quoted-pair = \"\\\" ( HTAB / SP / VCHAR / obs-text )\n * obs-text    = %x80-FF\n */\nvar QESC_REGEXP = /\\\\([\\u000b\\u0020-\\u00ff])/g // eslint-disable-line no-control-regex\n\n/**\n * RegExp to match chars that must be quoted-pair in RFC 7230 sec 3.2.6\n */\nvar QUOTE_REGEXP = /([\\\\\"])/g\n\n/**\n * RegExp to match type in RFC 7231 sec 3.1.1.1\n *\n * media-type = type \"/\" subtype\n * type       = token\n * subtype    = token\n */\nvar TYPE_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+\\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/\n\n/**\n * Module exports.\n * @public\n */\n\nexports.format = format\nexports.parse = parse\n\n/**\n * Format object to media type.\n *\n * @param {object} obj\n * @return {string}\n * @public\n */\n\nfunction format (obj) {\n  if (!obj || typeof obj !== 'object') {\n    throw new TypeError('argument obj is required')\n  }\n\n  var parameters = obj.parameters\n  var type = obj.type\n\n  if (!type || !TYPE_REGEXP.test(type)) {\n    throw new TypeError('invalid type')\n  }\n\n  var string = type\n\n  // append parameters\n  if (parameters && typeof parameters === 'object') {\n    var param\n    var params = Object.keys(parameters).sort()\n\n    for (var i = 0; i < params.length; i++) {\n      param = params[i]\n\n      if (!TOKEN_REGEXP.test(param)) {\n        throw new TypeError('invalid parameter name')\n      }\n\n      string += '; ' + param + '=' + qstring(parameters[param])\n    }\n  }\n\n  return string\n}\n\n/**\n * Parse media type to object.\n *\n * @param {string|object} string\n * @return {Object}\n * @public\n */\n\nfunction parse (string) {\n  if (!string) {\n    throw new TypeError('argument string is required')\n  }\n\n  // support req/res-like objects as argument\n  var header = typeof string === 'object'\n    ? getcontenttype(string)\n    : string\n\n  if (typeof header !== 'string') {\n    throw new TypeError('argument string is required to be a string')\n  }\n\n  var index = header.indexOf(';')\n  var type = index !== -1\n    ? header.slice(0, index).trim()\n    : header.trim()\n\n  if (!TYPE_REGEXP.test(type)) {\n    throw new TypeError('invalid media type')\n  }\n\n  var obj = new ContentType(type.toLowerCase())\n\n  // parse parameters\n  if (index !== -1) {\n    var key\n    var match\n    var value\n\n    PARAM_REGEXP.lastIndex = index\n\n    while ((match = PARAM_REGEXP.exec(header))) {\n      if (match.index !== index) {\n        throw new TypeError('invalid parameter format')\n      }\n\n      index += match[0].length\n      key = match[1].toLowerCase()\n      value = match[2]\n\n      if (value.charCodeAt(0) === 0x22 /* \" */) {\n        // remove quotes\n        value = value.slice(1, -1)\n\n        // remove escapes\n        if (value.indexOf('\\\\') !== -1) {\n          value = value.replace(QESC_REGEXP, '$1')\n        }\n      }\n\n      obj.parameters[key] = value\n    }\n\n    if (index !== header.length) {\n      throw new TypeError('invalid parameter format')\n    }\n  }\n\n  return obj\n}\n\n/**\n * Get content-type from req/res objects.\n *\n * @param {object}\n * @return {Object}\n * @private\n */\n\nfunction getcontenttype (obj) {\n  var header\n\n  if (typeof obj.getHeader === 'function') {\n    // res-like\n    header = obj.getHeader('content-type')\n  } else if (typeof obj.headers === 'object') {\n    // req-like\n    header = obj.headers && obj.headers['content-type']\n  }\n\n  if (typeof header !== 'string') {\n    throw new TypeError('content-type header is missing from object')\n  }\n\n  return header\n}\n\n/**\n * Quote a string if necessary.\n *\n * @param {string} val\n * @return {string}\n * @private\n */\n\nfunction qstring (val) {\n  var str = String(val)\n\n  // no need to quote tokens\n  if (TOKEN_REGEXP.test(str)) {\n    return str\n  }\n\n  if (str.length > 0 && !TEXT_REGEXP.test(str)) {\n    throw new TypeError('invalid parameter value')\n  }\n\n  return '\"' + str.replace(QUOTE_REGEXP, '\\\\$1') + '\"'\n}\n\n/**\n * Class to represent a content type.\n * @private\n */\nfunction ContentType (type) {\n  this.parameters = Object.create(null)\n  this.type = type\n}\n","/*!\n * media-typer\n * Copyright(c) 2014-2017 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * RegExp to match type in RFC 6838\n *\n * type-name = restricted-name\n * subtype-name = restricted-name\n * restricted-name = restricted-name-first *126restricted-name-chars\n * restricted-name-first  = ALPHA / DIGIT\n * restricted-name-chars  = ALPHA / DIGIT / \"!\" / \"#\" /\n *                          \"$\" / \"&\" / \"-\" / \"^\" / \"_\"\n * restricted-name-chars =/ \".\" ; Characters before first dot always\n *                              ; specify a facet name\n * restricted-name-chars =/ \"+\" ; Characters after last plus always\n *                              ; specify a structured syntax suffix\n * ALPHA =  %x41-5A / %x61-7A   ; A-Z / a-z\n * DIGIT =  %x30-39             ; 0-9\n */\nvar SUBTYPE_NAME_REGEXP = /^[A-Za-z0-9][A-Za-z0-9!#$&^_.-]{0,126}$/\nvar TYPE_NAME_REGEXP = /^[A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126}$/\nvar TYPE_REGEXP = /^ *([A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126})\\/([A-Za-z0-9][A-Za-z0-9!#$&^_.+-]{0,126}) *$/\n\n/**\n * Module exports.\n */\n\nexports.format = format\nexports.parse = parse\nexports.test = test\n\n/**\n * Format object to media type.\n *\n * @param {object} obj\n * @return {string}\n * @public\n */\n\nfunction format (obj) {\n  if (!obj || typeof obj !== 'object') {\n    throw new TypeError('argument obj is required')\n  }\n\n  var subtype = obj.subtype\n  var suffix = obj.suffix\n  var type = obj.type\n\n  if (!type || !TYPE_NAME_REGEXP.test(type)) {\n    throw new TypeError('invalid type')\n  }\n\n  if (!subtype || !SUBTYPE_NAME_REGEXP.test(subtype)) {\n    throw new TypeError('invalid subtype')\n  }\n\n  // format as type/subtype\n  var string = type + '/' + subtype\n\n  // append +suffix\n  if (suffix) {\n    if (!TYPE_NAME_REGEXP.test(suffix)) {\n      throw new TypeError('invalid suffix')\n    }\n\n    string += '+' + suffix\n  }\n\n  return string\n}\n\n/**\n * Test media type.\n *\n * @param {string} string\n * @return {object}\n * @public\n */\n\nfunction test (string) {\n  if (!string) {\n    throw new TypeError('argument string is required')\n  }\n\n  if (typeof string !== 'string') {\n    throw new TypeError('argument string is required to be a string')\n  }\n\n  return TYPE_REGEXP.test(string.toLowerCase())\n}\n\n/**\n * Parse media type to object.\n *\n * @param {string} string\n * @return {object}\n * @public\n */\n\nfunction parse (string) {\n  if (!string) {\n    throw new TypeError('argument string is required')\n  }\n\n  if (typeof string !== 'string') {\n    throw new TypeError('argument string is required to be a string')\n  }\n\n  var match = TYPE_REGEXP.exec(string.toLowerCase())\n\n  if (!match) {\n    throw new TypeError('invalid media type')\n  }\n\n  var type = match[1]\n  var subtype = match[2]\n  var suffix\n\n  // suffix after last +\n  var index = subtype.lastIndexOf('+')\n  if (index !== -1) {\n    suffix = subtype.substr(index + 1)\n    subtype = subtype.substr(0, index)\n  }\n\n  return new MediaType(type, subtype, suffix)\n}\n\n/**\n * Class for MediaType object.\n * @public\n */\n\nfunction MediaType (type, subtype, suffix) {\n  this.type = type\n  this.subtype = subtype\n  this.suffix = suffix\n}\n","export const TargetType = {\n    10: 'shot',\n    20: 'scene',\n    30: 'track',\n    40: 'part',\n    50: 'album',\n    60: 'edition',\n    70: 'collection'\n};\nexport const TrackType = {\n    video: 0x01,\n    audio: 0x02,\n    complex: 0x03,\n    logo: 0x04,\n    subtitle: 0x11,\n    button: 0x12,\n    control: 0x20\n};\nexport const TrackTypeValueToKeyMap = {\n    [TrackType.video]: 'video',\n    [TrackType.audio]: 'audio',\n    [TrackType.complex]: 'complex',\n    [TrackType.logo]: 'logo',\n    [TrackType.subtitle]: 'subtitle',\n    [TrackType.button]: 'button',\n    [TrackType.control]: 'control'\n};\n//# sourceMappingURL=types.js.map","export const makeParseError = (name) => {\n    return class ParseError extends Error {\n        constructor(message) {\n            super(message);\n            this.name = name;\n        }\n    };\n};\n// Concrete error class representing a file type determination failure.\nexport class CouldNotDetermineFileTypeError extends makeParseError('CouldNotDetermineFileTypeError') {\n}\n// Concrete error class representing an unsupported file type.\nexport class UnsupportedFileTypeError extends makeParseError('UnsupportedFileTypeError') {\n}\n// Concrete error class representing unexpected file content.\nclass UnexpectedFileContentError extends makeParseError('UnexpectedFileContentError') {\n    constructor(fileType, message) {\n        super(message);\n        this.fileType = fileType;\n    }\n    // Override toString to include file type information.\n    toString() {\n        return `${this.name} (FileType: ${this.fileType}): ${this.message}`;\n    }\n}\n// Concrete error class representing a field decoding error.\nexport class FieldDecodingError extends makeParseError('FieldDecodingError') {\n}\nexport class InternalParserError extends makeParseError('InternalParserError') {\n}\n// Factory function to create a specific type of UnexpectedFileContentError.\nexport const makeUnexpectedFileContentError = (fileType) => {\n    return class extends UnexpectedFileContentError {\n        constructor(message) {\n            super(fileType, message);\n        }\n    };\n};\n//# sourceMappingURL=ParseError.js.map","import { StringType } from 'token-types';\nimport { FieldDecodingError } from '../ParseError.js';\nexport function getBit(buf, off, bit) {\n    return (buf[off] & (1 << bit)) !== 0;\n}\n/**\n * Found delimiting zero in uint8Array\n * @param uint8Array Uint8Array to find the zero delimiter in\n * @param start Offset in uint8Array\n * @param end Last position to parse in uint8Array\n * @param encoding The string encoding used\n * @return Absolute position on uint8Array where zero found\n */\nexport function findZero(uint8Array, start, end, encoding) {\n    let i = start;\n    if (encoding === 'utf-16le') {\n        while (uint8Array[i] !== 0 || uint8Array[i + 1] !== 0) {\n            if (i >= end)\n                return end;\n            i += 2;\n        }\n        return i;\n    }\n    while (uint8Array[i] !== 0) {\n        if (i >= end)\n            return end;\n        i++;\n    }\n    return i;\n}\nexport function trimRightNull(x) {\n    const pos0 = x.indexOf('\\0');\n    return pos0 === -1 ? x : x.substr(0, pos0);\n}\nfunction swapBytes(uint8Array) {\n    const l = uint8Array.length;\n    if ((l & 1) !== 0)\n        throw new FieldDecodingError('Buffer length must be even');\n    for (let i = 0; i < l; i += 2) {\n        const a = uint8Array[i];\n        uint8Array[i] = uint8Array[i + 1];\n        uint8Array[i + 1] = a;\n    }\n    return uint8Array;\n}\n/**\n * Decode string\n */\nexport function decodeString(uint8Array, encoding) {\n    // annoying workaround for a double BOM issue\n    // https://github.com/leetreveil/musicmetadata/issues/84\n    if (uint8Array[0] === 0xFF && uint8Array[1] === 0xFE) { // little endian\n        return decodeString(uint8Array.subarray(2), encoding);\n    }\n    if (encoding === 'utf-16le' && uint8Array[0] === 0xFE && uint8Array[1] === 0xFF) {\n        // BOM, indicating big endian decoding\n        if ((uint8Array.length & 1) !== 0)\n            throw new FieldDecodingError('Expected even number of octets for 16-bit unicode string');\n        return decodeString(swapBytes(uint8Array), encoding);\n    }\n    return new StringType(uint8Array.length, encoding).get(uint8Array, 0);\n}\nexport function stripNulls(str) {\n    str = str.replace(/^\\x00+/g, '');\n    str = str.replace(/\\x00+$/g, '');\n    return str;\n}\n/**\n * Read bit-aligned number start from buffer\n * Total offset in bits = byteOffset * 8 + bitOffset\n * @param source Byte buffer\n * @param byteOffset Starting offset in bytes\n * @param bitOffset Starting offset in bits: 0 = lsb\n * @param len Length of number in bits\n * @return Decoded bit aligned number\n */\nexport function getBitAllignedNumber(source, byteOffset, bitOffset, len) {\n    const byteOff = byteOffset + ~~(bitOffset / 8);\n    const bitOff = bitOffset % 8;\n    let value = source[byteOff];\n    value &= 0xff >> bitOff;\n    const bitsRead = 8 - bitOff;\n    const bitsLeft = len - bitsRead;\n    if (bitsLeft < 0) {\n        value >>= (8 - bitOff - len);\n    }\n    else if (bitsLeft > 0) {\n        value <<= bitsLeft;\n        value |= getBitAllignedNumber(source, byteOffset, bitOffset + bitsRead, bitsLeft);\n    }\n    return value;\n}\n/**\n * Read bit-aligned number start from buffer\n * Total offset in bits = byteOffset * 8 + bitOffset\n * @param source Byte Uint8Array\n * @param byteOffset Starting offset in bytes\n * @param bitOffset Starting offset in bits: 0 = most significant bit, 7 is the least significant bit\n * @return True if bit is set\n */\nexport function isBitSet(source, byteOffset, bitOffset) {\n    return getBitAllignedNumber(source, byteOffset, bitOffset, 1) === 1;\n}\nexport function a2hex(str) {\n    const arr = [];\n    for (let i = 0, l = str.length; i < l; i++) {\n        const hex = Number(str.charCodeAt(i)).toString(16);\n        arr.push(hex.length === 1 ? `0${hex}` : hex);\n    }\n    return arr.join(' ');\n}\n/**\n * Convert power ratio to DB\n * ratio: [0..1]\n */\nexport function ratioToDb(ratio) {\n    return 10 * Math.log10(ratio);\n}\n/**\n * Convert dB to ratio\n * db Decibels\n */\nexport function dbToRatio(dB) {\n    return 10 ** (dB / 10);\n}\n/**\n * Convert replay gain to ratio and Decibel\n * @param value string holding a ratio like '0.034' or '-7.54 dB'\n */\nexport function toRatio(value) {\n    const ps = value.split(' ').map(p => p.trim().toLowerCase());\n    // @ts-ignore\n    if (ps.length >= 1) {\n        const v = Number.parseFloat(ps[0]);\n        return ps.length === 2 && ps[1] === 'db' ? {\n            dB: v,\n            ratio: dbToRatio(v)\n        } : {\n            dB: ratioToDb(v),\n            ratio: v\n        };\n    }\n}\n//# sourceMappingURL=Util.js.map","import * as Token from 'token-types';\nimport * as util from '../common/Util.js';\n/**\n * The picture type according to the ID3v2 APIC frame\n * Ref: http://id3.org/id3v2.3.0#Attached_picture\n */\nexport const AttachedPictureType = {\n    0: 'Other',\n    1: \"32x32 pixels 'file icon' (PNG only)\",\n    2: 'Other file icon',\n    3: 'Cover (front)',\n    4: 'Cover (back)',\n    5: 'Leaflet page',\n    6: 'Media (e.g. label side of CD)',\n    7: 'Lead artist/lead performer/soloist',\n    8: 'Artist/performer',\n    9: 'Conductor',\n    10: 'Band/Orchestra',\n    11: 'Composer',\n    12: 'Lyricist/text writer',\n    13: 'Recording Location',\n    14: 'During recording',\n    15: 'During performance',\n    16: 'Movie/video screen capture',\n    17: 'A bright coloured fish',\n    18: 'Illustration',\n    19: 'Band/artist logotype',\n    20: 'Publisher/Studio logotype'\n};\n/**\n * https://id3.org/id3v2.3.0#Synchronised_lyrics.2Ftext\n */\nexport const LyricsContentType = {\n    other: 0,\n    lyrics: 1,\n    text: 2,\n    movement_part: 3,\n    events: 4,\n    chord: 5,\n    trivia_pop: 6,\n};\nexport const TimestampFormat = {\n    notSynchronized0: 0,\n    mpegFrameNumber: 1,\n    milliseconds: 2\n};\n/**\n * 28 bits (representing up to 256MB) integer, the msb is 0 to avoid 'false syncsignals'.\n * 4 * %0xxxxxxx\n */\nexport const UINT32SYNCSAFE = {\n    get: (buf, off) => {\n        return buf[off + 3] & 0x7f | ((buf[off + 2]) << 7) |\n            ((buf[off + 1]) << 14) | ((buf[off]) << 21);\n    },\n    len: 4\n};\n/**\n * ID3v2 header\n * Ref: http://id3.org/id3v2.3.0#ID3v2_header\n * ToDo\n */\nexport const ID3v2Header = {\n    len: 10,\n    get: (buf, off) => {\n        return {\n            // ID3v2/file identifier   \"ID3\"\n            fileIdentifier: new Token.StringType(3, 'ascii').get(buf, off),\n            // ID3v2 versionIndex\n            version: {\n                major: Token.INT8.get(buf, off + 3),\n                revision: Token.INT8.get(buf, off + 4)\n            },\n            // ID3v2 flags\n            flags: {\n                // Unsynchronisation\n                unsynchronisation: util.getBit(buf, off + 5, 7),\n                // Extended header\n                isExtendedHeader: util.getBit(buf, off + 5, 6),\n                // Experimental indicator\n                expIndicator: util.getBit(buf, off + 5, 5),\n                footer: util.getBit(buf, off + 5, 4)\n            },\n            size: UINT32SYNCSAFE.get(buf, off + 6)\n        };\n    }\n};\nexport const ExtendedHeader = {\n    len: 10,\n    get: (buf, off) => {\n        return {\n            // Extended header size\n            size: Token.UINT32_BE.get(buf, off),\n            // Extended Flags\n            extendedFlags: Token.UINT16_BE.get(buf, off + 4),\n            // Size of padding\n            sizeOfPadding: Token.UINT32_BE.get(buf, off + 6),\n            // CRC data present\n            crcDataPresent: util.getBit(buf, off + 4, 31)\n        };\n    }\n};\nexport const TextEncodingToken = {\n    len: 1,\n    get: (uint8Array, off) => {\n        switch (uint8Array[off]) {\n            case 0x00:\n                return { encoding: 'latin1' }; // binary\n            case 0x01:\n                return { encoding: 'utf-16le', bom: true };\n            case 0x02:\n                return { encoding: 'utf-16le', bom: false };\n            case 0x03:\n                return { encoding: 'utf8', bom: false };\n            default:\n                return { encoding: 'utf8', bom: false };\n        }\n    }\n};\n/**\n * Used to read first portion of `SYLT` frame\n */\nexport const TextHeader = {\n    len: 4,\n    get: (uint8Array, off) => {\n        return {\n            encoding: TextEncodingToken.get(uint8Array, off),\n            language: new Token.StringType(3, 'latin1').get(uint8Array, off + 1)\n        };\n    }\n};\n/**\n * Used to read first portion of `SYLT` frame\n */\nexport const SyncTextHeader = {\n    len: 6,\n    get: (uint8Array, off) => {\n        const text = TextHeader.get(uint8Array, off);\n        return {\n            encoding: text.encoding,\n            language: text.language,\n            timeStampFormat: Token.UINT8.get(uint8Array, off + 4),\n            contentType: Token.UINT8.get(uint8Array, off + 5)\n        };\n    }\n};\n//# sourceMappingURL=ID3v2Token.js.map","const defaultTagInfo = {\n    multiple: false,\n};\nconst commonTags = {\n    year: defaultTagInfo,\n    track: defaultTagInfo,\n    disk: defaultTagInfo,\n    title: defaultTagInfo,\n    artist: defaultTagInfo,\n    artists: { multiple: true, unique: true },\n    albumartist: defaultTagInfo,\n    album: defaultTagInfo,\n    date: defaultTagInfo,\n    originaldate: defaultTagInfo,\n    originalyear: defaultTagInfo,\n    releasedate: defaultTagInfo,\n    comment: { multiple: true, unique: false },\n    genre: { multiple: true, unique: true },\n    picture: { multiple: true, unique: true },\n    composer: { multiple: true, unique: true },\n    lyrics: { multiple: true, unique: false },\n    albumsort: { multiple: false, unique: true },\n    titlesort: { multiple: false, unique: true },\n    work: { multiple: false, unique: true },\n    artistsort: { multiple: false, unique: true },\n    albumartistsort: { multiple: false, unique: true },\n    composersort: { multiple: false, unique: true },\n    lyricist: { multiple: true, unique: true },\n    writer: { multiple: true, unique: true },\n    conductor: { multiple: true, unique: true },\n    remixer: { multiple: true, unique: true },\n    arranger: { multiple: true, unique: true },\n    engineer: { multiple: true, unique: true },\n    producer: { multiple: true, unique: true },\n    technician: { multiple: true, unique: true },\n    djmixer: { multiple: true, unique: true },\n    mixer: { multiple: true, unique: true },\n    label: { multiple: true, unique: true },\n    grouping: defaultTagInfo,\n    subtitle: { multiple: true },\n    discsubtitle: defaultTagInfo,\n    totaltracks: defaultTagInfo,\n    totaldiscs: defaultTagInfo,\n    compilation: defaultTagInfo,\n    rating: { multiple: true },\n    bpm: defaultTagInfo,\n    mood: defaultTagInfo,\n    media: defaultTagInfo,\n    catalognumber: { multiple: true, unique: true },\n    tvShow: defaultTagInfo,\n    tvShowSort: defaultTagInfo,\n    tvSeason: defaultTagInfo,\n    tvEpisode: defaultTagInfo,\n    tvEpisodeId: defaultTagInfo,\n    tvNetwork: defaultTagInfo,\n    podcast: defaultTagInfo,\n    podcasturl: defaultTagInfo,\n    releasestatus: defaultTagInfo,\n    releasetype: { multiple: true },\n    releasecountry: defaultTagInfo,\n    script: defaultTagInfo,\n    language: defaultTagInfo,\n    copyright: defaultTagInfo,\n    license: defaultTagInfo,\n    encodedby: defaultTagInfo,\n    encodersettings: defaultTagInfo,\n    gapless: defaultTagInfo,\n    barcode: defaultTagInfo,\n    isrc: { multiple: true },\n    asin: defaultTagInfo,\n    musicbrainz_recordingid: defaultTagInfo,\n    musicbrainz_trackid: defaultTagInfo,\n    musicbrainz_albumid: defaultTagInfo,\n    musicbrainz_artistid: { multiple: true },\n    musicbrainz_albumartistid: { multiple: true },\n    musicbrainz_releasegroupid: defaultTagInfo,\n    musicbrainz_workid: defaultTagInfo,\n    musicbrainz_trmid: defaultTagInfo,\n    musicbrainz_discid: defaultTagInfo,\n    acoustid_id: defaultTagInfo,\n    acoustid_fingerprint: defaultTagInfo,\n    musicip_puid: defaultTagInfo,\n    musicip_fingerprint: defaultTagInfo,\n    website: defaultTagInfo,\n    'performer:instrument': { multiple: true, unique: true },\n    averageLevel: defaultTagInfo,\n    peakLevel: defaultTagInfo,\n    notes: { multiple: true, unique: false },\n    key: defaultTagInfo,\n    originalalbum: defaultTagInfo,\n    originalartist: defaultTagInfo,\n    discogs_artist_id: { multiple: true, unique: true },\n    discogs_release_id: defaultTagInfo,\n    discogs_label_id: defaultTagInfo,\n    discogs_master_release_id: defaultTagInfo,\n    discogs_votes: defaultTagInfo,\n    discogs_rating: defaultTagInfo,\n    replaygain_track_peak: defaultTagInfo,\n    replaygain_track_gain: defaultTagInfo,\n    replaygain_album_peak: defaultTagInfo,\n    replaygain_album_gain: defaultTagInfo,\n    replaygain_track_minmax: defaultTagInfo,\n    replaygain_album_minmax: defaultTagInfo,\n    replaygain_undo: defaultTagInfo,\n    description: { multiple: true },\n    longDescription: defaultTagInfo,\n    category: { multiple: true },\n    hdVideo: defaultTagInfo,\n    keywords: { multiple: true },\n    movement: defaultTagInfo,\n    movementIndex: defaultTagInfo,\n    movementTotal: defaultTagInfo,\n    podcastId: defaultTagInfo,\n    showMovement: defaultTagInfo,\n    stik: defaultTagInfo\n};\nexport const commonTagsKeys = /* @__PURE__ */ Object.keys(commonTags);\n/**\n * @param alias Name of common tag\n * @returns {boolean|*} true if given alias is mapped as a singleton', otherwise false\n */\nexport function isSingleton(alias) {\n    return commonTags[alias] && !commonTags[alias].multiple;\n}\n/**\n * @param alias Common (generic) tag\n * @returns {boolean|*} true if given alias is a singleton or explicitly marked as unique\n */\nexport function isUnique(alias) {\n    return !commonTags[alias].multiple || commonTags[alias].unique || false;\n}\n//# sourceMappingURL=GenericTagTypes.js.map","export class CommonTagMapper {\n    static toIntOrNull(str) {\n        const cleaned = Number.parseInt(str, 10);\n        return Number.isNaN(cleaned) ? null : cleaned;\n    }\n    // TODO: a string of 1of1 would fail to be converted\n    // converts 1/10 to no : 1, of : 10\n    // or 1 to no : 1, of : 0\n    static normalizeTrack(origVal) {\n        const split = origVal.toString().split('/');\n        return {\n            no: Number.parseInt(split[0], 10) || null,\n            of: Number.parseInt(split[1], 10) || null\n        };\n    }\n    constructor(tagTypes, tagMap) {\n        this.tagTypes = tagTypes;\n        this.tagMap = tagMap;\n    }\n    /**\n     * Process and set common tags\n     * write common tags to\n     * @param tag Native tag\n     * @param warnings Register warnings\n     * @return common name\n     */\n    mapGenericTag(tag, warnings) {\n        tag = { id: tag.id, value: tag.value }; // clone object\n        this.postMap(tag, warnings);\n        // Convert native tag event to generic 'alias' tag\n        const id = this.getCommonName(tag.id);\n        return id ? { id, value: tag.value } : null;\n    }\n    /**\n     * Convert native tag key to common tag key\n     * @param tag Native header tag\n     * @return common tag name (alias)\n     */\n    getCommonName(tag) {\n        return this.tagMap[tag];\n    }\n    /**\n     * Handle post mapping exceptions / correction\n     * @param tag Tag e.g. {\"©alb\", \"Buena Vista Social Club\")\n     * @param warnings Used to register warnings\n     */\n    postMap(_tag, _warnings) {\n        return;\n    }\n}\nCommonTagMapper.maxRatingScore = 1;\n//# sourceMappingURL=GenericTagMapper.js.map","import { CommonTagMapper } from '../common/GenericTagMapper.js';\n/**\n * ID3v1 tag mappings\n */\nconst id3v1TagMap = {\n    title: 'title',\n    artist: 'artist',\n    album: 'album',\n    year: 'year',\n    comment: 'comment',\n    track: 'track',\n    genre: 'genre'\n};\nexport class ID3v1TagMapper extends CommonTagMapper {\n    constructor() {\n        super(['ID3v1'], id3v1TagMap);\n    }\n}\n//# sourceMappingURL=ID3v1TagMap.js.map","import { CommonTagMapper } from './GenericTagMapper.js';\nexport class CaseInsensitiveTagMap extends CommonTagMapper {\n    constructor(tagTypes, tagMap) {\n        const upperCaseMap = {};\n        for (const tag of Object.keys(tagMap)) {\n            upperCaseMap[tag.toUpperCase()] = tagMap[tag];\n        }\n        super(tagTypes, upperCaseMap);\n    }\n    /**\n     * @tag  Native header tag\n     * @return common tag name (alias)\n     */\n    getCommonName(tag) {\n        return this.tagMap[tag.toUpperCase()];\n    }\n}\n//# sourceMappingURL=CaseInsensitiveTagMap.js.map","import { UINT32_LE } from 'token-types';\nimport { CommonTagMapper } from '../common/GenericTagMapper.js';\nimport { CaseInsensitiveTagMap } from '../common/CaseInsensitiveTagMap.js';\nimport { decodeString } from '../common/Util.js';\n/**\n * ID3v2.3/ID3v2.4 tag mappings\n */\nconst id3v24TagMap = {\n    // id3v2.3\n    TIT2: 'title',\n    TPE1: 'artist',\n    'TXXX:Artists': 'artists',\n    TPE2: 'albumartist',\n    TALB: 'album',\n    TDRV: 'date', // [ 'date', 'year' ] ToDo: improve 'year' mapping\n    /**\n     * Original release year\n     */\n    TORY: 'originalyear',\n    TPOS: 'disk',\n    TCON: 'genre',\n    APIC: 'picture',\n    TCOM: 'composer',\n    USLT: 'lyrics',\n    TSOA: 'albumsort',\n    TSOT: 'titlesort',\n    TOAL: 'originalalbum',\n    TSOP: 'artistsort',\n    TSO2: 'albumartistsort',\n    TSOC: 'composersort',\n    TEXT: 'lyricist',\n    'TXXX:Writer': 'writer',\n    TPE3: 'conductor',\n    // 'IPLS:instrument': 'performer:instrument', // ToDo\n    TPE4: 'remixer',\n    'IPLS:arranger': 'arranger',\n    'IPLS:engineer': 'engineer',\n    'IPLS:producer': 'producer',\n    'IPLS:DJ-mix': 'djmixer',\n    'IPLS:mix': 'mixer',\n    TPUB: 'label',\n    TIT1: 'grouping',\n    TIT3: 'subtitle',\n    TRCK: 'track',\n    TCMP: 'compilation',\n    POPM: 'rating',\n    TBPM: 'bpm',\n    TMED: 'media',\n    'TXXX:CATALOGNUMBER': 'catalognumber',\n    'TXXX:MusicBrainz Album Status': 'releasestatus',\n    'TXXX:MusicBrainz Album Type': 'releasetype',\n    /**\n     * Release country as documented: https://picard.musicbrainz.org/docs/mappings/#cite_note-0\n     */\n    'TXXX:MusicBrainz Album Release Country': 'releasecountry',\n    /**\n     * Release country as implemented // ToDo: report\n     */\n    'TXXX:RELEASECOUNTRY': 'releasecountry',\n    'TXXX:SCRIPT': 'script',\n    TLAN: 'language',\n    TCOP: 'copyright',\n    WCOP: 'license',\n    TENC: 'encodedby',\n    TSSE: 'encodersettings',\n    'TXXX:BARCODE': 'barcode',\n    'TXXX:ISRC': 'isrc',\n    TSRC: 'isrc',\n    'TXXX:ASIN': 'asin',\n    'TXXX:originalyear': 'originalyear',\n    'UFID:http://musicbrainz.org': 'musicbrainz_recordingid',\n    'TXXX:MusicBrainz Release Track Id': 'musicbrainz_trackid',\n    'TXXX:MusicBrainz Album Id': 'musicbrainz_albumid',\n    'TXXX:MusicBrainz Artist Id': 'musicbrainz_artistid',\n    'TXXX:MusicBrainz Album Artist Id': 'musicbrainz_albumartistid',\n    'TXXX:MusicBrainz Release Group Id': 'musicbrainz_releasegroupid',\n    'TXXX:MusicBrainz Work Id': 'musicbrainz_workid',\n    'TXXX:MusicBrainz TRM Id': 'musicbrainz_trmid',\n    'TXXX:MusicBrainz Disc Id': 'musicbrainz_discid',\n    'TXXX:ACOUSTID_ID': 'acoustid_id',\n    'TXXX:Acoustid Id': 'acoustid_id',\n    'TXXX:Acoustid Fingerprint': 'acoustid_fingerprint',\n    'TXXX:MusicIP PUID': 'musicip_puid',\n    'TXXX:MusicMagic Fingerprint': 'musicip_fingerprint',\n    WOAR: 'website',\n    // id3v2.4\n    // ToDo: In same sequence as defined at http://id3.org/id3v2.4.0-frames\n    TDRC: 'date', // date YYYY-MM-DD\n    TYER: 'year',\n    TDOR: 'originaldate',\n    // 'TMCL:instrument': 'performer:instrument',\n    'TIPL:arranger': 'arranger',\n    'TIPL:engineer': 'engineer',\n    'TIPL:producer': 'producer',\n    'TIPL:DJ-mix': 'djmixer',\n    'TIPL:mix': 'mixer',\n    TMOO: 'mood',\n    // additional mappings:\n    SYLT: 'lyrics',\n    TSST: 'discsubtitle',\n    TKEY: 'key',\n    COMM: 'comment',\n    TOPE: 'originalartist',\n    // Windows Media Player\n    'PRIV:AverageLevel': 'averageLevel',\n    'PRIV:PeakLevel': 'peakLevel',\n    // Discogs\n    'TXXX:DISCOGS_ARTIST_ID': 'discogs_artist_id',\n    'TXXX:DISCOGS_ARTISTS': 'artists',\n    'TXXX:DISCOGS_ARTIST_NAME': 'artists',\n    'TXXX:DISCOGS_ALBUM_ARTISTS': 'albumartist',\n    'TXXX:DISCOGS_CATALOG': 'catalognumber',\n    'TXXX:DISCOGS_COUNTRY': 'releasecountry',\n    'TXXX:DISCOGS_DATE': 'originaldate',\n    'TXXX:DISCOGS_LABEL': 'label',\n    'TXXX:DISCOGS_LABEL_ID': 'discogs_label_id',\n    'TXXX:DISCOGS_MASTER_RELEASE_ID': 'discogs_master_release_id',\n    'TXXX:DISCOGS_RATING': 'discogs_rating',\n    'TXXX:DISCOGS_RELEASED': 'date',\n    'TXXX:DISCOGS_RELEASE_ID': 'discogs_release_id',\n    'TXXX:DISCOGS_VOTES': 'discogs_votes',\n    'TXXX:CATALOGID': 'catalognumber',\n    'TXXX:STYLE': 'genre',\n    'TXXX:REPLAYGAIN_TRACK_PEAK': 'replaygain_track_peak',\n    'TXXX:REPLAYGAIN_TRACK_GAIN': 'replaygain_track_gain',\n    'TXXX:REPLAYGAIN_ALBUM_PEAK': 'replaygain_album_peak',\n    'TXXX:REPLAYGAIN_ALBUM_GAIN': 'replaygain_album_gain',\n    'TXXX:MP3GAIN_MINMAX': 'replaygain_track_minmax',\n    'TXXX:MP3GAIN_ALBUM_MINMAX': 'replaygain_album_minmax',\n    'TXXX:MP3GAIN_UNDO': 'replaygain_undo',\n    MVNM: 'movement',\n    MVIN: 'movementIndex',\n    PCST: 'podcast',\n    TCAT: 'category',\n    TDES: 'description',\n    TDRL: 'releasedate',\n    TGID: 'podcastId',\n    TKWD: 'keywords',\n    WFED: 'podcasturl',\n    GRP1: 'grouping'\n};\nexport class ID3v24TagMapper extends CaseInsensitiveTagMap {\n    static toRating(popm) {\n        return {\n            source: popm.email,\n            rating: popm.rating > 0 ? (popm.rating - 1) / 254 * CommonTagMapper.maxRatingScore : undefined\n        };\n    }\n    constructor() {\n        super(['ID3v2.3', 'ID3v2.4'], id3v24TagMap);\n    }\n    /**\n     * Handle post mapping exceptions / correction\n     * @param tag to post map\n     * @param warnings Wil be used to register (collect) warnings\n     */\n    postMap(tag, warnings) {\n        switch (tag.id) {\n            case 'UFID':\n                {\n                    // decode MusicBrainz Recording Id\n                    const idTag = tag.value;\n                    if (idTag.owner_identifier === 'http://musicbrainz.org') {\n                        tag.id += `:${idTag.owner_identifier}`;\n                        tag.value = decodeString(idTag.identifier, 'latin1'); // latin1 == iso-8859-1\n                    }\n                }\n                break;\n            case 'PRIV':\n                {\n                    const customTag = tag.value;\n                    switch (customTag.owner_identifier) {\n                        // decode Windows Media Player\n                        case 'AverageLevel':\n                        case 'PeakValue':\n                            tag.id += `:${customTag.owner_identifier}`;\n                            tag.value = customTag.data.length === 4 ? UINT32_LE.get(customTag.data, 0) : null;\n                            if (tag.value === null) {\n                                warnings.addWarning('Failed to parse PRIV:PeakValue');\n                            }\n                            break;\n                        default:\n                            warnings.addWarning(`Unknown PRIV owner-identifier: ${customTag.data}`);\n                    }\n                }\n                break;\n            case 'POPM':\n                tag.value = ID3v24TagMapper.toRating(tag.value);\n                break;\n            default:\n                break;\n        }\n    }\n}\n//# sourceMappingURL=ID3v24TagMapper.js.map","import { CommonTagMapper } from '../common/GenericTagMapper.js';\n/**\n * ASF Metadata tag mappings.\n * See http://msdn.microsoft.com/en-us/library/ms867702.aspx\n */\nconst asfTagMap = {\n    Title: 'title',\n    Author: 'artist',\n    'WM/AlbumArtist': 'albumartist',\n    'WM/AlbumTitle': 'album',\n    'WM/Year': 'date', // changed to 'year' to 'date' based on Picard mappings; ToDo: check me\n    'WM/OriginalReleaseTime': 'originaldate',\n    'WM/OriginalReleaseYear': 'originalyear',\n    Description: 'comment',\n    'WM/TrackNumber': 'track',\n    'WM/PartOfSet': 'disk',\n    'WM/Genre': 'genre',\n    'WM/Composer': 'composer',\n    'WM/Lyrics': 'lyrics',\n    'WM/AlbumSortOrder': 'albumsort',\n    'WM/TitleSortOrder': 'titlesort',\n    'WM/ArtistSortOrder': 'artistsort',\n    'WM/AlbumArtistSortOrder': 'albumartistsort',\n    'WM/ComposerSortOrder': 'composersort',\n    'WM/Writer': 'lyricist',\n    'WM/Conductor': 'conductor',\n    'WM/ModifiedBy': 'remixer',\n    'WM/Engineer': 'engineer',\n    'WM/Producer': 'producer',\n    'WM/DJMixer': 'djmixer',\n    'WM/Mixer': 'mixer',\n    'WM/Publisher': 'label',\n    'WM/ContentGroupDescription': 'grouping',\n    'WM/SubTitle': 'subtitle',\n    'WM/SetSubTitle': 'discsubtitle',\n    // 'WM/PartOfSet': 'totaldiscs',\n    'WM/IsCompilation': 'compilation',\n    'WM/SharedUserRating': 'rating',\n    'WM/BeatsPerMinute': 'bpm',\n    'WM/Mood': 'mood',\n    'WM/Media': 'media',\n    'WM/CatalogNo': 'catalognumber',\n    'MusicBrainz/Album Status': 'releasestatus',\n    'MusicBrainz/Album Type': 'releasetype',\n    'MusicBrainz/Album Release Country': 'releasecountry',\n    'WM/Script': 'script',\n    'WM/Language': 'language',\n    Copyright: 'copyright',\n    LICENSE: 'license',\n    'WM/EncodedBy': 'encodedby',\n    'WM/EncodingSettings': 'encodersettings',\n    'WM/Barcode': 'barcode',\n    'WM/ISRC': 'isrc',\n    'MusicBrainz/Track Id': 'musicbrainz_recordingid',\n    'MusicBrainz/Release Track Id': 'musicbrainz_trackid',\n    'MusicBrainz/Album Id': 'musicbrainz_albumid',\n    'MusicBrainz/Artist Id': 'musicbrainz_artistid',\n    'MusicBrainz/Album Artist Id': 'musicbrainz_albumartistid',\n    'MusicBrainz/Release Group Id': 'musicbrainz_releasegroupid',\n    'MusicBrainz/Work Id': 'musicbrainz_workid',\n    'MusicBrainz/TRM Id': 'musicbrainz_trmid',\n    'MusicBrainz/Disc Id': 'musicbrainz_discid',\n    'Acoustid/Id': 'acoustid_id',\n    'Acoustid/Fingerprint': 'acoustid_fingerprint',\n    'MusicIP/PUID': 'musicip_puid',\n    'WM/ARTISTS': 'artists',\n    'WM/InitialKey': 'key',\n    ASIN: 'asin',\n    'WM/Work': 'work',\n    'WM/AuthorURL': 'website',\n    'WM/Picture': 'picture'\n};\nexport class AsfTagMapper extends CommonTagMapper {\n    static toRating(rating) {\n        return {\n            rating: Number.parseFloat(rating + 1) / 5\n        };\n    }\n    constructor() {\n        super(['asf'], asfTagMap);\n    }\n    postMap(tag) {\n        switch (tag.id) {\n            case 'WM/SharedUserRating': {\n                const keys = tag.id.split(':');\n                tag.value = AsfTagMapper.toRating(tag.value);\n                tag.id = keys[0];\n                break;\n            }\n        }\n    }\n}\n//# sourceMappingURL=AsfTagMapper.js.map","import { CaseInsensitiveTagMap } from '../common/CaseInsensitiveTagMap.js';\n/**\n * ID3v2.2 tag mappings\n */\nexport const id3v22TagMap = {\n    TT2: 'title',\n    TP1: 'artist',\n    TP2: 'albumartist',\n    TAL: 'album',\n    TYE: 'year',\n    COM: 'comment',\n    TRK: 'track',\n    TPA: 'disk',\n    TCO: 'genre',\n    PIC: 'picture',\n    TCM: 'composer',\n    TOR: 'originaldate',\n    TOT: 'originalalbum',\n    TXT: 'lyricist',\n    TP3: 'conductor',\n    TPB: 'label',\n    TT1: 'grouping',\n    TT3: 'subtitle',\n    TLA: 'language',\n    TCR: 'copyright',\n    WCP: 'license',\n    TEN: 'encodedby',\n    TSS: 'encodersettings',\n    WAR: 'website',\n    PCS: 'podcast',\n    TCP: \"compilation\",\n    TDR: 'date',\n    TS2: 'albumartistsort',\n    TSA: 'albumsort',\n    TSC: 'composersort',\n    TSP: 'artistsort',\n    TST: 'titlesort',\n    WFD: 'podcasturl',\n    TBP: 'bpm'\n};\nexport class ID3v22TagMapper extends CaseInsensitiveTagMap {\n    constructor() {\n        super(['ID3v2.2'], id3v22TagMap);\n    }\n}\n//# sourceMappingURL=ID3v22TagMapper.js.map","import { CaseInsensitiveTagMap } from '../common/CaseInsensitiveTagMap.js';\n/**\n * ID3v2.2 tag mappings\n */\nconst apev2TagMap = {\n    Title: 'title',\n    Artist: 'artist',\n    Artists: 'artists',\n    'Album Artist': 'albumartist',\n    Album: 'album',\n    Year: 'date',\n    Originalyear: 'originalyear',\n    Originaldate: 'originaldate',\n    Releasedate: 'releasedate',\n    Comment: 'comment',\n    Track: 'track',\n    Disc: 'disk',\n    DISCNUMBER: 'disk', // ToDo: backwards compatibility', valid tag?\n    Genre: 'genre',\n    'Cover Art (Front)': 'picture',\n    'Cover Art (Back)': 'picture',\n    Composer: 'composer',\n    Lyrics: 'lyrics',\n    ALBUMSORT: 'albumsort',\n    TITLESORT: 'titlesort',\n    WORK: 'work',\n    ARTISTSORT: 'artistsort',\n    ALBUMARTISTSORT: 'albumartistsort',\n    COMPOSERSORT: 'composersort',\n    Lyricist: 'lyricist',\n    Writer: 'writer',\n    Conductor: 'conductor',\n    // 'Performer=artist (instrument)': 'performer:instrument',\n    MixArtist: 'remixer',\n    Arranger: 'arranger',\n    Engineer: 'engineer',\n    Producer: 'producer',\n    DJMixer: 'djmixer',\n    Mixer: 'mixer',\n    Label: 'label',\n    Grouping: 'grouping',\n    Subtitle: 'subtitle',\n    DiscSubtitle: 'discsubtitle',\n    Compilation: 'compilation',\n    BPM: 'bpm',\n    Mood: 'mood',\n    Media: 'media',\n    CatalogNumber: 'catalognumber',\n    MUSICBRAINZ_ALBUMSTATUS: 'releasestatus',\n    MUSICBRAINZ_ALBUMTYPE: 'releasetype',\n    RELEASECOUNTRY: 'releasecountry',\n    Script: 'script',\n    Language: 'language',\n    Copyright: 'copyright',\n    LICENSE: 'license',\n    EncodedBy: 'encodedby',\n    EncoderSettings: 'encodersettings',\n    Barcode: 'barcode',\n    ISRC: 'isrc',\n    ASIN: 'asin',\n    musicbrainz_trackid: 'musicbrainz_recordingid',\n    musicbrainz_releasetrackid: 'musicbrainz_trackid',\n    MUSICBRAINZ_ALBUMID: 'musicbrainz_albumid',\n    MUSICBRAINZ_ARTISTID: 'musicbrainz_artistid',\n    MUSICBRAINZ_ALBUMARTISTID: 'musicbrainz_albumartistid',\n    MUSICBRAINZ_RELEASEGROUPID: 'musicbrainz_releasegroupid',\n    MUSICBRAINZ_WORKID: 'musicbrainz_workid',\n    MUSICBRAINZ_TRMID: 'musicbrainz_trmid',\n    MUSICBRAINZ_DISCID: 'musicbrainz_discid',\n    Acoustid_Id: 'acoustid_id',\n    ACOUSTID_FINGERPRINT: 'acoustid_fingerprint',\n    MUSICIP_PUID: 'musicip_puid',\n    Weblink: 'website',\n    REPLAYGAIN_TRACK_GAIN: 'replaygain_track_gain',\n    REPLAYGAIN_TRACK_PEAK: 'replaygain_track_peak',\n    MP3GAIN_MINMAX: 'replaygain_track_minmax',\n    MP3GAIN_UNDO: 'replaygain_undo'\n};\nexport class APEv2TagMapper extends CaseInsensitiveTagMap {\n    constructor() {\n        super(['APEv2'], apev2TagMap);\n    }\n}\n//# sourceMappingURL=APEv2TagMapper.js.map","import { CaseInsensitiveTagMap } from '../common/CaseInsensitiveTagMap.js';\n/**\n * Ref: https://github.com/sergiomb2/libmp4v2/wiki/iTunesMetadata\n */\nconst mp4TagMap = {\n    '©nam': 'title',\n    '©ART': 'artist',\n    aART: 'albumartist',\n    /**\n     * ToDo: Album artist seems to be stored here while Picard documentation says: aART\n     */\n    '----:com.apple.iTunes:Band': 'albumartist',\n    '©alb': 'album',\n    '©day': 'date',\n    '©cmt': 'comment',\n    '©com': 'comment',\n    trkn: 'track',\n    disk: 'disk',\n    '©gen': 'genre',\n    covr: 'picture',\n    '©wrt': 'composer',\n    '©lyr': 'lyrics',\n    soal: 'albumsort',\n    sonm: 'titlesort',\n    soar: 'artistsort',\n    soaa: 'albumartistsort',\n    soco: 'composersort',\n    '----:com.apple.iTunes:LYRICIST': 'lyricist',\n    '----:com.apple.iTunes:CONDUCTOR': 'conductor',\n    '----:com.apple.iTunes:REMIXER': 'remixer',\n    '----:com.apple.iTunes:ENGINEER': 'engineer',\n    '----:com.apple.iTunes:PRODUCER': 'producer',\n    '----:com.apple.iTunes:DJMIXER': 'djmixer',\n    '----:com.apple.iTunes:MIXER': 'mixer',\n    '----:com.apple.iTunes:LABEL': 'label',\n    '©grp': 'grouping',\n    '----:com.apple.iTunes:SUBTITLE': 'subtitle',\n    '----:com.apple.iTunes:DISCSUBTITLE': 'discsubtitle',\n    cpil: 'compilation',\n    tmpo: 'bpm',\n    '----:com.apple.iTunes:MOOD': 'mood',\n    '----:com.apple.iTunes:MEDIA': 'media',\n    '----:com.apple.iTunes:CATALOGNUMBER': 'catalognumber',\n    tvsh: 'tvShow',\n    tvsn: 'tvSeason',\n    tves: 'tvEpisode',\n    sosn: 'tvShowSort',\n    tven: 'tvEpisodeId',\n    tvnn: 'tvNetwork',\n    pcst: 'podcast',\n    purl: 'podcasturl',\n    '----:com.apple.iTunes:MusicBrainz Album Status': 'releasestatus',\n    '----:com.apple.iTunes:MusicBrainz Album Type': 'releasetype',\n    '----:com.apple.iTunes:MusicBrainz Album Release Country': 'releasecountry',\n    '----:com.apple.iTunes:SCRIPT': 'script',\n    '----:com.apple.iTunes:LANGUAGE': 'language',\n    cprt: 'copyright',\n    '©cpy': 'copyright',\n    '----:com.apple.iTunes:LICENSE': 'license',\n    '©too': 'encodedby',\n    pgap: 'gapless',\n    '----:com.apple.iTunes:BARCODE': 'barcode',\n    '----:com.apple.iTunes:ISRC': 'isrc',\n    '----:com.apple.iTunes:ASIN': 'asin',\n    '----:com.apple.iTunes:NOTES': 'comment',\n    '----:com.apple.iTunes:MusicBrainz Track Id': 'musicbrainz_recordingid',\n    '----:com.apple.iTunes:MusicBrainz Release Track Id': 'musicbrainz_trackid',\n    '----:com.apple.iTunes:MusicBrainz Album Id': 'musicbrainz_albumid',\n    '----:com.apple.iTunes:MusicBrainz Artist Id': 'musicbrainz_artistid',\n    '----:com.apple.iTunes:MusicBrainz Album Artist Id': 'musicbrainz_albumartistid',\n    '----:com.apple.iTunes:MusicBrainz Release Group Id': 'musicbrainz_releasegroupid',\n    '----:com.apple.iTunes:MusicBrainz Work Id': 'musicbrainz_workid',\n    '----:com.apple.iTunes:MusicBrainz TRM Id': 'musicbrainz_trmid',\n    '----:com.apple.iTunes:MusicBrainz Disc Id': 'musicbrainz_discid',\n    '----:com.apple.iTunes:Acoustid Id': 'acoustid_id',\n    '----:com.apple.iTunes:Acoustid Fingerprint': 'acoustid_fingerprint',\n    '----:com.apple.iTunes:MusicIP PUID': 'musicip_puid',\n    '----:com.apple.iTunes:fingerprint': 'musicip_fingerprint',\n    '----:com.apple.iTunes:replaygain_track_gain': 'replaygain_track_gain',\n    '----:com.apple.iTunes:replaygain_track_peak': 'replaygain_track_peak',\n    '----:com.apple.iTunes:replaygain_album_gain': 'replaygain_album_gain',\n    '----:com.apple.iTunes:replaygain_album_peak': 'replaygain_album_peak',\n    '----:com.apple.iTunes:replaygain_track_minmax': 'replaygain_track_minmax',\n    '----:com.apple.iTunes:replaygain_album_minmax': 'replaygain_album_minmax',\n    '----:com.apple.iTunes:replaygain_undo': 'replaygain_undo',\n    // Additional mappings:\n    gnre: 'genre', // ToDo: check mapping\n    '----:com.apple.iTunes:ALBUMARTISTSORT': 'albumartistsort',\n    '----:com.apple.iTunes:ARTISTS': 'artists',\n    '----:com.apple.iTunes:ORIGINALDATE': 'originaldate',\n    '----:com.apple.iTunes:ORIGINALYEAR': 'originalyear',\n    '----:com.apple.iTunes:RELEASEDATE': 'releasedate',\n    // '----:com.apple.iTunes:PERFORMER': 'performer'\n    desc: 'description',\n    ldes: 'longDescription',\n    '©mvn': 'movement',\n    '©mvi': 'movementIndex',\n    '©mvc': 'movementTotal',\n    '©wrk': 'work',\n    catg: 'category',\n    egid: 'podcastId',\n    hdvd: 'hdVideo',\n    keyw: 'keywords',\n    shwm: 'showMovement',\n    stik: 'stik',\n    rate: 'rating'\n};\nexport const tagType = 'iTunes';\nexport class MP4TagMapper extends CaseInsensitiveTagMap {\n    constructor() {\n        super([tagType], mp4TagMap);\n    }\n    postMap(tag, _warnings) {\n        switch (tag.id) {\n            case 'rate':\n                tag.value = {\n                    source: undefined,\n                    rating: Number.parseFloat(tag.value) / 100\n                };\n                break;\n        }\n    }\n}\n//# sourceMappingURL=MP4TagMapper.js.map","import { CommonTagMapper } from '../../common/GenericTagMapper.js';\n/**\n * Vorbis tag mappings\n *\n * Mapping from native header format to one or possibly more 'common' entries\n * The common entries aim to read the same information from different media files\n * independent of the underlying format\n */\nconst vorbisTagMap = {\n    TITLE: 'title',\n    ARTIST: 'artist',\n    ARTISTS: 'artists',\n    ALBUMARTIST: 'albumartist',\n    'ALBUM ARTIST': 'albumartist',\n    ALBUM: 'album',\n    DATE: 'date',\n    ORIGINALDATE: 'originaldate',\n    ORIGINALYEAR: 'originalyear',\n    RELEASEDATE: 'releasedate',\n    COMMENT: 'comment',\n    TRACKNUMBER: 'track',\n    DISCNUMBER: 'disk',\n    GENRE: 'genre',\n    METADATA_BLOCK_PICTURE: 'picture',\n    COMPOSER: 'composer',\n    LYRICS: 'lyrics',\n    ALBUMSORT: 'albumsort',\n    TITLESORT: 'titlesort',\n    WORK: 'work',\n    ARTISTSORT: 'artistsort',\n    ALBUMARTISTSORT: 'albumartistsort',\n    COMPOSERSORT: 'composersort',\n    LYRICIST: 'lyricist',\n    WRITER: 'writer',\n    CONDUCTOR: 'conductor',\n    // 'PERFORMER=artist (instrument)': 'performer:instrument', // ToDo\n    REMIXER: 'remixer',\n    ARRANGER: 'arranger',\n    ENGINEER: 'engineer',\n    PRODUCER: 'producer',\n    DJMIXER: 'djmixer',\n    MIXER: 'mixer',\n    LABEL: 'label',\n    GROUPING: 'grouping',\n    SUBTITLE: 'subtitle',\n    DISCSUBTITLE: 'discsubtitle',\n    TRACKTOTAL: 'totaltracks',\n    DISCTOTAL: 'totaldiscs',\n    COMPILATION: 'compilation',\n    RATING: 'rating',\n    BPM: 'bpm',\n    KEY: 'key',\n    MOOD: 'mood',\n    MEDIA: 'media',\n    CATALOGNUMBER: 'catalognumber',\n    RELEASESTATUS: 'releasestatus',\n    RELEASETYPE: 'releasetype',\n    RELEASECOUNTRY: 'releasecountry',\n    SCRIPT: 'script',\n    LANGUAGE: 'language',\n    COPYRIGHT: 'copyright',\n    LICENSE: 'license',\n    ENCODEDBY: 'encodedby',\n    ENCODERSETTINGS: 'encodersettings',\n    BARCODE: 'barcode',\n    ISRC: 'isrc',\n    ASIN: 'asin',\n    MUSICBRAINZ_TRACKID: 'musicbrainz_recordingid',\n    MUSICBRAINZ_RELEASETRACKID: 'musicbrainz_trackid',\n    MUSICBRAINZ_ALBUMID: 'musicbrainz_albumid',\n    MUSICBRAINZ_ARTISTID: 'musicbrainz_artistid',\n    MUSICBRAINZ_ALBUMARTISTID: 'musicbrainz_albumartistid',\n    MUSICBRAINZ_RELEASEGROUPID: 'musicbrainz_releasegroupid',\n    MUSICBRAINZ_WORKID: 'musicbrainz_workid',\n    MUSICBRAINZ_TRMID: 'musicbrainz_trmid',\n    MUSICBRAINZ_DISCID: 'musicbrainz_discid',\n    ACOUSTID_ID: 'acoustid_id',\n    ACOUSTID_ID_FINGERPRINT: 'acoustid_fingerprint',\n    MUSICIP_PUID: 'musicip_puid',\n    // 'FINGERPRINT=MusicMagic Fingerprint {fingerprint}': 'musicip_fingerprint', // ToDo\n    WEBSITE: 'website',\n    NOTES: 'notes',\n    TOTALTRACKS: 'totaltracks',\n    TOTALDISCS: 'totaldiscs',\n    // Discogs\n    DISCOGS_ARTIST_ID: 'discogs_artist_id',\n    DISCOGS_ARTISTS: 'artists',\n    DISCOGS_ARTIST_NAME: 'artists',\n    DISCOGS_ALBUM_ARTISTS: 'albumartist',\n    DISCOGS_CATALOG: 'catalognumber',\n    DISCOGS_COUNTRY: 'releasecountry',\n    DISCOGS_DATE: 'originaldate',\n    DISCOGS_LABEL: 'label',\n    DISCOGS_LABEL_ID: 'discogs_label_id',\n    DISCOGS_MASTER_RELEASE_ID: 'discogs_master_release_id',\n    DISCOGS_RATING: 'discogs_rating',\n    DISCOGS_RELEASED: 'date',\n    DISCOGS_RELEASE_ID: 'discogs_release_id',\n    DISCOGS_VOTES: 'discogs_votes',\n    CATALOGID: 'catalognumber',\n    STYLE: 'genre',\n    //\n    REPLAYGAIN_TRACK_GAIN: 'replaygain_track_gain',\n    REPLAYGAIN_TRACK_PEAK: 'replaygain_track_peak',\n    REPLAYGAIN_ALBUM_GAIN: 'replaygain_album_gain',\n    REPLAYGAIN_ALBUM_PEAK: 'replaygain_album_peak',\n    // To Sure if these (REPLAYGAIN_MINMAX, REPLAYGAIN_ALBUM_MINMAX & REPLAYGAIN_UNDO) are used for Vorbis:\n    REPLAYGAIN_MINMAX: 'replaygain_track_minmax',\n    REPLAYGAIN_ALBUM_MINMAX: 'replaygain_album_minmax',\n    REPLAYGAIN_UNDO: 'replaygain_undo'\n};\nexport class VorbisTagMapper extends CommonTagMapper {\n    static toRating(email, rating, maxScore) {\n        return {\n            source: email ? email.toLowerCase() : undefined,\n            rating: (Number.parseFloat(rating) / maxScore) * CommonTagMapper.maxRatingScore\n        };\n    }\n    constructor() {\n        super(['vorbis'], vorbisTagMap);\n    }\n    postMap(tag) {\n        if (tag.id === 'RATING') {\n            // The way Winamp 5.666 assigns rating\n            tag.value = VorbisTagMapper.toRating(undefined, tag.value, 100);\n        }\n        else if (tag.id.indexOf('RATING:') === 0) {\n            const keys = tag.id.split(':');\n            tag.value = VorbisTagMapper.toRating(keys[1], tag.value, 1);\n            tag.id = keys[0];\n        }\n    }\n}\n//# sourceMappingURL=VorbisTagMapper.js.map","import { CommonTagMapper } from '../common/GenericTagMapper.js';\n/**\n * RIFF Info Tags; part of the EXIF 2.3\n * Ref: http://owl.phy.queensu.ca/~phil/exiftool/TagNames/RIFF.html#Info\n */\nexport const riffInfoTagMap = {\n    IART: 'artist', // Artist\n    ICRD: 'date', // DateCreated\n    INAM: 'title', // Title\n    TITL: 'title',\n    IPRD: 'album', // Product\n    ITRK: 'track',\n    IPRT: 'track', // Additional tag for track index\n    COMM: 'comment', // Comments\n    ICMT: 'comment', // Country\n    ICNT: 'releasecountry',\n    GNRE: 'genre', // Genre\n    IWRI: 'writer', // WrittenBy\n    RATE: 'rating',\n    YEAR: 'year',\n    ISFT: 'encodedby', // Software\n    CODE: 'encodedby', // EncodedBy\n    TURL: 'website', // URL,\n    IGNR: 'genre', // Genre\n    IENG: 'engineer', // Engineer\n    ITCH: 'technician', // Technician\n    IMED: 'media', // Original Media\n    IRPD: 'album' // Product, where the file was intended for\n};\nexport class RiffInfoTagMapper extends CommonTagMapper {\n    constructor() {\n        super(['exif'], riffInfoTagMap);\n    }\n}\n//# sourceMappingURL=RiffInfoTagMap.js.map","import { CaseInsensitiveTagMap } from '../common/CaseInsensitiveTagMap.js';\n/**\n * EBML Tag map\n */\nconst ebmlTagMap = {\n    'segment:title': 'title',\n    'album:ARTIST': 'albumartist',\n    'album:ARTISTSORT': 'albumartistsort',\n    'album:TITLE': 'album',\n    'album:DATE_RECORDED': 'originaldate',\n    'album:DATE_RELEASED': 'releasedate',\n    'album:PART_NUMBER': 'disk',\n    'album:TOTAL_PARTS': 'totaltracks',\n    'track:ARTIST': 'artist',\n    'track:ARTISTSORT': 'artistsort',\n    'track:TITLE': 'title',\n    'track:PART_NUMBER': 'track',\n    'track:MUSICBRAINZ_TRACKID': 'musicbrainz_recordingid',\n    'track:MUSICBRAINZ_ALBUMID': 'musicbrainz_albumid',\n    'track:MUSICBRAINZ_ARTISTID': 'musicbrainz_artistid',\n    'track:PUBLISHER': 'label',\n    'track:GENRE': 'genre',\n    'track:ENCODER': 'encodedby',\n    'track:ENCODER_OPTIONS': 'encodersettings',\n    'edition:TOTAL_PARTS': 'totaldiscs',\n    picture: 'picture'\n};\nexport class MatroskaTagMapper extends CaseInsensitiveTagMap {\n    constructor() {\n        super(['matroska'], ebmlTagMap);\n    }\n}\n//# sourceMappingURL=MatroskaTagMapper.js.map","import { CommonTagMapper } from '../common/GenericTagMapper.js';\n/**\n * ID3v1 tag mappings\n */\nconst tagMap = {\n    NAME: 'title',\n    AUTH: 'artist',\n    '(c) ': 'copyright',\n    ANNO: 'comment'\n};\nexport class AiffTagMapper extends CommonTagMapper {\n    constructor() {\n        super(['AIFF'], tagMap);\n    }\n}\n//# sourceMappingURL=AiffTagMap.js.map","import { ID3v1TagMapper } from '../id3v1/ID3v1TagMap.js';\nimport { ID3v24TagMapper } from '../id3v2/ID3v24TagMapper.js';\nimport { AsfTagMapper } from '../asf/AsfTagMapper.js';\nimport { ID3v22TagMapper } from '../id3v2/ID3v22TagMapper.js';\nimport { APEv2TagMapper } from '../apev2/APEv2TagMapper.js';\nimport { MP4TagMapper } from '../mp4/MP4TagMapper.js';\nimport { VorbisTagMapper } from '../ogg/vorbis/VorbisTagMapper.js';\nimport { RiffInfoTagMapper } from '../riff/RiffInfoTagMap.js';\nimport { MatroskaTagMapper } from '../matroska/MatroskaTagMapper.js';\nimport { AiffTagMapper } from '../aiff/AiffTagMap.js';\nimport { InternalParserError } from '../ParseError.js';\nexport class CombinedTagMapper {\n    constructor() {\n        this.tagMappers = {};\n        [\n            new ID3v1TagMapper(),\n            new ID3v22TagMapper(),\n            new ID3v24TagMapper(),\n            new MP4TagMapper(),\n            new MP4TagMapper(),\n            new VorbisTagMapper(),\n            new APEv2TagMapper(),\n            new AsfTagMapper(),\n            new RiffInfoTagMapper(),\n            new MatroskaTagMapper(),\n            new AiffTagMapper()\n        ].forEach(mapper => {\n            this.registerTagMapper(mapper);\n        });\n    }\n    /**\n     * Convert native to generic (common) tags\n     * @param tagType Originating tag format\n     * @param tag     Native tag to map to a generic tag id\n     * @param warnings\n     * @return Generic tag result (output of this function)\n     */\n    mapTag(tagType, tag, warnings) {\n        const tagMapper = this.tagMappers[tagType];\n        if (tagMapper) {\n            return this.tagMappers[tagType].mapGenericTag(tag, warnings);\n        }\n        throw new InternalParserError(`No generic tag mapper defined for tag-format: ${tagType}`);\n    }\n    registerTagMapper(genericTagMapper) {\n        for (const tagType of genericTagMapper.tagTypes) {\n            this.tagMappers[tagType] = genericTagMapper;\n        }\n    }\n}\n//# sourceMappingURL=CombinedTagMapper.js.map","import { TrackTypeValueToKeyMap, } from '../type.js';\nimport initDebug from 'debug';\nimport { isSingleton, isUnique } from './GenericTagTypes.js';\nimport { CombinedTagMapper } from './CombinedTagMapper.js';\nimport { CommonTagMapper } from './GenericTagMapper.js';\nimport { toRatio } from './Util.js';\nimport { fileTypeFromBuffer } from 'file-type';\nimport { parseLrc } from '../lrc/LyricsParser.js';\nconst debug = initDebug('music-metadata:collector');\nconst TagPriority = ['matroska', 'APEv2', 'vorbis', 'ID3v2.4', 'ID3v2.3', 'ID3v2.2', 'exif', 'asf', 'iTunes', 'AIFF', 'ID3v1'];\n/**\n * Provided to the parser to uodate the metadata result.\n * Responsible for triggering async updates\n */\nexport class MetadataCollector {\n    constructor(opts) {\n        this.format = {\n            tagTypes: [],\n            trackInfo: []\n        };\n        this.native = {};\n        this.common = {\n            track: { no: null, of: null },\n            disk: { no: null, of: null },\n            movementIndex: { no: null, of: null }\n        };\n        this.quality = {\n            warnings: []\n        };\n        /**\n         * Keeps track of origin priority for each mapped id\n         */\n        this.commonOrigin = {};\n        /**\n         * Maps a tag type to a priority\n         */\n        this.originPriority = {};\n        this.tagMapper = new CombinedTagMapper();\n        this.opts = opts;\n        let priority = 1;\n        for (const tagType of TagPriority) {\n            this.originPriority[tagType] = priority++;\n        }\n        this.originPriority.artificial = 500; // Filled using alternative tags\n        this.originPriority.id3v1 = 600; // Consider as the worst because of the field length limit\n    }\n    /**\n     * @returns {boolean} true if one or more tags have been found\n     */\n    hasAny() {\n        return Object.keys(this.native).length > 0;\n    }\n    addStreamInfo(streamInfo) {\n        debug(`streamInfo: type=${streamInfo.type ? TrackTypeValueToKeyMap[streamInfo.type] : '?'}, codec=${streamInfo.codecName}`);\n        this.format.trackInfo.push(streamInfo);\n    }\n    setFormat(key, value) {\n        debug(`format: ${key} = ${value}`);\n        this.format[key] = value; // as any to override readonly\n        if (this.opts?.observer) {\n            this.opts.observer({ metadata: this, tag: { type: 'format', id: key, value } });\n        }\n    }\n    setAudioOnly() {\n        this.setFormat('hasAudio', true);\n        this.setFormat('hasVideo', false);\n    }\n    async addTag(tagType, tagId, value) {\n        debug(`tag ${tagType}.${tagId} = ${value}`);\n        if (!this.native[tagType]) {\n            this.format.tagTypes.push(tagType);\n            this.native[tagType] = [];\n        }\n        this.native[tagType].push({ id: tagId, value });\n        await this.toCommon(tagType, tagId, value);\n    }\n    addWarning(warning) {\n        this.quality.warnings.push({ message: warning });\n    }\n    async postMap(tagType, tag) {\n        // Common tag (alias) found\n        // check if we need to do something special with common tag\n        // if the event has been aliased then we need to clean it before\n        // it is emitted to the user. e.g. genre (20) -> Electronic\n        switch (tag.id) {\n            case 'artist':\n                if (this.commonOrigin.artist === this.originPriority[tagType]) {\n                    // Assume the artist field is used as artists\n                    return this.postMap('artificial', { id: 'artists', value: tag.value });\n                }\n                if (!this.common.artists) {\n                    // Fill artists using artist source\n                    this.setGenericTag('artificial', { id: 'artists', value: tag.value });\n                }\n                break;\n            case 'artists':\n                if (!this.common.artist || this.commonOrigin.artist === this.originPriority.artificial) {\n                    if (!this.common.artists || this.common.artists.indexOf(tag.value) === -1) {\n                        // Fill artist using artists source\n                        const artists = (this.common.artists || []).concat([tag.value]);\n                        const value = joinArtists(artists);\n                        const artistTag = { id: 'artist', value };\n                        this.setGenericTag('artificial', artistTag);\n                    }\n                }\n                break;\n            case 'picture':\n                return this.postFixPicture(tag.value).then(picture => {\n                    if (picture !== null) {\n                        tag.value = picture;\n                        this.setGenericTag(tagType, tag);\n                    }\n                });\n            case 'totaltracks':\n                this.common.track.of = CommonTagMapper.toIntOrNull(tag.value);\n                return;\n            case 'totaldiscs':\n                this.common.disk.of = CommonTagMapper.toIntOrNull(tag.value);\n                return;\n            case 'movementTotal':\n                this.common.movementIndex.of = CommonTagMapper.toIntOrNull(tag.value);\n                return;\n            case 'track':\n            case 'disk':\n            case 'movementIndex': {\n                const of = this.common[tag.id].of; // store of value, maybe maybe overwritten\n                this.common[tag.id] = CommonTagMapper.normalizeTrack(tag.value);\n                this.common[tag.id].of = of != null ? of : this.common[tag.id].of;\n                return;\n            }\n            case 'bpm':\n            case 'year':\n            case 'originalyear':\n                tag.value = Number.parseInt(tag.value, 10);\n                break;\n            case 'date': {\n                // ToDo: be more strict on 'YYYY...'\n                const year = Number.parseInt(tag.value.substr(0, 4), 10);\n                if (!Number.isNaN(year)) {\n                    this.common.year = year;\n                }\n                break;\n            }\n            case 'discogs_label_id':\n            case 'discogs_release_id':\n            case 'discogs_master_release_id':\n            case 'discogs_artist_id':\n            case 'discogs_votes':\n                tag.value = typeof tag.value === 'string' ? Number.parseInt(tag.value, 10) : tag.value;\n                break;\n            case 'replaygain_track_gain':\n            case 'replaygain_track_peak':\n            case 'replaygain_album_gain':\n            case 'replaygain_album_peak':\n                tag.value = toRatio(tag.value);\n                break;\n            case 'replaygain_track_minmax':\n                tag.value = tag.value.split(',').map(v => Number.parseInt(v, 10));\n                break;\n            case 'replaygain_undo': {\n                const minMix = tag.value.split(',').map(v => Number.parseInt(v, 10));\n                tag.value = {\n                    leftChannel: minMix[0],\n                    rightChannel: minMix[1]\n                };\n                break;\n            }\n            case 'gapless': // iTunes gap-less flag\n            case 'compilation':\n            case 'podcast':\n            case 'showMovement':\n                tag.value = tag.value === '1' || tag.value === 1; // boolean\n                break;\n            case 'isrc': { // Only keep unique values\n                const commonTag = this.common[tag.id];\n                if (commonTag && commonTag.indexOf(tag.value) !== -1)\n                    return;\n                break;\n            }\n            case 'comment':\n                if (typeof tag.value === 'string') {\n                    tag.value = { text: tag.value };\n                }\n                if (tag.value.descriptor === 'iTunPGAP') {\n                    this.setGenericTag(tagType, { id: 'gapless', value: tag.value.text === '1' });\n                }\n                break;\n            case 'lyrics':\n                if (typeof tag.value === 'string') {\n                    tag.value = parseLrc(tag.value);\n                }\n                break;\n            default:\n            // nothing to do\n        }\n        if (tag.value !== null) {\n            this.setGenericTag(tagType, tag);\n        }\n    }\n    /**\n     * Convert native tags to common tags\n     * @returns {IAudioMetadata} Native + common tags\n     */\n    toCommonMetadata() {\n        return {\n            format: this.format,\n            native: this.native,\n            quality: this.quality,\n            common: this.common\n        };\n    }\n    /**\n     * Fix some common issues with picture object\n     * @param picture Picture\n     */\n    async postFixPicture(picture) {\n        if (picture.data && picture.data.length > 0) {\n            if (!picture.format) {\n                const fileType = await fileTypeFromBuffer(Uint8Array.from(picture.data)); // ToDO: remove Buffer\n                if (fileType) {\n                    picture.format = fileType.mime;\n                }\n                else {\n                    return null;\n                }\n            }\n            picture.format = picture.format.toLocaleLowerCase();\n            switch (picture.format) {\n                case 'image/jpg':\n                    picture.format = 'image/jpeg'; // ToDo: register warning\n            }\n            return picture;\n        }\n        this.addWarning(\"Empty picture tag found\");\n        return null;\n    }\n    /**\n     * Convert native tag to common tags\n     */\n    async toCommon(tagType, tagId, value) {\n        const tag = { id: tagId, value };\n        const genericTag = this.tagMapper.mapTag(tagType, tag, this);\n        if (genericTag) {\n            await this.postMap(tagType, genericTag);\n        }\n    }\n    /**\n     * Set generic tag\n     */\n    setGenericTag(tagType, tag) {\n        debug(`common.${tag.id} = ${tag.value}`);\n        const prio0 = this.commonOrigin[tag.id] || 1000;\n        const prio1 = this.originPriority[tagType];\n        if (isSingleton(tag.id)) {\n            if (prio1 <= prio0) {\n                this.common[tag.id] = tag.value;\n                this.commonOrigin[tag.id] = prio1;\n            }\n            else {\n                return debug(`Ignore native tag (singleton): ${tagType}.${tag.id} = ${tag.value}`);\n            }\n        }\n        else {\n            if (prio1 === prio0) {\n                if (!isUnique(tag.id) || this.common[tag.id].indexOf(tag.value) === -1) {\n                    this.common[tag.id].push(tag.value);\n                }\n                else {\n                    debug(`Ignore duplicate value: ${tagType}.${tag.id} = ${tag.value}`);\n                }\n                // no effect? this.commonOrigin[tag.id] = prio1;\n            }\n            else if (prio1 < prio0) {\n                this.common[tag.id] = [tag.value];\n                this.commonOrigin[tag.id] = prio1;\n            }\n            else {\n                return debug(`Ignore native tag (list): ${tagType}.${tag.id} = ${tag.value}`);\n            }\n        }\n        if (this.opts?.observer) {\n            this.opts.observer({ metadata: this, tag: { type: 'common', id: tag.id, value: tag.value } });\n        }\n        // ToDo: trigger metadata event\n    }\n}\nexport function joinArtists(artists) {\n    if (artists.length > 2) {\n        return `${artists.slice(0, artists.length - 1).join(', ')} & ${artists[artists.length - 1]}`;\n    }\n    return artists.join(' & ');\n}\n//# sourceMappingURL=MetadataCollector.js.map","import { LyricsContentType, TimestampFormat } from '../type.js';\n/**\n * Parse LRC (Lyrics) formatted text\n * Ref: https://en.wikipedia.org/wiki/LRC_(file_format)\n * @param lrcString\n */\nexport function parseLrc(lrcString) {\n    const lines = lrcString.split('\\n');\n    const syncText = [];\n    // Regular expression to match LRC timestamps (e.g., [00:45.52] or [00:45.520])\n    const timestampRegex = /\\[(\\d{2}):(\\d{2})\\.(\\d{2,3})\\]/;\n    for (const line of lines) {\n        const match = line.match(timestampRegex);\n        if (match) {\n            const minutes = Number.parseInt(match[1], 10);\n            const seconds = Number.parseInt(match[2], 10);\n            const millisecondsStr = match[3];\n            let milliseconds;\n            if (millisecondsStr.length === 3) {\n                //  (e.g., .521 = 521 millseconds)\n                milliseconds = Number.parseInt(millisecondsStr, 10);\n            }\n            else {\n                //  (e.g., .52 = 520 millseconds)\n                milliseconds = Number.parseInt(millisecondsStr, 10) * 10;\n            }\n            // Convert the timestamp to milliseconds, as per TimestampFormat.milliseconds\n            const timestamp = (minutes * 60 + seconds) * 1000 + milliseconds;\n            // Get the text portion of the line (e.g., \"あの蝶は自由になれたかな\")\n            const text = line.replace(timestampRegex, '').trim();\n            syncText.push({ timestamp, text });\n        }\n    }\n    // Creating the ILyricsTag object\n    return {\n        contentType: LyricsContentType.lyrics,\n        timeStampFormat: TimestampFormat.milliseconds,\n        syncText,\n    };\n}\n//# sourceMappingURL=LyricsParser.js.map","export const mpegParserLoader = {\n    parserType: 'mpeg',\n    extensions: ['.mp2', '.mp3', '.m2a', '.aac', 'aacp'],\n    mimeTypes: ['audio/mpeg', 'audio/mp3', 'audio/aacs', 'audio/aacp'],\n    async load() {\n        return (await import('./MpegParser.js')).MpegParser;\n    }\n};\n//# sourceMappingURL=MpegLoader.js.map","export const apeParserLoader = {\n    parserType: 'apev2',\n    extensions: ['.ape'],\n    mimeTypes: ['audio/ape', 'audio/monkeys-audio'],\n    async load() {\n        return (await import('./APEv2Parser.js')).APEv2Parser;\n    }\n};\n//# sourceMappingURL=Apev2Loader.js.map","export const asfParserLoader = {\n    parserType: 'asf',\n    extensions: ['.asf'],\n    mimeTypes: ['audio/ms-wma', 'video/ms-wmv', 'audio/ms-asf', 'video/ms-asf', 'application/vnd.ms-asf'],\n    async load() {\n        return (await import('./AsfParser.js')).AsfParser;\n    }\n};\n//# sourceMappingURL=AsfLoader.js.map","export const dsdiffParserLoader = {\n    parserType: 'dsdiff',\n    extensions: ['.dff'],\n    mimeTypes: ['audio/dsf', 'audio/dsd'],\n    async load() {\n        return (await import('./DsdiffParser.js')).DsdiffParser;\n    }\n};\n//# sourceMappingURL=DsdiffLoader.js.map","export const aiffParserLoader = {\n    parserType: 'aiff',\n    extensions: ['.aif', 'aiff', 'aifc'],\n    mimeTypes: ['audio/aiff', 'audio/aif', 'audio/aifc', 'application/aiff'],\n    async load() {\n        return (await import('./AiffParser.js')).AIFFParser;\n    }\n};\n//# sourceMappingURL=AiffLoader.js.map","export const dsfParserLoader = {\n    parserType: 'dsf',\n    extensions: ['.dsf'],\n    mimeTypes: ['audio/dsf'],\n    async load() {\n        return (await import('./DsfParser.js')).DsfParser;\n    }\n};\n//# sourceMappingURL=DsfLoader.js.map","export const flacParserLoader = {\n    parserType: 'flac',\n    extensions: ['.flac'],\n    mimeTypes: ['audio/flac'],\n    async load() {\n        return (await import('./FlacParser.js')).FlacParser;\n    }\n};\n//# sourceMappingURL=FlacLoader.js.map","export const matroskaParserLoader = {\n    parserType: 'matroska',\n    extensions: ['.mka', '.mkv', '.mk3d', '.mks', 'webm'],\n    mimeTypes: ['audio/matroska', 'video/matroska', 'audio/webm', 'video/webm'],\n    async load() {\n        return (await import('./MatroskaParser.js')).MatroskaParser;\n    }\n};\n//# sourceMappingURL=MatroskaLoader.js.map","export const mp4ParserLoader = {\n    parserType: 'mp4',\n    extensions: ['.mp4', '.m4a', '.m4b', '.m4pa', 'm4v', 'm4r', '3gp'],\n    mimeTypes: ['audio/mp4', 'audio/m4a', 'video/m4v', 'video/mp4'],\n    async load() {\n        return (await import('./MP4Parser.js')).MP4Parser;\n    }\n};\n//# sourceMappingURL=Mp4Loader.js.map","export const musepackParserLoader = {\n    parserType: 'musepack',\n    extensions: ['.mpc'],\n    mimeTypes: ['audio/musepack'],\n    async load() {\n        return (await import('./MusepackParser.js')).MusepackParser;\n    }\n};\n//# sourceMappingURL=MusepackLoader.js.map","export const oggParserLoader = {\n    parserType: 'ogg',\n    extensions: ['.ogg', '.ogv', '.oga', '.ogm', '.ogx', '.opus', '.spx'],\n    mimeTypes: ['audio/ogg', 'audio/opus', 'audio/speex', 'video/ogg'], // RFC 7845, RFC 6716, RFC 5574\n    async load() {\n        return (await import('./OggParser.js')).OggParser;\n    }\n};\n//# sourceMappingURL=OggLoader.js.map","export const wavpackParserLoader = {\n    parserType: 'wavpack',\n    extensions: ['.wv', '.wvp'],\n    mimeTypes: ['audio/wavpack'],\n    async load() {\n        return (await import('./WavPackParser.js')).WavPackParser;\n    }\n};\n//# sourceMappingURL=WavPackLoader.js.map","export const riffParserLoader = {\n    parserType: 'riff',\n    extensions: ['.wav', 'wave', '.bwf'],\n    mimeTypes: ['audio/vnd.wave', 'audio/wav', 'audio/wave'],\n    async load() {\n        return (await import('./WaveParser.js')).WaveParser;\n    }\n};\n//# sourceMappingURL=WaveLoader.js.map","import { fileTypeFromBuffer } from 'file-type';\nimport ContentType from 'content-type';\nimport { parse as mimeTypeParse } from 'media-typer';\nimport initDebug from 'debug';\nimport { MetadataCollector } from './common/MetadataCollector.js';\nimport { TrackType } from './type.js';\nimport { mpegParserLoader } from './mpeg/MpegLoader.js';\nimport { CouldNotDetermineFileTypeError, UnsupportedFileTypeError } from './ParseError.js';\nimport { apeParserLoader } from './apev2/Apev2Loader.js';\nimport { asfParserLoader } from './asf/AsfLoader.js';\nimport { dsdiffParserLoader } from './dsdiff/DsdiffLoader.js';\nimport { aiffParserLoader } from './aiff/AiffLoader.js';\nimport { dsfParserLoader } from './dsf/DsfLoader.js';\nimport { flacParserLoader } from './flac/FlacLoader.js';\nimport { matroskaParserLoader } from './matroska/MatroskaLoader.js';\nimport { mp4ParserLoader } from './mp4/Mp4Loader.js';\nimport { musepackParserLoader } from './musepack/MusepackLoader.js';\nimport { oggParserLoader } from './ogg/OggLoader.js';\nimport { wavpackParserLoader } from './wavpack/WavPackLoader.js';\nimport { riffParserLoader } from './wav/WaveLoader.js';\nimport { scanAppendingHeaders } from './core.js';\nconst debug = initDebug('music-metadata:parser:factory');\nexport function parseHttpContentType(contentType) {\n    const type = ContentType.parse(contentType);\n    const mime = mimeTypeParse(type.type);\n    return {\n        type: mime.type,\n        subtype: mime.subtype,\n        suffix: mime.suffix,\n        parameters: type.parameters\n    };\n}\nexport class ParserFactory {\n    constructor() {\n        this.parsers = [];\n        [\n            flacParserLoader,\n            mpegParserLoader,\n            apeParserLoader,\n            mp4ParserLoader,\n            matroskaParserLoader,\n            riffParserLoader,\n            oggParserLoader,\n            asfParserLoader,\n            aiffParserLoader,\n            wavpackParserLoader,\n            musepackParserLoader,\n            dsfParserLoader,\n            dsdiffParserLoader\n        ].forEach(parser => this.registerParser(parser));\n    }\n    registerParser(parser) {\n        this.parsers.push(parser);\n    }\n    async parse(tokenizer, parserLoader, opts) {\n        if (tokenizer.supportsRandomAccess()) {\n            debug('tokenizer supports random-access, scanning for appending headers');\n            await scanAppendingHeaders(tokenizer, opts);\n        }\n        else {\n            debug('tokenizer does not support random-access, cannot scan for appending headers');\n        }\n        if (!parserLoader) {\n            const buf = new Uint8Array(4100);\n            if (tokenizer.fileInfo.mimeType) {\n                parserLoader = this.findLoaderForContentType(tokenizer.fileInfo.mimeType);\n            }\n            if (!parserLoader && tokenizer.fileInfo.path) {\n                parserLoader = this.findLoaderForExtension(tokenizer.fileInfo.path);\n            }\n            if (!parserLoader) {\n                // Parser could not be determined on MIME-type or extension\n                debug('Guess parser on content...');\n                await tokenizer.peekBuffer(buf, { mayBeLess: true });\n                const guessedType = await fileTypeFromBuffer(buf, { mpegOffsetTolerance: 10 });\n                if (!guessedType || !guessedType.mime) {\n                    throw new CouldNotDetermineFileTypeError('Failed to determine audio format');\n                }\n                debug(`Guessed file type is mime=${guessedType.mime}, extension=${guessedType.ext}`);\n                parserLoader = this.findLoaderForContentType(guessedType.mime);\n                if (!parserLoader) {\n                    throw new UnsupportedFileTypeError(`Guessed MIME-type not supported: ${guessedType.mime}`);\n                }\n            }\n        }\n        // Parser found, execute parser\n        debug(`Loading ${parserLoader.parserType} parser...`);\n        const metadata = new MetadataCollector(opts);\n        const ParserImpl = await parserLoader.load();\n        const parser = new ParserImpl(metadata, tokenizer, opts ?? {});\n        debug(`Parser ${parserLoader.parserType} loaded`);\n        await parser.parse();\n        if (metadata.format.trackInfo) {\n            if (metadata.format.hasAudio === undefined) {\n                metadata.setFormat('hasAudio', !!metadata.format.trackInfo.find(track => track.type === TrackType.audio));\n            }\n            if (metadata.format.hasVideo === undefined) {\n                metadata.setFormat('hasVideo', !!metadata.format.trackInfo.find(track => track.type === TrackType.video));\n            }\n        }\n        return metadata.toCommonMetadata();\n    }\n    /**\n     * @param filePath - Path, filename or extension to audio file\n     * @return Parser submodule name\n     */\n    findLoaderForExtension(filePath) {\n        if (!filePath)\n            return;\n        const extension = getExtension(filePath).toLocaleLowerCase() || filePath;\n        return this.parsers.find(parser => parser.extensions.indexOf(extension) !== -1);\n    }\n    findLoaderForContentType(httpContentType) {\n        let mime;\n        if (!httpContentType)\n            return;\n        try {\n            mime = parseHttpContentType(httpContentType);\n        }\n        catch (_err) {\n            debug(`Invalid HTTP Content-Type header value: ${httpContentType}`);\n            return;\n        }\n        const subType = mime.subtype.indexOf('x-') === 0 ? mime.subtype.substring(2) : mime.subtype;\n        return this.parsers.find(parser => parser.mimeTypes.find(loader => loader.indexOf(`${mime.type}/${subType}`) !== -1));\n    }\n    getSupportedMimeTypes() {\n        const mimeTypeSet = new Set();\n        this.parsers.forEach(loader => {\n            loader.mimeTypes.forEach(mimeType => {\n                mimeTypeSet.add(mimeType);\n                mimeTypeSet.add(mimeType.replace('/', '/x-'));\n            });\n        });\n        return Array.from(mimeTypeSet);\n    }\n}\nfunction getExtension(fname) {\n    const i = fname.lastIndexOf('.');\n    return i === -1 ? '' : fname.slice(i);\n}\n//# sourceMappingURL=ParserFactory.js.map","export class BasicParser {\n    /**\n     * Initialize parser with output (metadata), input (tokenizer) & parsing options (options).\n     * @param {INativeMetadataCollector} metadata Output\n     * @param {ITokenizer} tokenizer Input\n     * @param {IOptions} options Parsing options\n     */\n    constructor(metadata, tokenizer, options) {\n        this.metadata = metadata;\n        this.tokenizer = tokenizer;\n        this.options = options;\n    }\n}\n//# sourceMappingURL=BasicParser.js.map","import { stringToUint8Array, uint8ArrayToString } from 'uint8array-extras';\nimport * as util from './Util.js';\nimport { InternalParserError, FieldDecodingError } from '../ParseError.js';\nconst validFourCC = /^[\\x21-\\x7e©][\\x20-\\x7e\\x00()]{3}/;\n/**\n * Token for read FourCC\n * Ref: https://en.wikipedia.org/wiki/FourCC\n */\nexport const FourCcToken = {\n    len: 4,\n    get: (buf, off) => {\n        const id = uint8ArrayToString(buf.slice(off, off + FourCcToken.len), 'latin1');\n        if (!id.match(validFourCC)) {\n            throw new FieldDecodingError(`FourCC contains invalid characters: ${util.a2hex(id)} \"${id}\"`);\n        }\n        return id;\n    },\n    put: (buffer, offset, id) => {\n        const str = stringToUint8Array(id);\n        if (str.length !== 4)\n            throw new InternalParserError('Invalid length');\n        buffer.set(str, offset);\n        return offset + 4;\n    }\n};\n//# sourceMappingURL=FourCC.js.map","import * as Token from 'token-types';\nimport { FourCcToken } from '../common/FourCC.js';\nexport const DataType = {\n    text_utf8: 0,\n    binary: 1,\n    external_info: 2,\n    reserved: 3\n};\n/**\n * APE_DESCRIPTOR: defines the sizes (and offsets) of all the pieces, as well as the MD5 checksum\n */\nexport const DescriptorParser = {\n    len: 52,\n    get: (buf, off) => {\n        return {\n            // should equal 'MAC '\n            ID: FourCcToken.get(buf, off),\n            // versionIndex number * 1000 (3.81 = 3810) (remember that 4-byte alignment causes this to take 4-bytes)\n            version: Token.UINT32_LE.get(buf, off + 4) / 1000,\n            // the number of descriptor bytes (allows later expansion of this header)\n            descriptorBytes: Token.UINT32_LE.get(buf, off + 8),\n            // the number of header APE_HEADER bytes\n            headerBytes: Token.UINT32_LE.get(buf, off + 12),\n            // the number of header APE_HEADER bytes\n            seekTableBytes: Token.UINT32_LE.get(buf, off + 16),\n            // the number of header data bytes (from original file)\n            headerDataBytes: Token.UINT32_LE.get(buf, off + 20),\n            // the number of bytes of APE frame data\n            apeFrameDataBytes: Token.UINT32_LE.get(buf, off + 24),\n            // the high order number of APE frame data bytes\n            apeFrameDataBytesHigh: Token.UINT32_LE.get(buf, off + 28),\n            // the terminating data of the file (not including tag data)\n            terminatingDataBytes: Token.UINT32_LE.get(buf, off + 32),\n            // the MD5 hash of the file (see notes for usage... it's a little tricky)\n            fileMD5: new Token.Uint8ArrayType(16).get(buf, off + 36)\n        };\n    }\n};\n/**\n * APE_HEADER: describes all of the necessary information about the APE file\n */\nexport const Header = {\n    len: 24,\n    get: (buf, off) => {\n        return {\n            // the compression level (see defines I.E. COMPRESSION_LEVEL_FAST)\n            compressionLevel: Token.UINT16_LE.get(buf, off),\n            // any format flags (for future use)\n            formatFlags: Token.UINT16_LE.get(buf, off + 2),\n            // the number of audio blocks in one frame\n            blocksPerFrame: Token.UINT32_LE.get(buf, off + 4),\n            // the number of audio blocks in the final frame\n            finalFrameBlocks: Token.UINT32_LE.get(buf, off + 8),\n            // the total number of frames\n            totalFrames: Token.UINT32_LE.get(buf, off + 12),\n            // the bits per sample (typically 16)\n            bitsPerSample: Token.UINT16_LE.get(buf, off + 16),\n            // the number of channels (1 or 2)\n            channel: Token.UINT16_LE.get(buf, off + 18),\n            // the sample rate (typically 44100)\n            sampleRate: Token.UINT32_LE.get(buf, off + 20)\n        };\n    }\n};\n/**\n * APE Tag Header/Footer Version 2.0\n * TAG: describes all the properties of the file [optional]\n */\nexport const TagFooter = {\n    len: 32,\n    get: (buf, off) => {\n        return {\n            // should equal 'APETAGEX'\n            ID: new Token.StringType(8, 'ascii').get(buf, off),\n            // equals CURRENT_APE_TAG_VERSION\n            version: Token.UINT32_LE.get(buf, off + 8),\n            // the complete size of the tag, including this footer (excludes header)\n            size: Token.UINT32_LE.get(buf, off + 12),\n            // the number of fields in the tag\n            fields: Token.UINT32_LE.get(buf, off + 16),\n            // reserved for later use (must be zero),\n            flags: parseTagFlags(Token.UINT32_LE.get(buf, off + 20))\n        };\n    }\n};\n/**\n * APE Tag v2.0 Item Header\n */\nexport const TagItemHeader = {\n    len: 8,\n    get: (buf, off) => {\n        return {\n            // Length of assigned value in bytes\n            size: Token.UINT32_LE.get(buf, off),\n            // reserved for later use (must be zero),\n            flags: parseTagFlags(Token.UINT32_LE.get(buf, off + 4))\n        };\n    }\n};\nexport function parseTagFlags(flags) {\n    return {\n        containsHeader: isBitSet(flags, 31),\n        containsFooter: isBitSet(flags, 30),\n        isHeader: isBitSet(flags, 29),\n        readOnly: isBitSet(flags, 0),\n        dataType: (flags & 6) >> 1\n    };\n}\n/**\n * @param num {number}\n * @param bit 0 is least significant bit (LSB)\n * @return {boolean} true if bit is 1; otherwise false\n */\nexport function isBitSet(num, bit) {\n    return (num & 1 << bit) !== 0;\n}\n//# sourceMappingURL=APEv2Token.js.map","import initDebug from 'debug';\nimport * as strtok3 from 'strtok3';\nimport { StringType } from 'token-types';\nimport { uint8ArrayToString } from 'uint8array-extras';\nimport * as util from '../common/Util.js';\nimport { BasicParser } from '../common/BasicParser.js';\nimport { DataType, DescriptorParser, Header, TagFooter, TagItemHeader } from './APEv2Token.js';\nimport { makeUnexpectedFileContentError } from '../ParseError.js';\nconst debug = initDebug('music-metadata:parser:APEv2');\nconst tagFormat = 'APEv2';\nconst preamble = 'APETAGEX';\nexport class ApeContentError extends makeUnexpectedFileContentError('APEv2') {\n}\nexport function tryParseApeHeader(metadata, tokenizer, options) {\n    const apeParser = new APEv2Parser(metadata, tokenizer, options);\n    return apeParser.tryParseApeHeader();\n}\nexport class APEv2Parser extends BasicParser {\n    constructor() {\n        super(...arguments);\n        this.ape = {};\n    }\n    /**\n     * Calculate the media file duration\n     * @param ah ApeHeader\n     * @return {number} duration in seconds\n     */\n    static calculateDuration(ah) {\n        let duration = ah.totalFrames > 1 ? ah.blocksPerFrame * (ah.totalFrames - 1) : 0;\n        duration += ah.finalFrameBlocks;\n        return duration / ah.sampleRate;\n    }\n    /**\n     * Calculates the APEv1 / APEv2 first field offset\n     * @param tokenizer\n     * @param offset\n     */\n    static async findApeFooterOffset(tokenizer, offset) {\n        // Search for APE footer header at the end of the file\n        const apeBuf = new Uint8Array(TagFooter.len);\n        const position = tokenizer.position;\n        if (offset <= TagFooter.len) {\n            debug(`Offset is too small to read APE footer: offset=${offset}`);\n            return undefined;\n        }\n        if (offset > TagFooter.len) {\n            await tokenizer.readBuffer(apeBuf, { position: offset - TagFooter.len });\n            tokenizer.setPosition(position);\n            const tagFooter = TagFooter.get(apeBuf, 0);\n            if (tagFooter.ID === 'APETAGEX') {\n                if (tagFooter.flags.isHeader) {\n                    debug(`APE Header found at offset=${offset - TagFooter.len}`);\n                }\n                else {\n                    debug(`APE Footer found at offset=${offset - TagFooter.len}`);\n                    offset -= tagFooter.size;\n                }\n                return { footer: tagFooter, offset };\n            }\n        }\n    }\n    static parseTagFooter(metadata, buffer, options) {\n        const footer = TagFooter.get(buffer, buffer.length - TagFooter.len);\n        if (footer.ID !== preamble)\n            throw new ApeContentError('Unexpected APEv2 Footer ID preamble value');\n        strtok3.fromBuffer(buffer);\n        const apeParser = new APEv2Parser(metadata, strtok3.fromBuffer(buffer), options);\n        return apeParser.parseTags(footer);\n    }\n    /**\n     * Parse APEv1 / APEv2 header if header signature found\n     */\n    async tryParseApeHeader() {\n        if (this.tokenizer.fileInfo.size && this.tokenizer.fileInfo.size - this.tokenizer.position < TagFooter.len) {\n            debug(\"No APEv2 header found, end-of-file reached\");\n            return;\n        }\n        const footer = await this.tokenizer.peekToken(TagFooter);\n        if (footer.ID === preamble) {\n            await this.tokenizer.ignore(TagFooter.len);\n            return this.parseTags(footer);\n        }\n        debug(`APEv2 header not found at offset=${this.tokenizer.position}`);\n        if (this.tokenizer.fileInfo.size) {\n            // Try to read the APEv2 header using just the footer-header\n            const remaining = this.tokenizer.fileInfo.size - this.tokenizer.position; // ToDo: take ID3v1 into account\n            const buffer = new Uint8Array(remaining);\n            await this.tokenizer.readBuffer(buffer);\n            return APEv2Parser.parseTagFooter(this.metadata, buffer, this.options);\n        }\n    }\n    async parse() {\n        const descriptor = await this.tokenizer.readToken(DescriptorParser);\n        if (descriptor.ID !== 'MAC ')\n            throw new ApeContentError('Unexpected descriptor ID');\n        this.ape.descriptor = descriptor;\n        const lenExp = descriptor.descriptorBytes - DescriptorParser.len;\n        const header = await (lenExp > 0 ? this.parseDescriptorExpansion(lenExp) : this.parseHeader());\n        this.metadata.setAudioOnly();\n        await this.tokenizer.ignore(header.forwardBytes);\n        return this.tryParseApeHeader();\n    }\n    async parseTags(footer) {\n        const keyBuffer = new Uint8Array(256); // maximum tag key length\n        let bytesRemaining = footer.size - TagFooter.len;\n        debug(`Parse APE tags at offset=${this.tokenizer.position}, size=${bytesRemaining}`);\n        for (let i = 0; i < footer.fields; i++) {\n            if (bytesRemaining < TagItemHeader.len) {\n                this.metadata.addWarning(`APEv2 Tag-header: ${footer.fields - i} items remaining, but no more tag data to read.`);\n                break;\n            }\n            // Only APEv2 tag has tag item headers\n            const tagItemHeader = await this.tokenizer.readToken(TagItemHeader);\n            bytesRemaining -= TagItemHeader.len + tagItemHeader.size;\n            await this.tokenizer.peekBuffer(keyBuffer, { length: Math.min(keyBuffer.length, bytesRemaining) });\n            let zero = util.findZero(keyBuffer, 0, keyBuffer.length);\n            const key = await this.tokenizer.readToken(new StringType(zero, 'ascii'));\n            await this.tokenizer.ignore(1);\n            bytesRemaining -= key.length + 1;\n            switch (tagItemHeader.flags.dataType) {\n                case DataType.text_utf8: { // utf-8 text-string\n                    const value = await this.tokenizer.readToken(new StringType(tagItemHeader.size, 'utf8'));\n                    const values = value.split(/\\x00/g);\n                    await Promise.all(values.map(val => this.metadata.addTag(tagFormat, key, val)));\n                    break;\n                }\n                case DataType.binary: // binary (probably artwork)\n                    if (this.options.skipCovers) {\n                        await this.tokenizer.ignore(tagItemHeader.size);\n                    }\n                    else {\n                        const picData = new Uint8Array(tagItemHeader.size);\n                        await this.tokenizer.readBuffer(picData);\n                        zero = util.findZero(picData, 0, picData.length);\n                        const description = uint8ArrayToString(picData.slice(0, zero));\n                        const data = picData.slice(zero + 1);\n                        await this.metadata.addTag(tagFormat, key, {\n                            description,\n                            data\n                        });\n                    }\n                    break;\n                case DataType.external_info:\n                    debug(`Ignore external info ${key}`);\n                    await this.tokenizer.ignore(tagItemHeader.size);\n                    break;\n                case DataType.reserved:\n                    debug(`Ignore external info ${key}`);\n                    this.metadata.addWarning(`APEv2 header declares a reserved datatype for \"${key}\"`);\n                    await this.tokenizer.ignore(tagItemHeader.size);\n                    break;\n            }\n        }\n    }\n    async parseDescriptorExpansion(lenExp) {\n        await this.tokenizer.ignore(lenExp);\n        return this.parseHeader();\n    }\n    async parseHeader() {\n        const header = await this.tokenizer.readToken(Header);\n        // ToDo before\n        this.metadata.setFormat('lossless', true);\n        this.metadata.setFormat('container', 'Monkey\\'s Audio');\n        this.metadata.setFormat('bitsPerSample', header.bitsPerSample);\n        this.metadata.setFormat('sampleRate', header.sampleRate);\n        this.metadata.setFormat('numberOfChannels', header.channel);\n        this.metadata.setFormat('duration', APEv2Parser.calculateDuration(header));\n        if (!this.ape.descriptor) {\n            throw new ApeContentError('Missing APE descriptor');\n        }\n        return {\n            forwardBytes: this.ape.descriptor.seekTableBytes + this.ape.descriptor.headerDataBytes +\n                this.ape.descriptor.apeFrameDataBytes + this.ape.descriptor.terminatingDataBytes\n        };\n    }\n}\n//# sourceMappingURL=APEv2Parser.js.map","import initDebug from 'debug';\nimport { StringType, UINT8 } from 'token-types';\nimport * as util from '../common/Util.js';\nimport { BasicParser } from '../common/BasicParser.js';\nimport { APEv2Parser } from '../apev2/APEv2Parser.js';\nconst debug = initDebug('music-metadata:parser:ID3v1');\n/**\n * ID3v1 Genre mappings\n * Ref: https://de.wikipedia.org/wiki/Liste_der_ID3v1-Genres\n */\nexport const Genres = [\n    'Blues', 'Classic Rock', 'Country', 'Dance', 'Disco', 'Funk', 'Grunge', 'Hip-Hop',\n    'Jazz', 'Metal', 'New Age', 'Oldies', 'Other', 'Pop', 'R&B', 'Rap', 'Reggae', 'Rock',\n    'Techno', 'Industrial', 'Alternative', 'Ska', 'Death Metal', 'Pranks', 'Soundtrack',\n    'Euro-Techno', 'Ambient', 'Trip-Hop', 'Vocal', 'Jazz+Funk', 'Fusion', 'Trance',\n    'Classical', 'Instrumental', 'Acid', 'House', 'Game', 'Sound Clip', 'Gospel', 'Noise',\n    'Alt. Rock', 'Bass', 'Soul', 'Punk', 'Space', 'Meditative', 'Instrumental Pop',\n    'Instrumental Rock', 'Ethnic', 'Gothic', 'Darkwave', 'Techno-Industrial',\n    'Electronic', 'Pop-Folk', 'Eurodance', 'Dream', 'Southern Rock', 'Comedy', 'Cult',\n    'Gangsta Rap', 'Top 40', 'Christian Rap', 'Pop/Funk', 'Jungle', 'Native American',\n    'Cabaret', 'New Wave', 'Psychedelic', 'Rave', 'Showtunes', 'Trailer', 'Lo-Fi', 'Tribal',\n    'Acid Punk', 'Acid Jazz', 'Polka', 'Retro', 'Musical', 'Rock & Roll', 'Hard Rock',\n    'Folk', 'Folk/Rock', 'National Folk', 'Swing', 'Fast-Fusion', 'Bebob', 'Latin', 'Revival',\n    'Celtic', 'Bluegrass', 'Avantgarde', 'Gothic Rock', 'Progressive Rock', 'Psychedelic Rock',\n    'Symphonic Rock', 'Slow Rock', 'Big Band', 'Chorus', 'Easy Listening', 'Acoustic', 'Humour',\n    'Speech', 'Chanson', 'Opera', 'Chamber Music', 'Sonata', 'Symphony', 'Booty Bass', 'Primus',\n    'Porn Groove', 'Satire', 'Slow Jam', 'Club', 'Tango', 'Samba', 'Folklore',\n    'Ballad', 'Power Ballad', 'Rhythmic Soul', 'Freestyle', 'Duet', 'Punk Rock', 'Drum Solo',\n    'A Cappella', 'Euro-House', 'Dance Hall', 'Goa', 'Drum & Bass', 'Club-House',\n    'Hardcore', 'Terror', 'Indie', 'BritPop', 'Negerpunk', 'Polsk Punk', 'Beat',\n    'Christian Gangsta Rap', 'Heavy Metal', 'Black Metal', 'Crossover', 'Contemporary Christian',\n    'Christian Rock', 'Merengue', 'Salsa', 'Thrash Metal', 'Anime', 'JPop', 'Synthpop',\n    'Abstract', 'Art Rock', 'Baroque', 'Bhangra', 'Big Beat', 'Breakbeat', 'Chillout',\n    'Downtempo', 'Dub', 'EBM', 'Eclectic', 'Electro', 'Electroclash', 'Emo', 'Experimental',\n    'Garage', 'Global', 'IDM', 'Illbient', 'Industro-Goth', 'Jam Band', 'Krautrock',\n    'Leftfield', 'Lounge', 'Math Rock', 'New Romantic', 'Nu-Breakz', 'Post-Punk', 'Post-Rock',\n    'Psytrance', 'Shoegaze', 'Space Rock', 'Trop Rock', 'World Music', 'Neoclassical', 'Audiobook',\n    'Audio Theatre', 'Neue Deutsche Welle', 'Podcast', 'Indie Rock', 'G-Funk', 'Dubstep',\n    'Garage Rock', 'Psybient'\n];\n/**\n * Spec: http://id3.org/ID3v1\n * Wiki: https://en.wikipedia.org/wiki/ID3\n */\nconst Iid3v1Token = {\n    len: 128,\n    /**\n     * @param buf Buffer possibly holding the 128 bytes ID3v1.1 metadata header\n     * @param off Offset in buffer in bytes\n     * @returns ID3v1.1 header if first 3 bytes equals 'TAG', otherwise null is returned\n     */\n    get: (buf, off) => {\n        const header = new Id3v1StringType(3).get(buf, off);\n        return header === 'TAG' ? {\n            header,\n            title: new Id3v1StringType(30).get(buf, off + 3),\n            artist: new Id3v1StringType(30).get(buf, off + 33),\n            album: new Id3v1StringType(30).get(buf, off + 63),\n            year: new Id3v1StringType(4).get(buf, off + 93),\n            comment: new Id3v1StringType(28).get(buf, off + 97),\n            // ID3v1.1 separator for track\n            zeroByte: UINT8.get(buf, off + 127),\n            // track: ID3v1.1 field added by Michael Mutschler\n            track: UINT8.get(buf, off + 126),\n            genre: UINT8.get(buf, off + 127)\n        } : null;\n    }\n};\nclass Id3v1StringType {\n    constructor(len) {\n        this.len = len;\n        this.stringType = new StringType(len, 'latin1');\n    }\n    get(buf, off) {\n        let value = this.stringType.get(buf, off);\n        value = util.trimRightNull(value);\n        value = value.trim();\n        return value.length > 0 ? value : undefined;\n    }\n}\nexport class ID3v1Parser extends BasicParser {\n    constructor(metadata, tokenizer, options) {\n        super(metadata, tokenizer, options);\n        this.apeHeader = options.apeHeader;\n    }\n    static getGenre(genreIndex) {\n        if (genreIndex < Genres.length) {\n            return Genres[genreIndex];\n        }\n        return undefined; // ToDO: generate warning\n    }\n    async parse() {\n        if (!this.tokenizer.fileInfo.size) {\n            debug('Skip checking for ID3v1 because the file-size is unknown');\n            return;\n        }\n        if (this.apeHeader) {\n            this.tokenizer.ignore(this.apeHeader.offset - this.tokenizer.position);\n            const apeParser = new APEv2Parser(this.metadata, this.tokenizer, this.options);\n            await apeParser.parseTags(this.apeHeader.footer);\n        }\n        const offset = this.tokenizer.fileInfo.size - Iid3v1Token.len;\n        if (this.tokenizer.position > offset) {\n            debug('Already consumed the last 128 bytes');\n            return;\n        }\n        const header = await this.tokenizer.readToken(Iid3v1Token, offset);\n        if (header) {\n            debug('ID3v1 header found at: pos=%s', this.tokenizer.fileInfo.size - Iid3v1Token.len);\n            const props = ['title', 'artist', 'album', 'comment', 'track', 'year'];\n            for (const id of props) {\n                if (header[id] && header[id] !== '')\n                    await this.addTag(id, header[id]);\n            }\n            const genre = ID3v1Parser.getGenre(header.genre);\n            if (genre)\n                await this.addTag('genre', genre);\n        }\n        else {\n            debug('ID3v1 header not found at: pos=%s', this.tokenizer.fileInfo.size - Iid3v1Token.len);\n        }\n    }\n    async addTag(id, value) {\n        await this.metadata.addTag('ID3v1', id, value);\n    }\n}\nexport async function hasID3v1Header(tokenizer) {\n    if (tokenizer.fileInfo.size >= 128) {\n        const tag = new Uint8Array(3);\n        const position = tokenizer.position;\n        await tokenizer.readBuffer(tag, { position: tokenizer.fileInfo.size - 128 });\n        tokenizer.setPosition(position); // Restore tokenizer position\n        return new TextDecoder('latin1').decode(tag) === 'TAG';\n    }\n    return false;\n}\n//# sourceMappingURL=ID3v1Parser.js.map","export const endTag2 = 'LYRICS200';\nexport async function getLyricsHeaderLength(tokenizer) {\n    const fileSize = tokenizer.fileInfo.size;\n    if (fileSize >= 143) {\n        const buf = new Uint8Array(15);\n        const position = tokenizer.position;\n        await tokenizer.readBuffer(buf, { position: fileSize - 143 });\n        tokenizer.setPosition(position); // Restore position\n        const txt = new TextDecoder('latin1').decode(buf);\n        const tag = txt.slice(6);\n        if (tag === endTag2) {\n            return Number.parseInt(txt.slice(0, 6), 10) + 15;\n        }\n    }\n    return 0;\n}\n//# sourceMappingURL=Lyrics3.js.map","/**\n * Primary entry point, Node.js specific entry point is MusepackParser.ts\n */\nimport { fromWebStream, fromBuffer } from 'strtok3';\nimport { ParserFactory } from './ParserFactory.js';\nimport { APEv2Parser } from './apev2/APEv2Parser.js';\nimport { hasID3v1Header } from './id3v1/ID3v1Parser.js';\nimport { getLyricsHeaderLength } from './lyrics3/Lyrics3.js';\nexport { LyricsContentType, TimestampFormat } from './type.js';\nexport { CouldNotDetermineFileTypeError, UnsupportedFileTypeError } from './ParseError.js';\nexport * from './ParseError.js';\n/**\n * Parse Web API File\n * Requires Blob to be able to stream using a ReadableStreamBYOBReader, only available since Node.js ≥ 20\n * @param blob - Blob to parse\n * @param options - Parsing options\n * @returns Metadata\n */\nexport async function parseBlob(blob, options = {}) {\n    const fileInfo = { mimeType: blob.type, size: blob.size };\n    if (blob instanceof File) {\n        fileInfo.path = blob.name;\n    }\n    return parseWebStream(blob.stream(), fileInfo, options);\n}\n/**\n * Parse audio from Web Stream.Readable\n * @param webStream - WebStream to read the audio track from\n * @param options - Parsing options\n * @param fileInfo - File information object or MIME-type string\n * @returns Metadata\n */\nexport async function parseWebStream(webStream, fileInfo, options = {}) {\n    const tokenizer = fromWebStream(webStream, { fileInfo: typeof fileInfo === 'string' ? { mimeType: fileInfo } : fileInfo });\n    try {\n        return await parseFromTokenizer(tokenizer, options);\n    }\n    finally {\n        await tokenizer.close();\n    }\n}\n/**\n * Parse audio from memory\n * @param uint8Array - Uint8Array holding audio data\n * @param fileInfo - File information object or MIME-type string\n * @param options - Parsing options\n * @returns Metadata\n * Ref: https://github.com/Borewit/strtok3/blob/e6938c81ff685074d5eb3064a11c0b03ca934c1d/src/index.ts#L15\n */\nexport async function parseBuffer(uint8Array, fileInfo, options = {}) {\n    const tokenizer = fromBuffer(uint8Array, { fileInfo: typeof fileInfo === 'string' ? { mimeType: fileInfo } : fileInfo });\n    return parseFromTokenizer(tokenizer, options);\n}\n/**\n * Parse audio from ITokenizer source\n * @param tokenizer - Audio source implementing the tokenizer interface\n * @param options - Parsing options\n * @returns Metadata\n */\nexport function parseFromTokenizer(tokenizer, options) {\n    const parserFactory = new ParserFactory();\n    return parserFactory.parse(tokenizer, undefined, options);\n}\n/**\n * Create a dictionary ordered by their tag id (key)\n * @param nativeTags list of tags\n * @returns tags indexed by id\n */\nexport function orderTags(nativeTags) {\n    const tags = {};\n    for (const { id, value } of nativeTags) {\n        (tags[id] || (tags[id] = [])).push(value);\n    }\n    return tags;\n}\n/**\n * Convert rating to 1-5 star rating\n * @param rating Normalized rating [0..1] (common.rating[n].rating)\n * @returns Number of stars: 1, 2, 3, 4 or 5 stars\n */\nexport function ratingToStars(rating) {\n    return rating === undefined ? 0 : 1 + Math.round(rating * 4);\n}\n/**\n * Select most likely cover image.\n * @param pictures Usually metadata.common.picture\n * @return Cover image, if any, otherwise null\n */\nexport function selectCover(pictures) {\n    return pictures ? pictures.reduce((acc, cur) => {\n        if (cur.name && cur.name.toLowerCase() in ['front', 'cover', 'cover (front)'])\n            return cur;\n        return acc;\n    }) : null;\n}\nexport async function scanAppendingHeaders(tokenizer, options = {}) {\n    let apeOffset = tokenizer.fileInfo.size;\n    if (await hasID3v1Header(tokenizer)) {\n        apeOffset -= 128;\n        const lyricsLen = await getLyricsHeaderLength(tokenizer);\n        apeOffset -= lyricsLen;\n    }\n    options.apeHeader = await APEv2Parser.findApeFooterOffset(tokenizer, apeOffset);\n}\n/**\n * Implementation only available when loaded as Node.js\n * This method will throw an Error, always.\n */\nexport async function parseFile(_filePath, _options = {}) {\n    throw new Error('This function require a Node engine. To load Web API File objects use parseBlob instead.');\n}\n/**\n * Implementation only available when loaded as Node.js\n * This method will throw an Error, always.\n */\nexport async function parseStream(_stream, _fileInfo, _options = {}) {\n    throw new Error('This function require a Node engine.');\n}\n/**\n * Return a list of supported mime-types\n */\nexport function getSupportedMimeTypes() {\n    return new ParserFactory().getSupportedMimeTypes();\n}\n//# sourceMappingURL=core.js.map","/**\n * @license React\n * react-jsx-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n  REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\nfunction jsxProd(type, config, maybeKey) {\n  var key = null;\n  void 0 !== maybeKey && (key = \"\" + maybeKey);\n  void 0 !== config.key && (key = \"\" + config.key);\n  if (\"key\" in config) {\n    maybeKey = {};\n    for (var propName in config)\n      \"key\" !== propName && (maybeKey[propName] = config[propName]);\n  } else maybeKey = config;\n  config = maybeKey.ref;\n  return {\n    $$typeof: REACT_ELEMENT_TYPE,\n    type: type,\n    key: key,\n    ref: void 0 !== config ? config : null,\n    props: maybeKey\n  };\n}\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsxProd;\nexports.jsxs = jsxProd;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n  module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/**\n * @license React\n * scheduler.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nfunction push(heap, node) {\n  var index = heap.length;\n  heap.push(node);\n  a: for (; 0 < index; ) {\n    var parentIndex = (index - 1) >>> 1,\n      parent = heap[parentIndex];\n    if (0 < compare(parent, node))\n      (heap[parentIndex] = node), (heap[index] = parent), (index = parentIndex);\n    else break a;\n  }\n}\nfunction peek(heap) {\n  return 0 === heap.length ? null : heap[0];\n}\nfunction pop(heap) {\n  if (0 === heap.length) return null;\n  var first = heap[0],\n    last = heap.pop();\n  if (last !== first) {\n    heap[0] = last;\n    a: for (\n      var index = 0, length = heap.length, halfLength = length >>> 1;\n      index < halfLength;\n\n    ) {\n      var leftIndex = 2 * (index + 1) - 1,\n        left = heap[leftIndex],\n        rightIndex = leftIndex + 1,\n        right = heap[rightIndex];\n      if (0 > compare(left, last))\n        rightIndex < length && 0 > compare(right, left)\n          ? ((heap[index] = right),\n            (heap[rightIndex] = last),\n            (index = rightIndex))\n          : ((heap[index] = left),\n            (heap[leftIndex] = last),\n            (index = leftIndex));\n      else if (rightIndex < length && 0 > compare(right, last))\n        (heap[index] = right), (heap[rightIndex] = last), (index = rightIndex);\n      else break a;\n    }\n  }\n  return first;\n}\nfunction compare(a, b) {\n  var diff = a.sortIndex - b.sortIndex;\n  return 0 !== diff ? diff : a.id - b.id;\n}\nexports.unstable_now = void 0;\nif (\"object\" === typeof performance && \"function\" === typeof performance.now) {\n  var localPerformance = performance;\n  exports.unstable_now = function () {\n    return localPerformance.now();\n  };\n} else {\n  var localDate = Date,\n    initialTime = localDate.now();\n  exports.unstable_now = function () {\n    return localDate.now() - initialTime;\n  };\n}\nvar taskQueue = [],\n  timerQueue = [],\n  taskIdCounter = 1,\n  currentTask = null,\n  currentPriorityLevel = 3,\n  isPerformingWork = !1,\n  isHostCallbackScheduled = !1,\n  isHostTimeoutScheduled = !1,\n  needsPaint = !1,\n  localSetTimeout = \"function\" === typeof setTimeout ? setTimeout : null,\n  localClearTimeout = \"function\" === typeof clearTimeout ? clearTimeout : null,\n  localSetImmediate = \"undefined\" !== typeof setImmediate ? setImmediate : null;\nfunction advanceTimers(currentTime) {\n  for (var timer = peek(timerQueue); null !== timer; ) {\n    if (null === timer.callback) pop(timerQueue);\n    else if (timer.startTime <= currentTime)\n      pop(timerQueue),\n        (timer.sortIndex = timer.expirationTime),\n        push(taskQueue, timer);\n    else break;\n    timer = peek(timerQueue);\n  }\n}\nfunction handleTimeout(currentTime) {\n  isHostTimeoutScheduled = !1;\n  advanceTimers(currentTime);\n  if (!isHostCallbackScheduled)\n    if (null !== peek(taskQueue))\n      (isHostCallbackScheduled = !0),\n        isMessageLoopRunning ||\n          ((isMessageLoopRunning = !0), schedulePerformWorkUntilDeadline());\n    else {\n      var firstTimer = peek(timerQueue);\n      null !== firstTimer &&\n        requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime);\n    }\n}\nvar isMessageLoopRunning = !1,\n  taskTimeoutID = -1,\n  frameInterval = 5,\n  startTime = -1;\nfunction shouldYieldToHost() {\n  return needsPaint\n    ? !0\n    : exports.unstable_now() - startTime < frameInterval\n      ? !1\n      : !0;\n}\nfunction performWorkUntilDeadline() {\n  needsPaint = !1;\n  if (isMessageLoopRunning) {\n    var currentTime = exports.unstable_now();\n    startTime = currentTime;\n    var hasMoreWork = !0;\n    try {\n      a: {\n        isHostCallbackScheduled = !1;\n        isHostTimeoutScheduled &&\n          ((isHostTimeoutScheduled = !1),\n          localClearTimeout(taskTimeoutID),\n          (taskTimeoutID = -1));\n        isPerformingWork = !0;\n        var previousPriorityLevel = currentPriorityLevel;\n        try {\n          b: {\n            advanceTimers(currentTime);\n            for (\n              currentTask = peek(taskQueue);\n              null !== currentTask &&\n              !(\n                currentTask.expirationTime > currentTime && shouldYieldToHost()\n              );\n\n            ) {\n              var callback = currentTask.callback;\n              if (\"function\" === typeof callback) {\n                currentTask.callback = null;\n                currentPriorityLevel = currentTask.priorityLevel;\n                var continuationCallback = callback(\n                  currentTask.expirationTime <= currentTime\n                );\n                currentTime = exports.unstable_now();\n                if (\"function\" === typeof continuationCallback) {\n                  currentTask.callback = continuationCallback;\n                  advanceTimers(currentTime);\n                  hasMoreWork = !0;\n                  break b;\n                }\n                currentTask === peek(taskQueue) && pop(taskQueue);\n                advanceTimers(currentTime);\n              } else pop(taskQueue);\n              currentTask = peek(taskQueue);\n            }\n            if (null !== currentTask) hasMoreWork = !0;\n            else {\n              var firstTimer = peek(timerQueue);\n              null !== firstTimer &&\n                requestHostTimeout(\n                  handleTimeout,\n                  firstTimer.startTime - currentTime\n                );\n              hasMoreWork = !1;\n            }\n          }\n          break a;\n        } finally {\n          (currentTask = null),\n            (currentPriorityLevel = previousPriorityLevel),\n            (isPerformingWork = !1);\n        }\n        hasMoreWork = void 0;\n      }\n    } finally {\n      hasMoreWork\n        ? schedulePerformWorkUntilDeadline()\n        : (isMessageLoopRunning = !1);\n    }\n  }\n}\nvar schedulePerformWorkUntilDeadline;\nif (\"function\" === typeof localSetImmediate)\n  schedulePerformWorkUntilDeadline = function () {\n    localSetImmediate(performWorkUntilDeadline);\n  };\nelse if (\"undefined\" !== typeof MessageChannel) {\n  var channel = new MessageChannel(),\n    port = channel.port2;\n  channel.port1.onmessage = performWorkUntilDeadline;\n  schedulePerformWorkUntilDeadline = function () {\n    port.postMessage(null);\n  };\n} else\n  schedulePerformWorkUntilDeadline = function () {\n    localSetTimeout(performWorkUntilDeadline, 0);\n  };\nfunction requestHostTimeout(callback, ms) {\n  taskTimeoutID = localSetTimeout(function () {\n    callback(exports.unstable_now());\n  }, ms);\n}\nexports.unstable_IdlePriority = 5;\nexports.unstable_ImmediatePriority = 1;\nexports.unstable_LowPriority = 4;\nexports.unstable_NormalPriority = 3;\nexports.unstable_Profiling = null;\nexports.unstable_UserBlockingPriority = 2;\nexports.unstable_cancelCallback = function (task) {\n  task.callback = null;\n};\nexports.unstable_forceFrameRate = function (fps) {\n  0 > fps || 125 < fps\n    ? console.error(\n        \"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"\n      )\n    : (frameInterval = 0 < fps ? Math.floor(1e3 / fps) : 5);\n};\nexports.unstable_getCurrentPriorityLevel = function () {\n  return currentPriorityLevel;\n};\nexports.unstable_next = function (eventHandler) {\n  switch (currentPriorityLevel) {\n    case 1:\n    case 2:\n    case 3:\n      var priorityLevel = 3;\n      break;\n    default:\n      priorityLevel = currentPriorityLevel;\n  }\n  var previousPriorityLevel = currentPriorityLevel;\n  currentPriorityLevel = priorityLevel;\n  try {\n    return eventHandler();\n  } finally {\n    currentPriorityLevel = previousPriorityLevel;\n  }\n};\nexports.unstable_requestPaint = function () {\n  needsPaint = !0;\n};\nexports.unstable_runWithPriority = function (priorityLevel, eventHandler) {\n  switch (priorityLevel) {\n    case 1:\n    case 2:\n    case 3:\n    case 4:\n    case 5:\n      break;\n    default:\n      priorityLevel = 3;\n  }\n  var previousPriorityLevel = currentPriorityLevel;\n  currentPriorityLevel = priorityLevel;\n  try {\n    return eventHandler();\n  } finally {\n    currentPriorityLevel = previousPriorityLevel;\n  }\n};\nexports.unstable_scheduleCallback = function (\n  priorityLevel,\n  callback,\n  options\n) {\n  var currentTime = exports.unstable_now();\n  \"object\" === typeof options && null !== options\n    ? ((options = options.delay),\n      (options =\n        \"number\" === typeof options && 0 < options\n          ? currentTime + options\n          : currentTime))\n    : (options = currentTime);\n  switch (priorityLevel) {\n    case 1:\n      var timeout = -1;\n      break;\n    case 2:\n      timeout = 250;\n      break;\n    case 5:\n      timeout = 1073741823;\n      break;\n    case 4:\n      timeout = 1e4;\n      break;\n    default:\n      timeout = 5e3;\n  }\n  timeout = options + timeout;\n  priorityLevel = {\n    id: taskIdCounter++,\n    callback: callback,\n    priorityLevel: priorityLevel,\n    startTime: options,\n    expirationTime: timeout,\n    sortIndex: -1\n  };\n  options > currentTime\n    ? ((priorityLevel.sortIndex = options),\n      push(timerQueue, priorityLevel),\n      null === peek(taskQueue) &&\n        priorityLevel === peek(timerQueue) &&\n        (isHostTimeoutScheduled\n          ? (localClearTimeout(taskTimeoutID), (taskTimeoutID = -1))\n          : (isHostTimeoutScheduled = !0),\n        requestHostTimeout(handleTimeout, options - currentTime)))\n    : ((priorityLevel.sortIndex = timeout),\n      push(taskQueue, priorityLevel),\n      isHostCallbackScheduled ||\n        isPerformingWork ||\n        ((isHostCallbackScheduled = !0),\n        isMessageLoopRunning ||\n          ((isMessageLoopRunning = !0), schedulePerformWorkUntilDeadline())));\n  return priorityLevel;\n};\nexports.unstable_shouldYield = shouldYieldToHost;\nexports.unstable_wrapCallback = function (callback) {\n  var parentPriorityLevel = currentPriorityLevel;\n  return function () {\n    var previousPriorityLevel = currentPriorityLevel;\n    currentPriorityLevel = parentPriorityLevel;\n    try {\n      return callback.apply(this, arguments);\n    } finally {\n      currentPriorityLevel = previousPriorityLevel;\n    }\n  };\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/scheduler.production.js');\n} else {\n  module.exports = require('./cjs/scheduler.development.js');\n}\n","/**\n * @license React\n * react.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n  REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n  REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n  REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n  REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n  REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n  REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n  REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n  REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n  REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n  REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n  MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nfunction getIteratorFn(maybeIterable) {\n  if (null === maybeIterable || \"object\" !== typeof maybeIterable) return null;\n  maybeIterable =\n    (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n    maybeIterable[\"@@iterator\"];\n  return \"function\" === typeof maybeIterable ? maybeIterable : null;\n}\nvar ReactNoopUpdateQueue = {\n    isMounted: function () {\n      return !1;\n    },\n    enqueueForceUpdate: function () {},\n    enqueueReplaceState: function () {},\n    enqueueSetState: function () {}\n  },\n  assign = Object.assign,\n  emptyObject = {};\nfunction Component(props, context, updater) {\n  this.props = props;\n  this.context = context;\n  this.refs = emptyObject;\n  this.updater = updater || ReactNoopUpdateQueue;\n}\nComponent.prototype.isReactComponent = {};\nComponent.prototype.setState = function (partialState, callback) {\n  if (\n    \"object\" !== typeof partialState &&\n    \"function\" !== typeof partialState &&\n    null != partialState\n  )\n    throw Error(\n      \"takes an object of state variables to update or a function which returns an object of state variables.\"\n    );\n  this.updater.enqueueSetState(this, partialState, callback, \"setState\");\n};\nComponent.prototype.forceUpdate = function (callback) {\n  this.updater.enqueueForceUpdate(this, callback, \"forceUpdate\");\n};\nfunction ComponentDummy() {}\nComponentDummy.prototype = Component.prototype;\nfunction PureComponent(props, context, updater) {\n  this.props = props;\n  this.context = context;\n  this.refs = emptyObject;\n  this.updater = updater || ReactNoopUpdateQueue;\n}\nvar pureComponentPrototype = (PureComponent.prototype = new ComponentDummy());\npureComponentPrototype.constructor = PureComponent;\nassign(pureComponentPrototype, Component.prototype);\npureComponentPrototype.isPureReactComponent = !0;\nvar isArrayImpl = Array.isArray,\n  ReactSharedInternals = { H: null, A: null, T: null, S: null, V: null },\n  hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction ReactElement(type, key, self, source, owner, props) {\n  self = props.ref;\n  return {\n    $$typeof: REACT_ELEMENT_TYPE,\n    type: type,\n    key: key,\n    ref: void 0 !== self ? self : null,\n    props: props\n  };\n}\nfunction cloneAndReplaceKey(oldElement, newKey) {\n  return ReactElement(\n    oldElement.type,\n    newKey,\n    void 0,\n    void 0,\n    void 0,\n    oldElement.props\n  );\n}\nfunction isValidElement(object) {\n  return (\n    \"object\" === typeof object &&\n    null !== object &&\n    object.$$typeof === REACT_ELEMENT_TYPE\n  );\n}\nfunction escape(key) {\n  var escaperLookup = { \"=\": \"=0\", \":\": \"=2\" };\n  return (\n    \"$\" +\n    key.replace(/[=:]/g, function (match) {\n      return escaperLookup[match];\n    })\n  );\n}\nvar userProvidedKeyEscapeRegex = /\\/+/g;\nfunction getElementKey(element, index) {\n  return \"object\" === typeof element && null !== element && null != element.key\n    ? escape(\"\" + element.key)\n    : index.toString(36);\n}\nfunction noop$1() {}\nfunction resolveThenable(thenable) {\n  switch (thenable.status) {\n    case \"fulfilled\":\n      return thenable.value;\n    case \"rejected\":\n      throw thenable.reason;\n    default:\n      switch (\n        (\"string\" === typeof thenable.status\n          ? thenable.then(noop$1, noop$1)\n          : ((thenable.status = \"pending\"),\n            thenable.then(\n              function (fulfilledValue) {\n                \"pending\" === thenable.status &&\n                  ((thenable.status = \"fulfilled\"),\n                  (thenable.value = fulfilledValue));\n              },\n              function (error) {\n                \"pending\" === thenable.status &&\n                  ((thenable.status = \"rejected\"), (thenable.reason = error));\n              }\n            )),\n        thenable.status)\n      ) {\n        case \"fulfilled\":\n          return thenable.value;\n        case \"rejected\":\n          throw thenable.reason;\n      }\n  }\n  throw thenable;\n}\nfunction mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {\n  var type = typeof children;\n  if (\"undefined\" === type || \"boolean\" === type) children = null;\n  var invokeCallback = !1;\n  if (null === children) invokeCallback = !0;\n  else\n    switch (type) {\n      case \"bigint\":\n      case \"string\":\n      case \"number\":\n        invokeCallback = !0;\n        break;\n      case \"object\":\n        switch (children.$$typeof) {\n          case REACT_ELEMENT_TYPE:\n          case REACT_PORTAL_TYPE:\n            invokeCallback = !0;\n            break;\n          case REACT_LAZY_TYPE:\n            return (\n              (invokeCallback = children._init),\n              mapIntoArray(\n                invokeCallback(children._payload),\n                array,\n                escapedPrefix,\n                nameSoFar,\n                callback\n              )\n            );\n        }\n    }\n  if (invokeCallback)\n    return (\n      (callback = callback(children)),\n      (invokeCallback =\n        \"\" === nameSoFar ? \".\" + getElementKey(children, 0) : nameSoFar),\n      isArrayImpl(callback)\n        ? ((escapedPrefix = \"\"),\n          null != invokeCallback &&\n            (escapedPrefix =\n              invokeCallback.replace(userProvidedKeyEscapeRegex, \"$&/\") + \"/\"),\n          mapIntoArray(callback, array, escapedPrefix, \"\", function (c) {\n            return c;\n          }))\n        : null != callback &&\n          (isValidElement(callback) &&\n            (callback = cloneAndReplaceKey(\n              callback,\n              escapedPrefix +\n                (null == callback.key ||\n                (children && children.key === callback.key)\n                  ? \"\"\n                  : (\"\" + callback.key).replace(\n                      userProvidedKeyEscapeRegex,\n                      \"$&/\"\n                    ) + \"/\") +\n                invokeCallback\n            )),\n          array.push(callback)),\n      1\n    );\n  invokeCallback = 0;\n  var nextNamePrefix = \"\" === nameSoFar ? \".\" : nameSoFar + \":\";\n  if (isArrayImpl(children))\n    for (var i = 0; i < children.length; i++)\n      (nameSoFar = children[i]),\n        (type = nextNamePrefix + getElementKey(nameSoFar, i)),\n        (invokeCallback += mapIntoArray(\n          nameSoFar,\n          array,\n          escapedPrefix,\n          type,\n          callback\n        ));\n  else if (((i = getIteratorFn(children)), \"function\" === typeof i))\n    for (\n      children = i.call(children), i = 0;\n      !(nameSoFar = children.next()).done;\n\n    )\n      (nameSoFar = nameSoFar.value),\n        (type = nextNamePrefix + getElementKey(nameSoFar, i++)),\n        (invokeCallback += mapIntoArray(\n          nameSoFar,\n          array,\n          escapedPrefix,\n          type,\n          callback\n        ));\n  else if (\"object\" === type) {\n    if (\"function\" === typeof children.then)\n      return mapIntoArray(\n        resolveThenable(children),\n        array,\n        escapedPrefix,\n        nameSoFar,\n        callback\n      );\n    array = String(children);\n    throw Error(\n      \"Objects are not valid as a React child (found: \" +\n        (\"[object Object]\" === array\n          ? \"object with keys {\" + Object.keys(children).join(\", \") + \"}\"\n          : array) +\n        \"). If you meant to render a collection of children, use an array instead.\"\n    );\n  }\n  return invokeCallback;\n}\nfunction mapChildren(children, func, context) {\n  if (null == children) return children;\n  var result = [],\n    count = 0;\n  mapIntoArray(children, result, \"\", \"\", function (child) {\n    return func.call(context, child, count++);\n  });\n  return result;\n}\nfunction lazyInitializer(payload) {\n  if (-1 === payload._status) {\n    var ctor = payload._result;\n    ctor = ctor();\n    ctor.then(\n      function (moduleObject) {\n        if (0 === payload._status || -1 === payload._status)\n          (payload._status = 1), (payload._result = moduleObject);\n      },\n      function (error) {\n        if (0 === payload._status || -1 === payload._status)\n          (payload._status = 2), (payload._result = error);\n      }\n    );\n    -1 === payload._status && ((payload._status = 0), (payload._result = ctor));\n  }\n  if (1 === payload._status) return payload._result.default;\n  throw payload._result;\n}\nvar reportGlobalError =\n  \"function\" === typeof reportError\n    ? reportError\n    : function (error) {\n        if (\n          \"object\" === typeof window &&\n          \"function\" === typeof window.ErrorEvent\n        ) {\n          var event = new window.ErrorEvent(\"error\", {\n            bubbles: !0,\n            cancelable: !0,\n            message:\n              \"object\" === typeof error &&\n              null !== error &&\n              \"string\" === typeof error.message\n                ? String(error.message)\n                : String(error),\n            error: error\n          });\n          if (!window.dispatchEvent(event)) return;\n        } else if (\n          \"object\" === typeof process &&\n          \"function\" === typeof process.emit\n        ) {\n          process.emit(\"uncaughtException\", error);\n          return;\n        }\n        console.error(error);\n      };\nfunction noop() {}\nexports.Children = {\n  map: mapChildren,\n  forEach: function (children, forEachFunc, forEachContext) {\n    mapChildren(\n      children,\n      function () {\n        forEachFunc.apply(this, arguments);\n      },\n      forEachContext\n    );\n  },\n  count: function (children) {\n    var n = 0;\n    mapChildren(children, function () {\n      n++;\n    });\n    return n;\n  },\n  toArray: function (children) {\n    return (\n      mapChildren(children, function (child) {\n        return child;\n      }) || []\n    );\n  },\n  only: function (children) {\n    if (!isValidElement(children))\n      throw Error(\n        \"React.Children.only expected to receive a single React element child.\"\n      );\n    return children;\n  }\n};\nexports.Component = Component;\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.Profiler = REACT_PROFILER_TYPE;\nexports.PureComponent = PureComponent;\nexports.StrictMode = REACT_STRICT_MODE_TYPE;\nexports.Suspense = REACT_SUSPENSE_TYPE;\nexports.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =\n  ReactSharedInternals;\nexports.__COMPILER_RUNTIME = {\n  __proto__: null,\n  c: function (size) {\n    return ReactSharedInternals.H.useMemoCache(size);\n  }\n};\nexports.cache = function (fn) {\n  return function () {\n    return fn.apply(null, arguments);\n  };\n};\nexports.cloneElement = function (element, config, children) {\n  if (null === element || void 0 === element)\n    throw Error(\n      \"The argument must be a React element, but you passed \" + element + \".\"\n    );\n  var props = assign({}, element.props),\n    key = element.key,\n    owner = void 0;\n  if (null != config)\n    for (propName in (void 0 !== config.ref && (owner = void 0),\n    void 0 !== config.key && (key = \"\" + config.key),\n    config))\n      !hasOwnProperty.call(config, propName) ||\n        \"key\" === propName ||\n        \"__self\" === propName ||\n        \"__source\" === propName ||\n        (\"ref\" === propName && void 0 === config.ref) ||\n        (props[propName] = config[propName]);\n  var propName = arguments.length - 2;\n  if (1 === propName) props.children = children;\n  else if (1 < propName) {\n    for (var childArray = Array(propName), i = 0; i < propName; i++)\n      childArray[i] = arguments[i + 2];\n    props.children = childArray;\n  }\n  return ReactElement(element.type, key, void 0, void 0, owner, props);\n};\nexports.createContext = function (defaultValue) {\n  defaultValue = {\n    $$typeof: REACT_CONTEXT_TYPE,\n    _currentValue: defaultValue,\n    _currentValue2: defaultValue,\n    _threadCount: 0,\n    Provider: null,\n    Consumer: null\n  };\n  defaultValue.Provider = defaultValue;\n  defaultValue.Consumer = {\n    $$typeof: REACT_CONSUMER_TYPE,\n    _context: defaultValue\n  };\n  return defaultValue;\n};\nexports.createElement = function (type, config, children) {\n  var propName,\n    props = {},\n    key = null;\n  if (null != config)\n    for (propName in (void 0 !== config.key && (key = \"\" + config.key), config))\n      hasOwnProperty.call(config, propName) &&\n        \"key\" !== propName &&\n        \"__self\" !== propName &&\n        \"__source\" !== propName &&\n        (props[propName] = config[propName]);\n  var childrenLength = arguments.length - 2;\n  if (1 === childrenLength) props.children = children;\n  else if (1 < childrenLength) {\n    for (var childArray = Array(childrenLength), i = 0; i < childrenLength; i++)\n      childArray[i] = arguments[i + 2];\n    props.children = childArray;\n  }\n  if (type && type.defaultProps)\n    for (propName in ((childrenLength = type.defaultProps), childrenLength))\n      void 0 === props[propName] &&\n        (props[propName] = childrenLength[propName]);\n  return ReactElement(type, key, void 0, void 0, null, props);\n};\nexports.createRef = function () {\n  return { current: null };\n};\nexports.forwardRef = function (render) {\n  return { $$typeof: REACT_FORWARD_REF_TYPE, render: render };\n};\nexports.isValidElement = isValidElement;\nexports.lazy = function (ctor) {\n  return {\n    $$typeof: REACT_LAZY_TYPE,\n    _payload: { _status: -1, _result: ctor },\n    _init: lazyInitializer\n  };\n};\nexports.memo = function (type, compare) {\n  return {\n    $$typeof: REACT_MEMO_TYPE,\n    type: type,\n    compare: void 0 === compare ? null : compare\n  };\n};\nexports.startTransition = function (scope) {\n  var prevTransition = ReactSharedInternals.T,\n    currentTransition = {};\n  ReactSharedInternals.T = currentTransition;\n  try {\n    var returnValue = scope(),\n      onStartTransitionFinish = ReactSharedInternals.S;\n    null !== onStartTransitionFinish &&\n      onStartTransitionFinish(currentTransition, returnValue);\n    \"object\" === typeof returnValue &&\n      null !== returnValue &&\n      \"function\" === typeof returnValue.then &&\n      returnValue.then(noop, reportGlobalError);\n  } catch (error) {\n    reportGlobalError(error);\n  } finally {\n    ReactSharedInternals.T = prevTransition;\n  }\n};\nexports.unstable_useCacheRefresh = function () {\n  return ReactSharedInternals.H.useCacheRefresh();\n};\nexports.use = function (usable) {\n  return ReactSharedInternals.H.use(usable);\n};\nexports.useActionState = function (action, initialState, permalink) {\n  return ReactSharedInternals.H.useActionState(action, initialState, permalink);\n};\nexports.useCallback = function (callback, deps) {\n  return ReactSharedInternals.H.useCallback(callback, deps);\n};\nexports.useContext = function (Context) {\n  return ReactSharedInternals.H.useContext(Context);\n};\nexports.useDebugValue = function () {};\nexports.useDeferredValue = function (value, initialValue) {\n  return ReactSharedInternals.H.useDeferredValue(value, initialValue);\n};\nexports.useEffect = function (create, createDeps, update) {\n  var dispatcher = ReactSharedInternals.H;\n  if (\"function\" === typeof update)\n    throw Error(\n      \"useEffect CRUD overload is not enabled in this build of React.\"\n    );\n  return dispatcher.useEffect(create, createDeps);\n};\nexports.useId = function () {\n  return ReactSharedInternals.H.useId();\n};\nexports.useImperativeHandle = function (ref, create, deps) {\n  return ReactSharedInternals.H.useImperativeHandle(ref, create, deps);\n};\nexports.useInsertionEffect = function (create, deps) {\n  return ReactSharedInternals.H.useInsertionEffect(create, deps);\n};\nexports.useLayoutEffect = function (create, deps) {\n  return ReactSharedInternals.H.useLayoutEffect(create, deps);\n};\nexports.useMemo = function (create, deps) {\n  return ReactSharedInternals.H.useMemo(create, deps);\n};\nexports.useOptimistic = function (passthrough, reducer) {\n  return ReactSharedInternals.H.useOptimistic(passthrough, reducer);\n};\nexports.useReducer = function (reducer, initialArg, init) {\n  return ReactSharedInternals.H.useReducer(reducer, initialArg, init);\n};\nexports.useRef = function (initialValue) {\n  return ReactSharedInternals.H.useRef(initialValue);\n};\nexports.useState = function (initialState) {\n  return ReactSharedInternals.H.useState(initialState);\n};\nexports.useSyncExternalStore = function (\n  subscribe,\n  getSnapshot,\n  getServerSnapshot\n) {\n  return ReactSharedInternals.H.useSyncExternalStore(\n    subscribe,\n    getSnapshot,\n    getServerSnapshot\n  );\n};\nexports.useTransition = function () {\n  return ReactSharedInternals.H.useTransition();\n};\nexports.version = \"19.1.0\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react.production.js');\n} else {\n  module.exports = require('./cjs/react.development.js');\n}\n","/**\n * @license React\n * react-dom.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\");\nfunction formatProdErrorMessage(code) {\n  var url = \"https://react.dev/errors/\" + code;\n  if (1 < arguments.length) {\n    url += \"?args[]=\" + encodeURIComponent(arguments[1]);\n    for (var i = 2; i < arguments.length; i++)\n      url += \"&args[]=\" + encodeURIComponent(arguments[i]);\n  }\n  return (\n    \"Minified React error #\" +\n    code +\n    \"; visit \" +\n    url +\n    \" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"\n  );\n}\nfunction noop() {}\nvar Internals = {\n    d: {\n      f: noop,\n      r: function () {\n        throw Error(formatProdErrorMessage(522));\n      },\n      D: noop,\n      C: noop,\n      L: noop,\n      m: noop,\n      X: noop,\n      S: noop,\n      M: noop\n    },\n    p: 0,\n    findDOMNode: null\n  },\n  REACT_PORTAL_TYPE = Symbol.for(\"react.portal\");\nfunction createPortal$1(children, containerInfo, implementation) {\n  var key =\n    3 < arguments.length && void 0 !== arguments[3] ? arguments[3] : null;\n  return {\n    $$typeof: REACT_PORTAL_TYPE,\n    key: null == key ? null : \"\" + key,\n    children: children,\n    containerInfo: containerInfo,\n    implementation: implementation\n  };\n}\nvar ReactSharedInternals =\n  React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;\nfunction getCrossOriginStringAs(as, input) {\n  if (\"font\" === as) return \"\";\n  if (\"string\" === typeof input)\n    return \"use-credentials\" === input ? input : \"\";\n}\nexports.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =\n  Internals;\nexports.createPortal = function (children, container) {\n  var key =\n    2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : null;\n  if (\n    !container ||\n    (1 !== container.nodeType &&\n      9 !== container.nodeType &&\n      11 !== container.nodeType)\n  )\n    throw Error(formatProdErrorMessage(299));\n  return createPortal$1(children, container, null, key);\n};\nexports.flushSync = function (fn) {\n  var previousTransition = ReactSharedInternals.T,\n    previousUpdatePriority = Internals.p;\n  try {\n    if (((ReactSharedInternals.T = null), (Internals.p = 2), fn)) return fn();\n  } finally {\n    (ReactSharedInternals.T = previousTransition),\n      (Internals.p = previousUpdatePriority),\n      Internals.d.f();\n  }\n};\nexports.preconnect = function (href, options) {\n  \"string\" === typeof href &&\n    (options\n      ? ((options = options.crossOrigin),\n        (options =\n          \"string\" === typeof options\n            ? \"use-credentials\" === options\n              ? options\n              : \"\"\n            : void 0))\n      : (options = null),\n    Internals.d.C(href, options));\n};\nexports.prefetchDNS = function (href) {\n  \"string\" === typeof href && Internals.d.D(href);\n};\nexports.preinit = function (href, options) {\n  if (\"string\" === typeof href && options && \"string\" === typeof options.as) {\n    var as = options.as,\n      crossOrigin = getCrossOriginStringAs(as, options.crossOrigin),\n      integrity =\n        \"string\" === typeof options.integrity ? options.integrity : void 0,\n      fetchPriority =\n        \"string\" === typeof options.fetchPriority\n          ? options.fetchPriority\n          : void 0;\n    \"style\" === as\n      ? Internals.d.S(\n          href,\n          \"string\" === typeof options.precedence ? options.precedence : void 0,\n          {\n            crossOrigin: crossOrigin,\n            integrity: integrity,\n            fetchPriority: fetchPriority\n          }\n        )\n      : \"script\" === as &&\n        Internals.d.X(href, {\n          crossOrigin: crossOrigin,\n          integrity: integrity,\n          fetchPriority: fetchPriority,\n          nonce: \"string\" === typeof options.nonce ? options.nonce : void 0\n        });\n  }\n};\nexports.preinitModule = function (href, options) {\n  if (\"string\" === typeof href)\n    if (\"object\" === typeof options && null !== options) {\n      if (null == options.as || \"script\" === options.as) {\n        var crossOrigin = getCrossOriginStringAs(\n          options.as,\n          options.crossOrigin\n        );\n        Internals.d.M(href, {\n          crossOrigin: crossOrigin,\n          integrity:\n            \"string\" === typeof options.integrity ? options.integrity : void 0,\n          nonce: \"string\" === typeof options.nonce ? options.nonce : void 0\n        });\n      }\n    } else null == options && Internals.d.M(href);\n};\nexports.preload = function (href, options) {\n  if (\n    \"string\" === typeof href &&\n    \"object\" === typeof options &&\n    null !== options &&\n    \"string\" === typeof options.as\n  ) {\n    var as = options.as,\n      crossOrigin = getCrossOriginStringAs(as, options.crossOrigin);\n    Internals.d.L(href, as, {\n      crossOrigin: crossOrigin,\n      integrity:\n        \"string\" === typeof options.integrity ? options.integrity : void 0,\n      nonce: \"string\" === typeof options.nonce ? options.nonce : void 0,\n      type: \"string\" === typeof options.type ? options.type : void 0,\n      fetchPriority:\n        \"string\" === typeof options.fetchPriority\n          ? options.fetchPriority\n          : void 0,\n      referrerPolicy:\n        \"string\" === typeof options.referrerPolicy\n          ? options.referrerPolicy\n          : void 0,\n      imageSrcSet:\n        \"string\" === typeof options.imageSrcSet ? options.imageSrcSet : void 0,\n      imageSizes:\n        \"string\" === typeof options.imageSizes ? options.imageSizes : void 0,\n      media: \"string\" === typeof options.media ? options.media : void 0\n    });\n  }\n};\nexports.preloadModule = function (href, options) {\n  if (\"string\" === typeof href)\n    if (options) {\n      var crossOrigin = getCrossOriginStringAs(options.as, options.crossOrigin);\n      Internals.d.m(href, {\n        as:\n          \"string\" === typeof options.as && \"script\" !== options.as\n            ? options.as\n            : void 0,\n        crossOrigin: crossOrigin,\n        integrity:\n          \"string\" === typeof options.integrity ? options.integrity : void 0\n      });\n    } else Internals.d.m(href);\n};\nexports.requestFormReset = function (form) {\n  Internals.d.r(form);\n};\nexports.unstable_batchedUpdates = function (fn, a) {\n  return fn(a);\n};\nexports.useFormState = function (action, initialState, permalink) {\n  return ReactSharedInternals.H.useFormState(action, initialState, permalink);\n};\nexports.useFormStatus = function () {\n  return ReactSharedInternals.H.useHostTransitionStatus();\n};\nexports.version = \"19.1.0\";\n","'use strict';\n\nfunction checkDCE() {\n  /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n  if (\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n  ) {\n    return;\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    // This branch is unreachable because this function is only called\n    // in production, but the condition is true only in development.\n    // Therefore if the branch is still here, dead code elimination wasn't\n    // properly applied.\n    // Don't change the message. React DevTools relies on it. Also make sure\n    // this message doesn't occur elsewhere in this function, or it will cause\n    // a false positive.\n    throw new Error('^_^');\n  }\n  try {\n    // Verify that the code above has been dead code eliminated (DCE'd).\n    __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n  } catch (err) {\n    // DevTools shouldn't crash React, no matter what.\n    // We should still report in case we break this code.\n    console.error(err);\n  }\n}\n\nif (process.env.NODE_ENV === 'production') {\n  // DCE check should happen before ReactDOM bundle executes so that\n  // DevTools can report bad minification during injection.\n  checkDCE();\n  module.exports = require('./cjs/react-dom.production.js');\n} else {\n  module.exports = require('./cjs/react-dom.development.js');\n}\n","/**\n * @license React\n * react-dom-client.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n\"use strict\";\nvar Scheduler = require(\"scheduler\"),\n  React = require(\"react\"),\n  ReactDOM = require(\"react-dom\");\nfunction formatProdErrorMessage(code) {\n  var url = \"https://react.dev/errors/\" + code;\n  if (1 < arguments.length) {\n    url += \"?args[]=\" + encodeURIComponent(arguments[1]);\n    for (var i = 2; i < arguments.length; i++)\n      url += \"&args[]=\" + encodeURIComponent(arguments[i]);\n  }\n  return (\n    \"Minified React error #\" +\n    code +\n    \"; visit \" +\n    url +\n    \" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"\n  );\n}\nfunction isValidContainer(node) {\n  return !(\n    !node ||\n    (1 !== node.nodeType && 9 !== node.nodeType && 11 !== node.nodeType)\n  );\n}\nfunction getNearestMountedFiber(fiber) {\n  var node = fiber,\n    nearestMounted = fiber;\n  if (fiber.alternate) for (; node.return; ) node = node.return;\n  else {\n    fiber = node;\n    do\n      (node = fiber),\n        0 !== (node.flags & 4098) && (nearestMounted = node.return),\n        (fiber = node.return);\n    while (fiber);\n  }\n  return 3 === node.tag ? nearestMounted : null;\n}\nfunction getSuspenseInstanceFromFiber(fiber) {\n  if (13 === fiber.tag) {\n    var suspenseState = fiber.memoizedState;\n    null === suspenseState &&\n      ((fiber = fiber.alternate),\n      null !== fiber && (suspenseState = fiber.memoizedState));\n    if (null !== suspenseState) return suspenseState.dehydrated;\n  }\n  return null;\n}\nfunction assertIsMounted(fiber) {\n  if (getNearestMountedFiber(fiber) !== fiber)\n    throw Error(formatProdErrorMessage(188));\n}\nfunction findCurrentFiberUsingSlowPath(fiber) {\n  var alternate = fiber.alternate;\n  if (!alternate) {\n    alternate = getNearestMountedFiber(fiber);\n    if (null === alternate) throw Error(formatProdErrorMessage(188));\n    return alternate !== fiber ? null : fiber;\n  }\n  for (var a = fiber, b = alternate; ; ) {\n    var parentA = a.return;\n    if (null === parentA) break;\n    var parentB = parentA.alternate;\n    if (null === parentB) {\n      b = parentA.return;\n      if (null !== b) {\n        a = b;\n        continue;\n      }\n      break;\n    }\n    if (parentA.child === parentB.child) {\n      for (parentB = parentA.child; parentB; ) {\n        if (parentB === a) return assertIsMounted(parentA), fiber;\n        if (parentB === b) return assertIsMounted(parentA), alternate;\n        parentB = parentB.sibling;\n      }\n      throw Error(formatProdErrorMessage(188));\n    }\n    if (a.return !== b.return) (a = parentA), (b = parentB);\n    else {\n      for (var didFindChild = !1, child$0 = parentA.child; child$0; ) {\n        if (child$0 === a) {\n          didFindChild = !0;\n          a = parentA;\n          b = parentB;\n          break;\n        }\n        if (child$0 === b) {\n          didFindChild = !0;\n          b = parentA;\n          a = parentB;\n          break;\n        }\n        child$0 = child$0.sibling;\n      }\n      if (!didFindChild) {\n        for (child$0 = parentB.child; child$0; ) {\n          if (child$0 === a) {\n            didFindChild = !0;\n            a = parentB;\n            b = parentA;\n            break;\n          }\n          if (child$0 === b) {\n            didFindChild = !0;\n            b = parentB;\n            a = parentA;\n            break;\n          }\n          child$0 = child$0.sibling;\n        }\n        if (!didFindChild) throw Error(formatProdErrorMessage(189));\n      }\n    }\n    if (a.alternate !== b) throw Error(formatProdErrorMessage(190));\n  }\n  if (3 !== a.tag) throw Error(formatProdErrorMessage(188));\n  return a.stateNode.current === a ? fiber : alternate;\n}\nfunction findCurrentHostFiberImpl(node) {\n  var tag = node.tag;\n  if (5 === tag || 26 === tag || 27 === tag || 6 === tag) return node;\n  for (node = node.child; null !== node; ) {\n    tag = findCurrentHostFiberImpl(node);\n    if (null !== tag) return tag;\n    node = node.sibling;\n  }\n  return null;\n}\nvar assign = Object.assign,\n  REACT_LEGACY_ELEMENT_TYPE = Symbol.for(\"react.element\"),\n  REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n  REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n  REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n  REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n  REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n  REACT_PROVIDER_TYPE = Symbol.for(\"react.provider\"),\n  REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n  REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n  REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n  REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n  REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n  REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n  REACT_LAZY_TYPE = Symbol.for(\"react.lazy\");\nSymbol.for(\"react.scope\");\nvar REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\");\nSymbol.for(\"react.legacy_hidden\");\nSymbol.for(\"react.tracing_marker\");\nvar REACT_MEMO_CACHE_SENTINEL = Symbol.for(\"react.memo_cache_sentinel\");\nSymbol.for(\"react.view_transition\");\nvar MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nfunction getIteratorFn(maybeIterable) {\n  if (null === maybeIterable || \"object\" !== typeof maybeIterable) return null;\n  maybeIterable =\n    (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n    maybeIterable[\"@@iterator\"];\n  return \"function\" === typeof maybeIterable ? maybeIterable : null;\n}\nvar REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\");\nfunction getComponentNameFromType(type) {\n  if (null == type) return null;\n  if (\"function\" === typeof type)\n    return type.$$typeof === REACT_CLIENT_REFERENCE\n      ? null\n      : type.displayName || type.name || null;\n  if (\"string\" === typeof type) return type;\n  switch (type) {\n    case REACT_FRAGMENT_TYPE:\n      return \"Fragment\";\n    case REACT_PROFILER_TYPE:\n      return \"Profiler\";\n    case REACT_STRICT_MODE_TYPE:\n      return \"StrictMode\";\n    case REACT_SUSPENSE_TYPE:\n      return \"Suspense\";\n    case REACT_SUSPENSE_LIST_TYPE:\n      return \"SuspenseList\";\n    case REACT_ACTIVITY_TYPE:\n      return \"Activity\";\n  }\n  if (\"object\" === typeof type)\n    switch (type.$$typeof) {\n      case REACT_PORTAL_TYPE:\n        return \"Portal\";\n      case REACT_CONTEXT_TYPE:\n        return (type.displayName || \"Context\") + \".Provider\";\n      case REACT_CONSUMER_TYPE:\n        return (type._context.displayName || \"Context\") + \".Consumer\";\n      case REACT_FORWARD_REF_TYPE:\n        var innerType = type.render;\n        type = type.displayName;\n        type ||\n          ((type = innerType.displayName || innerType.name || \"\"),\n          (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n        return type;\n      case REACT_MEMO_TYPE:\n        return (\n          (innerType = type.displayName || null),\n          null !== innerType\n            ? innerType\n            : getComponentNameFromType(type.type) || \"Memo\"\n        );\n      case REACT_LAZY_TYPE:\n        innerType = type._payload;\n        type = type._init;\n        try {\n          return getComponentNameFromType(type(innerType));\n        } catch (x) {}\n    }\n  return null;\n}\nvar isArrayImpl = Array.isArray,\n  ReactSharedInternals =\n    React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n  ReactDOMSharedInternals =\n    ReactDOM.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n  sharedNotPendingObject = {\n    pending: !1,\n    data: null,\n    method: null,\n    action: null\n  },\n  valueStack = [],\n  index = -1;\nfunction createCursor(defaultValue) {\n  return { current: defaultValue };\n}\nfunction pop(cursor) {\n  0 > index ||\n    ((cursor.current = valueStack[index]), (valueStack[index] = null), index--);\n}\nfunction push(cursor, value) {\n  index++;\n  valueStack[index] = cursor.current;\n  cursor.current = value;\n}\nvar contextStackCursor = createCursor(null),\n  contextFiberStackCursor = createCursor(null),\n  rootInstanceStackCursor = createCursor(null),\n  hostTransitionProviderCursor = createCursor(null);\nfunction pushHostContainer(fiber, nextRootInstance) {\n  push(rootInstanceStackCursor, nextRootInstance);\n  push(contextFiberStackCursor, fiber);\n  push(contextStackCursor, null);\n  switch (nextRootInstance.nodeType) {\n    case 9:\n    case 11:\n      fiber = (fiber = nextRootInstance.documentElement)\n        ? (fiber = fiber.namespaceURI)\n          ? getOwnHostContext(fiber)\n          : 0\n        : 0;\n      break;\n    default:\n      if (\n        ((fiber = nextRootInstance.tagName),\n        (nextRootInstance = nextRootInstance.namespaceURI))\n      )\n        (nextRootInstance = getOwnHostContext(nextRootInstance)),\n          (fiber = getChildHostContextProd(nextRootInstance, fiber));\n      else\n        switch (fiber) {\n          case \"svg\":\n            fiber = 1;\n            break;\n          case \"math\":\n            fiber = 2;\n            break;\n          default:\n            fiber = 0;\n        }\n  }\n  pop(contextStackCursor);\n  push(contextStackCursor, fiber);\n}\nfunction popHostContainer() {\n  pop(contextStackCursor);\n  pop(contextFiberStackCursor);\n  pop(rootInstanceStackCursor);\n}\nfunction pushHostContext(fiber) {\n  null !== fiber.memoizedState && push(hostTransitionProviderCursor, fiber);\n  var context = contextStackCursor.current;\n  var JSCompiler_inline_result = getChildHostContextProd(context, fiber.type);\n  context !== JSCompiler_inline_result &&\n    (push(contextFiberStackCursor, fiber),\n    push(contextStackCursor, JSCompiler_inline_result));\n}\nfunction popHostContext(fiber) {\n  contextFiberStackCursor.current === fiber &&\n    (pop(contextStackCursor), pop(contextFiberStackCursor));\n  hostTransitionProviderCursor.current === fiber &&\n    (pop(hostTransitionProviderCursor),\n    (HostTransitionContext._currentValue = sharedNotPendingObject));\n}\nvar hasOwnProperty = Object.prototype.hasOwnProperty,\n  scheduleCallback$3 = Scheduler.unstable_scheduleCallback,\n  cancelCallback$1 = Scheduler.unstable_cancelCallback,\n  shouldYield = Scheduler.unstable_shouldYield,\n  requestPaint = Scheduler.unstable_requestPaint,\n  now = Scheduler.unstable_now,\n  getCurrentPriorityLevel = Scheduler.unstable_getCurrentPriorityLevel,\n  ImmediatePriority = Scheduler.unstable_ImmediatePriority,\n  UserBlockingPriority = Scheduler.unstable_UserBlockingPriority,\n  NormalPriority$1 = Scheduler.unstable_NormalPriority,\n  LowPriority = Scheduler.unstable_LowPriority,\n  IdlePriority = Scheduler.unstable_IdlePriority,\n  log$1 = Scheduler.log,\n  unstable_setDisableYieldValue = Scheduler.unstable_setDisableYieldValue,\n  rendererID = null,\n  injectedHook = null;\nfunction setIsStrictModeForDevtools(newIsStrictMode) {\n  \"function\" === typeof log$1 && unstable_setDisableYieldValue(newIsStrictMode);\n  if (injectedHook && \"function\" === typeof injectedHook.setStrictMode)\n    try {\n      injectedHook.setStrictMode(rendererID, newIsStrictMode);\n    } catch (err) {}\n}\nvar clz32 = Math.clz32 ? Math.clz32 : clz32Fallback,\n  log = Math.log,\n  LN2 = Math.LN2;\nfunction clz32Fallback(x) {\n  x >>>= 0;\n  return 0 === x ? 32 : (31 - ((log(x) / LN2) | 0)) | 0;\n}\nvar nextTransitionLane = 256,\n  nextRetryLane = 4194304;\nfunction getHighestPriorityLanes(lanes) {\n  var pendingSyncLanes = lanes & 42;\n  if (0 !== pendingSyncLanes) return pendingSyncLanes;\n  switch (lanes & -lanes) {\n    case 1:\n      return 1;\n    case 2:\n      return 2;\n    case 4:\n      return 4;\n    case 8:\n      return 8;\n    case 16:\n      return 16;\n    case 32:\n      return 32;\n    case 64:\n      return 64;\n    case 128:\n      return 128;\n    case 256:\n    case 512:\n    case 1024:\n    case 2048:\n    case 4096:\n    case 8192:\n    case 16384:\n    case 32768:\n    case 65536:\n    case 131072:\n    case 262144:\n    case 524288:\n    case 1048576:\n    case 2097152:\n      return lanes & 4194048;\n    case 4194304:\n    case 8388608:\n    case 16777216:\n    case 33554432:\n      return lanes & 62914560;\n    case 67108864:\n      return 67108864;\n    case 134217728:\n      return 134217728;\n    case 268435456:\n      return 268435456;\n    case 536870912:\n      return 536870912;\n    case 1073741824:\n      return 0;\n    default:\n      return lanes;\n  }\n}\nfunction getNextLanes(root, wipLanes, rootHasPendingCommit) {\n  var pendingLanes = root.pendingLanes;\n  if (0 === pendingLanes) return 0;\n  var nextLanes = 0,\n    suspendedLanes = root.suspendedLanes,\n    pingedLanes = root.pingedLanes;\n  root = root.warmLanes;\n  var nonIdlePendingLanes = pendingLanes & 134217727;\n  0 !== nonIdlePendingLanes\n    ? ((pendingLanes = nonIdlePendingLanes & ~suspendedLanes),\n      0 !== pendingLanes\n        ? (nextLanes = getHighestPriorityLanes(pendingLanes))\n        : ((pingedLanes &= nonIdlePendingLanes),\n          0 !== pingedLanes\n            ? (nextLanes = getHighestPriorityLanes(pingedLanes))\n            : rootHasPendingCommit ||\n              ((rootHasPendingCommit = nonIdlePendingLanes & ~root),\n              0 !== rootHasPendingCommit &&\n                (nextLanes = getHighestPriorityLanes(rootHasPendingCommit)))))\n    : ((nonIdlePendingLanes = pendingLanes & ~suspendedLanes),\n      0 !== nonIdlePendingLanes\n        ? (nextLanes = getHighestPriorityLanes(nonIdlePendingLanes))\n        : 0 !== pingedLanes\n          ? (nextLanes = getHighestPriorityLanes(pingedLanes))\n          : rootHasPendingCommit ||\n            ((rootHasPendingCommit = pendingLanes & ~root),\n            0 !== rootHasPendingCommit &&\n              (nextLanes = getHighestPriorityLanes(rootHasPendingCommit))));\n  return 0 === nextLanes\n    ? 0\n    : 0 !== wipLanes &&\n        wipLanes !== nextLanes &&\n        0 === (wipLanes & suspendedLanes) &&\n        ((suspendedLanes = nextLanes & -nextLanes),\n        (rootHasPendingCommit = wipLanes & -wipLanes),\n        suspendedLanes >= rootHasPendingCommit ||\n          (32 === suspendedLanes && 0 !== (rootHasPendingCommit & 4194048)))\n      ? wipLanes\n      : nextLanes;\n}\nfunction checkIfRootIsPrerendering(root, renderLanes) {\n  return (\n    0 ===\n    (root.pendingLanes &\n      ~(root.suspendedLanes & ~root.pingedLanes) &\n      renderLanes)\n  );\n}\nfunction computeExpirationTime(lane, currentTime) {\n  switch (lane) {\n    case 1:\n    case 2:\n    case 4:\n    case 8:\n    case 64:\n      return currentTime + 250;\n    case 16:\n    case 32:\n    case 128:\n    case 256:\n    case 512:\n    case 1024:\n    case 2048:\n    case 4096:\n    case 8192:\n    case 16384:\n    case 32768:\n    case 65536:\n    case 131072:\n    case 262144:\n    case 524288:\n    case 1048576:\n    case 2097152:\n      return currentTime + 5e3;\n    case 4194304:\n    case 8388608:\n    case 16777216:\n    case 33554432:\n      return -1;\n    case 67108864:\n    case 134217728:\n    case 268435456:\n    case 536870912:\n    case 1073741824:\n      return -1;\n    default:\n      return -1;\n  }\n}\nfunction claimNextTransitionLane() {\n  var lane = nextTransitionLane;\n  nextTransitionLane <<= 1;\n  0 === (nextTransitionLane & 4194048) && (nextTransitionLane = 256);\n  return lane;\n}\nfunction claimNextRetryLane() {\n  var lane = nextRetryLane;\n  nextRetryLane <<= 1;\n  0 === (nextRetryLane & 62914560) && (nextRetryLane = 4194304);\n  return lane;\n}\nfunction createLaneMap(initial) {\n  for (var laneMap = [], i = 0; 31 > i; i++) laneMap.push(initial);\n  return laneMap;\n}\nfunction markRootUpdated$1(root, updateLane) {\n  root.pendingLanes |= updateLane;\n  268435456 !== updateLane &&\n    ((root.suspendedLanes = 0), (root.pingedLanes = 0), (root.warmLanes = 0));\n}\nfunction markRootFinished(\n  root,\n  finishedLanes,\n  remainingLanes,\n  spawnedLane,\n  updatedLanes,\n  suspendedRetryLanes\n) {\n  var previouslyPendingLanes = root.pendingLanes;\n  root.pendingLanes = remainingLanes;\n  root.suspendedLanes = 0;\n  root.pingedLanes = 0;\n  root.warmLanes = 0;\n  root.expiredLanes &= remainingLanes;\n  root.entangledLanes &= remainingLanes;\n  root.errorRecoveryDisabledLanes &= remainingLanes;\n  root.shellSuspendCounter = 0;\n  var entanglements = root.entanglements,\n    expirationTimes = root.expirationTimes,\n    hiddenUpdates = root.hiddenUpdates;\n  for (\n    remainingLanes = previouslyPendingLanes & ~remainingLanes;\n    0 < remainingLanes;\n\n  ) {\n    var index$5 = 31 - clz32(remainingLanes),\n      lane = 1 << index$5;\n    entanglements[index$5] = 0;\n    expirationTimes[index$5] = -1;\n    var hiddenUpdatesForLane = hiddenUpdates[index$5];\n    if (null !== hiddenUpdatesForLane)\n      for (\n        hiddenUpdates[index$5] = null, index$5 = 0;\n        index$5 < hiddenUpdatesForLane.length;\n        index$5++\n      ) {\n        var update = hiddenUpdatesForLane[index$5];\n        null !== update && (update.lane &= -536870913);\n      }\n    remainingLanes &= ~lane;\n  }\n  0 !== spawnedLane && markSpawnedDeferredLane(root, spawnedLane, 0);\n  0 !== suspendedRetryLanes &&\n    0 === updatedLanes &&\n    0 !== root.tag &&\n    (root.suspendedLanes |=\n      suspendedRetryLanes & ~(previouslyPendingLanes & ~finishedLanes));\n}\nfunction markSpawnedDeferredLane(root, spawnedLane, entangledLanes) {\n  root.pendingLanes |= spawnedLane;\n  root.suspendedLanes &= ~spawnedLane;\n  var spawnedLaneIndex = 31 - clz32(spawnedLane);\n  root.entangledLanes |= spawnedLane;\n  root.entanglements[spawnedLaneIndex] =\n    root.entanglements[spawnedLaneIndex] |\n    1073741824 |\n    (entangledLanes & 4194090);\n}\nfunction markRootEntangled(root, entangledLanes) {\n  var rootEntangledLanes = (root.entangledLanes |= entangledLanes);\n  for (root = root.entanglements; rootEntangledLanes; ) {\n    var index$6 = 31 - clz32(rootEntangledLanes),\n      lane = 1 << index$6;\n    (lane & entangledLanes) | (root[index$6] & entangledLanes) &&\n      (root[index$6] |= entangledLanes);\n    rootEntangledLanes &= ~lane;\n  }\n}\nfunction getBumpedLaneForHydrationByLane(lane) {\n  switch (lane) {\n    case 2:\n      lane = 1;\n      break;\n    case 8:\n      lane = 4;\n      break;\n    case 32:\n      lane = 16;\n      break;\n    case 256:\n    case 512:\n    case 1024:\n    case 2048:\n    case 4096:\n    case 8192:\n    case 16384:\n    case 32768:\n    case 65536:\n    case 131072:\n    case 262144:\n    case 524288:\n    case 1048576:\n    case 2097152:\n    case 4194304:\n    case 8388608:\n    case 16777216:\n    case 33554432:\n      lane = 128;\n      break;\n    case 268435456:\n      lane = 134217728;\n      break;\n    default:\n      lane = 0;\n  }\n  return lane;\n}\nfunction lanesToEventPriority(lanes) {\n  lanes &= -lanes;\n  return 2 < lanes\n    ? 8 < lanes\n      ? 0 !== (lanes & 134217727)\n        ? 32\n        : 268435456\n      : 8\n    : 2;\n}\nfunction resolveUpdatePriority() {\n  var updatePriority = ReactDOMSharedInternals.p;\n  if (0 !== updatePriority) return updatePriority;\n  updatePriority = window.event;\n  return void 0 === updatePriority ? 32 : getEventPriority(updatePriority.type);\n}\nfunction runWithPriority(priority, fn) {\n  var previousPriority = ReactDOMSharedInternals.p;\n  try {\n    return (ReactDOMSharedInternals.p = priority), fn();\n  } finally {\n    ReactDOMSharedInternals.p = previousPriority;\n  }\n}\nvar randomKey = Math.random().toString(36).slice(2),\n  internalInstanceKey = \"__reactFiber$\" + randomKey,\n  internalPropsKey = \"__reactProps$\" + randomKey,\n  internalContainerInstanceKey = \"__reactContainer$\" + randomKey,\n  internalEventHandlersKey = \"__reactEvents$\" + randomKey,\n  internalEventHandlerListenersKey = \"__reactListeners$\" + randomKey,\n  internalEventHandlesSetKey = \"__reactHandles$\" + randomKey,\n  internalRootNodeResourcesKey = \"__reactResources$\" + randomKey,\n  internalHoistableMarker = \"__reactMarker$\" + randomKey;\nfunction detachDeletedInstance(node) {\n  delete node[internalInstanceKey];\n  delete node[internalPropsKey];\n  delete node[internalEventHandlersKey];\n  delete node[internalEventHandlerListenersKey];\n  delete node[internalEventHandlesSetKey];\n}\nfunction getClosestInstanceFromNode(targetNode) {\n  var targetInst = targetNode[internalInstanceKey];\n  if (targetInst) return targetInst;\n  for (var parentNode = targetNode.parentNode; parentNode; ) {\n    if (\n      (targetInst =\n        parentNode[internalContainerInstanceKey] ||\n        parentNode[internalInstanceKey])\n    ) {\n      parentNode = targetInst.alternate;\n      if (\n        null !== targetInst.child ||\n        (null !== parentNode && null !== parentNode.child)\n      )\n        for (\n          targetNode = getParentSuspenseInstance(targetNode);\n          null !== targetNode;\n\n        ) {\n          if ((parentNode = targetNode[internalInstanceKey])) return parentNode;\n          targetNode = getParentSuspenseInstance(targetNode);\n        }\n      return targetInst;\n    }\n    targetNode = parentNode;\n    parentNode = targetNode.parentNode;\n  }\n  return null;\n}\nfunction getInstanceFromNode(node) {\n  if (\n    (node = node[internalInstanceKey] || node[internalContainerInstanceKey])\n  ) {\n    var tag = node.tag;\n    if (\n      5 === tag ||\n      6 === tag ||\n      13 === tag ||\n      26 === tag ||\n      27 === tag ||\n      3 === tag\n    )\n      return node;\n  }\n  return null;\n}\nfunction getNodeFromInstance(inst) {\n  var tag = inst.tag;\n  if (5 === tag || 26 === tag || 27 === tag || 6 === tag) return inst.stateNode;\n  throw Error(formatProdErrorMessage(33));\n}\nfunction getResourcesFromRoot(root) {\n  var resources = root[internalRootNodeResourcesKey];\n  resources ||\n    (resources = root[internalRootNodeResourcesKey] =\n      { hoistableStyles: new Map(), hoistableScripts: new Map() });\n  return resources;\n}\nfunction markNodeAsHoistable(node) {\n  node[internalHoistableMarker] = !0;\n}\nvar allNativeEvents = new Set(),\n  registrationNameDependencies = {};\nfunction registerTwoPhaseEvent(registrationName, dependencies) {\n  registerDirectEvent(registrationName, dependencies);\n  registerDirectEvent(registrationName + \"Capture\", dependencies);\n}\nfunction registerDirectEvent(registrationName, dependencies) {\n  registrationNameDependencies[registrationName] = dependencies;\n  for (\n    registrationName = 0;\n    registrationName < dependencies.length;\n    registrationName++\n  )\n    allNativeEvents.add(dependencies[registrationName]);\n}\nvar VALID_ATTRIBUTE_NAME_REGEX = RegExp(\n    \"^[:A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD][:A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040]*$\"\n  ),\n  illegalAttributeNameCache = {},\n  validatedAttributeNameCache = {};\nfunction isAttributeNameSafe(attributeName) {\n  if (hasOwnProperty.call(validatedAttributeNameCache, attributeName))\n    return !0;\n  if (hasOwnProperty.call(illegalAttributeNameCache, attributeName)) return !1;\n  if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName))\n    return (validatedAttributeNameCache[attributeName] = !0);\n  illegalAttributeNameCache[attributeName] = !0;\n  return !1;\n}\nfunction setValueForAttribute(node, name, value) {\n  if (isAttributeNameSafe(name))\n    if (null === value) node.removeAttribute(name);\n    else {\n      switch (typeof value) {\n        case \"undefined\":\n        case \"function\":\n        case \"symbol\":\n          node.removeAttribute(name);\n          return;\n        case \"boolean\":\n          var prefix$8 = name.toLowerCase().slice(0, 5);\n          if (\"data-\" !== prefix$8 && \"aria-\" !== prefix$8) {\n            node.removeAttribute(name);\n            return;\n          }\n      }\n      node.setAttribute(name, \"\" + value);\n    }\n}\nfunction setValueForKnownAttribute(node, name, value) {\n  if (null === value) node.removeAttribute(name);\n  else {\n    switch (typeof value) {\n      case \"undefined\":\n      case \"function\":\n      case \"symbol\":\n      case \"boolean\":\n        node.removeAttribute(name);\n        return;\n    }\n    node.setAttribute(name, \"\" + value);\n  }\n}\nfunction setValueForNamespacedAttribute(node, namespace, name, value) {\n  if (null === value) node.removeAttribute(name);\n  else {\n    switch (typeof value) {\n      case \"undefined\":\n      case \"function\":\n      case \"symbol\":\n      case \"boolean\":\n        node.removeAttribute(name);\n        return;\n    }\n    node.setAttributeNS(namespace, name, \"\" + value);\n  }\n}\nvar prefix, suffix;\nfunction describeBuiltInComponentFrame(name) {\n  if (void 0 === prefix)\n    try {\n      throw Error();\n    } catch (x) {\n      var match = x.stack.trim().match(/\\n( *(at )?)/);\n      prefix = (match && match[1]) || \"\";\n      suffix =\n        -1 < x.stack.indexOf(\"\\n    at\")\n          ? \" (<anonymous>)\"\n          : -1 < x.stack.indexOf(\"@\")\n            ? \"@unknown:0:0\"\n            : \"\";\n    }\n  return \"\\n\" + prefix + name + suffix;\n}\nvar reentry = !1;\nfunction describeNativeComponentFrame(fn, construct) {\n  if (!fn || reentry) return \"\";\n  reentry = !0;\n  var previousPrepareStackTrace = Error.prepareStackTrace;\n  Error.prepareStackTrace = void 0;\n  try {\n    var RunInRootFrame = {\n      DetermineComponentFrameRoot: function () {\n        try {\n          if (construct) {\n            var Fake = function () {\n              throw Error();\n            };\n            Object.defineProperty(Fake.prototype, \"props\", {\n              set: function () {\n                throw Error();\n              }\n            });\n            if (\"object\" === typeof Reflect && Reflect.construct) {\n              try {\n                Reflect.construct(Fake, []);\n              } catch (x) {\n                var control = x;\n              }\n              Reflect.construct(fn, [], Fake);\n            } else {\n              try {\n                Fake.call();\n              } catch (x$9) {\n                control = x$9;\n              }\n              fn.call(Fake.prototype);\n            }\n          } else {\n            try {\n              throw Error();\n            } catch (x$10) {\n              control = x$10;\n            }\n            (Fake = fn()) &&\n              \"function\" === typeof Fake.catch &&\n              Fake.catch(function () {});\n          }\n        } catch (sample) {\n          if (sample && control && \"string\" === typeof sample.stack)\n            return [sample.stack, control.stack];\n        }\n        return [null, null];\n      }\n    };\n    RunInRootFrame.DetermineComponentFrameRoot.displayName =\n      \"DetermineComponentFrameRoot\";\n    var namePropDescriptor = Object.getOwnPropertyDescriptor(\n      RunInRootFrame.DetermineComponentFrameRoot,\n      \"name\"\n    );\n    namePropDescriptor &&\n      namePropDescriptor.configurable &&\n      Object.defineProperty(\n        RunInRootFrame.DetermineComponentFrameRoot,\n        \"name\",\n        { value: \"DetermineComponentFrameRoot\" }\n      );\n    var _RunInRootFrame$Deter = RunInRootFrame.DetermineComponentFrameRoot(),\n      sampleStack = _RunInRootFrame$Deter[0],\n      controlStack = _RunInRootFrame$Deter[1];\n    if (sampleStack && controlStack) {\n      var sampleLines = sampleStack.split(\"\\n\"),\n        controlLines = controlStack.split(\"\\n\");\n      for (\n        namePropDescriptor = RunInRootFrame = 0;\n        RunInRootFrame < sampleLines.length &&\n        !sampleLines[RunInRootFrame].includes(\"DetermineComponentFrameRoot\");\n\n      )\n        RunInRootFrame++;\n      for (\n        ;\n        namePropDescriptor < controlLines.length &&\n        !controlLines[namePropDescriptor].includes(\n          \"DetermineComponentFrameRoot\"\n        );\n\n      )\n        namePropDescriptor++;\n      if (\n        RunInRootFrame === sampleLines.length ||\n        namePropDescriptor === controlLines.length\n      )\n        for (\n          RunInRootFrame = sampleLines.length - 1,\n            namePropDescriptor = controlLines.length - 1;\n          1 <= RunInRootFrame &&\n          0 <= namePropDescriptor &&\n          sampleLines[RunInRootFrame] !== controlLines[namePropDescriptor];\n\n        )\n          namePropDescriptor--;\n      for (\n        ;\n        1 <= RunInRootFrame && 0 <= namePropDescriptor;\n        RunInRootFrame--, namePropDescriptor--\n      )\n        if (sampleLines[RunInRootFrame] !== controlLines[namePropDescriptor]) {\n          if (1 !== RunInRootFrame || 1 !== namePropDescriptor) {\n            do\n              if (\n                (RunInRootFrame--,\n                namePropDescriptor--,\n                0 > namePropDescriptor ||\n                  sampleLines[RunInRootFrame] !==\n                    controlLines[namePropDescriptor])\n              ) {\n                var frame =\n                  \"\\n\" +\n                  sampleLines[RunInRootFrame].replace(\" at new \", \" at \");\n                fn.displayName &&\n                  frame.includes(\"<anonymous>\") &&\n                  (frame = frame.replace(\"<anonymous>\", fn.displayName));\n                return frame;\n              }\n            while (1 <= RunInRootFrame && 0 <= namePropDescriptor);\n          }\n          break;\n        }\n    }\n  } finally {\n    (reentry = !1), (Error.prepareStackTrace = previousPrepareStackTrace);\n  }\n  return (previousPrepareStackTrace = fn ? fn.displayName || fn.name : \"\")\n    ? describeBuiltInComponentFrame(previousPrepareStackTrace)\n    : \"\";\n}\nfunction describeFiber(fiber) {\n  switch (fiber.tag) {\n    case 26:\n    case 27:\n    case 5:\n      return describeBuiltInComponentFrame(fiber.type);\n    case 16:\n      return describeBuiltInComponentFrame(\"Lazy\");\n    case 13:\n      return describeBuiltInComponentFrame(\"Suspense\");\n    case 19:\n      return describeBuiltInComponentFrame(\"SuspenseList\");\n    case 0:\n    case 15:\n      return describeNativeComponentFrame(fiber.type, !1);\n    case 11:\n      return describeNativeComponentFrame(fiber.type.render, !1);\n    case 1:\n      return describeNativeComponentFrame(fiber.type, !0);\n    case 31:\n      return describeBuiltInComponentFrame(\"Activity\");\n    default:\n      return \"\";\n  }\n}\nfunction getStackByFiberInDevAndProd(workInProgress) {\n  try {\n    var info = \"\";\n    do\n      (info += describeFiber(workInProgress)),\n        (workInProgress = workInProgress.return);\n    while (workInProgress);\n    return info;\n  } catch (x) {\n    return \"\\nError generating stack: \" + x.message + \"\\n\" + x.stack;\n  }\n}\nfunction getToStringValue(value) {\n  switch (typeof value) {\n    case \"bigint\":\n    case \"boolean\":\n    case \"number\":\n    case \"string\":\n    case \"undefined\":\n      return value;\n    case \"object\":\n      return value;\n    default:\n      return \"\";\n  }\n}\nfunction isCheckable(elem) {\n  var type = elem.type;\n  return (\n    (elem = elem.nodeName) &&\n    \"input\" === elem.toLowerCase() &&\n    (\"checkbox\" === type || \"radio\" === type)\n  );\n}\nfunction trackValueOnNode(node) {\n  var valueField = isCheckable(node) ? \"checked\" : \"value\",\n    descriptor = Object.getOwnPropertyDescriptor(\n      node.constructor.prototype,\n      valueField\n    ),\n    currentValue = \"\" + node[valueField];\n  if (\n    !node.hasOwnProperty(valueField) &&\n    \"undefined\" !== typeof descriptor &&\n    \"function\" === typeof descriptor.get &&\n    \"function\" === typeof descriptor.set\n  ) {\n    var get = descriptor.get,\n      set = descriptor.set;\n    Object.defineProperty(node, valueField, {\n      configurable: !0,\n      get: function () {\n        return get.call(this);\n      },\n      set: function (value) {\n        currentValue = \"\" + value;\n        set.call(this, value);\n      }\n    });\n    Object.defineProperty(node, valueField, {\n      enumerable: descriptor.enumerable\n    });\n    return {\n      getValue: function () {\n        return currentValue;\n      },\n      setValue: function (value) {\n        currentValue = \"\" + value;\n      },\n      stopTracking: function () {\n        node._valueTracker = null;\n        delete node[valueField];\n      }\n    };\n  }\n}\nfunction track(node) {\n  node._valueTracker || (node._valueTracker = trackValueOnNode(node));\n}\nfunction updateValueIfChanged(node) {\n  if (!node) return !1;\n  var tracker = node._valueTracker;\n  if (!tracker) return !0;\n  var lastValue = tracker.getValue();\n  var value = \"\";\n  node &&\n    (value = isCheckable(node)\n      ? node.checked\n        ? \"true\"\n        : \"false\"\n      : node.value);\n  node = value;\n  return node !== lastValue ? (tracker.setValue(node), !0) : !1;\n}\nfunction getActiveElement(doc) {\n  doc = doc || (\"undefined\" !== typeof document ? document : void 0);\n  if (\"undefined\" === typeof doc) return null;\n  try {\n    return doc.activeElement || doc.body;\n  } catch (e) {\n    return doc.body;\n  }\n}\nvar escapeSelectorAttributeValueInsideDoubleQuotesRegex = /[\\n\"\\\\]/g;\nfunction escapeSelectorAttributeValueInsideDoubleQuotes(value) {\n  return value.replace(\n    escapeSelectorAttributeValueInsideDoubleQuotesRegex,\n    function (ch) {\n      return \"\\\\\" + ch.charCodeAt(0).toString(16) + \" \";\n    }\n  );\n}\nfunction updateInput(\n  element,\n  value,\n  defaultValue,\n  lastDefaultValue,\n  checked,\n  defaultChecked,\n  type,\n  name\n) {\n  element.name = \"\";\n  null != type &&\n  \"function\" !== typeof type &&\n  \"symbol\" !== typeof type &&\n  \"boolean\" !== typeof type\n    ? (element.type = type)\n    : element.removeAttribute(\"type\");\n  if (null != value)\n    if (\"number\" === type) {\n      if ((0 === value && \"\" === element.value) || element.value != value)\n        element.value = \"\" + getToStringValue(value);\n    } else\n      element.value !== \"\" + getToStringValue(value) &&\n        (element.value = \"\" + getToStringValue(value));\n  else\n    (\"submit\" !== type && \"reset\" !== type) || element.removeAttribute(\"value\");\n  null != value\n    ? setDefaultValue(element, type, getToStringValue(value))\n    : null != defaultValue\n      ? setDefaultValue(element, type, getToStringValue(defaultValue))\n      : null != lastDefaultValue && element.removeAttribute(\"value\");\n  null == checked &&\n    null != defaultChecked &&\n    (element.defaultChecked = !!defaultChecked);\n  null != checked &&\n    (element.checked =\n      checked && \"function\" !== typeof checked && \"symbol\" !== typeof checked);\n  null != name &&\n  \"function\" !== typeof name &&\n  \"symbol\" !== typeof name &&\n  \"boolean\" !== typeof name\n    ? (element.name = \"\" + getToStringValue(name))\n    : element.removeAttribute(\"name\");\n}\nfunction initInput(\n  element,\n  value,\n  defaultValue,\n  checked,\n  defaultChecked,\n  type,\n  name,\n  isHydrating\n) {\n  null != type &&\n    \"function\" !== typeof type &&\n    \"symbol\" !== typeof type &&\n    \"boolean\" !== typeof type &&\n    (element.type = type);\n  if (null != value || null != defaultValue) {\n    if (\n      !(\n        (\"submit\" !== type && \"reset\" !== type) ||\n        (void 0 !== value && null !== value)\n      )\n    )\n      return;\n    defaultValue =\n      null != defaultValue ? \"\" + getToStringValue(defaultValue) : \"\";\n    value = null != value ? \"\" + getToStringValue(value) : defaultValue;\n    isHydrating || value === element.value || (element.value = value);\n    element.defaultValue = value;\n  }\n  checked = null != checked ? checked : defaultChecked;\n  checked =\n    \"function\" !== typeof checked && \"symbol\" !== typeof checked && !!checked;\n  element.checked = isHydrating ? element.checked : !!checked;\n  element.defaultChecked = !!checked;\n  null != name &&\n    \"function\" !== typeof name &&\n    \"symbol\" !== typeof name &&\n    \"boolean\" !== typeof name &&\n    (element.name = name);\n}\nfunction setDefaultValue(node, type, value) {\n  (\"number\" === type && getActiveElement(node.ownerDocument) === node) ||\n    node.defaultValue === \"\" + value ||\n    (node.defaultValue = \"\" + value);\n}\nfunction updateOptions(node, multiple, propValue, setDefaultSelected) {\n  node = node.options;\n  if (multiple) {\n    multiple = {};\n    for (var i = 0; i < propValue.length; i++)\n      multiple[\"$\" + propValue[i]] = !0;\n    for (propValue = 0; propValue < node.length; propValue++)\n      (i = multiple.hasOwnProperty(\"$\" + node[propValue].value)),\n        node[propValue].selected !== i && (node[propValue].selected = i),\n        i && setDefaultSelected && (node[propValue].defaultSelected = !0);\n  } else {\n    propValue = \"\" + getToStringValue(propValue);\n    multiple = null;\n    for (i = 0; i < node.length; i++) {\n      if (node[i].value === propValue) {\n        node[i].selected = !0;\n        setDefaultSelected && (node[i].defaultSelected = !0);\n        return;\n      }\n      null !== multiple || node[i].disabled || (multiple = node[i]);\n    }\n    null !== multiple && (multiple.selected = !0);\n  }\n}\nfunction updateTextarea(element, value, defaultValue) {\n  if (\n    null != value &&\n    ((value = \"\" + getToStringValue(value)),\n    value !== element.value && (element.value = value),\n    null == defaultValue)\n  ) {\n    element.defaultValue !== value && (element.defaultValue = value);\n    return;\n  }\n  element.defaultValue =\n    null != defaultValue ? \"\" + getToStringValue(defaultValue) : \"\";\n}\nfunction initTextarea(element, value, defaultValue, children) {\n  if (null == value) {\n    if (null != children) {\n      if (null != defaultValue) throw Error(formatProdErrorMessage(92));\n      if (isArrayImpl(children)) {\n        if (1 < children.length) throw Error(formatProdErrorMessage(93));\n        children = children[0];\n      }\n      defaultValue = children;\n    }\n    null == defaultValue && (defaultValue = \"\");\n    value = defaultValue;\n  }\n  defaultValue = getToStringValue(value);\n  element.defaultValue = defaultValue;\n  children = element.textContent;\n  children === defaultValue &&\n    \"\" !== children &&\n    null !== children &&\n    (element.value = children);\n}\nfunction setTextContent(node, text) {\n  if (text) {\n    var firstChild = node.firstChild;\n    if (\n      firstChild &&\n      firstChild === node.lastChild &&\n      3 === firstChild.nodeType\n    ) {\n      firstChild.nodeValue = text;\n      return;\n    }\n  }\n  node.textContent = text;\n}\nvar unitlessNumbers = new Set(\n  \"animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp\".split(\n    \" \"\n  )\n);\nfunction setValueForStyle(style, styleName, value) {\n  var isCustomProperty = 0 === styleName.indexOf(\"--\");\n  null == value || \"boolean\" === typeof value || \"\" === value\n    ? isCustomProperty\n      ? style.setProperty(styleName, \"\")\n      : \"float\" === styleName\n        ? (style.cssFloat = \"\")\n        : (style[styleName] = \"\")\n    : isCustomProperty\n      ? style.setProperty(styleName, value)\n      : \"number\" !== typeof value ||\n          0 === value ||\n          unitlessNumbers.has(styleName)\n        ? \"float\" === styleName\n          ? (style.cssFloat = value)\n          : (style[styleName] = (\"\" + value).trim())\n        : (style[styleName] = value + \"px\");\n}\nfunction setValueForStyles(node, styles, prevStyles) {\n  if (null != styles && \"object\" !== typeof styles)\n    throw Error(formatProdErrorMessage(62));\n  node = node.style;\n  if (null != prevStyles) {\n    for (var styleName in prevStyles)\n      !prevStyles.hasOwnProperty(styleName) ||\n        (null != styles && styles.hasOwnProperty(styleName)) ||\n        (0 === styleName.indexOf(\"--\")\n          ? node.setProperty(styleName, \"\")\n          : \"float\" === styleName\n            ? (node.cssFloat = \"\")\n            : (node[styleName] = \"\"));\n    for (var styleName$16 in styles)\n      (styleName = styles[styleName$16]),\n        styles.hasOwnProperty(styleName$16) &&\n          prevStyles[styleName$16] !== styleName &&\n          setValueForStyle(node, styleName$16, styleName);\n  } else\n    for (var styleName$17 in styles)\n      styles.hasOwnProperty(styleName$17) &&\n        setValueForStyle(node, styleName$17, styles[styleName$17]);\n}\nfunction isCustomElement(tagName) {\n  if (-1 === tagName.indexOf(\"-\")) return !1;\n  switch (tagName) {\n    case \"annotation-xml\":\n    case \"color-profile\":\n    case \"font-face\":\n    case \"font-face-src\":\n    case \"font-face-uri\":\n    case \"font-face-format\":\n    case \"font-face-name\":\n    case \"missing-glyph\":\n      return !1;\n    default:\n      return !0;\n  }\n}\nvar aliases = new Map([\n    [\"acceptCharset\", \"accept-charset\"],\n    [\"htmlFor\", \"for\"],\n    [\"httpEquiv\", \"http-equiv\"],\n    [\"crossOrigin\", \"crossorigin\"],\n    [\"accentHeight\", \"accent-height\"],\n    [\"alignmentBaseline\", \"alignment-baseline\"],\n    [\"arabicForm\", \"arabic-form\"],\n    [\"baselineShift\", \"baseline-shift\"],\n    [\"capHeight\", \"cap-height\"],\n    [\"clipPath\", \"clip-path\"],\n    [\"clipRule\", \"clip-rule\"],\n    [\"colorInterpolation\", \"color-interpolation\"],\n    [\"colorInterpolationFilters\", \"color-interpolation-filters\"],\n    [\"colorProfile\", \"color-profile\"],\n    [\"colorRendering\", \"color-rendering\"],\n    [\"dominantBaseline\", \"dominant-baseline\"],\n    [\"enableBackground\", \"enable-background\"],\n    [\"fillOpacity\", \"fill-opacity\"],\n    [\"fillRule\", \"fill-rule\"],\n    [\"floodColor\", \"flood-color\"],\n    [\"floodOpacity\", \"flood-opacity\"],\n    [\"fontFamily\", \"font-family\"],\n    [\"fontSize\", \"font-size\"],\n    [\"fontSizeAdjust\", \"font-size-adjust\"],\n    [\"fontStretch\", \"font-stretch\"],\n    [\"fontStyle\", \"font-style\"],\n    [\"fontVariant\", \"font-variant\"],\n    [\"fontWeight\", \"font-weight\"],\n    [\"glyphName\", \"glyph-name\"],\n    [\"glyphOrientationHorizontal\", \"glyph-orientation-horizontal\"],\n    [\"glyphOrientationVertical\", \"glyph-orientation-vertical\"],\n    [\"horizAdvX\", \"horiz-adv-x\"],\n    [\"horizOriginX\", \"horiz-origin-x\"],\n    [\"imageRendering\", \"image-rendering\"],\n    [\"letterSpacing\", \"letter-spacing\"],\n    [\"lightingColor\", \"lighting-color\"],\n    [\"markerEnd\", \"marker-end\"],\n    [\"markerMid\", \"marker-mid\"],\n    [\"markerStart\", \"marker-start\"],\n    [\"overlinePosition\", \"overline-position\"],\n    [\"overlineThickness\", \"overline-thickness\"],\n    [\"paintOrder\", \"paint-order\"],\n    [\"panose-1\", \"panose-1\"],\n    [\"pointerEvents\", \"pointer-events\"],\n    [\"renderingIntent\", \"rendering-intent\"],\n    [\"shapeRendering\", \"shape-rendering\"],\n    [\"stopColor\", \"stop-color\"],\n    [\"stopOpacity\", \"stop-opacity\"],\n    [\"strikethroughPosition\", \"strikethrough-position\"],\n    [\"strikethroughThickness\", \"strikethrough-thickness\"],\n    [\"strokeDasharray\", \"stroke-dasharray\"],\n    [\"strokeDashoffset\", \"stroke-dashoffset\"],\n    [\"strokeLinecap\", \"stroke-linecap\"],\n    [\"strokeLinejoin\", \"stroke-linejoin\"],\n    [\"strokeMiterlimit\", \"stroke-miterlimit\"],\n    [\"strokeOpacity\", \"stroke-opacity\"],\n    [\"strokeWidth\", \"stroke-width\"],\n    [\"textAnchor\", \"text-anchor\"],\n    [\"textDecoration\", \"text-decoration\"],\n    [\"textRendering\", \"text-rendering\"],\n    [\"transformOrigin\", \"transform-origin\"],\n    [\"underlinePosition\", \"underline-position\"],\n    [\"underlineThickness\", \"underline-thickness\"],\n    [\"unicodeBidi\", \"unicode-bidi\"],\n    [\"unicodeRange\", \"unicode-range\"],\n    [\"unitsPerEm\", \"units-per-em\"],\n    [\"vAlphabetic\", \"v-alphabetic\"],\n    [\"vHanging\", \"v-hanging\"],\n    [\"vIdeographic\", \"v-ideographic\"],\n    [\"vMathematical\", \"v-mathematical\"],\n    [\"vectorEffect\", \"vector-effect\"],\n    [\"vertAdvY\", \"vert-adv-y\"],\n    [\"vertOriginX\", \"vert-origin-x\"],\n    [\"vertOriginY\", \"vert-origin-y\"],\n    [\"wordSpacing\", \"word-spacing\"],\n    [\"writingMode\", \"writing-mode\"],\n    [\"xmlnsXlink\", \"xmlns:xlink\"],\n    [\"xHeight\", \"x-height\"]\n  ]),\n  isJavaScriptProtocol =\n    /^[\\u0000-\\u001F ]*j[\\r\\n\\t]*a[\\r\\n\\t]*v[\\r\\n\\t]*a[\\r\\n\\t]*s[\\r\\n\\t]*c[\\r\\n\\t]*r[\\r\\n\\t]*i[\\r\\n\\t]*p[\\r\\n\\t]*t[\\r\\n\\t]*:/i;\nfunction sanitizeURL(url) {\n  return isJavaScriptProtocol.test(\"\" + url)\n    ? \"javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')\"\n    : url;\n}\nvar currentReplayingEvent = null;\nfunction getEventTarget(nativeEvent) {\n  nativeEvent = nativeEvent.target || nativeEvent.srcElement || window;\n  nativeEvent.correspondingUseElement &&\n    (nativeEvent = nativeEvent.correspondingUseElement);\n  return 3 === nativeEvent.nodeType ? nativeEvent.parentNode : nativeEvent;\n}\nvar restoreTarget = null,\n  restoreQueue = null;\nfunction restoreStateOfTarget(target) {\n  var internalInstance = getInstanceFromNode(target);\n  if (internalInstance && (target = internalInstance.stateNode)) {\n    var props = target[internalPropsKey] || null;\n    a: switch (((target = internalInstance.stateNode), internalInstance.type)) {\n      case \"input\":\n        updateInput(\n          target,\n          props.value,\n          props.defaultValue,\n          props.defaultValue,\n          props.checked,\n          props.defaultChecked,\n          props.type,\n          props.name\n        );\n        internalInstance = props.name;\n        if (\"radio\" === props.type && null != internalInstance) {\n          for (props = target; props.parentNode; ) props = props.parentNode;\n          props = props.querySelectorAll(\n            'input[name=\"' +\n              escapeSelectorAttributeValueInsideDoubleQuotes(\n                \"\" + internalInstance\n              ) +\n              '\"][type=\"radio\"]'\n          );\n          for (\n            internalInstance = 0;\n            internalInstance < props.length;\n            internalInstance++\n          ) {\n            var otherNode = props[internalInstance];\n            if (otherNode !== target && otherNode.form === target.form) {\n              var otherProps = otherNode[internalPropsKey] || null;\n              if (!otherProps) throw Error(formatProdErrorMessage(90));\n              updateInput(\n                otherNode,\n                otherProps.value,\n                otherProps.defaultValue,\n                otherProps.defaultValue,\n                otherProps.checked,\n                otherProps.defaultChecked,\n                otherProps.type,\n                otherProps.name\n              );\n            }\n          }\n          for (\n            internalInstance = 0;\n            internalInstance < props.length;\n            internalInstance++\n          )\n            (otherNode = props[internalInstance]),\n              otherNode.form === target.form && updateValueIfChanged(otherNode);\n        }\n        break a;\n      case \"textarea\":\n        updateTextarea(target, props.value, props.defaultValue);\n        break a;\n      case \"select\":\n        (internalInstance = props.value),\n          null != internalInstance &&\n            updateOptions(target, !!props.multiple, internalInstance, !1);\n    }\n  }\n}\nvar isInsideEventHandler = !1;\nfunction batchedUpdates$1(fn, a, b) {\n  if (isInsideEventHandler) return fn(a, b);\n  isInsideEventHandler = !0;\n  try {\n    var JSCompiler_inline_result = fn(a);\n    return JSCompiler_inline_result;\n  } finally {\n    if (\n      ((isInsideEventHandler = !1),\n      null !== restoreTarget || null !== restoreQueue)\n    )\n      if (\n        (flushSyncWork$1(),\n        restoreTarget &&\n          ((a = restoreTarget),\n          (fn = restoreQueue),\n          (restoreQueue = restoreTarget = null),\n          restoreStateOfTarget(a),\n          fn))\n      )\n        for (a = 0; a < fn.length; a++) restoreStateOfTarget(fn[a]);\n  }\n}\nfunction getListener(inst, registrationName) {\n  var stateNode = inst.stateNode;\n  if (null === stateNode) return null;\n  var props = stateNode[internalPropsKey] || null;\n  if (null === props) return null;\n  stateNode = props[registrationName];\n  a: switch (registrationName) {\n    case \"onClick\":\n    case \"onClickCapture\":\n    case \"onDoubleClick\":\n    case \"onDoubleClickCapture\":\n    case \"onMouseDown\":\n    case \"onMouseDownCapture\":\n    case \"onMouseMove\":\n    case \"onMouseMoveCapture\":\n    case \"onMouseUp\":\n    case \"onMouseUpCapture\":\n    case \"onMouseEnter\":\n      (props = !props.disabled) ||\n        ((inst = inst.type),\n        (props = !(\n          \"button\" === inst ||\n          \"input\" === inst ||\n          \"select\" === inst ||\n          \"textarea\" === inst\n        )));\n      inst = !props;\n      break a;\n    default:\n      inst = !1;\n  }\n  if (inst) return null;\n  if (stateNode && \"function\" !== typeof stateNode)\n    throw Error(\n      formatProdErrorMessage(231, registrationName, typeof stateNode)\n    );\n  return stateNode;\n}\nvar canUseDOM = !(\n    \"undefined\" === typeof window ||\n    \"undefined\" === typeof window.document ||\n    \"undefined\" === typeof window.document.createElement\n  ),\n  passiveBrowserEventsSupported = !1;\nif (canUseDOM)\n  try {\n    var options = {};\n    Object.defineProperty(options, \"passive\", {\n      get: function () {\n        passiveBrowserEventsSupported = !0;\n      }\n    });\n    window.addEventListener(\"test\", options, options);\n    window.removeEventListener(\"test\", options, options);\n  } catch (e) {\n    passiveBrowserEventsSupported = !1;\n  }\nvar root = null,\n  startText = null,\n  fallbackText = null;\nfunction getData() {\n  if (fallbackText) return fallbackText;\n  var start,\n    startValue = startText,\n    startLength = startValue.length,\n    end,\n    endValue = \"value\" in root ? root.value : root.textContent,\n    endLength = endValue.length;\n  for (\n    start = 0;\n    start < startLength && startValue[start] === endValue[start];\n    start++\n  );\n  var minEnd = startLength - start;\n  for (\n    end = 1;\n    end <= minEnd &&\n    startValue[startLength - end] === endValue[endLength - end];\n    end++\n  );\n  return (fallbackText = endValue.slice(start, 1 < end ? 1 - end : void 0));\n}\nfunction getEventCharCode(nativeEvent) {\n  var keyCode = nativeEvent.keyCode;\n  \"charCode\" in nativeEvent\n    ? ((nativeEvent = nativeEvent.charCode),\n      0 === nativeEvent && 13 === keyCode && (nativeEvent = 13))\n    : (nativeEvent = keyCode);\n  10 === nativeEvent && (nativeEvent = 13);\n  return 32 <= nativeEvent || 13 === nativeEvent ? nativeEvent : 0;\n}\nfunction functionThatReturnsTrue() {\n  return !0;\n}\nfunction functionThatReturnsFalse() {\n  return !1;\n}\nfunction createSyntheticEvent(Interface) {\n  function SyntheticBaseEvent(\n    reactName,\n    reactEventType,\n    targetInst,\n    nativeEvent,\n    nativeEventTarget\n  ) {\n    this._reactName = reactName;\n    this._targetInst = targetInst;\n    this.type = reactEventType;\n    this.nativeEvent = nativeEvent;\n    this.target = nativeEventTarget;\n    this.currentTarget = null;\n    for (var propName in Interface)\n      Interface.hasOwnProperty(propName) &&\n        ((reactName = Interface[propName]),\n        (this[propName] = reactName\n          ? reactName(nativeEvent)\n          : nativeEvent[propName]));\n    this.isDefaultPrevented = (\n      null != nativeEvent.defaultPrevented\n        ? nativeEvent.defaultPrevented\n        : !1 === nativeEvent.returnValue\n    )\n      ? functionThatReturnsTrue\n      : functionThatReturnsFalse;\n    this.isPropagationStopped = functionThatReturnsFalse;\n    return this;\n  }\n  assign(SyntheticBaseEvent.prototype, {\n    preventDefault: function () {\n      this.defaultPrevented = !0;\n      var event = this.nativeEvent;\n      event &&\n        (event.preventDefault\n          ? event.preventDefault()\n          : \"unknown\" !== typeof event.returnValue && (event.returnValue = !1),\n        (this.isDefaultPrevented = functionThatReturnsTrue));\n    },\n    stopPropagation: function () {\n      var event = this.nativeEvent;\n      event &&\n        (event.stopPropagation\n          ? event.stopPropagation()\n          : \"unknown\" !== typeof event.cancelBubble &&\n            (event.cancelBubble = !0),\n        (this.isPropagationStopped = functionThatReturnsTrue));\n    },\n    persist: function () {},\n    isPersistent: functionThatReturnsTrue\n  });\n  return SyntheticBaseEvent;\n}\nvar EventInterface = {\n    eventPhase: 0,\n    bubbles: 0,\n    cancelable: 0,\n    timeStamp: function (event) {\n      return event.timeStamp || Date.now();\n    },\n    defaultPrevented: 0,\n    isTrusted: 0\n  },\n  SyntheticEvent = createSyntheticEvent(EventInterface),\n  UIEventInterface = assign({}, EventInterface, { view: 0, detail: 0 }),\n  SyntheticUIEvent = createSyntheticEvent(UIEventInterface),\n  lastMovementX,\n  lastMovementY,\n  lastMouseEvent,\n  MouseEventInterface = assign({}, UIEventInterface, {\n    screenX: 0,\n    screenY: 0,\n    clientX: 0,\n    clientY: 0,\n    pageX: 0,\n    pageY: 0,\n    ctrlKey: 0,\n    shiftKey: 0,\n    altKey: 0,\n    metaKey: 0,\n    getModifierState: getEventModifierState,\n    button: 0,\n    buttons: 0,\n    relatedTarget: function (event) {\n      return void 0 === event.relatedTarget\n        ? event.fromElement === event.srcElement\n          ? event.toElement\n          : event.fromElement\n        : event.relatedTarget;\n    },\n    movementX: function (event) {\n      if (\"movementX\" in event) return event.movementX;\n      event !== lastMouseEvent &&\n        (lastMouseEvent && \"mousemove\" === event.type\n          ? ((lastMovementX = event.screenX - lastMouseEvent.screenX),\n            (lastMovementY = event.screenY - lastMouseEvent.screenY))\n          : (lastMovementY = lastMovementX = 0),\n        (lastMouseEvent = event));\n      return lastMovementX;\n    },\n    movementY: function (event) {\n      return \"movementY\" in event ? event.movementY : lastMovementY;\n    }\n  }),\n  SyntheticMouseEvent = createSyntheticEvent(MouseEventInterface),\n  DragEventInterface = assign({}, MouseEventInterface, { dataTransfer: 0 }),\n  SyntheticDragEvent = createSyntheticEvent(DragEventInterface),\n  FocusEventInterface = assign({}, UIEventInterface, { relatedTarget: 0 }),\n  SyntheticFocusEvent = createSyntheticEvent(FocusEventInterface),\n  AnimationEventInterface = assign({}, EventInterface, {\n    animationName: 0,\n    elapsedTime: 0,\n    pseudoElement: 0\n  }),\n  SyntheticAnimationEvent = createSyntheticEvent(AnimationEventInterface),\n  ClipboardEventInterface = assign({}, EventInterface, {\n    clipboardData: function (event) {\n      return \"clipboardData\" in event\n        ? event.clipboardData\n        : window.clipboardData;\n    }\n  }),\n  SyntheticClipboardEvent = createSyntheticEvent(ClipboardEventInterface),\n  CompositionEventInterface = assign({}, EventInterface, { data: 0 }),\n  SyntheticCompositionEvent = createSyntheticEvent(CompositionEventInterface),\n  normalizeKey = {\n    Esc: \"Escape\",\n    Spacebar: \" \",\n    Left: \"ArrowLeft\",\n    Up: \"ArrowUp\",\n    Right: \"ArrowRight\",\n    Down: \"ArrowDown\",\n    Del: \"Delete\",\n    Win: \"OS\",\n    Menu: \"ContextMenu\",\n    Apps: \"ContextMenu\",\n    Scroll: \"ScrollLock\",\n    MozPrintableKey: \"Unidentified\"\n  },\n  translateToKey = {\n    8: \"Backspace\",\n    9: \"Tab\",\n    12: \"Clear\",\n    13: \"Enter\",\n    16: \"Shift\",\n    17: \"Control\",\n    18: \"Alt\",\n    19: \"Pause\",\n    20: \"CapsLock\",\n    27: \"Escape\",\n    32: \" \",\n    33: \"PageUp\",\n    34: \"PageDown\",\n    35: \"End\",\n    36: \"Home\",\n    37: \"ArrowLeft\",\n    38: \"ArrowUp\",\n    39: \"ArrowRight\",\n    40: \"ArrowDown\",\n    45: \"Insert\",\n    46: \"Delete\",\n    112: \"F1\",\n    113: \"F2\",\n    114: \"F3\",\n    115: \"F4\",\n    116: \"F5\",\n    117: \"F6\",\n    118: \"F7\",\n    119: \"F8\",\n    120: \"F9\",\n    121: \"F10\",\n    122: \"F11\",\n    123: \"F12\",\n    144: \"NumLock\",\n    145: \"ScrollLock\",\n    224: \"Meta\"\n  },\n  modifierKeyToProp = {\n    Alt: \"altKey\",\n    Control: \"ctrlKey\",\n    Meta: \"metaKey\",\n    Shift: \"shiftKey\"\n  };\nfunction modifierStateGetter(keyArg) {\n  var nativeEvent = this.nativeEvent;\n  return nativeEvent.getModifierState\n    ? nativeEvent.getModifierState(keyArg)\n    : (keyArg = modifierKeyToProp[keyArg])\n      ? !!nativeEvent[keyArg]\n      : !1;\n}\nfunction getEventModifierState() {\n  return modifierStateGetter;\n}\nvar KeyboardEventInterface = assign({}, UIEventInterface, {\n    key: function (nativeEvent) {\n      if (nativeEvent.key) {\n        var key = normalizeKey[nativeEvent.key] || nativeEvent.key;\n        if (\"Unidentified\" !== key) return key;\n      }\n      return \"keypress\" === nativeEvent.type\n        ? ((nativeEvent = getEventCharCode(nativeEvent)),\n          13 === nativeEvent ? \"Enter\" : String.fromCharCode(nativeEvent))\n        : \"keydown\" === nativeEvent.type || \"keyup\" === nativeEvent.type\n          ? translateToKey[nativeEvent.keyCode] || \"Unidentified\"\n          : \"\";\n    },\n    code: 0,\n    location: 0,\n    ctrlKey: 0,\n    shiftKey: 0,\n    altKey: 0,\n    metaKey: 0,\n    repeat: 0,\n    locale: 0,\n    getModifierState: getEventModifierState,\n    charCode: function (event) {\n      return \"keypress\" === event.type ? getEventCharCode(event) : 0;\n    },\n    keyCode: function (event) {\n      return \"keydown\" === event.type || \"keyup\" === event.type\n        ? event.keyCode\n        : 0;\n    },\n    which: function (event) {\n      return \"keypress\" === event.type\n        ? getEventCharCode(event)\n        : \"keydown\" === event.type || \"keyup\" === event.type\n          ? event.keyCode\n          : 0;\n    }\n  }),\n  SyntheticKeyboardEvent = createSyntheticEvent(KeyboardEventInterface),\n  PointerEventInterface = assign({}, MouseEventInterface, {\n    pointerId: 0,\n    width: 0,\n    height: 0,\n    pressure: 0,\n    tangentialPressure: 0,\n    tiltX: 0,\n    tiltY: 0,\n    twist: 0,\n    pointerType: 0,\n    isPrimary: 0\n  }),\n  SyntheticPointerEvent = createSyntheticEvent(PointerEventInterface),\n  TouchEventInterface = assign({}, UIEventInterface, {\n    touches: 0,\n    targetTouches: 0,\n    changedTouches: 0,\n    altKey: 0,\n    metaKey: 0,\n    ctrlKey: 0,\n    shiftKey: 0,\n    getModifierState: getEventModifierState\n  }),\n  SyntheticTouchEvent = createSyntheticEvent(TouchEventInterface),\n  TransitionEventInterface = assign({}, EventInterface, {\n    propertyName: 0,\n    elapsedTime: 0,\n    pseudoElement: 0\n  }),\n  SyntheticTransitionEvent = createSyntheticEvent(TransitionEventInterface),\n  WheelEventInterface = assign({}, MouseEventInterface, {\n    deltaX: function (event) {\n      return \"deltaX\" in event\n        ? event.deltaX\n        : \"wheelDeltaX\" in event\n          ? -event.wheelDeltaX\n          : 0;\n    },\n    deltaY: function (event) {\n      return \"deltaY\" in event\n        ? event.deltaY\n        : \"wheelDeltaY\" in event\n          ? -event.wheelDeltaY\n          : \"wheelDelta\" in event\n            ? -event.wheelDelta\n            : 0;\n    },\n    deltaZ: 0,\n    deltaMode: 0\n  }),\n  SyntheticWheelEvent = createSyntheticEvent(WheelEventInterface),\n  ToggleEventInterface = assign({}, EventInterface, {\n    newState: 0,\n    oldState: 0\n  }),\n  SyntheticToggleEvent = createSyntheticEvent(ToggleEventInterface),\n  END_KEYCODES = [9, 13, 27, 32],\n  canUseCompositionEvent = canUseDOM && \"CompositionEvent\" in window,\n  documentMode = null;\ncanUseDOM &&\n  \"documentMode\" in document &&\n  (documentMode = document.documentMode);\nvar canUseTextInputEvent = canUseDOM && \"TextEvent\" in window && !documentMode,\n  useFallbackCompositionData =\n    canUseDOM &&\n    (!canUseCompositionEvent ||\n      (documentMode && 8 < documentMode && 11 >= documentMode)),\n  SPACEBAR_CHAR = String.fromCharCode(32),\n  hasSpaceKeypress = !1;\nfunction isFallbackCompositionEnd(domEventName, nativeEvent) {\n  switch (domEventName) {\n    case \"keyup\":\n      return -1 !== END_KEYCODES.indexOf(nativeEvent.keyCode);\n    case \"keydown\":\n      return 229 !== nativeEvent.keyCode;\n    case \"keypress\":\n    case \"mousedown\":\n    case \"focusout\":\n      return !0;\n    default:\n      return !1;\n  }\n}\nfunction getDataFromCustomEvent(nativeEvent) {\n  nativeEvent = nativeEvent.detail;\n  return \"object\" === typeof nativeEvent && \"data\" in nativeEvent\n    ? nativeEvent.data\n    : null;\n}\nvar isComposing = !1;\nfunction getNativeBeforeInputChars(domEventName, nativeEvent) {\n  switch (domEventName) {\n    case \"compositionend\":\n      return getDataFromCustomEvent(nativeEvent);\n    case \"keypress\":\n      if (32 !== nativeEvent.which) return null;\n      hasSpaceKeypress = !0;\n      return SPACEBAR_CHAR;\n    case \"textInput\":\n      return (\n        (domEventName = nativeEvent.data),\n        domEventName === SPACEBAR_CHAR && hasSpaceKeypress ? null : domEventName\n      );\n    default:\n      return null;\n  }\n}\nfunction getFallbackBeforeInputChars(domEventName, nativeEvent) {\n  if (isComposing)\n    return \"compositionend\" === domEventName ||\n      (!canUseCompositionEvent &&\n        isFallbackCompositionEnd(domEventName, nativeEvent))\n      ? ((domEventName = getData()),\n        (fallbackText = startText = root = null),\n        (isComposing = !1),\n        domEventName)\n      : null;\n  switch (domEventName) {\n    case \"paste\":\n      return null;\n    case \"keypress\":\n      if (\n        !(nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) ||\n        (nativeEvent.ctrlKey && nativeEvent.altKey)\n      ) {\n        if (nativeEvent.char && 1 < nativeEvent.char.length)\n          return nativeEvent.char;\n        if (nativeEvent.which) return String.fromCharCode(nativeEvent.which);\n      }\n      return null;\n    case \"compositionend\":\n      return useFallbackCompositionData && \"ko\" !== nativeEvent.locale\n        ? null\n        : nativeEvent.data;\n    default:\n      return null;\n  }\n}\nvar supportedInputTypes = {\n  color: !0,\n  date: !0,\n  datetime: !0,\n  \"datetime-local\": !0,\n  email: !0,\n  month: !0,\n  number: !0,\n  password: !0,\n  range: !0,\n  search: !0,\n  tel: !0,\n  text: !0,\n  time: !0,\n  url: !0,\n  week: !0\n};\nfunction isTextInputElement(elem) {\n  var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n  return \"input\" === nodeName\n    ? !!supportedInputTypes[elem.type]\n    : \"textarea\" === nodeName\n      ? !0\n      : !1;\n}\nfunction createAndAccumulateChangeEvent(\n  dispatchQueue,\n  inst,\n  nativeEvent,\n  target\n) {\n  restoreTarget\n    ? restoreQueue\n      ? restoreQueue.push(target)\n      : (restoreQueue = [target])\n    : (restoreTarget = target);\n  inst = accumulateTwoPhaseListeners(inst, \"onChange\");\n  0 < inst.length &&\n    ((nativeEvent = new SyntheticEvent(\n      \"onChange\",\n      \"change\",\n      null,\n      nativeEvent,\n      target\n    )),\n    dispatchQueue.push({ event: nativeEvent, listeners: inst }));\n}\nvar activeElement$1 = null,\n  activeElementInst$1 = null;\nfunction runEventInBatch(dispatchQueue) {\n  processDispatchQueue(dispatchQueue, 0);\n}\nfunction getInstIfValueChanged(targetInst) {\n  var targetNode = getNodeFromInstance(targetInst);\n  if (updateValueIfChanged(targetNode)) return targetInst;\n}\nfunction getTargetInstForChangeEvent(domEventName, targetInst) {\n  if (\"change\" === domEventName) return targetInst;\n}\nvar isInputEventSupported = !1;\nif (canUseDOM) {\n  var JSCompiler_inline_result$jscomp$282;\n  if (canUseDOM) {\n    var isSupported$jscomp$inline_417 = \"oninput\" in document;\n    if (!isSupported$jscomp$inline_417) {\n      var element$jscomp$inline_418 = document.createElement(\"div\");\n      element$jscomp$inline_418.setAttribute(\"oninput\", \"return;\");\n      isSupported$jscomp$inline_417 =\n        \"function\" === typeof element$jscomp$inline_418.oninput;\n    }\n    JSCompiler_inline_result$jscomp$282 = isSupported$jscomp$inline_417;\n  } else JSCompiler_inline_result$jscomp$282 = !1;\n  isInputEventSupported =\n    JSCompiler_inline_result$jscomp$282 &&\n    (!document.documentMode || 9 < document.documentMode);\n}\nfunction stopWatchingForValueChange() {\n  activeElement$1 &&\n    (activeElement$1.detachEvent(\"onpropertychange\", handlePropertyChange),\n    (activeElementInst$1 = activeElement$1 = null));\n}\nfunction handlePropertyChange(nativeEvent) {\n  if (\n    \"value\" === nativeEvent.propertyName &&\n    getInstIfValueChanged(activeElementInst$1)\n  ) {\n    var dispatchQueue = [];\n    createAndAccumulateChangeEvent(\n      dispatchQueue,\n      activeElementInst$1,\n      nativeEvent,\n      getEventTarget(nativeEvent)\n    );\n    batchedUpdates$1(runEventInBatch, dispatchQueue);\n  }\n}\nfunction handleEventsForInputEventPolyfill(domEventName, target, targetInst) {\n  \"focusin\" === domEventName\n    ? (stopWatchingForValueChange(),\n      (activeElement$1 = target),\n      (activeElementInst$1 = targetInst),\n      activeElement$1.attachEvent(\"onpropertychange\", handlePropertyChange))\n    : \"focusout\" === domEventName && stopWatchingForValueChange();\n}\nfunction getTargetInstForInputEventPolyfill(domEventName) {\n  if (\n    \"selectionchange\" === domEventName ||\n    \"keyup\" === domEventName ||\n    \"keydown\" === domEventName\n  )\n    return getInstIfValueChanged(activeElementInst$1);\n}\nfunction getTargetInstForClickEvent(domEventName, targetInst) {\n  if (\"click\" === domEventName) return getInstIfValueChanged(targetInst);\n}\nfunction getTargetInstForInputOrChangeEvent(domEventName, targetInst) {\n  if (\"input\" === domEventName || \"change\" === domEventName)\n    return getInstIfValueChanged(targetInst);\n}\nfunction is(x, y) {\n  return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is;\nfunction shallowEqual(objA, objB) {\n  if (objectIs(objA, objB)) return !0;\n  if (\n    \"object\" !== typeof objA ||\n    null === objA ||\n    \"object\" !== typeof objB ||\n    null === objB\n  )\n    return !1;\n  var keysA = Object.keys(objA),\n    keysB = Object.keys(objB);\n  if (keysA.length !== keysB.length) return !1;\n  for (keysB = 0; keysB < keysA.length; keysB++) {\n    var currentKey = keysA[keysB];\n    if (\n      !hasOwnProperty.call(objB, currentKey) ||\n      !objectIs(objA[currentKey], objB[currentKey])\n    )\n      return !1;\n  }\n  return !0;\n}\nfunction getLeafNode(node) {\n  for (; node && node.firstChild; ) node = node.firstChild;\n  return node;\n}\nfunction getNodeForCharacterOffset(root, offset) {\n  var node = getLeafNode(root);\n  root = 0;\n  for (var nodeEnd; node; ) {\n    if (3 === node.nodeType) {\n      nodeEnd = root + node.textContent.length;\n      if (root <= offset && nodeEnd >= offset)\n        return { node: node, offset: offset - root };\n      root = nodeEnd;\n    }\n    a: {\n      for (; node; ) {\n        if (node.nextSibling) {\n          node = node.nextSibling;\n          break a;\n        }\n        node = node.parentNode;\n      }\n      node = void 0;\n    }\n    node = getLeafNode(node);\n  }\n}\nfunction containsNode(outerNode, innerNode) {\n  return outerNode && innerNode\n    ? outerNode === innerNode\n      ? !0\n      : outerNode && 3 === outerNode.nodeType\n        ? !1\n        : innerNode && 3 === innerNode.nodeType\n          ? containsNode(outerNode, innerNode.parentNode)\n          : \"contains\" in outerNode\n            ? outerNode.contains(innerNode)\n            : outerNode.compareDocumentPosition\n              ? !!(outerNode.compareDocumentPosition(innerNode) & 16)\n              : !1\n    : !1;\n}\nfunction getActiveElementDeep(containerInfo) {\n  containerInfo =\n    null != containerInfo &&\n    null != containerInfo.ownerDocument &&\n    null != containerInfo.ownerDocument.defaultView\n      ? containerInfo.ownerDocument.defaultView\n      : window;\n  for (\n    var element = getActiveElement(containerInfo.document);\n    element instanceof containerInfo.HTMLIFrameElement;\n\n  ) {\n    try {\n      var JSCompiler_inline_result =\n        \"string\" === typeof element.contentWindow.location.href;\n    } catch (err) {\n      JSCompiler_inline_result = !1;\n    }\n    if (JSCompiler_inline_result) containerInfo = element.contentWindow;\n    else break;\n    element = getActiveElement(containerInfo.document);\n  }\n  return element;\n}\nfunction hasSelectionCapabilities(elem) {\n  var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n  return (\n    nodeName &&\n    ((\"input\" === nodeName &&\n      (\"text\" === elem.type ||\n        \"search\" === elem.type ||\n        \"tel\" === elem.type ||\n        \"url\" === elem.type ||\n        \"password\" === elem.type)) ||\n      \"textarea\" === nodeName ||\n      \"true\" === elem.contentEditable)\n  );\n}\nvar skipSelectionChangeEvent =\n    canUseDOM && \"documentMode\" in document && 11 >= document.documentMode,\n  activeElement = null,\n  activeElementInst = null,\n  lastSelection = null,\n  mouseDown = !1;\nfunction constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget) {\n  var doc =\n    nativeEventTarget.window === nativeEventTarget\n      ? nativeEventTarget.document\n      : 9 === nativeEventTarget.nodeType\n        ? nativeEventTarget\n        : nativeEventTarget.ownerDocument;\n  mouseDown ||\n    null == activeElement ||\n    activeElement !== getActiveElement(doc) ||\n    ((doc = activeElement),\n    \"selectionStart\" in doc && hasSelectionCapabilities(doc)\n      ? (doc = { start: doc.selectionStart, end: doc.selectionEnd })\n      : ((doc = (\n          (doc.ownerDocument && doc.ownerDocument.defaultView) ||\n          window\n        ).getSelection()),\n        (doc = {\n          anchorNode: doc.anchorNode,\n          anchorOffset: doc.anchorOffset,\n          focusNode: doc.focusNode,\n          focusOffset: doc.focusOffset\n        })),\n    (lastSelection && shallowEqual(lastSelection, doc)) ||\n      ((lastSelection = doc),\n      (doc = accumulateTwoPhaseListeners(activeElementInst, \"onSelect\")),\n      0 < doc.length &&\n        ((nativeEvent = new SyntheticEvent(\n          \"onSelect\",\n          \"select\",\n          null,\n          nativeEvent,\n          nativeEventTarget\n        )),\n        dispatchQueue.push({ event: nativeEvent, listeners: doc }),\n        (nativeEvent.target = activeElement))));\n}\nfunction makePrefixMap(styleProp, eventName) {\n  var prefixes = {};\n  prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();\n  prefixes[\"Webkit\" + styleProp] = \"webkit\" + eventName;\n  prefixes[\"Moz\" + styleProp] = \"moz\" + eventName;\n  return prefixes;\n}\nvar vendorPrefixes = {\n    animationend: makePrefixMap(\"Animation\", \"AnimationEnd\"),\n    animationiteration: makePrefixMap(\"Animation\", \"AnimationIteration\"),\n    animationstart: makePrefixMap(\"Animation\", \"AnimationStart\"),\n    transitionrun: makePrefixMap(\"Transition\", \"TransitionRun\"),\n    transitionstart: makePrefixMap(\"Transition\", \"TransitionStart\"),\n    transitioncancel: makePrefixMap(\"Transition\", \"TransitionCancel\"),\n    transitionend: makePrefixMap(\"Transition\", \"TransitionEnd\")\n  },\n  prefixedEventNames = {},\n  style = {};\ncanUseDOM &&\n  ((style = document.createElement(\"div\").style),\n  \"AnimationEvent\" in window ||\n    (delete vendorPrefixes.animationend.animation,\n    delete vendorPrefixes.animationiteration.animation,\n    delete vendorPrefixes.animationstart.animation),\n  \"TransitionEvent\" in window ||\n    delete vendorPrefixes.transitionend.transition);\nfunction getVendorPrefixedEventName(eventName) {\n  if (prefixedEventNames[eventName]) return prefixedEventNames[eventName];\n  if (!vendorPrefixes[eventName]) return eventName;\n  var prefixMap = vendorPrefixes[eventName],\n    styleProp;\n  for (styleProp in prefixMap)\n    if (prefixMap.hasOwnProperty(styleProp) && styleProp in style)\n      return (prefixedEventNames[eventName] = prefixMap[styleProp]);\n  return eventName;\n}\nvar ANIMATION_END = getVendorPrefixedEventName(\"animationend\"),\n  ANIMATION_ITERATION = getVendorPrefixedEventName(\"animationiteration\"),\n  ANIMATION_START = getVendorPrefixedEventName(\"animationstart\"),\n  TRANSITION_RUN = getVendorPrefixedEventName(\"transitionrun\"),\n  TRANSITION_START = getVendorPrefixedEventName(\"transitionstart\"),\n  TRANSITION_CANCEL = getVendorPrefixedEventName(\"transitioncancel\"),\n  TRANSITION_END = getVendorPrefixedEventName(\"transitionend\"),\n  topLevelEventsToReactNames = new Map(),\n  simpleEventPluginEvents =\n    \"abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel\".split(\n      \" \"\n    );\nsimpleEventPluginEvents.push(\"scrollEnd\");\nfunction registerSimpleEvent(domEventName, reactName) {\n  topLevelEventsToReactNames.set(domEventName, reactName);\n  registerTwoPhaseEvent(reactName, [domEventName]);\n}\nvar CapturedStacks = new WeakMap();\nfunction createCapturedValueAtFiber(value, source) {\n  if (\"object\" === typeof value && null !== value) {\n    var existing = CapturedStacks.get(value);\n    if (void 0 !== existing) return existing;\n    source = {\n      value: value,\n      source: source,\n      stack: getStackByFiberInDevAndProd(source)\n    };\n    CapturedStacks.set(value, source);\n    return source;\n  }\n  return {\n    value: value,\n    source: source,\n    stack: getStackByFiberInDevAndProd(source)\n  };\n}\nvar concurrentQueues = [],\n  concurrentQueuesIndex = 0,\n  concurrentlyUpdatedLanes = 0;\nfunction finishQueueingConcurrentUpdates() {\n  for (\n    var endIndex = concurrentQueuesIndex,\n      i = (concurrentlyUpdatedLanes = concurrentQueuesIndex = 0);\n    i < endIndex;\n\n  ) {\n    var fiber = concurrentQueues[i];\n    concurrentQueues[i++] = null;\n    var queue = concurrentQueues[i];\n    concurrentQueues[i++] = null;\n    var update = concurrentQueues[i];\n    concurrentQueues[i++] = null;\n    var lane = concurrentQueues[i];\n    concurrentQueues[i++] = null;\n    if (null !== queue && null !== update) {\n      var pending = queue.pending;\n      null === pending\n        ? (update.next = update)\n        : ((update.next = pending.next), (pending.next = update));\n      queue.pending = update;\n    }\n    0 !== lane && markUpdateLaneFromFiberToRoot(fiber, update, lane);\n  }\n}\nfunction enqueueUpdate$1(fiber, queue, update, lane) {\n  concurrentQueues[concurrentQueuesIndex++] = fiber;\n  concurrentQueues[concurrentQueuesIndex++] = queue;\n  concurrentQueues[concurrentQueuesIndex++] = update;\n  concurrentQueues[concurrentQueuesIndex++] = lane;\n  concurrentlyUpdatedLanes |= lane;\n  fiber.lanes |= lane;\n  fiber = fiber.alternate;\n  null !== fiber && (fiber.lanes |= lane);\n}\nfunction enqueueConcurrentHookUpdate(fiber, queue, update, lane) {\n  enqueueUpdate$1(fiber, queue, update, lane);\n  return getRootForUpdatedFiber(fiber);\n}\nfunction enqueueConcurrentRenderForLane(fiber, lane) {\n  enqueueUpdate$1(fiber, null, null, lane);\n  return getRootForUpdatedFiber(fiber);\n}\nfunction markUpdateLaneFromFiberToRoot(sourceFiber, update, lane) {\n  sourceFiber.lanes |= lane;\n  var alternate = sourceFiber.alternate;\n  null !== alternate && (alternate.lanes |= lane);\n  for (var isHidden = !1, parent = sourceFiber.return; null !== parent; )\n    (parent.childLanes |= lane),\n      (alternate = parent.alternate),\n      null !== alternate && (alternate.childLanes |= lane),\n      22 === parent.tag &&\n        ((sourceFiber = parent.stateNode),\n        null === sourceFiber || sourceFiber._visibility & 1 || (isHidden = !0)),\n      (sourceFiber = parent),\n      (parent = parent.return);\n  return 3 === sourceFiber.tag\n    ? ((parent = sourceFiber.stateNode),\n      isHidden &&\n        null !== update &&\n        ((isHidden = 31 - clz32(lane)),\n        (sourceFiber = parent.hiddenUpdates),\n        (alternate = sourceFiber[isHidden]),\n        null === alternate\n          ? (sourceFiber[isHidden] = [update])\n          : alternate.push(update),\n        (update.lane = lane | 536870912)),\n      parent)\n    : null;\n}\nfunction getRootForUpdatedFiber(sourceFiber) {\n  if (50 < nestedUpdateCount)\n    throw (\n      ((nestedUpdateCount = 0),\n      (rootWithNestedUpdates = null),\n      Error(formatProdErrorMessage(185)))\n    );\n  for (var parent = sourceFiber.return; null !== parent; )\n    (sourceFiber = parent), (parent = sourceFiber.return);\n  return 3 === sourceFiber.tag ? sourceFiber.stateNode : null;\n}\nvar emptyContextObject = {};\nfunction FiberNode(tag, pendingProps, key, mode) {\n  this.tag = tag;\n  this.key = key;\n  this.sibling =\n    this.child =\n    this.return =\n    this.stateNode =\n    this.type =\n    this.elementType =\n      null;\n  this.index = 0;\n  this.refCleanup = this.ref = null;\n  this.pendingProps = pendingProps;\n  this.dependencies =\n    this.memoizedState =\n    this.updateQueue =\n    this.memoizedProps =\n      null;\n  this.mode = mode;\n  this.subtreeFlags = this.flags = 0;\n  this.deletions = null;\n  this.childLanes = this.lanes = 0;\n  this.alternate = null;\n}\nfunction createFiberImplClass(tag, pendingProps, key, mode) {\n  return new FiberNode(tag, pendingProps, key, mode);\n}\nfunction shouldConstruct(Component) {\n  Component = Component.prototype;\n  return !(!Component || !Component.isReactComponent);\n}\nfunction createWorkInProgress(current, pendingProps) {\n  var workInProgress = current.alternate;\n  null === workInProgress\n    ? ((workInProgress = createFiberImplClass(\n        current.tag,\n        pendingProps,\n        current.key,\n        current.mode\n      )),\n      (workInProgress.elementType = current.elementType),\n      (workInProgress.type = current.type),\n      (workInProgress.stateNode = current.stateNode),\n      (workInProgress.alternate = current),\n      (current.alternate = workInProgress))\n    : ((workInProgress.pendingProps = pendingProps),\n      (workInProgress.type = current.type),\n      (workInProgress.flags = 0),\n      (workInProgress.subtreeFlags = 0),\n      (workInProgress.deletions = null));\n  workInProgress.flags = current.flags & 65011712;\n  workInProgress.childLanes = current.childLanes;\n  workInProgress.lanes = current.lanes;\n  workInProgress.child = current.child;\n  workInProgress.memoizedProps = current.memoizedProps;\n  workInProgress.memoizedState = current.memoizedState;\n  workInProgress.updateQueue = current.updateQueue;\n  pendingProps = current.dependencies;\n  workInProgress.dependencies =\n    null === pendingProps\n      ? null\n      : { lanes: pendingProps.lanes, firstContext: pendingProps.firstContext };\n  workInProgress.sibling = current.sibling;\n  workInProgress.index = current.index;\n  workInProgress.ref = current.ref;\n  workInProgress.refCleanup = current.refCleanup;\n  return workInProgress;\n}\nfunction resetWorkInProgress(workInProgress, renderLanes) {\n  workInProgress.flags &= 65011714;\n  var current = workInProgress.alternate;\n  null === current\n    ? ((workInProgress.childLanes = 0),\n      (workInProgress.lanes = renderLanes),\n      (workInProgress.child = null),\n      (workInProgress.subtreeFlags = 0),\n      (workInProgress.memoizedProps = null),\n      (workInProgress.memoizedState = null),\n      (workInProgress.updateQueue = null),\n      (workInProgress.dependencies = null),\n      (workInProgress.stateNode = null))\n    : ((workInProgress.childLanes = current.childLanes),\n      (workInProgress.lanes = current.lanes),\n      (workInProgress.child = current.child),\n      (workInProgress.subtreeFlags = 0),\n      (workInProgress.deletions = null),\n      (workInProgress.memoizedProps = current.memoizedProps),\n      (workInProgress.memoizedState = current.memoizedState),\n      (workInProgress.updateQueue = current.updateQueue),\n      (workInProgress.type = current.type),\n      (renderLanes = current.dependencies),\n      (workInProgress.dependencies =\n        null === renderLanes\n          ? null\n          : {\n              lanes: renderLanes.lanes,\n              firstContext: renderLanes.firstContext\n            }));\n  return workInProgress;\n}\nfunction createFiberFromTypeAndProps(\n  type,\n  key,\n  pendingProps,\n  owner,\n  mode,\n  lanes\n) {\n  var fiberTag = 0;\n  owner = type;\n  if (\"function\" === typeof type) shouldConstruct(type) && (fiberTag = 1);\n  else if (\"string\" === typeof type)\n    fiberTag = isHostHoistableType(\n      type,\n      pendingProps,\n      contextStackCursor.current\n    )\n      ? 26\n      : \"html\" === type || \"head\" === type || \"body\" === type\n        ? 27\n        : 5;\n  else\n    a: switch (type) {\n      case REACT_ACTIVITY_TYPE:\n        return (\n          (type = createFiberImplClass(31, pendingProps, key, mode)),\n          (type.elementType = REACT_ACTIVITY_TYPE),\n          (type.lanes = lanes),\n          type\n        );\n      case REACT_FRAGMENT_TYPE:\n        return createFiberFromFragment(pendingProps.children, mode, lanes, key);\n      case REACT_STRICT_MODE_TYPE:\n        fiberTag = 8;\n        mode |= 24;\n        break;\n      case REACT_PROFILER_TYPE:\n        return (\n          (type = createFiberImplClass(12, pendingProps, key, mode | 2)),\n          (type.elementType = REACT_PROFILER_TYPE),\n          (type.lanes = lanes),\n          type\n        );\n      case REACT_SUSPENSE_TYPE:\n        return (\n          (type = createFiberImplClass(13, pendingProps, key, mode)),\n          (type.elementType = REACT_SUSPENSE_TYPE),\n          (type.lanes = lanes),\n          type\n        );\n      case REACT_SUSPENSE_LIST_TYPE:\n        return (\n          (type = createFiberImplClass(19, pendingProps, key, mode)),\n          (type.elementType = REACT_SUSPENSE_LIST_TYPE),\n          (type.lanes = lanes),\n          type\n        );\n      default:\n        if (\"object\" === typeof type && null !== type)\n          switch (type.$$typeof) {\n            case REACT_PROVIDER_TYPE:\n            case REACT_CONTEXT_TYPE:\n              fiberTag = 10;\n              break a;\n            case REACT_CONSUMER_TYPE:\n              fiberTag = 9;\n              break a;\n            case REACT_FORWARD_REF_TYPE:\n              fiberTag = 11;\n              break a;\n            case REACT_MEMO_TYPE:\n              fiberTag = 14;\n              break a;\n            case REACT_LAZY_TYPE:\n              fiberTag = 16;\n              owner = null;\n              break a;\n          }\n        fiberTag = 29;\n        pendingProps = Error(\n          formatProdErrorMessage(130, null === type ? \"null\" : typeof type, \"\")\n        );\n        owner = null;\n    }\n  key = createFiberImplClass(fiberTag, pendingProps, key, mode);\n  key.elementType = type;\n  key.type = owner;\n  key.lanes = lanes;\n  return key;\n}\nfunction createFiberFromFragment(elements, mode, lanes, key) {\n  elements = createFiberImplClass(7, elements, key, mode);\n  elements.lanes = lanes;\n  return elements;\n}\nfunction createFiberFromText(content, mode, lanes) {\n  content = createFiberImplClass(6, content, null, mode);\n  content.lanes = lanes;\n  return content;\n}\nfunction createFiberFromPortal(portal, mode, lanes) {\n  mode = createFiberImplClass(\n    4,\n    null !== portal.children ? portal.children : [],\n    portal.key,\n    mode\n  );\n  mode.lanes = lanes;\n  mode.stateNode = {\n    containerInfo: portal.containerInfo,\n    pendingChildren: null,\n    implementation: portal.implementation\n  };\n  return mode;\n}\nvar forkStack = [],\n  forkStackIndex = 0,\n  treeForkProvider = null,\n  treeForkCount = 0,\n  idStack = [],\n  idStackIndex = 0,\n  treeContextProvider = null,\n  treeContextId = 1,\n  treeContextOverflow = \"\";\nfunction pushTreeFork(workInProgress, totalChildren) {\n  forkStack[forkStackIndex++] = treeForkCount;\n  forkStack[forkStackIndex++] = treeForkProvider;\n  treeForkProvider = workInProgress;\n  treeForkCount = totalChildren;\n}\nfunction pushTreeId(workInProgress, totalChildren, index) {\n  idStack[idStackIndex++] = treeContextId;\n  idStack[idStackIndex++] = treeContextOverflow;\n  idStack[idStackIndex++] = treeContextProvider;\n  treeContextProvider = workInProgress;\n  var baseIdWithLeadingBit = treeContextId;\n  workInProgress = treeContextOverflow;\n  var baseLength = 32 - clz32(baseIdWithLeadingBit) - 1;\n  baseIdWithLeadingBit &= ~(1 << baseLength);\n  index += 1;\n  var length = 32 - clz32(totalChildren) + baseLength;\n  if (30 < length) {\n    var numberOfOverflowBits = baseLength - (baseLength % 5);\n    length = (\n      baseIdWithLeadingBit &\n      ((1 << numberOfOverflowBits) - 1)\n    ).toString(32);\n    baseIdWithLeadingBit >>= numberOfOverflowBits;\n    baseLength -= numberOfOverflowBits;\n    treeContextId =\n      (1 << (32 - clz32(totalChildren) + baseLength)) |\n      (index << baseLength) |\n      baseIdWithLeadingBit;\n    treeContextOverflow = length + workInProgress;\n  } else\n    (treeContextId =\n      (1 << length) | (index << baseLength) | baseIdWithLeadingBit),\n      (treeContextOverflow = workInProgress);\n}\nfunction pushMaterializedTreeId(workInProgress) {\n  null !== workInProgress.return &&\n    (pushTreeFork(workInProgress, 1), pushTreeId(workInProgress, 1, 0));\n}\nfunction popTreeContext(workInProgress) {\n  for (; workInProgress === treeForkProvider; )\n    (treeForkProvider = forkStack[--forkStackIndex]),\n      (forkStack[forkStackIndex] = null),\n      (treeForkCount = forkStack[--forkStackIndex]),\n      (forkStack[forkStackIndex] = null);\n  for (; workInProgress === treeContextProvider; )\n    (treeContextProvider = idStack[--idStackIndex]),\n      (idStack[idStackIndex] = null),\n      (treeContextOverflow = idStack[--idStackIndex]),\n      (idStack[idStackIndex] = null),\n      (treeContextId = idStack[--idStackIndex]),\n      (idStack[idStackIndex] = null);\n}\nvar hydrationParentFiber = null,\n  nextHydratableInstance = null,\n  isHydrating = !1,\n  hydrationErrors = null,\n  rootOrSingletonContext = !1,\n  HydrationMismatchException = Error(formatProdErrorMessage(519));\nfunction throwOnHydrationMismatch(fiber) {\n  var error = Error(formatProdErrorMessage(418, \"\"));\n  queueHydrationError(createCapturedValueAtFiber(error, fiber));\n  throw HydrationMismatchException;\n}\nfunction prepareToHydrateHostInstance(fiber) {\n  var instance = fiber.stateNode,\n    type = fiber.type,\n    props = fiber.memoizedProps;\n  instance[internalInstanceKey] = fiber;\n  instance[internalPropsKey] = props;\n  switch (type) {\n    case \"dialog\":\n      listenToNonDelegatedEvent(\"cancel\", instance);\n      listenToNonDelegatedEvent(\"close\", instance);\n      break;\n    case \"iframe\":\n    case \"object\":\n    case \"embed\":\n      listenToNonDelegatedEvent(\"load\", instance);\n      break;\n    case \"video\":\n    case \"audio\":\n      for (type = 0; type < mediaEventTypes.length; type++)\n        listenToNonDelegatedEvent(mediaEventTypes[type], instance);\n      break;\n    case \"source\":\n      listenToNonDelegatedEvent(\"error\", instance);\n      break;\n    case \"img\":\n    case \"image\":\n    case \"link\":\n      listenToNonDelegatedEvent(\"error\", instance);\n      listenToNonDelegatedEvent(\"load\", instance);\n      break;\n    case \"details\":\n      listenToNonDelegatedEvent(\"toggle\", instance);\n      break;\n    case \"input\":\n      listenToNonDelegatedEvent(\"invalid\", instance);\n      initInput(\n        instance,\n        props.value,\n        props.defaultValue,\n        props.checked,\n        props.defaultChecked,\n        props.type,\n        props.name,\n        !0\n      );\n      track(instance);\n      break;\n    case \"select\":\n      listenToNonDelegatedEvent(\"invalid\", instance);\n      break;\n    case \"textarea\":\n      listenToNonDelegatedEvent(\"invalid\", instance),\n        initTextarea(instance, props.value, props.defaultValue, props.children),\n        track(instance);\n  }\n  type = props.children;\n  (\"string\" !== typeof type &&\n    \"number\" !== typeof type &&\n    \"bigint\" !== typeof type) ||\n  instance.textContent === \"\" + type ||\n  !0 === props.suppressHydrationWarning ||\n  checkForUnmatchedText(instance.textContent, type)\n    ? (null != props.popover &&\n        (listenToNonDelegatedEvent(\"beforetoggle\", instance),\n        listenToNonDelegatedEvent(\"toggle\", instance)),\n      null != props.onScroll && listenToNonDelegatedEvent(\"scroll\", instance),\n      null != props.onScrollEnd &&\n        listenToNonDelegatedEvent(\"scrollend\", instance),\n      null != props.onClick && (instance.onclick = noop$1),\n      (instance = !0))\n    : (instance = !1);\n  instance || throwOnHydrationMismatch(fiber);\n}\nfunction popToNextHostParent(fiber) {\n  for (hydrationParentFiber = fiber.return; hydrationParentFiber; )\n    switch (hydrationParentFiber.tag) {\n      case 5:\n      case 13:\n        rootOrSingletonContext = !1;\n        return;\n      case 27:\n      case 3:\n        rootOrSingletonContext = !0;\n        return;\n      default:\n        hydrationParentFiber = hydrationParentFiber.return;\n    }\n}\nfunction popHydrationState(fiber) {\n  if (fiber !== hydrationParentFiber) return !1;\n  if (!isHydrating) return popToNextHostParent(fiber), (isHydrating = !0), !1;\n  var tag = fiber.tag,\n    JSCompiler_temp;\n  if ((JSCompiler_temp = 3 !== tag && 27 !== tag)) {\n    if ((JSCompiler_temp = 5 === tag))\n      (JSCompiler_temp = fiber.type),\n        (JSCompiler_temp =\n          !(\"form\" !== JSCompiler_temp && \"button\" !== JSCompiler_temp) ||\n          shouldSetTextContent(fiber.type, fiber.memoizedProps));\n    JSCompiler_temp = !JSCompiler_temp;\n  }\n  JSCompiler_temp && nextHydratableInstance && throwOnHydrationMismatch(fiber);\n  popToNextHostParent(fiber);\n  if (13 === tag) {\n    fiber = fiber.memoizedState;\n    fiber = null !== fiber ? fiber.dehydrated : null;\n    if (!fiber) throw Error(formatProdErrorMessage(317));\n    a: {\n      fiber = fiber.nextSibling;\n      for (tag = 0; fiber; ) {\n        if (8 === fiber.nodeType)\n          if (((JSCompiler_temp = fiber.data), \"/$\" === JSCompiler_temp)) {\n            if (0 === tag) {\n              nextHydratableInstance = getNextHydratable(fiber.nextSibling);\n              break a;\n            }\n            tag--;\n          } else\n            (\"$\" !== JSCompiler_temp &&\n              \"$!\" !== JSCompiler_temp &&\n              \"$?\" !== JSCompiler_temp) ||\n              tag++;\n        fiber = fiber.nextSibling;\n      }\n      nextHydratableInstance = null;\n    }\n  } else\n    27 === tag\n      ? ((tag = nextHydratableInstance),\n        isSingletonScope(fiber.type)\n          ? ((fiber = previousHydratableOnEnteringScopedSingleton),\n            (previousHydratableOnEnteringScopedSingleton = null),\n            (nextHydratableInstance = fiber))\n          : (nextHydratableInstance = tag))\n      : (nextHydratableInstance = hydrationParentFiber\n          ? getNextHydratable(fiber.stateNode.nextSibling)\n          : null);\n  return !0;\n}\nfunction resetHydrationState() {\n  nextHydratableInstance = hydrationParentFiber = null;\n  isHydrating = !1;\n}\nfunction upgradeHydrationErrorsToRecoverable() {\n  var queuedErrors = hydrationErrors;\n  null !== queuedErrors &&\n    (null === workInProgressRootRecoverableErrors\n      ? (workInProgressRootRecoverableErrors = queuedErrors)\n      : workInProgressRootRecoverableErrors.push.apply(\n          workInProgressRootRecoverableErrors,\n          queuedErrors\n        ),\n    (hydrationErrors = null));\n  return queuedErrors;\n}\nfunction queueHydrationError(error) {\n  null === hydrationErrors\n    ? (hydrationErrors = [error])\n    : hydrationErrors.push(error);\n}\nvar valueCursor = createCursor(null),\n  currentlyRenderingFiber$1 = null,\n  lastContextDependency = null;\nfunction pushProvider(providerFiber, context, nextValue) {\n  push(valueCursor, context._currentValue);\n  context._currentValue = nextValue;\n}\nfunction popProvider(context) {\n  context._currentValue = valueCursor.current;\n  pop(valueCursor);\n}\nfunction scheduleContextWorkOnParentPath(parent, renderLanes, propagationRoot) {\n  for (; null !== parent; ) {\n    var alternate = parent.alternate;\n    (parent.childLanes & renderLanes) !== renderLanes\n      ? ((parent.childLanes |= renderLanes),\n        null !== alternate && (alternate.childLanes |= renderLanes))\n      : null !== alternate &&\n        (alternate.childLanes & renderLanes) !== renderLanes &&\n        (alternate.childLanes |= renderLanes);\n    if (parent === propagationRoot) break;\n    parent = parent.return;\n  }\n}\nfunction propagateContextChanges(\n  workInProgress,\n  contexts,\n  renderLanes,\n  forcePropagateEntireTree\n) {\n  var fiber = workInProgress.child;\n  null !== fiber && (fiber.return = workInProgress);\n  for (; null !== fiber; ) {\n    var list = fiber.dependencies;\n    if (null !== list) {\n      var nextFiber = fiber.child;\n      list = list.firstContext;\n      a: for (; null !== list; ) {\n        var dependency = list;\n        list = fiber;\n        for (var i = 0; i < contexts.length; i++)\n          if (dependency.context === contexts[i]) {\n            list.lanes |= renderLanes;\n            dependency = list.alternate;\n            null !== dependency && (dependency.lanes |= renderLanes);\n            scheduleContextWorkOnParentPath(\n              list.return,\n              renderLanes,\n              workInProgress\n            );\n            forcePropagateEntireTree || (nextFiber = null);\n            break a;\n          }\n        list = dependency.next;\n      }\n    } else if (18 === fiber.tag) {\n      nextFiber = fiber.return;\n      if (null === nextFiber) throw Error(formatProdErrorMessage(341));\n      nextFiber.lanes |= renderLanes;\n      list = nextFiber.alternate;\n      null !== list && (list.lanes |= renderLanes);\n      scheduleContextWorkOnParentPath(nextFiber, renderLanes, workInProgress);\n      nextFiber = null;\n    } else nextFiber = fiber.child;\n    if (null !== nextFiber) nextFiber.return = fiber;\n    else\n      for (nextFiber = fiber; null !== nextFiber; ) {\n        if (nextFiber === workInProgress) {\n          nextFiber = null;\n          break;\n        }\n        fiber = nextFiber.sibling;\n        if (null !== fiber) {\n          fiber.return = nextFiber.return;\n          nextFiber = fiber;\n          break;\n        }\n        nextFiber = nextFiber.return;\n      }\n    fiber = nextFiber;\n  }\n}\nfunction propagateParentContextChanges(\n  current,\n  workInProgress,\n  renderLanes,\n  forcePropagateEntireTree\n) {\n  current = null;\n  for (\n    var parent = workInProgress, isInsidePropagationBailout = !1;\n    null !== parent;\n\n  ) {\n    if (!isInsidePropagationBailout)\n      if (0 !== (parent.flags & 524288)) isInsidePropagationBailout = !0;\n      else if (0 !== (parent.flags & 262144)) break;\n    if (10 === parent.tag) {\n      var currentParent = parent.alternate;\n      if (null === currentParent) throw Error(formatProdErrorMessage(387));\n      currentParent = currentParent.memoizedProps;\n      if (null !== currentParent) {\n        var context = parent.type;\n        objectIs(parent.pendingProps.value, currentParent.value) ||\n          (null !== current ? current.push(context) : (current = [context]));\n      }\n    } else if (parent === hostTransitionProviderCursor.current) {\n      currentParent = parent.alternate;\n      if (null === currentParent) throw Error(formatProdErrorMessage(387));\n      currentParent.memoizedState.memoizedState !==\n        parent.memoizedState.memoizedState &&\n        (null !== current\n          ? current.push(HostTransitionContext)\n          : (current = [HostTransitionContext]));\n    }\n    parent = parent.return;\n  }\n  null !== current &&\n    propagateContextChanges(\n      workInProgress,\n      current,\n      renderLanes,\n      forcePropagateEntireTree\n    );\n  workInProgress.flags |= 262144;\n}\nfunction checkIfContextChanged(currentDependencies) {\n  for (\n    currentDependencies = currentDependencies.firstContext;\n    null !== currentDependencies;\n\n  ) {\n    if (\n      !objectIs(\n        currentDependencies.context._currentValue,\n        currentDependencies.memoizedValue\n      )\n    )\n      return !0;\n    currentDependencies = currentDependencies.next;\n  }\n  return !1;\n}\nfunction prepareToReadContext(workInProgress) {\n  currentlyRenderingFiber$1 = workInProgress;\n  lastContextDependency = null;\n  workInProgress = workInProgress.dependencies;\n  null !== workInProgress && (workInProgress.firstContext = null);\n}\nfunction readContext(context) {\n  return readContextForConsumer(currentlyRenderingFiber$1, context);\n}\nfunction readContextDuringReconciliation(consumer, context) {\n  null === currentlyRenderingFiber$1 && prepareToReadContext(consumer);\n  return readContextForConsumer(consumer, context);\n}\nfunction readContextForConsumer(consumer, context) {\n  var value = context._currentValue;\n  context = { context: context, memoizedValue: value, next: null };\n  if (null === lastContextDependency) {\n    if (null === consumer) throw Error(formatProdErrorMessage(308));\n    lastContextDependency = context;\n    consumer.dependencies = { lanes: 0, firstContext: context };\n    consumer.flags |= 524288;\n  } else lastContextDependency = lastContextDependency.next = context;\n  return value;\n}\nvar AbortControllerLocal =\n    \"undefined\" !== typeof AbortController\n      ? AbortController\n      : function () {\n          var listeners = [],\n            signal = (this.signal = {\n              aborted: !1,\n              addEventListener: function (type, listener) {\n                listeners.push(listener);\n              }\n            });\n          this.abort = function () {\n            signal.aborted = !0;\n            listeners.forEach(function (listener) {\n              return listener();\n            });\n          };\n        },\n  scheduleCallback$2 = Scheduler.unstable_scheduleCallback,\n  NormalPriority = Scheduler.unstable_NormalPriority,\n  CacheContext = {\n    $$typeof: REACT_CONTEXT_TYPE,\n    Consumer: null,\n    Provider: null,\n    _currentValue: null,\n    _currentValue2: null,\n    _threadCount: 0\n  };\nfunction createCache() {\n  return {\n    controller: new AbortControllerLocal(),\n    data: new Map(),\n    refCount: 0\n  };\n}\nfunction releaseCache(cache) {\n  cache.refCount--;\n  0 === cache.refCount &&\n    scheduleCallback$2(NormalPriority, function () {\n      cache.controller.abort();\n    });\n}\nvar currentEntangledListeners = null,\n  currentEntangledPendingCount = 0,\n  currentEntangledLane = 0,\n  currentEntangledActionThenable = null;\nfunction entangleAsyncAction(transition, thenable) {\n  if (null === currentEntangledListeners) {\n    var entangledListeners = (currentEntangledListeners = []);\n    currentEntangledPendingCount = 0;\n    currentEntangledLane = requestTransitionLane();\n    currentEntangledActionThenable = {\n      status: \"pending\",\n      value: void 0,\n      then: function (resolve) {\n        entangledListeners.push(resolve);\n      }\n    };\n  }\n  currentEntangledPendingCount++;\n  thenable.then(pingEngtangledActionScope, pingEngtangledActionScope);\n  return thenable;\n}\nfunction pingEngtangledActionScope() {\n  if (\n    0 === --currentEntangledPendingCount &&\n    null !== currentEntangledListeners\n  ) {\n    null !== currentEntangledActionThenable &&\n      (currentEntangledActionThenable.status = \"fulfilled\");\n    var listeners = currentEntangledListeners;\n    currentEntangledListeners = null;\n    currentEntangledLane = 0;\n    currentEntangledActionThenable = null;\n    for (var i = 0; i < listeners.length; i++) (0, listeners[i])();\n  }\n}\nfunction chainThenableValue(thenable, result) {\n  var listeners = [],\n    thenableWithOverride = {\n      status: \"pending\",\n      value: null,\n      reason: null,\n      then: function (resolve) {\n        listeners.push(resolve);\n      }\n    };\n  thenable.then(\n    function () {\n      thenableWithOverride.status = \"fulfilled\";\n      thenableWithOverride.value = result;\n      for (var i = 0; i < listeners.length; i++) (0, listeners[i])(result);\n    },\n    function (error) {\n      thenableWithOverride.status = \"rejected\";\n      thenableWithOverride.reason = error;\n      for (error = 0; error < listeners.length; error++)\n        (0, listeners[error])(void 0);\n    }\n  );\n  return thenableWithOverride;\n}\nvar prevOnStartTransitionFinish = ReactSharedInternals.S;\nReactSharedInternals.S = function (transition, returnValue) {\n  \"object\" === typeof returnValue &&\n    null !== returnValue &&\n    \"function\" === typeof returnValue.then &&\n    entangleAsyncAction(transition, returnValue);\n  null !== prevOnStartTransitionFinish &&\n    prevOnStartTransitionFinish(transition, returnValue);\n};\nvar resumedCache = createCursor(null);\nfunction peekCacheFromPool() {\n  var cacheResumedFromPreviousRender = resumedCache.current;\n  return null !== cacheResumedFromPreviousRender\n    ? cacheResumedFromPreviousRender\n    : workInProgressRoot.pooledCache;\n}\nfunction pushTransition(offscreenWorkInProgress, prevCachePool) {\n  null === prevCachePool\n    ? push(resumedCache, resumedCache.current)\n    : push(resumedCache, prevCachePool.pool);\n}\nfunction getSuspendedCache() {\n  var cacheFromPool = peekCacheFromPool();\n  return null === cacheFromPool\n    ? null\n    : { parent: CacheContext._currentValue, pool: cacheFromPool };\n}\nvar SuspenseException = Error(formatProdErrorMessage(460)),\n  SuspenseyCommitException = Error(formatProdErrorMessage(474)),\n  SuspenseActionException = Error(formatProdErrorMessage(542)),\n  noopSuspenseyCommitThenable = { then: function () {} };\nfunction isThenableResolved(thenable) {\n  thenable = thenable.status;\n  return \"fulfilled\" === thenable || \"rejected\" === thenable;\n}\nfunction noop$3() {}\nfunction trackUsedThenable(thenableState, thenable, index) {\n  index = thenableState[index];\n  void 0 === index\n    ? thenableState.push(thenable)\n    : index !== thenable && (thenable.then(noop$3, noop$3), (thenable = index));\n  switch (thenable.status) {\n    case \"fulfilled\":\n      return thenable.value;\n    case \"rejected\":\n      throw (\n        ((thenableState = thenable.reason),\n        checkIfUseWrappedInAsyncCatch(thenableState),\n        thenableState)\n      );\n    default:\n      if (\"string\" === typeof thenable.status) thenable.then(noop$3, noop$3);\n      else {\n        thenableState = workInProgressRoot;\n        if (null !== thenableState && 100 < thenableState.shellSuspendCounter)\n          throw Error(formatProdErrorMessage(482));\n        thenableState = thenable;\n        thenableState.status = \"pending\";\n        thenableState.then(\n          function (fulfilledValue) {\n            if (\"pending\" === thenable.status) {\n              var fulfilledThenable = thenable;\n              fulfilledThenable.status = \"fulfilled\";\n              fulfilledThenable.value = fulfilledValue;\n            }\n          },\n          function (error) {\n            if (\"pending\" === thenable.status) {\n              var rejectedThenable = thenable;\n              rejectedThenable.status = \"rejected\";\n              rejectedThenable.reason = error;\n            }\n          }\n        );\n      }\n      switch (thenable.status) {\n        case \"fulfilled\":\n          return thenable.value;\n        case \"rejected\":\n          throw (\n            ((thenableState = thenable.reason),\n            checkIfUseWrappedInAsyncCatch(thenableState),\n            thenableState)\n          );\n      }\n      suspendedThenable = thenable;\n      throw SuspenseException;\n  }\n}\nvar suspendedThenable = null;\nfunction getSuspendedThenable() {\n  if (null === suspendedThenable) throw Error(formatProdErrorMessage(459));\n  var thenable = suspendedThenable;\n  suspendedThenable = null;\n  return thenable;\n}\nfunction checkIfUseWrappedInAsyncCatch(rejectedReason) {\n  if (\n    rejectedReason === SuspenseException ||\n    rejectedReason === SuspenseActionException\n  )\n    throw Error(formatProdErrorMessage(483));\n}\nvar hasForceUpdate = !1;\nfunction initializeUpdateQueue(fiber) {\n  fiber.updateQueue = {\n    baseState: fiber.memoizedState,\n    firstBaseUpdate: null,\n    lastBaseUpdate: null,\n    shared: { pending: null, lanes: 0, hiddenCallbacks: null },\n    callbacks: null\n  };\n}\nfunction cloneUpdateQueue(current, workInProgress) {\n  current = current.updateQueue;\n  workInProgress.updateQueue === current &&\n    (workInProgress.updateQueue = {\n      baseState: current.baseState,\n      firstBaseUpdate: current.firstBaseUpdate,\n      lastBaseUpdate: current.lastBaseUpdate,\n      shared: current.shared,\n      callbacks: null\n    });\n}\nfunction createUpdate(lane) {\n  return { lane: lane, tag: 0, payload: null, callback: null, next: null };\n}\nfunction enqueueUpdate(fiber, update, lane) {\n  var updateQueue = fiber.updateQueue;\n  if (null === updateQueue) return null;\n  updateQueue = updateQueue.shared;\n  if (0 !== (executionContext & 2)) {\n    var pending = updateQueue.pending;\n    null === pending\n      ? (update.next = update)\n      : ((update.next = pending.next), (pending.next = update));\n    updateQueue.pending = update;\n    update = getRootForUpdatedFiber(fiber);\n    markUpdateLaneFromFiberToRoot(fiber, null, lane);\n    return update;\n  }\n  enqueueUpdate$1(fiber, updateQueue, update, lane);\n  return getRootForUpdatedFiber(fiber);\n}\nfunction entangleTransitions(root, fiber, lane) {\n  fiber = fiber.updateQueue;\n  if (null !== fiber && ((fiber = fiber.shared), 0 !== (lane & 4194048))) {\n    var queueLanes = fiber.lanes;\n    queueLanes &= root.pendingLanes;\n    lane |= queueLanes;\n    fiber.lanes = lane;\n    markRootEntangled(root, lane);\n  }\n}\nfunction enqueueCapturedUpdate(workInProgress, capturedUpdate) {\n  var queue = workInProgress.updateQueue,\n    current = workInProgress.alternate;\n  if (\n    null !== current &&\n    ((current = current.updateQueue), queue === current)\n  ) {\n    var newFirst = null,\n      newLast = null;\n    queue = queue.firstBaseUpdate;\n    if (null !== queue) {\n      do {\n        var clone = {\n          lane: queue.lane,\n          tag: queue.tag,\n          payload: queue.payload,\n          callback: null,\n          next: null\n        };\n        null === newLast\n          ? (newFirst = newLast = clone)\n          : (newLast = newLast.next = clone);\n        queue = queue.next;\n      } while (null !== queue);\n      null === newLast\n        ? (newFirst = newLast = capturedUpdate)\n        : (newLast = newLast.next = capturedUpdate);\n    } else newFirst = newLast = capturedUpdate;\n    queue = {\n      baseState: current.baseState,\n      firstBaseUpdate: newFirst,\n      lastBaseUpdate: newLast,\n      shared: current.shared,\n      callbacks: current.callbacks\n    };\n    workInProgress.updateQueue = queue;\n    return;\n  }\n  workInProgress = queue.lastBaseUpdate;\n  null === workInProgress\n    ? (queue.firstBaseUpdate = capturedUpdate)\n    : (workInProgress.next = capturedUpdate);\n  queue.lastBaseUpdate = capturedUpdate;\n}\nvar didReadFromEntangledAsyncAction = !1;\nfunction suspendIfUpdateReadFromEntangledAsyncAction() {\n  if (didReadFromEntangledAsyncAction) {\n    var entangledActionThenable = currentEntangledActionThenable;\n    if (null !== entangledActionThenable) throw entangledActionThenable;\n  }\n}\nfunction processUpdateQueue(\n  workInProgress$jscomp$0,\n  props,\n  instance$jscomp$0,\n  renderLanes\n) {\n  didReadFromEntangledAsyncAction = !1;\n  var queue = workInProgress$jscomp$0.updateQueue;\n  hasForceUpdate = !1;\n  var firstBaseUpdate = queue.firstBaseUpdate,\n    lastBaseUpdate = queue.lastBaseUpdate,\n    pendingQueue = queue.shared.pending;\n  if (null !== pendingQueue) {\n    queue.shared.pending = null;\n    var lastPendingUpdate = pendingQueue,\n      firstPendingUpdate = lastPendingUpdate.next;\n    lastPendingUpdate.next = null;\n    null === lastBaseUpdate\n      ? (firstBaseUpdate = firstPendingUpdate)\n      : (lastBaseUpdate.next = firstPendingUpdate);\n    lastBaseUpdate = lastPendingUpdate;\n    var current = workInProgress$jscomp$0.alternate;\n    null !== current &&\n      ((current = current.updateQueue),\n      (pendingQueue = current.lastBaseUpdate),\n      pendingQueue !== lastBaseUpdate &&\n        (null === pendingQueue\n          ? (current.firstBaseUpdate = firstPendingUpdate)\n          : (pendingQueue.next = firstPendingUpdate),\n        (current.lastBaseUpdate = lastPendingUpdate)));\n  }\n  if (null !== firstBaseUpdate) {\n    var newState = queue.baseState;\n    lastBaseUpdate = 0;\n    current = firstPendingUpdate = lastPendingUpdate = null;\n    pendingQueue = firstBaseUpdate;\n    do {\n      var updateLane = pendingQueue.lane & -536870913,\n        isHiddenUpdate = updateLane !== pendingQueue.lane;\n      if (\n        isHiddenUpdate\n          ? (workInProgressRootRenderLanes & updateLane) === updateLane\n          : (renderLanes & updateLane) === updateLane\n      ) {\n        0 !== updateLane &&\n          updateLane === currentEntangledLane &&\n          (didReadFromEntangledAsyncAction = !0);\n        null !== current &&\n          (current = current.next =\n            {\n              lane: 0,\n              tag: pendingQueue.tag,\n              payload: pendingQueue.payload,\n              callback: null,\n              next: null\n            });\n        a: {\n          var workInProgress = workInProgress$jscomp$0,\n            update = pendingQueue;\n          updateLane = props;\n          var instance = instance$jscomp$0;\n          switch (update.tag) {\n            case 1:\n              workInProgress = update.payload;\n              if (\"function\" === typeof workInProgress) {\n                newState = workInProgress.call(instance, newState, updateLane);\n                break a;\n              }\n              newState = workInProgress;\n              break a;\n            case 3:\n              workInProgress.flags = (workInProgress.flags & -65537) | 128;\n            case 0:\n              workInProgress = update.payload;\n              updateLane =\n                \"function\" === typeof workInProgress\n                  ? workInProgress.call(instance, newState, updateLane)\n                  : workInProgress;\n              if (null === updateLane || void 0 === updateLane) break a;\n              newState = assign({}, newState, updateLane);\n              break a;\n            case 2:\n              hasForceUpdate = !0;\n          }\n        }\n        updateLane = pendingQueue.callback;\n        null !== updateLane &&\n          ((workInProgress$jscomp$0.flags |= 64),\n          isHiddenUpdate && (workInProgress$jscomp$0.flags |= 8192),\n          (isHiddenUpdate = queue.callbacks),\n          null === isHiddenUpdate\n            ? (queue.callbacks = [updateLane])\n            : isHiddenUpdate.push(updateLane));\n      } else\n        (isHiddenUpdate = {\n          lane: updateLane,\n          tag: pendingQueue.tag,\n          payload: pendingQueue.payload,\n          callback: pendingQueue.callback,\n          next: null\n        }),\n          null === current\n            ? ((firstPendingUpdate = current = isHiddenUpdate),\n              (lastPendingUpdate = newState))\n            : (current = current.next = isHiddenUpdate),\n          (lastBaseUpdate |= updateLane);\n      pendingQueue = pendingQueue.next;\n      if (null === pendingQueue)\n        if (((pendingQueue = queue.shared.pending), null === pendingQueue))\n          break;\n        else\n          (isHiddenUpdate = pendingQueue),\n            (pendingQueue = isHiddenUpdate.next),\n            (isHiddenUpdate.next = null),\n            (queue.lastBaseUpdate = isHiddenUpdate),\n            (queue.shared.pending = null);\n    } while (1);\n    null === current && (lastPendingUpdate = newState);\n    queue.baseState = lastPendingUpdate;\n    queue.firstBaseUpdate = firstPendingUpdate;\n    queue.lastBaseUpdate = current;\n    null === firstBaseUpdate && (queue.shared.lanes = 0);\n    workInProgressRootSkippedLanes |= lastBaseUpdate;\n    workInProgress$jscomp$0.lanes = lastBaseUpdate;\n    workInProgress$jscomp$0.memoizedState = newState;\n  }\n}\nfunction callCallback(callback, context) {\n  if (\"function\" !== typeof callback)\n    throw Error(formatProdErrorMessage(191, callback));\n  callback.call(context);\n}\nfunction commitCallbacks(updateQueue, context) {\n  var callbacks = updateQueue.callbacks;\n  if (null !== callbacks)\n    for (\n      updateQueue.callbacks = null, updateQueue = 0;\n      updateQueue < callbacks.length;\n      updateQueue++\n    )\n      callCallback(callbacks[updateQueue], context);\n}\nvar currentTreeHiddenStackCursor = createCursor(null),\n  prevEntangledRenderLanesCursor = createCursor(0);\nfunction pushHiddenContext(fiber, context) {\n  fiber = entangledRenderLanes;\n  push(prevEntangledRenderLanesCursor, fiber);\n  push(currentTreeHiddenStackCursor, context);\n  entangledRenderLanes = fiber | context.baseLanes;\n}\nfunction reuseHiddenContextOnStack() {\n  push(prevEntangledRenderLanesCursor, entangledRenderLanes);\n  push(currentTreeHiddenStackCursor, currentTreeHiddenStackCursor.current);\n}\nfunction popHiddenContext() {\n  entangledRenderLanes = prevEntangledRenderLanesCursor.current;\n  pop(currentTreeHiddenStackCursor);\n  pop(prevEntangledRenderLanesCursor);\n}\nvar renderLanes = 0,\n  currentlyRenderingFiber = null,\n  currentHook = null,\n  workInProgressHook = null,\n  didScheduleRenderPhaseUpdate = !1,\n  didScheduleRenderPhaseUpdateDuringThisPass = !1,\n  shouldDoubleInvokeUserFnsInHooksDEV = !1,\n  localIdCounter = 0,\n  thenableIndexCounter$1 = 0,\n  thenableState$1 = null,\n  globalClientIdCounter = 0;\nfunction throwInvalidHookError() {\n  throw Error(formatProdErrorMessage(321));\n}\nfunction areHookInputsEqual(nextDeps, prevDeps) {\n  if (null === prevDeps) return !1;\n  for (var i = 0; i < prevDeps.length && i < nextDeps.length; i++)\n    if (!objectIs(nextDeps[i], prevDeps[i])) return !1;\n  return !0;\n}\nfunction renderWithHooks(\n  current,\n  workInProgress,\n  Component,\n  props,\n  secondArg,\n  nextRenderLanes\n) {\n  renderLanes = nextRenderLanes;\n  currentlyRenderingFiber = workInProgress;\n  workInProgress.memoizedState = null;\n  workInProgress.updateQueue = null;\n  workInProgress.lanes = 0;\n  ReactSharedInternals.H =\n    null === current || null === current.memoizedState\n      ? HooksDispatcherOnMount\n      : HooksDispatcherOnUpdate;\n  shouldDoubleInvokeUserFnsInHooksDEV = !1;\n  nextRenderLanes = Component(props, secondArg);\n  shouldDoubleInvokeUserFnsInHooksDEV = !1;\n  didScheduleRenderPhaseUpdateDuringThisPass &&\n    (nextRenderLanes = renderWithHooksAgain(\n      workInProgress,\n      Component,\n      props,\n      secondArg\n    ));\n  finishRenderingHooks(current);\n  return nextRenderLanes;\n}\nfunction finishRenderingHooks(current) {\n  ReactSharedInternals.H = ContextOnlyDispatcher;\n  var didRenderTooFewHooks = null !== currentHook && null !== currentHook.next;\n  renderLanes = 0;\n  workInProgressHook = currentHook = currentlyRenderingFiber = null;\n  didScheduleRenderPhaseUpdate = !1;\n  thenableIndexCounter$1 = 0;\n  thenableState$1 = null;\n  if (didRenderTooFewHooks) throw Error(formatProdErrorMessage(300));\n  null === current ||\n    didReceiveUpdate ||\n    ((current = current.dependencies),\n    null !== current &&\n      checkIfContextChanged(current) &&\n      (didReceiveUpdate = !0));\n}\nfunction renderWithHooksAgain(workInProgress, Component, props, secondArg) {\n  currentlyRenderingFiber = workInProgress;\n  var numberOfReRenders = 0;\n  do {\n    didScheduleRenderPhaseUpdateDuringThisPass && (thenableState$1 = null);\n    thenableIndexCounter$1 = 0;\n    didScheduleRenderPhaseUpdateDuringThisPass = !1;\n    if (25 <= numberOfReRenders) throw Error(formatProdErrorMessage(301));\n    numberOfReRenders += 1;\n    workInProgressHook = currentHook = null;\n    if (null != workInProgress.updateQueue) {\n      var children = workInProgress.updateQueue;\n      children.lastEffect = null;\n      children.events = null;\n      children.stores = null;\n      null != children.memoCache && (children.memoCache.index = 0);\n    }\n    ReactSharedInternals.H = HooksDispatcherOnRerender;\n    children = Component(props, secondArg);\n  } while (didScheduleRenderPhaseUpdateDuringThisPass);\n  return children;\n}\nfunction TransitionAwareHostComponent() {\n  var dispatcher = ReactSharedInternals.H,\n    maybeThenable = dispatcher.useState()[0];\n  maybeThenable =\n    \"function\" === typeof maybeThenable.then\n      ? useThenable(maybeThenable)\n      : maybeThenable;\n  dispatcher = dispatcher.useState()[0];\n  (null !== currentHook ? currentHook.memoizedState : null) !== dispatcher &&\n    (currentlyRenderingFiber.flags |= 1024);\n  return maybeThenable;\n}\nfunction checkDidRenderIdHook() {\n  var didRenderIdHook = 0 !== localIdCounter;\n  localIdCounter = 0;\n  return didRenderIdHook;\n}\nfunction bailoutHooks(current, workInProgress, lanes) {\n  workInProgress.updateQueue = current.updateQueue;\n  workInProgress.flags &= -2053;\n  current.lanes &= ~lanes;\n}\nfunction resetHooksOnUnwind(workInProgress) {\n  if (didScheduleRenderPhaseUpdate) {\n    for (\n      workInProgress = workInProgress.memoizedState;\n      null !== workInProgress;\n\n    ) {\n      var queue = workInProgress.queue;\n      null !== queue && (queue.pending = null);\n      workInProgress = workInProgress.next;\n    }\n    didScheduleRenderPhaseUpdate = !1;\n  }\n  renderLanes = 0;\n  workInProgressHook = currentHook = currentlyRenderingFiber = null;\n  didScheduleRenderPhaseUpdateDuringThisPass = !1;\n  thenableIndexCounter$1 = localIdCounter = 0;\n  thenableState$1 = null;\n}\nfunction mountWorkInProgressHook() {\n  var hook = {\n    memoizedState: null,\n    baseState: null,\n    baseQueue: null,\n    queue: null,\n    next: null\n  };\n  null === workInProgressHook\n    ? (currentlyRenderingFiber.memoizedState = workInProgressHook = hook)\n    : (workInProgressHook = workInProgressHook.next = hook);\n  return workInProgressHook;\n}\nfunction updateWorkInProgressHook() {\n  if (null === currentHook) {\n    var nextCurrentHook = currentlyRenderingFiber.alternate;\n    nextCurrentHook =\n      null !== nextCurrentHook ? nextCurrentHook.memoizedState : null;\n  } else nextCurrentHook = currentHook.next;\n  var nextWorkInProgressHook =\n    null === workInProgressHook\n      ? currentlyRenderingFiber.memoizedState\n      : workInProgressHook.next;\n  if (null !== nextWorkInProgressHook)\n    (workInProgressHook = nextWorkInProgressHook),\n      (currentHook = nextCurrentHook);\n  else {\n    if (null === nextCurrentHook) {\n      if (null === currentlyRenderingFiber.alternate)\n        throw Error(formatProdErrorMessage(467));\n      throw Error(formatProdErrorMessage(310));\n    }\n    currentHook = nextCurrentHook;\n    nextCurrentHook = {\n      memoizedState: currentHook.memoizedState,\n      baseState: currentHook.baseState,\n      baseQueue: currentHook.baseQueue,\n      queue: currentHook.queue,\n      next: null\n    };\n    null === workInProgressHook\n      ? (currentlyRenderingFiber.memoizedState = workInProgressHook =\n          nextCurrentHook)\n      : (workInProgressHook = workInProgressHook.next = nextCurrentHook);\n  }\n  return workInProgressHook;\n}\nfunction createFunctionComponentUpdateQueue() {\n  return { lastEffect: null, events: null, stores: null, memoCache: null };\n}\nfunction useThenable(thenable) {\n  var index = thenableIndexCounter$1;\n  thenableIndexCounter$1 += 1;\n  null === thenableState$1 && (thenableState$1 = []);\n  thenable = trackUsedThenable(thenableState$1, thenable, index);\n  index = currentlyRenderingFiber;\n  null ===\n    (null === workInProgressHook\n      ? index.memoizedState\n      : workInProgressHook.next) &&\n    ((index = index.alternate),\n    (ReactSharedInternals.H =\n      null === index || null === index.memoizedState\n        ? HooksDispatcherOnMount\n        : HooksDispatcherOnUpdate));\n  return thenable;\n}\nfunction use(usable) {\n  if (null !== usable && \"object\" === typeof usable) {\n    if (\"function\" === typeof usable.then) return useThenable(usable);\n    if (usable.$$typeof === REACT_CONTEXT_TYPE) return readContext(usable);\n  }\n  throw Error(formatProdErrorMessage(438, String(usable)));\n}\nfunction useMemoCache(size) {\n  var memoCache = null,\n    updateQueue = currentlyRenderingFiber.updateQueue;\n  null !== updateQueue && (memoCache = updateQueue.memoCache);\n  if (null == memoCache) {\n    var current = currentlyRenderingFiber.alternate;\n    null !== current &&\n      ((current = current.updateQueue),\n      null !== current &&\n        ((current = current.memoCache),\n        null != current &&\n          (memoCache = {\n            data: current.data.map(function (array) {\n              return array.slice();\n            }),\n            index: 0\n          })));\n  }\n  null == memoCache && (memoCache = { data: [], index: 0 });\n  null === updateQueue &&\n    ((updateQueue = createFunctionComponentUpdateQueue()),\n    (currentlyRenderingFiber.updateQueue = updateQueue));\n  updateQueue.memoCache = memoCache;\n  updateQueue = memoCache.data[memoCache.index];\n  if (void 0 === updateQueue)\n    for (\n      updateQueue = memoCache.data[memoCache.index] = Array(size), current = 0;\n      current < size;\n      current++\n    )\n      updateQueue[current] = REACT_MEMO_CACHE_SENTINEL;\n  memoCache.index++;\n  return updateQueue;\n}\nfunction basicStateReducer(state, action) {\n  return \"function\" === typeof action ? action(state) : action;\n}\nfunction updateReducer(reducer) {\n  var hook = updateWorkInProgressHook();\n  return updateReducerImpl(hook, currentHook, reducer);\n}\nfunction updateReducerImpl(hook, current, reducer) {\n  var queue = hook.queue;\n  if (null === queue) throw Error(formatProdErrorMessage(311));\n  queue.lastRenderedReducer = reducer;\n  var baseQueue = hook.baseQueue,\n    pendingQueue = queue.pending;\n  if (null !== pendingQueue) {\n    if (null !== baseQueue) {\n      var baseFirst = baseQueue.next;\n      baseQueue.next = pendingQueue.next;\n      pendingQueue.next = baseFirst;\n    }\n    current.baseQueue = baseQueue = pendingQueue;\n    queue.pending = null;\n  }\n  pendingQueue = hook.baseState;\n  if (null === baseQueue) hook.memoizedState = pendingQueue;\n  else {\n    current = baseQueue.next;\n    var newBaseQueueFirst = (baseFirst = null),\n      newBaseQueueLast = null,\n      update = current,\n      didReadFromEntangledAsyncAction$32 = !1;\n    do {\n      var updateLane = update.lane & -536870913;\n      if (\n        updateLane !== update.lane\n          ? (workInProgressRootRenderLanes & updateLane) === updateLane\n          : (renderLanes & updateLane) === updateLane\n      ) {\n        var revertLane = update.revertLane;\n        if (0 === revertLane)\n          null !== newBaseQueueLast &&\n            (newBaseQueueLast = newBaseQueueLast.next =\n              {\n                lane: 0,\n                revertLane: 0,\n                action: update.action,\n                hasEagerState: update.hasEagerState,\n                eagerState: update.eagerState,\n                next: null\n              }),\n            updateLane === currentEntangledLane &&\n              (didReadFromEntangledAsyncAction$32 = !0);\n        else if ((renderLanes & revertLane) === revertLane) {\n          update = update.next;\n          revertLane === currentEntangledLane &&\n            (didReadFromEntangledAsyncAction$32 = !0);\n          continue;\n        } else\n          (updateLane = {\n            lane: 0,\n            revertLane: update.revertLane,\n            action: update.action,\n            hasEagerState: update.hasEagerState,\n            eagerState: update.eagerState,\n            next: null\n          }),\n            null === newBaseQueueLast\n              ? ((newBaseQueueFirst = newBaseQueueLast = updateLane),\n                (baseFirst = pendingQueue))\n              : (newBaseQueueLast = newBaseQueueLast.next = updateLane),\n            (currentlyRenderingFiber.lanes |= revertLane),\n            (workInProgressRootSkippedLanes |= revertLane);\n        updateLane = update.action;\n        shouldDoubleInvokeUserFnsInHooksDEV &&\n          reducer(pendingQueue, updateLane);\n        pendingQueue = update.hasEagerState\n          ? update.eagerState\n          : reducer(pendingQueue, updateLane);\n      } else\n        (revertLane = {\n          lane: updateLane,\n          revertLane: update.revertLane,\n          action: update.action,\n          hasEagerState: update.hasEagerState,\n          eagerState: update.eagerState,\n          next: null\n        }),\n          null === newBaseQueueLast\n            ? ((newBaseQueueFirst = newBaseQueueLast = revertLane),\n              (baseFirst = pendingQueue))\n            : (newBaseQueueLast = newBaseQueueLast.next = revertLane),\n          (currentlyRenderingFiber.lanes |= updateLane),\n          (workInProgressRootSkippedLanes |= updateLane);\n      update = update.next;\n    } while (null !== update && update !== current);\n    null === newBaseQueueLast\n      ? (baseFirst = pendingQueue)\n      : (newBaseQueueLast.next = newBaseQueueFirst);\n    if (\n      !objectIs(pendingQueue, hook.memoizedState) &&\n      ((didReceiveUpdate = !0),\n      didReadFromEntangledAsyncAction$32 &&\n        ((reducer = currentEntangledActionThenable), null !== reducer))\n    )\n      throw reducer;\n    hook.memoizedState = pendingQueue;\n    hook.baseState = baseFirst;\n    hook.baseQueue = newBaseQueueLast;\n    queue.lastRenderedState = pendingQueue;\n  }\n  null === baseQueue && (queue.lanes = 0);\n  return [hook.memoizedState, queue.dispatch];\n}\nfunction rerenderReducer(reducer) {\n  var hook = updateWorkInProgressHook(),\n    queue = hook.queue;\n  if (null === queue) throw Error(formatProdErrorMessage(311));\n  queue.lastRenderedReducer = reducer;\n  var dispatch = queue.dispatch,\n    lastRenderPhaseUpdate = queue.pending,\n    newState = hook.memoizedState;\n  if (null !== lastRenderPhaseUpdate) {\n    queue.pending = null;\n    var update = (lastRenderPhaseUpdate = lastRenderPhaseUpdate.next);\n    do (newState = reducer(newState, update.action)), (update = update.next);\n    while (update !== lastRenderPhaseUpdate);\n    objectIs(newState, hook.memoizedState) || (didReceiveUpdate = !0);\n    hook.memoizedState = newState;\n    null === hook.baseQueue && (hook.baseState = newState);\n    queue.lastRenderedState = newState;\n  }\n  return [newState, dispatch];\n}\nfunction updateSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {\n  var fiber = currentlyRenderingFiber,\n    hook = updateWorkInProgressHook(),\n    isHydrating$jscomp$0 = isHydrating;\n  if (isHydrating$jscomp$0) {\n    if (void 0 === getServerSnapshot) throw Error(formatProdErrorMessage(407));\n    getServerSnapshot = getServerSnapshot();\n  } else getServerSnapshot = getSnapshot();\n  var snapshotChanged = !objectIs(\n    (currentHook || hook).memoizedState,\n    getServerSnapshot\n  );\n  snapshotChanged &&\n    ((hook.memoizedState = getServerSnapshot), (didReceiveUpdate = !0));\n  hook = hook.queue;\n  var create = subscribeToStore.bind(null, fiber, hook, subscribe);\n  updateEffectImpl(2048, 8, create, [subscribe]);\n  if (\n    hook.getSnapshot !== getSnapshot ||\n    snapshotChanged ||\n    (null !== workInProgressHook && workInProgressHook.memoizedState.tag & 1)\n  ) {\n    fiber.flags |= 2048;\n    pushSimpleEffect(\n      9,\n      createEffectInstance(),\n      updateStoreInstance.bind(\n        null,\n        fiber,\n        hook,\n        getServerSnapshot,\n        getSnapshot\n      ),\n      null\n    );\n    if (null === workInProgressRoot) throw Error(formatProdErrorMessage(349));\n    isHydrating$jscomp$0 ||\n      0 !== (renderLanes & 124) ||\n      pushStoreConsistencyCheck(fiber, getSnapshot, getServerSnapshot);\n  }\n  return getServerSnapshot;\n}\nfunction pushStoreConsistencyCheck(fiber, getSnapshot, renderedSnapshot) {\n  fiber.flags |= 16384;\n  fiber = { getSnapshot: getSnapshot, value: renderedSnapshot };\n  getSnapshot = currentlyRenderingFiber.updateQueue;\n  null === getSnapshot\n    ? ((getSnapshot = createFunctionComponentUpdateQueue()),\n      (currentlyRenderingFiber.updateQueue = getSnapshot),\n      (getSnapshot.stores = [fiber]))\n    : ((renderedSnapshot = getSnapshot.stores),\n      null === renderedSnapshot\n        ? (getSnapshot.stores = [fiber])\n        : renderedSnapshot.push(fiber));\n}\nfunction updateStoreInstance(fiber, inst, nextSnapshot, getSnapshot) {\n  inst.value = nextSnapshot;\n  inst.getSnapshot = getSnapshot;\n  checkIfSnapshotChanged(inst) && forceStoreRerender(fiber);\n}\nfunction subscribeToStore(fiber, inst, subscribe) {\n  return subscribe(function () {\n    checkIfSnapshotChanged(inst) && forceStoreRerender(fiber);\n  });\n}\nfunction checkIfSnapshotChanged(inst) {\n  var latestGetSnapshot = inst.getSnapshot;\n  inst = inst.value;\n  try {\n    var nextValue = latestGetSnapshot();\n    return !objectIs(inst, nextValue);\n  } catch (error) {\n    return !0;\n  }\n}\nfunction forceStoreRerender(fiber) {\n  var root = enqueueConcurrentRenderForLane(fiber, 2);\n  null !== root && scheduleUpdateOnFiber(root, fiber, 2);\n}\nfunction mountStateImpl(initialState) {\n  var hook = mountWorkInProgressHook();\n  if (\"function\" === typeof initialState) {\n    var initialStateInitializer = initialState;\n    initialState = initialStateInitializer();\n    if (shouldDoubleInvokeUserFnsInHooksDEV) {\n      setIsStrictModeForDevtools(!0);\n      try {\n        initialStateInitializer();\n      } finally {\n        setIsStrictModeForDevtools(!1);\n      }\n    }\n  }\n  hook.memoizedState = hook.baseState = initialState;\n  hook.queue = {\n    pending: null,\n    lanes: 0,\n    dispatch: null,\n    lastRenderedReducer: basicStateReducer,\n    lastRenderedState: initialState\n  };\n  return hook;\n}\nfunction updateOptimisticImpl(hook, current, passthrough, reducer) {\n  hook.baseState = passthrough;\n  return updateReducerImpl(\n    hook,\n    currentHook,\n    \"function\" === typeof reducer ? reducer : basicStateReducer\n  );\n}\nfunction dispatchActionState(\n  fiber,\n  actionQueue,\n  setPendingState,\n  setState,\n  payload\n) {\n  if (isRenderPhaseUpdate(fiber)) throw Error(formatProdErrorMessage(485));\n  fiber = actionQueue.action;\n  if (null !== fiber) {\n    var actionNode = {\n      payload: payload,\n      action: fiber,\n      next: null,\n      isTransition: !0,\n      status: \"pending\",\n      value: null,\n      reason: null,\n      listeners: [],\n      then: function (listener) {\n        actionNode.listeners.push(listener);\n      }\n    };\n    null !== ReactSharedInternals.T\n      ? setPendingState(!0)\n      : (actionNode.isTransition = !1);\n    setState(actionNode);\n    setPendingState = actionQueue.pending;\n    null === setPendingState\n      ? ((actionNode.next = actionQueue.pending = actionNode),\n        runActionStateAction(actionQueue, actionNode))\n      : ((actionNode.next = setPendingState.next),\n        (actionQueue.pending = setPendingState.next = actionNode));\n  }\n}\nfunction runActionStateAction(actionQueue, node) {\n  var action = node.action,\n    payload = node.payload,\n    prevState = actionQueue.state;\n  if (node.isTransition) {\n    var prevTransition = ReactSharedInternals.T,\n      currentTransition = {};\n    ReactSharedInternals.T = currentTransition;\n    try {\n      var returnValue = action(prevState, payload),\n        onStartTransitionFinish = ReactSharedInternals.S;\n      null !== onStartTransitionFinish &&\n        onStartTransitionFinish(currentTransition, returnValue);\n      handleActionReturnValue(actionQueue, node, returnValue);\n    } catch (error) {\n      onActionError(actionQueue, node, error);\n    } finally {\n      ReactSharedInternals.T = prevTransition;\n    }\n  } else\n    try {\n      (prevTransition = action(prevState, payload)),\n        handleActionReturnValue(actionQueue, node, prevTransition);\n    } catch (error$38) {\n      onActionError(actionQueue, node, error$38);\n    }\n}\nfunction handleActionReturnValue(actionQueue, node, returnValue) {\n  null !== returnValue &&\n  \"object\" === typeof returnValue &&\n  \"function\" === typeof returnValue.then\n    ? returnValue.then(\n        function (nextState) {\n          onActionSuccess(actionQueue, node, nextState);\n        },\n        function (error) {\n          return onActionError(actionQueue, node, error);\n        }\n      )\n    : onActionSuccess(actionQueue, node, returnValue);\n}\nfunction onActionSuccess(actionQueue, actionNode, nextState) {\n  actionNode.status = \"fulfilled\";\n  actionNode.value = nextState;\n  notifyActionListeners(actionNode);\n  actionQueue.state = nextState;\n  actionNode = actionQueue.pending;\n  null !== actionNode &&\n    ((nextState = actionNode.next),\n    nextState === actionNode\n      ? (actionQueue.pending = null)\n      : ((nextState = nextState.next),\n        (actionNode.next = nextState),\n        runActionStateAction(actionQueue, nextState)));\n}\nfunction onActionError(actionQueue, actionNode, error) {\n  var last = actionQueue.pending;\n  actionQueue.pending = null;\n  if (null !== last) {\n    last = last.next;\n    do\n      (actionNode.status = \"rejected\"),\n        (actionNode.reason = error),\n        notifyActionListeners(actionNode),\n        (actionNode = actionNode.next);\n    while (actionNode !== last);\n  }\n  actionQueue.action = null;\n}\nfunction notifyActionListeners(actionNode) {\n  actionNode = actionNode.listeners;\n  for (var i = 0; i < actionNode.length; i++) (0, actionNode[i])();\n}\nfunction actionStateReducer(oldState, newState) {\n  return newState;\n}\nfunction mountActionState(action, initialStateProp) {\n  if (isHydrating) {\n    var ssrFormState = workInProgressRoot.formState;\n    if (null !== ssrFormState) {\n      a: {\n        var JSCompiler_inline_result = currentlyRenderingFiber;\n        if (isHydrating) {\n          if (nextHydratableInstance) {\n            b: {\n              var JSCompiler_inline_result$jscomp$0 = nextHydratableInstance;\n              for (\n                var inRootOrSingleton = rootOrSingletonContext;\n                8 !== JSCompiler_inline_result$jscomp$0.nodeType;\n\n              ) {\n                if (!inRootOrSingleton) {\n                  JSCompiler_inline_result$jscomp$0 = null;\n                  break b;\n                }\n                JSCompiler_inline_result$jscomp$0 = getNextHydratable(\n                  JSCompiler_inline_result$jscomp$0.nextSibling\n                );\n                if (null === JSCompiler_inline_result$jscomp$0) {\n                  JSCompiler_inline_result$jscomp$0 = null;\n                  break b;\n                }\n              }\n              inRootOrSingleton = JSCompiler_inline_result$jscomp$0.data;\n              JSCompiler_inline_result$jscomp$0 =\n                \"F!\" === inRootOrSingleton || \"F\" === inRootOrSingleton\n                  ? JSCompiler_inline_result$jscomp$0\n                  : null;\n            }\n            if (JSCompiler_inline_result$jscomp$0) {\n              nextHydratableInstance = getNextHydratable(\n                JSCompiler_inline_result$jscomp$0.nextSibling\n              );\n              JSCompiler_inline_result =\n                \"F!\" === JSCompiler_inline_result$jscomp$0.data;\n              break a;\n            }\n          }\n          throwOnHydrationMismatch(JSCompiler_inline_result);\n        }\n        JSCompiler_inline_result = !1;\n      }\n      JSCompiler_inline_result && (initialStateProp = ssrFormState[0]);\n    }\n  }\n  ssrFormState = mountWorkInProgressHook();\n  ssrFormState.memoizedState = ssrFormState.baseState = initialStateProp;\n  JSCompiler_inline_result = {\n    pending: null,\n    lanes: 0,\n    dispatch: null,\n    lastRenderedReducer: actionStateReducer,\n    lastRenderedState: initialStateProp\n  };\n  ssrFormState.queue = JSCompiler_inline_result;\n  ssrFormState = dispatchSetState.bind(\n    null,\n    currentlyRenderingFiber,\n    JSCompiler_inline_result\n  );\n  JSCompiler_inline_result.dispatch = ssrFormState;\n  JSCompiler_inline_result = mountStateImpl(!1);\n  inRootOrSingleton = dispatchOptimisticSetState.bind(\n    null,\n    currentlyRenderingFiber,\n    !1,\n    JSCompiler_inline_result.queue\n  );\n  JSCompiler_inline_result = mountWorkInProgressHook();\n  JSCompiler_inline_result$jscomp$0 = {\n    state: initialStateProp,\n    dispatch: null,\n    action: action,\n    pending: null\n  };\n  JSCompiler_inline_result.queue = JSCompiler_inline_result$jscomp$0;\n  ssrFormState = dispatchActionState.bind(\n    null,\n    currentlyRenderingFiber,\n    JSCompiler_inline_result$jscomp$0,\n    inRootOrSingleton,\n    ssrFormState\n  );\n  JSCompiler_inline_result$jscomp$0.dispatch = ssrFormState;\n  JSCompiler_inline_result.memoizedState = action;\n  return [initialStateProp, ssrFormState, !1];\n}\nfunction updateActionState(action) {\n  var stateHook = updateWorkInProgressHook();\n  return updateActionStateImpl(stateHook, currentHook, action);\n}\nfunction updateActionStateImpl(stateHook, currentStateHook, action) {\n  currentStateHook = updateReducerImpl(\n    stateHook,\n    currentStateHook,\n    actionStateReducer\n  )[0];\n  stateHook = updateReducer(basicStateReducer)[0];\n  if (\n    \"object\" === typeof currentStateHook &&\n    null !== currentStateHook &&\n    \"function\" === typeof currentStateHook.then\n  )\n    try {\n      var state = useThenable(currentStateHook);\n    } catch (x) {\n      if (x === SuspenseException) throw SuspenseActionException;\n      throw x;\n    }\n  else state = currentStateHook;\n  currentStateHook = updateWorkInProgressHook();\n  var actionQueue = currentStateHook.queue,\n    dispatch = actionQueue.dispatch;\n  action !== currentStateHook.memoizedState &&\n    ((currentlyRenderingFiber.flags |= 2048),\n    pushSimpleEffect(\n      9,\n      createEffectInstance(),\n      actionStateActionEffect.bind(null, actionQueue, action),\n      null\n    ));\n  return [state, dispatch, stateHook];\n}\nfunction actionStateActionEffect(actionQueue, action) {\n  actionQueue.action = action;\n}\nfunction rerenderActionState(action) {\n  var stateHook = updateWorkInProgressHook(),\n    currentStateHook = currentHook;\n  if (null !== currentStateHook)\n    return updateActionStateImpl(stateHook, currentStateHook, action);\n  updateWorkInProgressHook();\n  stateHook = stateHook.memoizedState;\n  currentStateHook = updateWorkInProgressHook();\n  var dispatch = currentStateHook.queue.dispatch;\n  currentStateHook.memoizedState = action;\n  return [stateHook, dispatch, !1];\n}\nfunction pushSimpleEffect(tag, inst, create, createDeps) {\n  tag = { tag: tag, create: create, deps: createDeps, inst: inst, next: null };\n  inst = currentlyRenderingFiber.updateQueue;\n  null === inst &&\n    ((inst = createFunctionComponentUpdateQueue()),\n    (currentlyRenderingFiber.updateQueue = inst));\n  create = inst.lastEffect;\n  null === create\n    ? (inst.lastEffect = tag.next = tag)\n    : ((createDeps = create.next),\n      (create.next = tag),\n      (tag.next = createDeps),\n      (inst.lastEffect = tag));\n  return tag;\n}\nfunction createEffectInstance() {\n  return { destroy: void 0, resource: void 0 };\n}\nfunction updateRef() {\n  return updateWorkInProgressHook().memoizedState;\n}\nfunction mountEffectImpl(fiberFlags, hookFlags, create, createDeps) {\n  var hook = mountWorkInProgressHook();\n  createDeps = void 0 === createDeps ? null : createDeps;\n  currentlyRenderingFiber.flags |= fiberFlags;\n  hook.memoizedState = pushSimpleEffect(\n    1 | hookFlags,\n    createEffectInstance(),\n    create,\n    createDeps\n  );\n}\nfunction updateEffectImpl(fiberFlags, hookFlags, create, deps) {\n  var hook = updateWorkInProgressHook();\n  deps = void 0 === deps ? null : deps;\n  var inst = hook.memoizedState.inst;\n  null !== currentHook &&\n  null !== deps &&\n  areHookInputsEqual(deps, currentHook.memoizedState.deps)\n    ? (hook.memoizedState = pushSimpleEffect(hookFlags, inst, create, deps))\n    : ((currentlyRenderingFiber.flags |= fiberFlags),\n      (hook.memoizedState = pushSimpleEffect(\n        1 | hookFlags,\n        inst,\n        create,\n        deps\n      )));\n}\nfunction mountEffect(create, createDeps) {\n  mountEffectImpl(8390656, 8, create, createDeps);\n}\nfunction updateEffect(create, createDeps) {\n  updateEffectImpl(2048, 8, create, createDeps);\n}\nfunction updateInsertionEffect(create, deps) {\n  return updateEffectImpl(4, 2, create, deps);\n}\nfunction updateLayoutEffect(create, deps) {\n  return updateEffectImpl(4, 4, create, deps);\n}\nfunction imperativeHandleEffect(create, ref) {\n  if (\"function\" === typeof ref) {\n    create = create();\n    var refCleanup = ref(create);\n    return function () {\n      \"function\" === typeof refCleanup ? refCleanup() : ref(null);\n    };\n  }\n  if (null !== ref && void 0 !== ref)\n    return (\n      (create = create()),\n      (ref.current = create),\n      function () {\n        ref.current = null;\n      }\n    );\n}\nfunction updateImperativeHandle(ref, create, deps) {\n  deps = null !== deps && void 0 !== deps ? deps.concat([ref]) : null;\n  updateEffectImpl(4, 4, imperativeHandleEffect.bind(null, create, ref), deps);\n}\nfunction mountDebugValue() {}\nfunction updateCallback(callback, deps) {\n  var hook = updateWorkInProgressHook();\n  deps = void 0 === deps ? null : deps;\n  var prevState = hook.memoizedState;\n  if (null !== deps && areHookInputsEqual(deps, prevState[1]))\n    return prevState[0];\n  hook.memoizedState = [callback, deps];\n  return callback;\n}\nfunction updateMemo(nextCreate, deps) {\n  var hook = updateWorkInProgressHook();\n  deps = void 0 === deps ? null : deps;\n  var prevState = hook.memoizedState;\n  if (null !== deps && areHookInputsEqual(deps, prevState[1]))\n    return prevState[0];\n  prevState = nextCreate();\n  if (shouldDoubleInvokeUserFnsInHooksDEV) {\n    setIsStrictModeForDevtools(!0);\n    try {\n      nextCreate();\n    } finally {\n      setIsStrictModeForDevtools(!1);\n    }\n  }\n  hook.memoizedState = [prevState, deps];\n  return prevState;\n}\nfunction mountDeferredValueImpl(hook, value, initialValue) {\n  if (void 0 === initialValue || 0 !== (renderLanes & 1073741824))\n    return (hook.memoizedState = value);\n  hook.memoizedState = initialValue;\n  hook = requestDeferredLane();\n  currentlyRenderingFiber.lanes |= hook;\n  workInProgressRootSkippedLanes |= hook;\n  return initialValue;\n}\nfunction updateDeferredValueImpl(hook, prevValue, value, initialValue) {\n  if (objectIs(value, prevValue)) return value;\n  if (null !== currentTreeHiddenStackCursor.current)\n    return (\n      (hook = mountDeferredValueImpl(hook, value, initialValue)),\n      objectIs(hook, prevValue) || (didReceiveUpdate = !0),\n      hook\n    );\n  if (0 === (renderLanes & 42))\n    return (didReceiveUpdate = !0), (hook.memoizedState = value);\n  hook = requestDeferredLane();\n  currentlyRenderingFiber.lanes |= hook;\n  workInProgressRootSkippedLanes |= hook;\n  return prevValue;\n}\nfunction startTransition(fiber, queue, pendingState, finishedState, callback) {\n  var previousPriority = ReactDOMSharedInternals.p;\n  ReactDOMSharedInternals.p =\n    0 !== previousPriority && 8 > previousPriority ? previousPriority : 8;\n  var prevTransition = ReactSharedInternals.T,\n    currentTransition = {};\n  ReactSharedInternals.T = currentTransition;\n  dispatchOptimisticSetState(fiber, !1, queue, pendingState);\n  try {\n    var returnValue = callback(),\n      onStartTransitionFinish = ReactSharedInternals.S;\n    null !== onStartTransitionFinish &&\n      onStartTransitionFinish(currentTransition, returnValue);\n    if (\n      null !== returnValue &&\n      \"object\" === typeof returnValue &&\n      \"function\" === typeof returnValue.then\n    ) {\n      var thenableForFinishedState = chainThenableValue(\n        returnValue,\n        finishedState\n      );\n      dispatchSetStateInternal(\n        fiber,\n        queue,\n        thenableForFinishedState,\n        requestUpdateLane(fiber)\n      );\n    } else\n      dispatchSetStateInternal(\n        fiber,\n        queue,\n        finishedState,\n        requestUpdateLane(fiber)\n      );\n  } catch (error) {\n    dispatchSetStateInternal(\n      fiber,\n      queue,\n      { then: function () {}, status: \"rejected\", reason: error },\n      requestUpdateLane()\n    );\n  } finally {\n    (ReactDOMSharedInternals.p = previousPriority),\n      (ReactSharedInternals.T = prevTransition);\n  }\n}\nfunction noop$2() {}\nfunction startHostTransition(formFiber, pendingState, action, formData) {\n  if (5 !== formFiber.tag) throw Error(formatProdErrorMessage(476));\n  var queue = ensureFormComponentIsStateful(formFiber).queue;\n  startTransition(\n    formFiber,\n    queue,\n    pendingState,\n    sharedNotPendingObject,\n    null === action\n      ? noop$2\n      : function () {\n          requestFormReset$1(formFiber);\n          return action(formData);\n        }\n  );\n}\nfunction ensureFormComponentIsStateful(formFiber) {\n  var existingStateHook = formFiber.memoizedState;\n  if (null !== existingStateHook) return existingStateHook;\n  existingStateHook = {\n    memoizedState: sharedNotPendingObject,\n    baseState: sharedNotPendingObject,\n    baseQueue: null,\n    queue: {\n      pending: null,\n      lanes: 0,\n      dispatch: null,\n      lastRenderedReducer: basicStateReducer,\n      lastRenderedState: sharedNotPendingObject\n    },\n    next: null\n  };\n  var initialResetState = {};\n  existingStateHook.next = {\n    memoizedState: initialResetState,\n    baseState: initialResetState,\n    baseQueue: null,\n    queue: {\n      pending: null,\n      lanes: 0,\n      dispatch: null,\n      lastRenderedReducer: basicStateReducer,\n      lastRenderedState: initialResetState\n    },\n    next: null\n  };\n  formFiber.memoizedState = existingStateHook;\n  formFiber = formFiber.alternate;\n  null !== formFiber && (formFiber.memoizedState = existingStateHook);\n  return existingStateHook;\n}\nfunction requestFormReset$1(formFiber) {\n  var resetStateQueue = ensureFormComponentIsStateful(formFiber).next.queue;\n  dispatchSetStateInternal(formFiber, resetStateQueue, {}, requestUpdateLane());\n}\nfunction useHostTransitionStatus() {\n  return readContext(HostTransitionContext);\n}\nfunction updateId() {\n  return updateWorkInProgressHook().memoizedState;\n}\nfunction updateRefresh() {\n  return updateWorkInProgressHook().memoizedState;\n}\nfunction refreshCache(fiber) {\n  for (var provider = fiber.return; null !== provider; ) {\n    switch (provider.tag) {\n      case 24:\n      case 3:\n        var lane = requestUpdateLane();\n        fiber = createUpdate(lane);\n        var root$41 = enqueueUpdate(provider, fiber, lane);\n        null !== root$41 &&\n          (scheduleUpdateOnFiber(root$41, provider, lane),\n          entangleTransitions(root$41, provider, lane));\n        provider = { cache: createCache() };\n        fiber.payload = provider;\n        return;\n    }\n    provider = provider.return;\n  }\n}\nfunction dispatchReducerAction(fiber, queue, action) {\n  var lane = requestUpdateLane();\n  action = {\n    lane: lane,\n    revertLane: 0,\n    action: action,\n    hasEagerState: !1,\n    eagerState: null,\n    next: null\n  };\n  isRenderPhaseUpdate(fiber)\n    ? enqueueRenderPhaseUpdate(queue, action)\n    : ((action = enqueueConcurrentHookUpdate(fiber, queue, action, lane)),\n      null !== action &&\n        (scheduleUpdateOnFiber(action, fiber, lane),\n        entangleTransitionUpdate(action, queue, lane)));\n}\nfunction dispatchSetState(fiber, queue, action) {\n  var lane = requestUpdateLane();\n  dispatchSetStateInternal(fiber, queue, action, lane);\n}\nfunction dispatchSetStateInternal(fiber, queue, action, lane) {\n  var update = {\n    lane: lane,\n    revertLane: 0,\n    action: action,\n    hasEagerState: !1,\n    eagerState: null,\n    next: null\n  };\n  if (isRenderPhaseUpdate(fiber)) enqueueRenderPhaseUpdate(queue, update);\n  else {\n    var alternate = fiber.alternate;\n    if (\n      0 === fiber.lanes &&\n      (null === alternate || 0 === alternate.lanes) &&\n      ((alternate = queue.lastRenderedReducer), null !== alternate)\n    )\n      try {\n        var currentState = queue.lastRenderedState,\n          eagerState = alternate(currentState, action);\n        update.hasEagerState = !0;\n        update.eagerState = eagerState;\n        if (objectIs(eagerState, currentState))\n          return (\n            enqueueUpdate$1(fiber, queue, update, 0),\n            null === workInProgressRoot && finishQueueingConcurrentUpdates(),\n            !1\n          );\n      } catch (error) {\n      } finally {\n      }\n    action = enqueueConcurrentHookUpdate(fiber, queue, update, lane);\n    if (null !== action)\n      return (\n        scheduleUpdateOnFiber(action, fiber, lane),\n        entangleTransitionUpdate(action, queue, lane),\n        !0\n      );\n  }\n  return !1;\n}\nfunction dispatchOptimisticSetState(fiber, throwIfDuringRender, queue, action) {\n  action = {\n    lane: 2,\n    revertLane: requestTransitionLane(),\n    action: action,\n    hasEagerState: !1,\n    eagerState: null,\n    next: null\n  };\n  if (isRenderPhaseUpdate(fiber)) {\n    if (throwIfDuringRender) throw Error(formatProdErrorMessage(479));\n  } else\n    (throwIfDuringRender = enqueueConcurrentHookUpdate(\n      fiber,\n      queue,\n      action,\n      2\n    )),\n      null !== throwIfDuringRender &&\n        scheduleUpdateOnFiber(throwIfDuringRender, fiber, 2);\n}\nfunction isRenderPhaseUpdate(fiber) {\n  var alternate = fiber.alternate;\n  return (\n    fiber === currentlyRenderingFiber ||\n    (null !== alternate && alternate === currentlyRenderingFiber)\n  );\n}\nfunction enqueueRenderPhaseUpdate(queue, update) {\n  didScheduleRenderPhaseUpdateDuringThisPass = didScheduleRenderPhaseUpdate =\n    !0;\n  var pending = queue.pending;\n  null === pending\n    ? (update.next = update)\n    : ((update.next = pending.next), (pending.next = update));\n  queue.pending = update;\n}\nfunction entangleTransitionUpdate(root, queue, lane) {\n  if (0 !== (lane & 4194048)) {\n    var queueLanes = queue.lanes;\n    queueLanes &= root.pendingLanes;\n    lane |= queueLanes;\n    queue.lanes = lane;\n    markRootEntangled(root, lane);\n  }\n}\nvar ContextOnlyDispatcher = {\n    readContext: readContext,\n    use: use,\n    useCallback: throwInvalidHookError,\n    useContext: throwInvalidHookError,\n    useEffect: throwInvalidHookError,\n    useImperativeHandle: throwInvalidHookError,\n    useLayoutEffect: throwInvalidHookError,\n    useInsertionEffect: throwInvalidHookError,\n    useMemo: throwInvalidHookError,\n    useReducer: throwInvalidHookError,\n    useRef: throwInvalidHookError,\n    useState: throwInvalidHookError,\n    useDebugValue: throwInvalidHookError,\n    useDeferredValue: throwInvalidHookError,\n    useTransition: throwInvalidHookError,\n    useSyncExternalStore: throwInvalidHookError,\n    useId: throwInvalidHookError,\n    useHostTransitionStatus: throwInvalidHookError,\n    useFormState: throwInvalidHookError,\n    useActionState: throwInvalidHookError,\n    useOptimistic: throwInvalidHookError,\n    useMemoCache: throwInvalidHookError,\n    useCacheRefresh: throwInvalidHookError\n  },\n  HooksDispatcherOnMount = {\n    readContext: readContext,\n    use: use,\n    useCallback: function (callback, deps) {\n      mountWorkInProgressHook().memoizedState = [\n        callback,\n        void 0 === deps ? null : deps\n      ];\n      return callback;\n    },\n    useContext: readContext,\n    useEffect: mountEffect,\n    useImperativeHandle: function (ref, create, deps) {\n      deps = null !== deps && void 0 !== deps ? deps.concat([ref]) : null;\n      mountEffectImpl(\n        4194308,\n        4,\n        imperativeHandleEffect.bind(null, create, ref),\n        deps\n      );\n    },\n    useLayoutEffect: function (create, deps) {\n      return mountEffectImpl(4194308, 4, create, deps);\n    },\n    useInsertionEffect: function (create, deps) {\n      mountEffectImpl(4, 2, create, deps);\n    },\n    useMemo: function (nextCreate, deps) {\n      var hook = mountWorkInProgressHook();\n      deps = void 0 === deps ? null : deps;\n      var nextValue = nextCreate();\n      if (shouldDoubleInvokeUserFnsInHooksDEV) {\n        setIsStrictModeForDevtools(!0);\n        try {\n          nextCreate();\n        } finally {\n          setIsStrictModeForDevtools(!1);\n        }\n      }\n      hook.memoizedState = [nextValue, deps];\n      return nextValue;\n    },\n    useReducer: function (reducer, initialArg, init) {\n      var hook = mountWorkInProgressHook();\n      if (void 0 !== init) {\n        var initialState = init(initialArg);\n        if (shouldDoubleInvokeUserFnsInHooksDEV) {\n          setIsStrictModeForDevtools(!0);\n          try {\n            init(initialArg);\n          } finally {\n            setIsStrictModeForDevtools(!1);\n          }\n        }\n      } else initialState = initialArg;\n      hook.memoizedState = hook.baseState = initialState;\n      reducer = {\n        pending: null,\n        lanes: 0,\n        dispatch: null,\n        lastRenderedReducer: reducer,\n        lastRenderedState: initialState\n      };\n      hook.queue = reducer;\n      reducer = reducer.dispatch = dispatchReducerAction.bind(\n        null,\n        currentlyRenderingFiber,\n        reducer\n      );\n      return [hook.memoizedState, reducer];\n    },\n    useRef: function (initialValue) {\n      var hook = mountWorkInProgressHook();\n      initialValue = { current: initialValue };\n      return (hook.memoizedState = initialValue);\n    },\n    useState: function (initialState) {\n      initialState = mountStateImpl(initialState);\n      var queue = initialState.queue,\n        dispatch = dispatchSetState.bind(null, currentlyRenderingFiber, queue);\n      queue.dispatch = dispatch;\n      return [initialState.memoizedState, dispatch];\n    },\n    useDebugValue: mountDebugValue,\n    useDeferredValue: function (value, initialValue) {\n      var hook = mountWorkInProgressHook();\n      return mountDeferredValueImpl(hook, value, initialValue);\n    },\n    useTransition: function () {\n      var stateHook = mountStateImpl(!1);\n      stateHook = startTransition.bind(\n        null,\n        currentlyRenderingFiber,\n        stateHook.queue,\n        !0,\n        !1\n      );\n      mountWorkInProgressHook().memoizedState = stateHook;\n      return [!1, stateHook];\n    },\n    useSyncExternalStore: function (subscribe, getSnapshot, getServerSnapshot) {\n      var fiber = currentlyRenderingFiber,\n        hook = mountWorkInProgressHook();\n      if (isHydrating) {\n        if (void 0 === getServerSnapshot)\n          throw Error(formatProdErrorMessage(407));\n        getServerSnapshot = getServerSnapshot();\n      } else {\n        getServerSnapshot = getSnapshot();\n        if (null === workInProgressRoot)\n          throw Error(formatProdErrorMessage(349));\n        0 !== (workInProgressRootRenderLanes & 124) ||\n          pushStoreConsistencyCheck(fiber, getSnapshot, getServerSnapshot);\n      }\n      hook.memoizedState = getServerSnapshot;\n      var inst = { value: getServerSnapshot, getSnapshot: getSnapshot };\n      hook.queue = inst;\n      mountEffect(subscribeToStore.bind(null, fiber, inst, subscribe), [\n        subscribe\n      ]);\n      fiber.flags |= 2048;\n      pushSimpleEffect(\n        9,\n        createEffectInstance(),\n        updateStoreInstance.bind(\n          null,\n          fiber,\n          inst,\n          getServerSnapshot,\n          getSnapshot\n        ),\n        null\n      );\n      return getServerSnapshot;\n    },\n    useId: function () {\n      var hook = mountWorkInProgressHook(),\n        identifierPrefix = workInProgressRoot.identifierPrefix;\n      if (isHydrating) {\n        var JSCompiler_inline_result = treeContextOverflow;\n        var idWithLeadingBit = treeContextId;\n        JSCompiler_inline_result =\n          (\n            idWithLeadingBit & ~(1 << (32 - clz32(idWithLeadingBit) - 1))\n          ).toString(32) + JSCompiler_inline_result;\n        identifierPrefix =\n          \"\\u00ab\" + identifierPrefix + \"R\" + JSCompiler_inline_result;\n        JSCompiler_inline_result = localIdCounter++;\n        0 < JSCompiler_inline_result &&\n          (identifierPrefix += \"H\" + JSCompiler_inline_result.toString(32));\n        identifierPrefix += \"\\u00bb\";\n      } else\n        (JSCompiler_inline_result = globalClientIdCounter++),\n          (identifierPrefix =\n            \"\\u00ab\" +\n            identifierPrefix +\n            \"r\" +\n            JSCompiler_inline_result.toString(32) +\n            \"\\u00bb\");\n      return (hook.memoizedState = identifierPrefix);\n    },\n    useHostTransitionStatus: useHostTransitionStatus,\n    useFormState: mountActionState,\n    useActionState: mountActionState,\n    useOptimistic: function (passthrough) {\n      var hook = mountWorkInProgressHook();\n      hook.memoizedState = hook.baseState = passthrough;\n      var queue = {\n        pending: null,\n        lanes: 0,\n        dispatch: null,\n        lastRenderedReducer: null,\n        lastRenderedState: null\n      };\n      hook.queue = queue;\n      hook = dispatchOptimisticSetState.bind(\n        null,\n        currentlyRenderingFiber,\n        !0,\n        queue\n      );\n      queue.dispatch = hook;\n      return [passthrough, hook];\n    },\n    useMemoCache: useMemoCache,\n    useCacheRefresh: function () {\n      return (mountWorkInProgressHook().memoizedState = refreshCache.bind(\n        null,\n        currentlyRenderingFiber\n      ));\n    }\n  },\n  HooksDispatcherOnUpdate = {\n    readContext: readContext,\n    use: use,\n    useCallback: updateCallback,\n    useContext: readContext,\n    useEffect: updateEffect,\n    useImperativeHandle: updateImperativeHandle,\n    useInsertionEffect: updateInsertionEffect,\n    useLayoutEffect: updateLayoutEffect,\n    useMemo: updateMemo,\n    useReducer: updateReducer,\n    useRef: updateRef,\n    useState: function () {\n      return updateReducer(basicStateReducer);\n    },\n    useDebugValue: mountDebugValue,\n    useDeferredValue: function (value, initialValue) {\n      var hook = updateWorkInProgressHook();\n      return updateDeferredValueImpl(\n        hook,\n        currentHook.memoizedState,\n        value,\n        initialValue\n      );\n    },\n    useTransition: function () {\n      var booleanOrThenable = updateReducer(basicStateReducer)[0],\n        start = updateWorkInProgressHook().memoizedState;\n      return [\n        \"boolean\" === typeof booleanOrThenable\n          ? booleanOrThenable\n          : useThenable(booleanOrThenable),\n        start\n      ];\n    },\n    useSyncExternalStore: updateSyncExternalStore,\n    useId: updateId,\n    useHostTransitionStatus: useHostTransitionStatus,\n    useFormState: updateActionState,\n    useActionState: updateActionState,\n    useOptimistic: function (passthrough, reducer) {\n      var hook = updateWorkInProgressHook();\n      return updateOptimisticImpl(hook, currentHook, passthrough, reducer);\n    },\n    useMemoCache: useMemoCache,\n    useCacheRefresh: updateRefresh\n  },\n  HooksDispatcherOnRerender = {\n    readContext: readContext,\n    use: use,\n    useCallback: updateCallback,\n    useContext: readContext,\n    useEffect: updateEffect,\n    useImperativeHandle: updateImperativeHandle,\n    useInsertionEffect: updateInsertionEffect,\n    useLayoutEffect: updateLayoutEffect,\n    useMemo: updateMemo,\n    useReducer: rerenderReducer,\n    useRef: updateRef,\n    useState: function () {\n      return rerenderReducer(basicStateReducer);\n    },\n    useDebugValue: mountDebugValue,\n    useDeferredValue: function (value, initialValue) {\n      var hook = updateWorkInProgressHook();\n      return null === currentHook\n        ? mountDeferredValueImpl(hook, value, initialValue)\n        : updateDeferredValueImpl(\n            hook,\n            currentHook.memoizedState,\n            value,\n            initialValue\n          );\n    },\n    useTransition: function () {\n      var booleanOrThenable = rerenderReducer(basicStateReducer)[0],\n        start = updateWorkInProgressHook().memoizedState;\n      return [\n        \"boolean\" === typeof booleanOrThenable\n          ? booleanOrThenable\n          : useThenable(booleanOrThenable),\n        start\n      ];\n    },\n    useSyncExternalStore: updateSyncExternalStore,\n    useId: updateId,\n    useHostTransitionStatus: useHostTransitionStatus,\n    useFormState: rerenderActionState,\n    useActionState: rerenderActionState,\n    useOptimistic: function (passthrough, reducer) {\n      var hook = updateWorkInProgressHook();\n      if (null !== currentHook)\n        return updateOptimisticImpl(hook, currentHook, passthrough, reducer);\n      hook.baseState = passthrough;\n      return [passthrough, hook.queue.dispatch];\n    },\n    useMemoCache: useMemoCache,\n    useCacheRefresh: updateRefresh\n  },\n  thenableState = null,\n  thenableIndexCounter = 0;\nfunction unwrapThenable(thenable) {\n  var index = thenableIndexCounter;\n  thenableIndexCounter += 1;\n  null === thenableState && (thenableState = []);\n  return trackUsedThenable(thenableState, thenable, index);\n}\nfunction coerceRef(workInProgress, element) {\n  element = element.props.ref;\n  workInProgress.ref = void 0 !== element ? element : null;\n}\nfunction throwOnInvalidObjectType(returnFiber, newChild) {\n  if (newChild.$$typeof === REACT_LEGACY_ELEMENT_TYPE)\n    throw Error(formatProdErrorMessage(525));\n  returnFiber = Object.prototype.toString.call(newChild);\n  throw Error(\n    formatProdErrorMessage(\n      31,\n      \"[object Object]\" === returnFiber\n        ? \"object with keys {\" + Object.keys(newChild).join(\", \") + \"}\"\n        : returnFiber\n    )\n  );\n}\nfunction resolveLazy(lazyType) {\n  var init = lazyType._init;\n  return init(lazyType._payload);\n}\nfunction createChildReconciler(shouldTrackSideEffects) {\n  function deleteChild(returnFiber, childToDelete) {\n    if (shouldTrackSideEffects) {\n      var deletions = returnFiber.deletions;\n      null === deletions\n        ? ((returnFiber.deletions = [childToDelete]), (returnFiber.flags |= 16))\n        : deletions.push(childToDelete);\n    }\n  }\n  function deleteRemainingChildren(returnFiber, currentFirstChild) {\n    if (!shouldTrackSideEffects) return null;\n    for (; null !== currentFirstChild; )\n      deleteChild(returnFiber, currentFirstChild),\n        (currentFirstChild = currentFirstChild.sibling);\n    return null;\n  }\n  function mapRemainingChildren(currentFirstChild) {\n    for (var existingChildren = new Map(); null !== currentFirstChild; )\n      null !== currentFirstChild.key\n        ? existingChildren.set(currentFirstChild.key, currentFirstChild)\n        : existingChildren.set(currentFirstChild.index, currentFirstChild),\n        (currentFirstChild = currentFirstChild.sibling);\n    return existingChildren;\n  }\n  function useFiber(fiber, pendingProps) {\n    fiber = createWorkInProgress(fiber, pendingProps);\n    fiber.index = 0;\n    fiber.sibling = null;\n    return fiber;\n  }\n  function placeChild(newFiber, lastPlacedIndex, newIndex) {\n    newFiber.index = newIndex;\n    if (!shouldTrackSideEffects)\n      return (newFiber.flags |= 1048576), lastPlacedIndex;\n    newIndex = newFiber.alternate;\n    if (null !== newIndex)\n      return (\n        (newIndex = newIndex.index),\n        newIndex < lastPlacedIndex\n          ? ((newFiber.flags |= 67108866), lastPlacedIndex)\n          : newIndex\n      );\n    newFiber.flags |= 67108866;\n    return lastPlacedIndex;\n  }\n  function placeSingleChild(newFiber) {\n    shouldTrackSideEffects &&\n      null === newFiber.alternate &&\n      (newFiber.flags |= 67108866);\n    return newFiber;\n  }\n  function updateTextNode(returnFiber, current, textContent, lanes) {\n    if (null === current || 6 !== current.tag)\n      return (\n        (current = createFiberFromText(textContent, returnFiber.mode, lanes)),\n        (current.return = returnFiber),\n        current\n      );\n    current = useFiber(current, textContent);\n    current.return = returnFiber;\n    return current;\n  }\n  function updateElement(returnFiber, current, element, lanes) {\n    var elementType = element.type;\n    if (elementType === REACT_FRAGMENT_TYPE)\n      return updateFragment(\n        returnFiber,\n        current,\n        element.props.children,\n        lanes,\n        element.key\n      );\n    if (\n      null !== current &&\n      (current.elementType === elementType ||\n        (\"object\" === typeof elementType &&\n          null !== elementType &&\n          elementType.$$typeof === REACT_LAZY_TYPE &&\n          resolveLazy(elementType) === current.type))\n    )\n      return (\n        (current = useFiber(current, element.props)),\n        coerceRef(current, element),\n        (current.return = returnFiber),\n        current\n      );\n    current = createFiberFromTypeAndProps(\n      element.type,\n      element.key,\n      element.props,\n      null,\n      returnFiber.mode,\n      lanes\n    );\n    coerceRef(current, element);\n    current.return = returnFiber;\n    return current;\n  }\n  function updatePortal(returnFiber, current, portal, lanes) {\n    if (\n      null === current ||\n      4 !== current.tag ||\n      current.stateNode.containerInfo !== portal.containerInfo ||\n      current.stateNode.implementation !== portal.implementation\n    )\n      return (\n        (current = createFiberFromPortal(portal, returnFiber.mode, lanes)),\n        (current.return = returnFiber),\n        current\n      );\n    current = useFiber(current, portal.children || []);\n    current.return = returnFiber;\n    return current;\n  }\n  function updateFragment(returnFiber, current, fragment, lanes, key) {\n    if (null === current || 7 !== current.tag)\n      return (\n        (current = createFiberFromFragment(\n          fragment,\n          returnFiber.mode,\n          lanes,\n          key\n        )),\n        (current.return = returnFiber),\n        current\n      );\n    current = useFiber(current, fragment);\n    current.return = returnFiber;\n    return current;\n  }\n  function createChild(returnFiber, newChild, lanes) {\n    if (\n      (\"string\" === typeof newChild && \"\" !== newChild) ||\n      \"number\" === typeof newChild ||\n      \"bigint\" === typeof newChild\n    )\n      return (\n        (newChild = createFiberFromText(\n          \"\" + newChild,\n          returnFiber.mode,\n          lanes\n        )),\n        (newChild.return = returnFiber),\n        newChild\n      );\n    if (\"object\" === typeof newChild && null !== newChild) {\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          return (\n            (lanes = createFiberFromTypeAndProps(\n              newChild.type,\n              newChild.key,\n              newChild.props,\n              null,\n              returnFiber.mode,\n              lanes\n            )),\n            coerceRef(lanes, newChild),\n            (lanes.return = returnFiber),\n            lanes\n          );\n        case REACT_PORTAL_TYPE:\n          return (\n            (newChild = createFiberFromPortal(\n              newChild,\n              returnFiber.mode,\n              lanes\n            )),\n            (newChild.return = returnFiber),\n            newChild\n          );\n        case REACT_LAZY_TYPE:\n          var init = newChild._init;\n          newChild = init(newChild._payload);\n          return createChild(returnFiber, newChild, lanes);\n      }\n      if (isArrayImpl(newChild) || getIteratorFn(newChild))\n        return (\n          (newChild = createFiberFromFragment(\n            newChild,\n            returnFiber.mode,\n            lanes,\n            null\n          )),\n          (newChild.return = returnFiber),\n          newChild\n        );\n      if (\"function\" === typeof newChild.then)\n        return createChild(returnFiber, unwrapThenable(newChild), lanes);\n      if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n        return createChild(\n          returnFiber,\n          readContextDuringReconciliation(returnFiber, newChild),\n          lanes\n        );\n      throwOnInvalidObjectType(returnFiber, newChild);\n    }\n    return null;\n  }\n  function updateSlot(returnFiber, oldFiber, newChild, lanes) {\n    var key = null !== oldFiber ? oldFiber.key : null;\n    if (\n      (\"string\" === typeof newChild && \"\" !== newChild) ||\n      \"number\" === typeof newChild ||\n      \"bigint\" === typeof newChild\n    )\n      return null !== key\n        ? null\n        : updateTextNode(returnFiber, oldFiber, \"\" + newChild, lanes);\n    if (\"object\" === typeof newChild && null !== newChild) {\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          return newChild.key === key\n            ? updateElement(returnFiber, oldFiber, newChild, lanes)\n            : null;\n        case REACT_PORTAL_TYPE:\n          return newChild.key === key\n            ? updatePortal(returnFiber, oldFiber, newChild, lanes)\n            : null;\n        case REACT_LAZY_TYPE:\n          return (\n            (key = newChild._init),\n            (newChild = key(newChild._payload)),\n            updateSlot(returnFiber, oldFiber, newChild, lanes)\n          );\n      }\n      if (isArrayImpl(newChild) || getIteratorFn(newChild))\n        return null !== key\n          ? null\n          : updateFragment(returnFiber, oldFiber, newChild, lanes, null);\n      if (\"function\" === typeof newChild.then)\n        return updateSlot(\n          returnFiber,\n          oldFiber,\n          unwrapThenable(newChild),\n          lanes\n        );\n      if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n        return updateSlot(\n          returnFiber,\n          oldFiber,\n          readContextDuringReconciliation(returnFiber, newChild),\n          lanes\n        );\n      throwOnInvalidObjectType(returnFiber, newChild);\n    }\n    return null;\n  }\n  function updateFromMap(\n    existingChildren,\n    returnFiber,\n    newIdx,\n    newChild,\n    lanes\n  ) {\n    if (\n      (\"string\" === typeof newChild && \"\" !== newChild) ||\n      \"number\" === typeof newChild ||\n      \"bigint\" === typeof newChild\n    )\n      return (\n        (existingChildren = existingChildren.get(newIdx) || null),\n        updateTextNode(returnFiber, existingChildren, \"\" + newChild, lanes)\n      );\n    if (\"object\" === typeof newChild && null !== newChild) {\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          return (\n            (existingChildren =\n              existingChildren.get(\n                null === newChild.key ? newIdx : newChild.key\n              ) || null),\n            updateElement(returnFiber, existingChildren, newChild, lanes)\n          );\n        case REACT_PORTAL_TYPE:\n          return (\n            (existingChildren =\n              existingChildren.get(\n                null === newChild.key ? newIdx : newChild.key\n              ) || null),\n            updatePortal(returnFiber, existingChildren, newChild, lanes)\n          );\n        case REACT_LAZY_TYPE:\n          var init = newChild._init;\n          newChild = init(newChild._payload);\n          return updateFromMap(\n            existingChildren,\n            returnFiber,\n            newIdx,\n            newChild,\n            lanes\n          );\n      }\n      if (isArrayImpl(newChild) || getIteratorFn(newChild))\n        return (\n          (existingChildren = existingChildren.get(newIdx) || null),\n          updateFragment(returnFiber, existingChildren, newChild, lanes, null)\n        );\n      if (\"function\" === typeof newChild.then)\n        return updateFromMap(\n          existingChildren,\n          returnFiber,\n          newIdx,\n          unwrapThenable(newChild),\n          lanes\n        );\n      if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n        return updateFromMap(\n          existingChildren,\n          returnFiber,\n          newIdx,\n          readContextDuringReconciliation(returnFiber, newChild),\n          lanes\n        );\n      throwOnInvalidObjectType(returnFiber, newChild);\n    }\n    return null;\n  }\n  function reconcileChildrenArray(\n    returnFiber,\n    currentFirstChild,\n    newChildren,\n    lanes\n  ) {\n    for (\n      var resultingFirstChild = null,\n        previousNewFiber = null,\n        oldFiber = currentFirstChild,\n        newIdx = (currentFirstChild = 0),\n        nextOldFiber = null;\n      null !== oldFiber && newIdx < newChildren.length;\n      newIdx++\n    ) {\n      oldFiber.index > newIdx\n        ? ((nextOldFiber = oldFiber), (oldFiber = null))\n        : (nextOldFiber = oldFiber.sibling);\n      var newFiber = updateSlot(\n        returnFiber,\n        oldFiber,\n        newChildren[newIdx],\n        lanes\n      );\n      if (null === newFiber) {\n        null === oldFiber && (oldFiber = nextOldFiber);\n        break;\n      }\n      shouldTrackSideEffects &&\n        oldFiber &&\n        null === newFiber.alternate &&\n        deleteChild(returnFiber, oldFiber);\n      currentFirstChild = placeChild(newFiber, currentFirstChild, newIdx);\n      null === previousNewFiber\n        ? (resultingFirstChild = newFiber)\n        : (previousNewFiber.sibling = newFiber);\n      previousNewFiber = newFiber;\n      oldFiber = nextOldFiber;\n    }\n    if (newIdx === newChildren.length)\n      return (\n        deleteRemainingChildren(returnFiber, oldFiber),\n        isHydrating && pushTreeFork(returnFiber, newIdx),\n        resultingFirstChild\n      );\n    if (null === oldFiber) {\n      for (; newIdx < newChildren.length; newIdx++)\n        (oldFiber = createChild(returnFiber, newChildren[newIdx], lanes)),\n          null !== oldFiber &&\n            ((currentFirstChild = placeChild(\n              oldFiber,\n              currentFirstChild,\n              newIdx\n            )),\n            null === previousNewFiber\n              ? (resultingFirstChild = oldFiber)\n              : (previousNewFiber.sibling = oldFiber),\n            (previousNewFiber = oldFiber));\n      isHydrating && pushTreeFork(returnFiber, newIdx);\n      return resultingFirstChild;\n    }\n    for (\n      oldFiber = mapRemainingChildren(oldFiber);\n      newIdx < newChildren.length;\n      newIdx++\n    )\n      (nextOldFiber = updateFromMap(\n        oldFiber,\n        returnFiber,\n        newIdx,\n        newChildren[newIdx],\n        lanes\n      )),\n        null !== nextOldFiber &&\n          (shouldTrackSideEffects &&\n            null !== nextOldFiber.alternate &&\n            oldFiber.delete(\n              null === nextOldFiber.key ? newIdx : nextOldFiber.key\n            ),\n          (currentFirstChild = placeChild(\n            nextOldFiber,\n            currentFirstChild,\n            newIdx\n          )),\n          null === previousNewFiber\n            ? (resultingFirstChild = nextOldFiber)\n            : (previousNewFiber.sibling = nextOldFiber),\n          (previousNewFiber = nextOldFiber));\n    shouldTrackSideEffects &&\n      oldFiber.forEach(function (child) {\n        return deleteChild(returnFiber, child);\n      });\n    isHydrating && pushTreeFork(returnFiber, newIdx);\n    return resultingFirstChild;\n  }\n  function reconcileChildrenIterator(\n    returnFiber,\n    currentFirstChild,\n    newChildren,\n    lanes\n  ) {\n    if (null == newChildren) throw Error(formatProdErrorMessage(151));\n    for (\n      var resultingFirstChild = null,\n        previousNewFiber = null,\n        oldFiber = currentFirstChild,\n        newIdx = (currentFirstChild = 0),\n        nextOldFiber = null,\n        step = newChildren.next();\n      null !== oldFiber && !step.done;\n      newIdx++, step = newChildren.next()\n    ) {\n      oldFiber.index > newIdx\n        ? ((nextOldFiber = oldFiber), (oldFiber = null))\n        : (nextOldFiber = oldFiber.sibling);\n      var newFiber = updateSlot(returnFiber, oldFiber, step.value, lanes);\n      if (null === newFiber) {\n        null === oldFiber && (oldFiber = nextOldFiber);\n        break;\n      }\n      shouldTrackSideEffects &&\n        oldFiber &&\n        null === newFiber.alternate &&\n        deleteChild(returnFiber, oldFiber);\n      currentFirstChild = placeChild(newFiber, currentFirstChild, newIdx);\n      null === previousNewFiber\n        ? (resultingFirstChild = newFiber)\n        : (previousNewFiber.sibling = newFiber);\n      previousNewFiber = newFiber;\n      oldFiber = nextOldFiber;\n    }\n    if (step.done)\n      return (\n        deleteRemainingChildren(returnFiber, oldFiber),\n        isHydrating && pushTreeFork(returnFiber, newIdx),\n        resultingFirstChild\n      );\n    if (null === oldFiber) {\n      for (; !step.done; newIdx++, step = newChildren.next())\n        (step = createChild(returnFiber, step.value, lanes)),\n          null !== step &&\n            ((currentFirstChild = placeChild(step, currentFirstChild, newIdx)),\n            null === previousNewFiber\n              ? (resultingFirstChild = step)\n              : (previousNewFiber.sibling = step),\n            (previousNewFiber = step));\n      isHydrating && pushTreeFork(returnFiber, newIdx);\n      return resultingFirstChild;\n    }\n    for (\n      oldFiber = mapRemainingChildren(oldFiber);\n      !step.done;\n      newIdx++, step = newChildren.next()\n    )\n      (step = updateFromMap(oldFiber, returnFiber, newIdx, step.value, lanes)),\n        null !== step &&\n          (shouldTrackSideEffects &&\n            null !== step.alternate &&\n            oldFiber.delete(null === step.key ? newIdx : step.key),\n          (currentFirstChild = placeChild(step, currentFirstChild, newIdx)),\n          null === previousNewFiber\n            ? (resultingFirstChild = step)\n            : (previousNewFiber.sibling = step),\n          (previousNewFiber = step));\n    shouldTrackSideEffects &&\n      oldFiber.forEach(function (child) {\n        return deleteChild(returnFiber, child);\n      });\n    isHydrating && pushTreeFork(returnFiber, newIdx);\n    return resultingFirstChild;\n  }\n  function reconcileChildFibersImpl(\n    returnFiber,\n    currentFirstChild,\n    newChild,\n    lanes\n  ) {\n    \"object\" === typeof newChild &&\n      null !== newChild &&\n      newChild.type === REACT_FRAGMENT_TYPE &&\n      null === newChild.key &&\n      (newChild = newChild.props.children);\n    if (\"object\" === typeof newChild && null !== newChild) {\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          a: {\n            for (var key = newChild.key; null !== currentFirstChild; ) {\n              if (currentFirstChild.key === key) {\n                key = newChild.type;\n                if (key === REACT_FRAGMENT_TYPE) {\n                  if (7 === currentFirstChild.tag) {\n                    deleteRemainingChildren(\n                      returnFiber,\n                      currentFirstChild.sibling\n                    );\n                    lanes = useFiber(\n                      currentFirstChild,\n                      newChild.props.children\n                    );\n                    lanes.return = returnFiber;\n                    returnFiber = lanes;\n                    break a;\n                  }\n                } else if (\n                  currentFirstChild.elementType === key ||\n                  (\"object\" === typeof key &&\n                    null !== key &&\n                    key.$$typeof === REACT_LAZY_TYPE &&\n                    resolveLazy(key) === currentFirstChild.type)\n                ) {\n                  deleteRemainingChildren(\n                    returnFiber,\n                    currentFirstChild.sibling\n                  );\n                  lanes = useFiber(currentFirstChild, newChild.props);\n                  coerceRef(lanes, newChild);\n                  lanes.return = returnFiber;\n                  returnFiber = lanes;\n                  break a;\n                }\n                deleteRemainingChildren(returnFiber, currentFirstChild);\n                break;\n              } else deleteChild(returnFiber, currentFirstChild);\n              currentFirstChild = currentFirstChild.sibling;\n            }\n            newChild.type === REACT_FRAGMENT_TYPE\n              ? ((lanes = createFiberFromFragment(\n                  newChild.props.children,\n                  returnFiber.mode,\n                  lanes,\n                  newChild.key\n                )),\n                (lanes.return = returnFiber),\n                (returnFiber = lanes))\n              : ((lanes = createFiberFromTypeAndProps(\n                  newChild.type,\n                  newChild.key,\n                  newChild.props,\n                  null,\n                  returnFiber.mode,\n                  lanes\n                )),\n                coerceRef(lanes, newChild),\n                (lanes.return = returnFiber),\n                (returnFiber = lanes));\n          }\n          return placeSingleChild(returnFiber);\n        case REACT_PORTAL_TYPE:\n          a: {\n            for (key = newChild.key; null !== currentFirstChild; ) {\n              if (currentFirstChild.key === key)\n                if (\n                  4 === currentFirstChild.tag &&\n                  currentFirstChild.stateNode.containerInfo ===\n                    newChild.containerInfo &&\n                  currentFirstChild.stateNode.implementation ===\n                    newChild.implementation\n                ) {\n                  deleteRemainingChildren(\n                    returnFiber,\n                    currentFirstChild.sibling\n                  );\n                  lanes = useFiber(currentFirstChild, newChild.children || []);\n                  lanes.return = returnFiber;\n                  returnFiber = lanes;\n                  break a;\n                } else {\n                  deleteRemainingChildren(returnFiber, currentFirstChild);\n                  break;\n                }\n              else deleteChild(returnFiber, currentFirstChild);\n              currentFirstChild = currentFirstChild.sibling;\n            }\n            lanes = createFiberFromPortal(newChild, returnFiber.mode, lanes);\n            lanes.return = returnFiber;\n            returnFiber = lanes;\n          }\n          return placeSingleChild(returnFiber);\n        case REACT_LAZY_TYPE:\n          return (\n            (key = newChild._init),\n            (newChild = key(newChild._payload)),\n            reconcileChildFibersImpl(\n              returnFiber,\n              currentFirstChild,\n              newChild,\n              lanes\n            )\n          );\n      }\n      if (isArrayImpl(newChild))\n        return reconcileChildrenArray(\n          returnFiber,\n          currentFirstChild,\n          newChild,\n          lanes\n        );\n      if (getIteratorFn(newChild)) {\n        key = getIteratorFn(newChild);\n        if (\"function\" !== typeof key) throw Error(formatProdErrorMessage(150));\n        newChild = key.call(newChild);\n        return reconcileChildrenIterator(\n          returnFiber,\n          currentFirstChild,\n          newChild,\n          lanes\n        );\n      }\n      if (\"function\" === typeof newChild.then)\n        return reconcileChildFibersImpl(\n          returnFiber,\n          currentFirstChild,\n          unwrapThenable(newChild),\n          lanes\n        );\n      if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n        return reconcileChildFibersImpl(\n          returnFiber,\n          currentFirstChild,\n          readContextDuringReconciliation(returnFiber, newChild),\n          lanes\n        );\n      throwOnInvalidObjectType(returnFiber, newChild);\n    }\n    return (\"string\" === typeof newChild && \"\" !== newChild) ||\n      \"number\" === typeof newChild ||\n      \"bigint\" === typeof newChild\n      ? ((newChild = \"\" + newChild),\n        null !== currentFirstChild && 6 === currentFirstChild.tag\n          ? (deleteRemainingChildren(returnFiber, currentFirstChild.sibling),\n            (lanes = useFiber(currentFirstChild, newChild)),\n            (lanes.return = returnFiber),\n            (returnFiber = lanes))\n          : (deleteRemainingChildren(returnFiber, currentFirstChild),\n            (lanes = createFiberFromText(newChild, returnFiber.mode, lanes)),\n            (lanes.return = returnFiber),\n            (returnFiber = lanes)),\n        placeSingleChild(returnFiber))\n      : deleteRemainingChildren(returnFiber, currentFirstChild);\n  }\n  return function (returnFiber, currentFirstChild, newChild, lanes) {\n    try {\n      thenableIndexCounter = 0;\n      var firstChildFiber = reconcileChildFibersImpl(\n        returnFiber,\n        currentFirstChild,\n        newChild,\n        lanes\n      );\n      thenableState = null;\n      return firstChildFiber;\n    } catch (x) {\n      if (x === SuspenseException || x === SuspenseActionException) throw x;\n      var fiber = createFiberImplClass(29, x, null, returnFiber.mode);\n      fiber.lanes = lanes;\n      fiber.return = returnFiber;\n      return fiber;\n    } finally {\n    }\n  };\n}\nvar reconcileChildFibers = createChildReconciler(!0),\n  mountChildFibers = createChildReconciler(!1),\n  suspenseHandlerStackCursor = createCursor(null),\n  shellBoundary = null;\nfunction pushPrimaryTreeSuspenseHandler(handler) {\n  var current = handler.alternate;\n  push(suspenseStackCursor, suspenseStackCursor.current & 1);\n  push(suspenseHandlerStackCursor, handler);\n  null === shellBoundary &&\n    (null === current || null !== currentTreeHiddenStackCursor.current\n      ? (shellBoundary = handler)\n      : null !== current.memoizedState && (shellBoundary = handler));\n}\nfunction pushOffscreenSuspenseHandler(fiber) {\n  if (22 === fiber.tag) {\n    if (\n      (push(suspenseStackCursor, suspenseStackCursor.current),\n      push(suspenseHandlerStackCursor, fiber),\n      null === shellBoundary)\n    ) {\n      var current = fiber.alternate;\n      null !== current &&\n        null !== current.memoizedState &&\n        (shellBoundary = fiber);\n    }\n  } else reuseSuspenseHandlerOnStack(fiber);\n}\nfunction reuseSuspenseHandlerOnStack() {\n  push(suspenseStackCursor, suspenseStackCursor.current);\n  push(suspenseHandlerStackCursor, suspenseHandlerStackCursor.current);\n}\nfunction popSuspenseHandler(fiber) {\n  pop(suspenseHandlerStackCursor);\n  shellBoundary === fiber && (shellBoundary = null);\n  pop(suspenseStackCursor);\n}\nvar suspenseStackCursor = createCursor(0);\nfunction findFirstSuspended(row) {\n  for (var node = row; null !== node; ) {\n    if (13 === node.tag) {\n      var state = node.memoizedState;\n      if (\n        null !== state &&\n        ((state = state.dehydrated),\n        null === state ||\n          \"$?\" === state.data ||\n          isSuspenseInstanceFallback(state))\n      )\n        return node;\n    } else if (19 === node.tag && void 0 !== node.memoizedProps.revealOrder) {\n      if (0 !== (node.flags & 128)) return node;\n    } else if (null !== node.child) {\n      node.child.return = node;\n      node = node.child;\n      continue;\n    }\n    if (node === row) break;\n    for (; null === node.sibling; ) {\n      if (null === node.return || node.return === row) return null;\n      node = node.return;\n    }\n    node.sibling.return = node.return;\n    node = node.sibling;\n  }\n  return null;\n}\nfunction applyDerivedStateFromProps(\n  workInProgress,\n  ctor,\n  getDerivedStateFromProps,\n  nextProps\n) {\n  ctor = workInProgress.memoizedState;\n  getDerivedStateFromProps = getDerivedStateFromProps(nextProps, ctor);\n  getDerivedStateFromProps =\n    null === getDerivedStateFromProps || void 0 === getDerivedStateFromProps\n      ? ctor\n      : assign({}, ctor, getDerivedStateFromProps);\n  workInProgress.memoizedState = getDerivedStateFromProps;\n  0 === workInProgress.lanes &&\n    (workInProgress.updateQueue.baseState = getDerivedStateFromProps);\n}\nvar classComponentUpdater = {\n  enqueueSetState: function (inst, payload, callback) {\n    inst = inst._reactInternals;\n    var lane = requestUpdateLane(),\n      update = createUpdate(lane);\n    update.payload = payload;\n    void 0 !== callback && null !== callback && (update.callback = callback);\n    payload = enqueueUpdate(inst, update, lane);\n    null !== payload &&\n      (scheduleUpdateOnFiber(payload, inst, lane),\n      entangleTransitions(payload, inst, lane));\n  },\n  enqueueReplaceState: function (inst, payload, callback) {\n    inst = inst._reactInternals;\n    var lane = requestUpdateLane(),\n      update = createUpdate(lane);\n    update.tag = 1;\n    update.payload = payload;\n    void 0 !== callback && null !== callback && (update.callback = callback);\n    payload = enqueueUpdate(inst, update, lane);\n    null !== payload &&\n      (scheduleUpdateOnFiber(payload, inst, lane),\n      entangleTransitions(payload, inst, lane));\n  },\n  enqueueForceUpdate: function (inst, callback) {\n    inst = inst._reactInternals;\n    var lane = requestUpdateLane(),\n      update = createUpdate(lane);\n    update.tag = 2;\n    void 0 !== callback && null !== callback && (update.callback = callback);\n    callback = enqueueUpdate(inst, update, lane);\n    null !== callback &&\n      (scheduleUpdateOnFiber(callback, inst, lane),\n      entangleTransitions(callback, inst, lane));\n  }\n};\nfunction checkShouldComponentUpdate(\n  workInProgress,\n  ctor,\n  oldProps,\n  newProps,\n  oldState,\n  newState,\n  nextContext\n) {\n  workInProgress = workInProgress.stateNode;\n  return \"function\" === typeof workInProgress.shouldComponentUpdate\n    ? workInProgress.shouldComponentUpdate(newProps, newState, nextContext)\n    : ctor.prototype && ctor.prototype.isPureReactComponent\n      ? !shallowEqual(oldProps, newProps) || !shallowEqual(oldState, newState)\n      : !0;\n}\nfunction callComponentWillReceiveProps(\n  workInProgress,\n  instance,\n  newProps,\n  nextContext\n) {\n  workInProgress = instance.state;\n  \"function\" === typeof instance.componentWillReceiveProps &&\n    instance.componentWillReceiveProps(newProps, nextContext);\n  \"function\" === typeof instance.UNSAFE_componentWillReceiveProps &&\n    instance.UNSAFE_componentWillReceiveProps(newProps, nextContext);\n  instance.state !== workInProgress &&\n    classComponentUpdater.enqueueReplaceState(instance, instance.state, null);\n}\nfunction resolveClassComponentProps(Component, baseProps) {\n  var newProps = baseProps;\n  if (\"ref\" in baseProps) {\n    newProps = {};\n    for (var propName in baseProps)\n      \"ref\" !== propName && (newProps[propName] = baseProps[propName]);\n  }\n  if ((Component = Component.defaultProps)) {\n    newProps === baseProps && (newProps = assign({}, newProps));\n    for (var propName$73 in Component)\n      void 0 === newProps[propName$73] &&\n        (newProps[propName$73] = Component[propName$73]);\n  }\n  return newProps;\n}\nvar reportGlobalError =\n  \"function\" === typeof reportError\n    ? reportError\n    : function (error) {\n        if (\n          \"object\" === typeof window &&\n          \"function\" === typeof window.ErrorEvent\n        ) {\n          var event = new window.ErrorEvent(\"error\", {\n            bubbles: !0,\n            cancelable: !0,\n            message:\n              \"object\" === typeof error &&\n              null !== error &&\n              \"string\" === typeof error.message\n                ? String(error.message)\n                : String(error),\n            error: error\n          });\n          if (!window.dispatchEvent(event)) return;\n        } else if (\n          \"object\" === typeof process &&\n          \"function\" === typeof process.emit\n        ) {\n          process.emit(\"uncaughtException\", error);\n          return;\n        }\n        console.error(error);\n      };\nfunction defaultOnUncaughtError(error) {\n  reportGlobalError(error);\n}\nfunction defaultOnCaughtError(error) {\n  console.error(error);\n}\nfunction defaultOnRecoverableError(error) {\n  reportGlobalError(error);\n}\nfunction logUncaughtError(root, errorInfo) {\n  try {\n    var onUncaughtError = root.onUncaughtError;\n    onUncaughtError(errorInfo.value, { componentStack: errorInfo.stack });\n  } catch (e$74) {\n    setTimeout(function () {\n      throw e$74;\n    });\n  }\n}\nfunction logCaughtError(root, boundary, errorInfo) {\n  try {\n    var onCaughtError = root.onCaughtError;\n    onCaughtError(errorInfo.value, {\n      componentStack: errorInfo.stack,\n      errorBoundary: 1 === boundary.tag ? boundary.stateNode : null\n    });\n  } catch (e$75) {\n    setTimeout(function () {\n      throw e$75;\n    });\n  }\n}\nfunction createRootErrorUpdate(root, errorInfo, lane) {\n  lane = createUpdate(lane);\n  lane.tag = 3;\n  lane.payload = { element: null };\n  lane.callback = function () {\n    logUncaughtError(root, errorInfo);\n  };\n  return lane;\n}\nfunction createClassErrorUpdate(lane) {\n  lane = createUpdate(lane);\n  lane.tag = 3;\n  return lane;\n}\nfunction initializeClassErrorUpdate(update, root, fiber, errorInfo) {\n  var getDerivedStateFromError = fiber.type.getDerivedStateFromError;\n  if (\"function\" === typeof getDerivedStateFromError) {\n    var error = errorInfo.value;\n    update.payload = function () {\n      return getDerivedStateFromError(error);\n    };\n    update.callback = function () {\n      logCaughtError(root, fiber, errorInfo);\n    };\n  }\n  var inst = fiber.stateNode;\n  null !== inst &&\n    \"function\" === typeof inst.componentDidCatch &&\n    (update.callback = function () {\n      logCaughtError(root, fiber, errorInfo);\n      \"function\" !== typeof getDerivedStateFromError &&\n        (null === legacyErrorBoundariesThatAlreadyFailed\n          ? (legacyErrorBoundariesThatAlreadyFailed = new Set([this]))\n          : legacyErrorBoundariesThatAlreadyFailed.add(this));\n      var stack = errorInfo.stack;\n      this.componentDidCatch(errorInfo.value, {\n        componentStack: null !== stack ? stack : \"\"\n      });\n    });\n}\nfunction throwException(\n  root,\n  returnFiber,\n  sourceFiber,\n  value,\n  rootRenderLanes\n) {\n  sourceFiber.flags |= 32768;\n  if (\n    null !== value &&\n    \"object\" === typeof value &&\n    \"function\" === typeof value.then\n  ) {\n    returnFiber = sourceFiber.alternate;\n    null !== returnFiber &&\n      propagateParentContextChanges(\n        returnFiber,\n        sourceFiber,\n        rootRenderLanes,\n        !0\n      );\n    sourceFiber = suspenseHandlerStackCursor.current;\n    if (null !== sourceFiber) {\n      switch (sourceFiber.tag) {\n        case 13:\n          return (\n            null === shellBoundary\n              ? renderDidSuspendDelayIfPossible()\n              : null === sourceFiber.alternate &&\n                0 === workInProgressRootExitStatus &&\n                (workInProgressRootExitStatus = 3),\n            (sourceFiber.flags &= -257),\n            (sourceFiber.flags |= 65536),\n            (sourceFiber.lanes = rootRenderLanes),\n            value === noopSuspenseyCommitThenable\n              ? (sourceFiber.flags |= 16384)\n              : ((returnFiber = sourceFiber.updateQueue),\n                null === returnFiber\n                  ? (sourceFiber.updateQueue = new Set([value]))\n                  : returnFiber.add(value),\n                attachPingListener(root, value, rootRenderLanes)),\n            !1\n          );\n        case 22:\n          return (\n            (sourceFiber.flags |= 65536),\n            value === noopSuspenseyCommitThenable\n              ? (sourceFiber.flags |= 16384)\n              : ((returnFiber = sourceFiber.updateQueue),\n                null === returnFiber\n                  ? ((returnFiber = {\n                      transitions: null,\n                      markerInstances: null,\n                      retryQueue: new Set([value])\n                    }),\n                    (sourceFiber.updateQueue = returnFiber))\n                  : ((sourceFiber = returnFiber.retryQueue),\n                    null === sourceFiber\n                      ? (returnFiber.retryQueue = new Set([value]))\n                      : sourceFiber.add(value)),\n                attachPingListener(root, value, rootRenderLanes)),\n            !1\n          );\n      }\n      throw Error(formatProdErrorMessage(435, sourceFiber.tag));\n    }\n    attachPingListener(root, value, rootRenderLanes);\n    renderDidSuspendDelayIfPossible();\n    return !1;\n  }\n  if (isHydrating)\n    return (\n      (returnFiber = suspenseHandlerStackCursor.current),\n      null !== returnFiber\n        ? (0 === (returnFiber.flags & 65536) && (returnFiber.flags |= 256),\n          (returnFiber.flags |= 65536),\n          (returnFiber.lanes = rootRenderLanes),\n          value !== HydrationMismatchException &&\n            ((root = Error(formatProdErrorMessage(422), { cause: value })),\n            queueHydrationError(createCapturedValueAtFiber(root, sourceFiber))))\n        : (value !== HydrationMismatchException &&\n            ((returnFiber = Error(formatProdErrorMessage(423), {\n              cause: value\n            })),\n            queueHydrationError(\n              createCapturedValueAtFiber(returnFiber, sourceFiber)\n            )),\n          (root = root.current.alternate),\n          (root.flags |= 65536),\n          (rootRenderLanes &= -rootRenderLanes),\n          (root.lanes |= rootRenderLanes),\n          (value = createCapturedValueAtFiber(value, sourceFiber)),\n          (rootRenderLanes = createRootErrorUpdate(\n            root.stateNode,\n            value,\n            rootRenderLanes\n          )),\n          enqueueCapturedUpdate(root, rootRenderLanes),\n          4 !== workInProgressRootExitStatus &&\n            (workInProgressRootExitStatus = 2)),\n      !1\n    );\n  var wrapperError = Error(formatProdErrorMessage(520), { cause: value });\n  wrapperError = createCapturedValueAtFiber(wrapperError, sourceFiber);\n  null === workInProgressRootConcurrentErrors\n    ? (workInProgressRootConcurrentErrors = [wrapperError])\n    : workInProgressRootConcurrentErrors.push(wrapperError);\n  4 !== workInProgressRootExitStatus && (workInProgressRootExitStatus = 2);\n  if (null === returnFiber) return !0;\n  value = createCapturedValueAtFiber(value, sourceFiber);\n  sourceFiber = returnFiber;\n  do {\n    switch (sourceFiber.tag) {\n      case 3:\n        return (\n          (sourceFiber.flags |= 65536),\n          (root = rootRenderLanes & -rootRenderLanes),\n          (sourceFiber.lanes |= root),\n          (root = createRootErrorUpdate(sourceFiber.stateNode, value, root)),\n          enqueueCapturedUpdate(sourceFiber, root),\n          !1\n        );\n      case 1:\n        if (\n          ((returnFiber = sourceFiber.type),\n          (wrapperError = sourceFiber.stateNode),\n          0 === (sourceFiber.flags & 128) &&\n            (\"function\" === typeof returnFiber.getDerivedStateFromError ||\n              (null !== wrapperError &&\n                \"function\" === typeof wrapperError.componentDidCatch &&\n                (null === legacyErrorBoundariesThatAlreadyFailed ||\n                  !legacyErrorBoundariesThatAlreadyFailed.has(wrapperError)))))\n        )\n          return (\n            (sourceFiber.flags |= 65536),\n            (rootRenderLanes &= -rootRenderLanes),\n            (sourceFiber.lanes |= rootRenderLanes),\n            (rootRenderLanes = createClassErrorUpdate(rootRenderLanes)),\n            initializeClassErrorUpdate(\n              rootRenderLanes,\n              root,\n              sourceFiber,\n              value\n            ),\n            enqueueCapturedUpdate(sourceFiber, rootRenderLanes),\n            !1\n          );\n    }\n    sourceFiber = sourceFiber.return;\n  } while (null !== sourceFiber);\n  return !1;\n}\nvar SelectiveHydrationException = Error(formatProdErrorMessage(461)),\n  didReceiveUpdate = !1;\nfunction reconcileChildren(current, workInProgress, nextChildren, renderLanes) {\n  workInProgress.child =\n    null === current\n      ? mountChildFibers(workInProgress, null, nextChildren, renderLanes)\n      : reconcileChildFibers(\n          workInProgress,\n          current.child,\n          nextChildren,\n          renderLanes\n        );\n}\nfunction updateForwardRef(\n  current,\n  workInProgress,\n  Component,\n  nextProps,\n  renderLanes\n) {\n  Component = Component.render;\n  var ref = workInProgress.ref;\n  if (\"ref\" in nextProps) {\n    var propsWithoutRef = {};\n    for (var key in nextProps)\n      \"ref\" !== key && (propsWithoutRef[key] = nextProps[key]);\n  } else propsWithoutRef = nextProps;\n  prepareToReadContext(workInProgress);\n  nextProps = renderWithHooks(\n    current,\n    workInProgress,\n    Component,\n    propsWithoutRef,\n    ref,\n    renderLanes\n  );\n  key = checkDidRenderIdHook();\n  if (null !== current && !didReceiveUpdate)\n    return (\n      bailoutHooks(current, workInProgress, renderLanes),\n      bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n    );\n  isHydrating && key && pushMaterializedTreeId(workInProgress);\n  workInProgress.flags |= 1;\n  reconcileChildren(current, workInProgress, nextProps, renderLanes);\n  return workInProgress.child;\n}\nfunction updateMemoComponent(\n  current,\n  workInProgress,\n  Component,\n  nextProps,\n  renderLanes\n) {\n  if (null === current) {\n    var type = Component.type;\n    if (\n      \"function\" === typeof type &&\n      !shouldConstruct(type) &&\n      void 0 === type.defaultProps &&\n      null === Component.compare\n    )\n      return (\n        (workInProgress.tag = 15),\n        (workInProgress.type = type),\n        updateSimpleMemoComponent(\n          current,\n          workInProgress,\n          type,\n          nextProps,\n          renderLanes\n        )\n      );\n    current = createFiberFromTypeAndProps(\n      Component.type,\n      null,\n      nextProps,\n      workInProgress,\n      workInProgress.mode,\n      renderLanes\n    );\n    current.ref = workInProgress.ref;\n    current.return = workInProgress;\n    return (workInProgress.child = current);\n  }\n  type = current.child;\n  if (!checkScheduledUpdateOrContext(current, renderLanes)) {\n    var prevProps = type.memoizedProps;\n    Component = Component.compare;\n    Component = null !== Component ? Component : shallowEqual;\n    if (Component(prevProps, nextProps) && current.ref === workInProgress.ref)\n      return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n  }\n  workInProgress.flags |= 1;\n  current = createWorkInProgress(type, nextProps);\n  current.ref = workInProgress.ref;\n  current.return = workInProgress;\n  return (workInProgress.child = current);\n}\nfunction updateSimpleMemoComponent(\n  current,\n  workInProgress,\n  Component,\n  nextProps,\n  renderLanes\n) {\n  if (null !== current) {\n    var prevProps = current.memoizedProps;\n    if (\n      shallowEqual(prevProps, nextProps) &&\n      current.ref === workInProgress.ref\n    )\n      if (\n        ((didReceiveUpdate = !1),\n        (workInProgress.pendingProps = nextProps = prevProps),\n        checkScheduledUpdateOrContext(current, renderLanes))\n      )\n        0 !== (current.flags & 131072) && (didReceiveUpdate = !0);\n      else\n        return (\n          (workInProgress.lanes = current.lanes),\n          bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n        );\n  }\n  return updateFunctionComponent(\n    current,\n    workInProgress,\n    Component,\n    nextProps,\n    renderLanes\n  );\n}\nfunction updateOffscreenComponent(current, workInProgress, renderLanes) {\n  var nextProps = workInProgress.pendingProps,\n    nextChildren = nextProps.children,\n    prevState = null !== current ? current.memoizedState : null;\n  if (\"hidden\" === nextProps.mode) {\n    if (0 !== (workInProgress.flags & 128)) {\n      nextProps =\n        null !== prevState ? prevState.baseLanes | renderLanes : renderLanes;\n      if (null !== current) {\n        nextChildren = workInProgress.child = current.child;\n        for (prevState = 0; null !== nextChildren; )\n          (prevState =\n            prevState | nextChildren.lanes | nextChildren.childLanes),\n            (nextChildren = nextChildren.sibling);\n        workInProgress.childLanes = prevState & ~nextProps;\n      } else (workInProgress.childLanes = 0), (workInProgress.child = null);\n      return deferHiddenOffscreenComponent(\n        current,\n        workInProgress,\n        nextProps,\n        renderLanes\n      );\n    }\n    if (0 !== (renderLanes & 536870912))\n      (workInProgress.memoizedState = { baseLanes: 0, cachePool: null }),\n        null !== current &&\n          pushTransition(\n            workInProgress,\n            null !== prevState ? prevState.cachePool : null\n          ),\n        null !== prevState\n          ? pushHiddenContext(workInProgress, prevState)\n          : reuseHiddenContextOnStack(),\n        pushOffscreenSuspenseHandler(workInProgress);\n    else\n      return (\n        (workInProgress.lanes = workInProgress.childLanes = 536870912),\n        deferHiddenOffscreenComponent(\n          current,\n          workInProgress,\n          null !== prevState ? prevState.baseLanes | renderLanes : renderLanes,\n          renderLanes\n        )\n      );\n  } else\n    null !== prevState\n      ? (pushTransition(workInProgress, prevState.cachePool),\n        pushHiddenContext(workInProgress, prevState),\n        reuseSuspenseHandlerOnStack(workInProgress),\n        (workInProgress.memoizedState = null))\n      : (null !== current && pushTransition(workInProgress, null),\n        reuseHiddenContextOnStack(),\n        reuseSuspenseHandlerOnStack(workInProgress));\n  reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n  return workInProgress.child;\n}\nfunction deferHiddenOffscreenComponent(\n  current,\n  workInProgress,\n  nextBaseLanes,\n  renderLanes\n) {\n  var JSCompiler_inline_result = peekCacheFromPool();\n  JSCompiler_inline_result =\n    null === JSCompiler_inline_result\n      ? null\n      : { parent: CacheContext._currentValue, pool: JSCompiler_inline_result };\n  workInProgress.memoizedState = {\n    baseLanes: nextBaseLanes,\n    cachePool: JSCompiler_inline_result\n  };\n  null !== current && pushTransition(workInProgress, null);\n  reuseHiddenContextOnStack();\n  pushOffscreenSuspenseHandler(workInProgress);\n  null !== current &&\n    propagateParentContextChanges(current, workInProgress, renderLanes, !0);\n  return null;\n}\nfunction markRef(current, workInProgress) {\n  var ref = workInProgress.ref;\n  if (null === ref)\n    null !== current &&\n      null !== current.ref &&\n      (workInProgress.flags |= 4194816);\n  else {\n    if (\"function\" !== typeof ref && \"object\" !== typeof ref)\n      throw Error(formatProdErrorMessage(284));\n    if (null === current || current.ref !== ref)\n      workInProgress.flags |= 4194816;\n  }\n}\nfunction updateFunctionComponent(\n  current,\n  workInProgress,\n  Component,\n  nextProps,\n  renderLanes\n) {\n  prepareToReadContext(workInProgress);\n  Component = renderWithHooks(\n    current,\n    workInProgress,\n    Component,\n    nextProps,\n    void 0,\n    renderLanes\n  );\n  nextProps = checkDidRenderIdHook();\n  if (null !== current && !didReceiveUpdate)\n    return (\n      bailoutHooks(current, workInProgress, renderLanes),\n      bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n    );\n  isHydrating && nextProps && pushMaterializedTreeId(workInProgress);\n  workInProgress.flags |= 1;\n  reconcileChildren(current, workInProgress, Component, renderLanes);\n  return workInProgress.child;\n}\nfunction replayFunctionComponent(\n  current,\n  workInProgress,\n  nextProps,\n  Component,\n  secondArg,\n  renderLanes\n) {\n  prepareToReadContext(workInProgress);\n  workInProgress.updateQueue = null;\n  nextProps = renderWithHooksAgain(\n    workInProgress,\n    Component,\n    nextProps,\n    secondArg\n  );\n  finishRenderingHooks(current);\n  Component = checkDidRenderIdHook();\n  if (null !== current && !didReceiveUpdate)\n    return (\n      bailoutHooks(current, workInProgress, renderLanes),\n      bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n    );\n  isHydrating && Component && pushMaterializedTreeId(workInProgress);\n  workInProgress.flags |= 1;\n  reconcileChildren(current, workInProgress, nextProps, renderLanes);\n  return workInProgress.child;\n}\nfunction updateClassComponent(\n  current,\n  workInProgress,\n  Component,\n  nextProps,\n  renderLanes\n) {\n  prepareToReadContext(workInProgress);\n  if (null === workInProgress.stateNode) {\n    var context = emptyContextObject,\n      contextType = Component.contextType;\n    \"object\" === typeof contextType &&\n      null !== contextType &&\n      (context = readContext(contextType));\n    context = new Component(nextProps, context);\n    workInProgress.memoizedState =\n      null !== context.state && void 0 !== context.state ? context.state : null;\n    context.updater = classComponentUpdater;\n    workInProgress.stateNode = context;\n    context._reactInternals = workInProgress;\n    context = workInProgress.stateNode;\n    context.props = nextProps;\n    context.state = workInProgress.memoizedState;\n    context.refs = {};\n    initializeUpdateQueue(workInProgress);\n    contextType = Component.contextType;\n    context.context =\n      \"object\" === typeof contextType && null !== contextType\n        ? readContext(contextType)\n        : emptyContextObject;\n    context.state = workInProgress.memoizedState;\n    contextType = Component.getDerivedStateFromProps;\n    \"function\" === typeof contextType &&\n      (applyDerivedStateFromProps(\n        workInProgress,\n        Component,\n        contextType,\n        nextProps\n      ),\n      (context.state = workInProgress.memoizedState));\n    \"function\" === typeof Component.getDerivedStateFromProps ||\n      \"function\" === typeof context.getSnapshotBeforeUpdate ||\n      (\"function\" !== typeof context.UNSAFE_componentWillMount &&\n        \"function\" !== typeof context.componentWillMount) ||\n      ((contextType = context.state),\n      \"function\" === typeof context.componentWillMount &&\n        context.componentWillMount(),\n      \"function\" === typeof context.UNSAFE_componentWillMount &&\n        context.UNSAFE_componentWillMount(),\n      contextType !== context.state &&\n        classComponentUpdater.enqueueReplaceState(context, context.state, null),\n      processUpdateQueue(workInProgress, nextProps, context, renderLanes),\n      suspendIfUpdateReadFromEntangledAsyncAction(),\n      (context.state = workInProgress.memoizedState));\n    \"function\" === typeof context.componentDidMount &&\n      (workInProgress.flags |= 4194308);\n    nextProps = !0;\n  } else if (null === current) {\n    context = workInProgress.stateNode;\n    var unresolvedOldProps = workInProgress.memoizedProps,\n      oldProps = resolveClassComponentProps(Component, unresolvedOldProps);\n    context.props = oldProps;\n    var oldContext = context.context,\n      contextType$jscomp$0 = Component.contextType;\n    contextType = emptyContextObject;\n    \"object\" === typeof contextType$jscomp$0 &&\n      null !== contextType$jscomp$0 &&\n      (contextType = readContext(contextType$jscomp$0));\n    var getDerivedStateFromProps = Component.getDerivedStateFromProps;\n    contextType$jscomp$0 =\n      \"function\" === typeof getDerivedStateFromProps ||\n      \"function\" === typeof context.getSnapshotBeforeUpdate;\n    unresolvedOldProps = workInProgress.pendingProps !== unresolvedOldProps;\n    contextType$jscomp$0 ||\n      (\"function\" !== typeof context.UNSAFE_componentWillReceiveProps &&\n        \"function\" !== typeof context.componentWillReceiveProps) ||\n      ((unresolvedOldProps || oldContext !== contextType) &&\n        callComponentWillReceiveProps(\n          workInProgress,\n          context,\n          nextProps,\n          contextType\n        ));\n    hasForceUpdate = !1;\n    var oldState = workInProgress.memoizedState;\n    context.state = oldState;\n    processUpdateQueue(workInProgress, nextProps, context, renderLanes);\n    suspendIfUpdateReadFromEntangledAsyncAction();\n    oldContext = workInProgress.memoizedState;\n    unresolvedOldProps || oldState !== oldContext || hasForceUpdate\n      ? (\"function\" === typeof getDerivedStateFromProps &&\n          (applyDerivedStateFromProps(\n            workInProgress,\n            Component,\n            getDerivedStateFromProps,\n            nextProps\n          ),\n          (oldContext = workInProgress.memoizedState)),\n        (oldProps =\n          hasForceUpdate ||\n          checkShouldComponentUpdate(\n            workInProgress,\n            Component,\n            oldProps,\n            nextProps,\n            oldState,\n            oldContext,\n            contextType\n          ))\n          ? (contextType$jscomp$0 ||\n              (\"function\" !== typeof context.UNSAFE_componentWillMount &&\n                \"function\" !== typeof context.componentWillMount) ||\n              (\"function\" === typeof context.componentWillMount &&\n                context.componentWillMount(),\n              \"function\" === typeof context.UNSAFE_componentWillMount &&\n                context.UNSAFE_componentWillMount()),\n            \"function\" === typeof context.componentDidMount &&\n              (workInProgress.flags |= 4194308))\n          : (\"function\" === typeof context.componentDidMount &&\n              (workInProgress.flags |= 4194308),\n            (workInProgress.memoizedProps = nextProps),\n            (workInProgress.memoizedState = oldContext)),\n        (context.props = nextProps),\n        (context.state = oldContext),\n        (context.context = contextType),\n        (nextProps = oldProps))\n      : (\"function\" === typeof context.componentDidMount &&\n          (workInProgress.flags |= 4194308),\n        (nextProps = !1));\n  } else {\n    context = workInProgress.stateNode;\n    cloneUpdateQueue(current, workInProgress);\n    contextType = workInProgress.memoizedProps;\n    contextType$jscomp$0 = resolveClassComponentProps(Component, contextType);\n    context.props = contextType$jscomp$0;\n    getDerivedStateFromProps = workInProgress.pendingProps;\n    oldState = context.context;\n    oldContext = Component.contextType;\n    oldProps = emptyContextObject;\n    \"object\" === typeof oldContext &&\n      null !== oldContext &&\n      (oldProps = readContext(oldContext));\n    unresolvedOldProps = Component.getDerivedStateFromProps;\n    (oldContext =\n      \"function\" === typeof unresolvedOldProps ||\n      \"function\" === typeof context.getSnapshotBeforeUpdate) ||\n      (\"function\" !== typeof context.UNSAFE_componentWillReceiveProps &&\n        \"function\" !== typeof context.componentWillReceiveProps) ||\n      ((contextType !== getDerivedStateFromProps || oldState !== oldProps) &&\n        callComponentWillReceiveProps(\n          workInProgress,\n          context,\n          nextProps,\n          oldProps\n        ));\n    hasForceUpdate = !1;\n    oldState = workInProgress.memoizedState;\n    context.state = oldState;\n    processUpdateQueue(workInProgress, nextProps, context, renderLanes);\n    suspendIfUpdateReadFromEntangledAsyncAction();\n    var newState = workInProgress.memoizedState;\n    contextType !== getDerivedStateFromProps ||\n    oldState !== newState ||\n    hasForceUpdate ||\n    (null !== current &&\n      null !== current.dependencies &&\n      checkIfContextChanged(current.dependencies))\n      ? (\"function\" === typeof unresolvedOldProps &&\n          (applyDerivedStateFromProps(\n            workInProgress,\n            Component,\n            unresolvedOldProps,\n            nextProps\n          ),\n          (newState = workInProgress.memoizedState)),\n        (contextType$jscomp$0 =\n          hasForceUpdate ||\n          checkShouldComponentUpdate(\n            workInProgress,\n            Component,\n            contextType$jscomp$0,\n            nextProps,\n            oldState,\n            newState,\n            oldProps\n          ) ||\n          (null !== current &&\n            null !== current.dependencies &&\n            checkIfContextChanged(current.dependencies)))\n          ? (oldContext ||\n              (\"function\" !== typeof context.UNSAFE_componentWillUpdate &&\n                \"function\" !== typeof context.componentWillUpdate) ||\n              (\"function\" === typeof context.componentWillUpdate &&\n                context.componentWillUpdate(nextProps, newState, oldProps),\n              \"function\" === typeof context.UNSAFE_componentWillUpdate &&\n                context.UNSAFE_componentWillUpdate(\n                  nextProps,\n                  newState,\n                  oldProps\n                )),\n            \"function\" === typeof context.componentDidUpdate &&\n              (workInProgress.flags |= 4),\n            \"function\" === typeof context.getSnapshotBeforeUpdate &&\n              (workInProgress.flags |= 1024))\n          : (\"function\" !== typeof context.componentDidUpdate ||\n              (contextType === current.memoizedProps &&\n                oldState === current.memoizedState) ||\n              (workInProgress.flags |= 4),\n            \"function\" !== typeof context.getSnapshotBeforeUpdate ||\n              (contextType === current.memoizedProps &&\n                oldState === current.memoizedState) ||\n              (workInProgress.flags |= 1024),\n            (workInProgress.memoizedProps = nextProps),\n            (workInProgress.memoizedState = newState)),\n        (context.props = nextProps),\n        (context.state = newState),\n        (context.context = oldProps),\n        (nextProps = contextType$jscomp$0))\n      : (\"function\" !== typeof context.componentDidUpdate ||\n          (contextType === current.memoizedProps &&\n            oldState === current.memoizedState) ||\n          (workInProgress.flags |= 4),\n        \"function\" !== typeof context.getSnapshotBeforeUpdate ||\n          (contextType === current.memoizedProps &&\n            oldState === current.memoizedState) ||\n          (workInProgress.flags |= 1024),\n        (nextProps = !1));\n  }\n  context = nextProps;\n  markRef(current, workInProgress);\n  nextProps = 0 !== (workInProgress.flags & 128);\n  context || nextProps\n    ? ((context = workInProgress.stateNode),\n      (Component =\n        nextProps && \"function\" !== typeof Component.getDerivedStateFromError\n          ? null\n          : context.render()),\n      (workInProgress.flags |= 1),\n      null !== current && nextProps\n        ? ((workInProgress.child = reconcileChildFibers(\n            workInProgress,\n            current.child,\n            null,\n            renderLanes\n          )),\n          (workInProgress.child = reconcileChildFibers(\n            workInProgress,\n            null,\n            Component,\n            renderLanes\n          )))\n        : reconcileChildren(current, workInProgress, Component, renderLanes),\n      (workInProgress.memoizedState = context.state),\n      (current = workInProgress.child))\n    : (current = bailoutOnAlreadyFinishedWork(\n        current,\n        workInProgress,\n        renderLanes\n      ));\n  return current;\n}\nfunction mountHostRootWithoutHydrating(\n  current,\n  workInProgress,\n  nextChildren,\n  renderLanes\n) {\n  resetHydrationState();\n  workInProgress.flags |= 256;\n  reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n  return workInProgress.child;\n}\nvar SUSPENDED_MARKER = {\n  dehydrated: null,\n  treeContext: null,\n  retryLane: 0,\n  hydrationErrors: null\n};\nfunction mountSuspenseOffscreenState(renderLanes) {\n  return { baseLanes: renderLanes, cachePool: getSuspendedCache() };\n}\nfunction getRemainingWorkInPrimaryTree(\n  current,\n  primaryTreeDidDefer,\n  renderLanes\n) {\n  current = null !== current ? current.childLanes & ~renderLanes : 0;\n  primaryTreeDidDefer && (current |= workInProgressDeferredLane);\n  return current;\n}\nfunction updateSuspenseComponent(current, workInProgress, renderLanes) {\n  var nextProps = workInProgress.pendingProps,\n    showFallback = !1,\n    didSuspend = 0 !== (workInProgress.flags & 128),\n    JSCompiler_temp;\n  (JSCompiler_temp = didSuspend) ||\n    (JSCompiler_temp =\n      null !== current && null === current.memoizedState\n        ? !1\n        : 0 !== (suspenseStackCursor.current & 2));\n  JSCompiler_temp && ((showFallback = !0), (workInProgress.flags &= -129));\n  JSCompiler_temp = 0 !== (workInProgress.flags & 32);\n  workInProgress.flags &= -33;\n  if (null === current) {\n    if (isHydrating) {\n      showFallback\n        ? pushPrimaryTreeSuspenseHandler(workInProgress)\n        : reuseSuspenseHandlerOnStack(workInProgress);\n      if (isHydrating) {\n        var nextInstance = nextHydratableInstance,\n          JSCompiler_temp$jscomp$0;\n        if ((JSCompiler_temp$jscomp$0 = nextInstance)) {\n          c: {\n            JSCompiler_temp$jscomp$0 = nextInstance;\n            for (\n              nextInstance = rootOrSingletonContext;\n              8 !== JSCompiler_temp$jscomp$0.nodeType;\n\n            ) {\n              if (!nextInstance) {\n                nextInstance = null;\n                break c;\n              }\n              JSCompiler_temp$jscomp$0 = getNextHydratable(\n                JSCompiler_temp$jscomp$0.nextSibling\n              );\n              if (null === JSCompiler_temp$jscomp$0) {\n                nextInstance = null;\n                break c;\n              }\n            }\n            nextInstance = JSCompiler_temp$jscomp$0;\n          }\n          null !== nextInstance\n            ? ((workInProgress.memoizedState = {\n                dehydrated: nextInstance,\n                treeContext:\n                  null !== treeContextProvider\n                    ? { id: treeContextId, overflow: treeContextOverflow }\n                    : null,\n                retryLane: 536870912,\n                hydrationErrors: null\n              }),\n              (JSCompiler_temp$jscomp$0 = createFiberImplClass(\n                18,\n                null,\n                null,\n                0\n              )),\n              (JSCompiler_temp$jscomp$0.stateNode = nextInstance),\n              (JSCompiler_temp$jscomp$0.return = workInProgress),\n              (workInProgress.child = JSCompiler_temp$jscomp$0),\n              (hydrationParentFiber = workInProgress),\n              (nextHydratableInstance = null),\n              (JSCompiler_temp$jscomp$0 = !0))\n            : (JSCompiler_temp$jscomp$0 = !1);\n        }\n        JSCompiler_temp$jscomp$0 || throwOnHydrationMismatch(workInProgress);\n      }\n      nextInstance = workInProgress.memoizedState;\n      if (\n        null !== nextInstance &&\n        ((nextInstance = nextInstance.dehydrated), null !== nextInstance)\n      )\n        return (\n          isSuspenseInstanceFallback(nextInstance)\n            ? (workInProgress.lanes = 32)\n            : (workInProgress.lanes = 536870912),\n          null\n        );\n      popSuspenseHandler(workInProgress);\n    }\n    nextInstance = nextProps.children;\n    nextProps = nextProps.fallback;\n    if (showFallback)\n      return (\n        reuseSuspenseHandlerOnStack(workInProgress),\n        (showFallback = workInProgress.mode),\n        (nextInstance = mountWorkInProgressOffscreenFiber(\n          { mode: \"hidden\", children: nextInstance },\n          showFallback\n        )),\n        (nextProps = createFiberFromFragment(\n          nextProps,\n          showFallback,\n          renderLanes,\n          null\n        )),\n        (nextInstance.return = workInProgress),\n        (nextProps.return = workInProgress),\n        (nextInstance.sibling = nextProps),\n        (workInProgress.child = nextInstance),\n        (showFallback = workInProgress.child),\n        (showFallback.memoizedState = mountSuspenseOffscreenState(renderLanes)),\n        (showFallback.childLanes = getRemainingWorkInPrimaryTree(\n          current,\n          JSCompiler_temp,\n          renderLanes\n        )),\n        (workInProgress.memoizedState = SUSPENDED_MARKER),\n        nextProps\n      );\n    pushPrimaryTreeSuspenseHandler(workInProgress);\n    return mountSuspensePrimaryChildren(workInProgress, nextInstance);\n  }\n  JSCompiler_temp$jscomp$0 = current.memoizedState;\n  if (\n    null !== JSCompiler_temp$jscomp$0 &&\n    ((nextInstance = JSCompiler_temp$jscomp$0.dehydrated),\n    null !== nextInstance)\n  ) {\n    if (didSuspend)\n      workInProgress.flags & 256\n        ? (pushPrimaryTreeSuspenseHandler(workInProgress),\n          (workInProgress.flags &= -257),\n          (workInProgress = retrySuspenseComponentWithoutHydrating(\n            current,\n            workInProgress,\n            renderLanes\n          )))\n        : null !== workInProgress.memoizedState\n          ? (reuseSuspenseHandlerOnStack(workInProgress),\n            (workInProgress.child = current.child),\n            (workInProgress.flags |= 128),\n            (workInProgress = null))\n          : (reuseSuspenseHandlerOnStack(workInProgress),\n            (showFallback = nextProps.fallback),\n            (nextInstance = workInProgress.mode),\n            (nextProps = mountWorkInProgressOffscreenFiber(\n              { mode: \"visible\", children: nextProps.children },\n              nextInstance\n            )),\n            (showFallback = createFiberFromFragment(\n              showFallback,\n              nextInstance,\n              renderLanes,\n              null\n            )),\n            (showFallback.flags |= 2),\n            (nextProps.return = workInProgress),\n            (showFallback.return = workInProgress),\n            (nextProps.sibling = showFallback),\n            (workInProgress.child = nextProps),\n            reconcileChildFibers(\n              workInProgress,\n              current.child,\n              null,\n              renderLanes\n            ),\n            (nextProps = workInProgress.child),\n            (nextProps.memoizedState =\n              mountSuspenseOffscreenState(renderLanes)),\n            (nextProps.childLanes = getRemainingWorkInPrimaryTree(\n              current,\n              JSCompiler_temp,\n              renderLanes\n            )),\n            (workInProgress.memoizedState = SUSPENDED_MARKER),\n            (workInProgress = showFallback));\n    else if (\n      (pushPrimaryTreeSuspenseHandler(workInProgress),\n      isSuspenseInstanceFallback(nextInstance))\n    ) {\n      JSCompiler_temp =\n        nextInstance.nextSibling && nextInstance.nextSibling.dataset;\n      if (JSCompiler_temp) var digest = JSCompiler_temp.dgst;\n      JSCompiler_temp = digest;\n      nextProps = Error(formatProdErrorMessage(419));\n      nextProps.stack = \"\";\n      nextProps.digest = JSCompiler_temp;\n      queueHydrationError({ value: nextProps, source: null, stack: null });\n      workInProgress = retrySuspenseComponentWithoutHydrating(\n        current,\n        workInProgress,\n        renderLanes\n      );\n    } else if (\n      (didReceiveUpdate ||\n        propagateParentContextChanges(current, workInProgress, renderLanes, !1),\n      (JSCompiler_temp = 0 !== (renderLanes & current.childLanes)),\n      didReceiveUpdate || JSCompiler_temp)\n    ) {\n      JSCompiler_temp = workInProgressRoot;\n      if (\n        null !== JSCompiler_temp &&\n        ((nextProps = renderLanes & -renderLanes),\n        (nextProps =\n          0 !== (nextProps & 42)\n            ? 1\n            : getBumpedLaneForHydrationByLane(nextProps)),\n        (nextProps =\n          0 !== (nextProps & (JSCompiler_temp.suspendedLanes | renderLanes))\n            ? 0\n            : nextProps),\n        0 !== nextProps && nextProps !== JSCompiler_temp$jscomp$0.retryLane)\n      )\n        throw (\n          ((JSCompiler_temp$jscomp$0.retryLane = nextProps),\n          enqueueConcurrentRenderForLane(current, nextProps),\n          scheduleUpdateOnFiber(JSCompiler_temp, current, nextProps),\n          SelectiveHydrationException)\n        );\n      \"$?\" === nextInstance.data || renderDidSuspendDelayIfPossible();\n      workInProgress = retrySuspenseComponentWithoutHydrating(\n        current,\n        workInProgress,\n        renderLanes\n      );\n    } else\n      \"$?\" === nextInstance.data\n        ? ((workInProgress.flags |= 192),\n          (workInProgress.child = current.child),\n          (workInProgress = null))\n        : ((current = JSCompiler_temp$jscomp$0.treeContext),\n          (nextHydratableInstance = getNextHydratable(\n            nextInstance.nextSibling\n          )),\n          (hydrationParentFiber = workInProgress),\n          (isHydrating = !0),\n          (hydrationErrors = null),\n          (rootOrSingletonContext = !1),\n          null !== current &&\n            ((idStack[idStackIndex++] = treeContextId),\n            (idStack[idStackIndex++] = treeContextOverflow),\n            (idStack[idStackIndex++] = treeContextProvider),\n            (treeContextId = current.id),\n            (treeContextOverflow = current.overflow),\n            (treeContextProvider = workInProgress)),\n          (workInProgress = mountSuspensePrimaryChildren(\n            workInProgress,\n            nextProps.children\n          )),\n          (workInProgress.flags |= 4096));\n    return workInProgress;\n  }\n  if (showFallback)\n    return (\n      reuseSuspenseHandlerOnStack(workInProgress),\n      (showFallback = nextProps.fallback),\n      (nextInstance = workInProgress.mode),\n      (JSCompiler_temp$jscomp$0 = current.child),\n      (digest = JSCompiler_temp$jscomp$0.sibling),\n      (nextProps = createWorkInProgress(JSCompiler_temp$jscomp$0, {\n        mode: \"hidden\",\n        children: nextProps.children\n      })),\n      (nextProps.subtreeFlags =\n        JSCompiler_temp$jscomp$0.subtreeFlags & 65011712),\n      null !== digest\n        ? (showFallback = createWorkInProgress(digest, showFallback))\n        : ((showFallback = createFiberFromFragment(\n            showFallback,\n            nextInstance,\n            renderLanes,\n            null\n          )),\n          (showFallback.flags |= 2)),\n      (showFallback.return = workInProgress),\n      (nextProps.return = workInProgress),\n      (nextProps.sibling = showFallback),\n      (workInProgress.child = nextProps),\n      (nextProps = showFallback),\n      (showFallback = workInProgress.child),\n      (nextInstance = current.child.memoizedState),\n      null === nextInstance\n        ? (nextInstance = mountSuspenseOffscreenState(renderLanes))\n        : ((JSCompiler_temp$jscomp$0 = nextInstance.cachePool),\n          null !== JSCompiler_temp$jscomp$0\n            ? ((digest = CacheContext._currentValue),\n              (JSCompiler_temp$jscomp$0 =\n                JSCompiler_temp$jscomp$0.parent !== digest\n                  ? { parent: digest, pool: digest }\n                  : JSCompiler_temp$jscomp$0))\n            : (JSCompiler_temp$jscomp$0 = getSuspendedCache()),\n          (nextInstance = {\n            baseLanes: nextInstance.baseLanes | renderLanes,\n            cachePool: JSCompiler_temp$jscomp$0\n          })),\n      (showFallback.memoizedState = nextInstance),\n      (showFallback.childLanes = getRemainingWorkInPrimaryTree(\n        current,\n        JSCompiler_temp,\n        renderLanes\n      )),\n      (workInProgress.memoizedState = SUSPENDED_MARKER),\n      nextProps\n    );\n  pushPrimaryTreeSuspenseHandler(workInProgress);\n  renderLanes = current.child;\n  current = renderLanes.sibling;\n  renderLanes = createWorkInProgress(renderLanes, {\n    mode: \"visible\",\n    children: nextProps.children\n  });\n  renderLanes.return = workInProgress;\n  renderLanes.sibling = null;\n  null !== current &&\n    ((JSCompiler_temp = workInProgress.deletions),\n    null === JSCompiler_temp\n      ? ((workInProgress.deletions = [current]), (workInProgress.flags |= 16))\n      : JSCompiler_temp.push(current));\n  workInProgress.child = renderLanes;\n  workInProgress.memoizedState = null;\n  return renderLanes;\n}\nfunction mountSuspensePrimaryChildren(workInProgress, primaryChildren) {\n  primaryChildren = mountWorkInProgressOffscreenFiber(\n    { mode: \"visible\", children: primaryChildren },\n    workInProgress.mode\n  );\n  primaryChildren.return = workInProgress;\n  return (workInProgress.child = primaryChildren);\n}\nfunction mountWorkInProgressOffscreenFiber(offscreenProps, mode) {\n  offscreenProps = createFiberImplClass(22, offscreenProps, null, mode);\n  offscreenProps.lanes = 0;\n  offscreenProps.stateNode = {\n    _visibility: 1,\n    _pendingMarkers: null,\n    _retryCache: null,\n    _transitions: null\n  };\n  return offscreenProps;\n}\nfunction retrySuspenseComponentWithoutHydrating(\n  current,\n  workInProgress,\n  renderLanes\n) {\n  reconcileChildFibers(workInProgress, current.child, null, renderLanes);\n  current = mountSuspensePrimaryChildren(\n    workInProgress,\n    workInProgress.pendingProps.children\n  );\n  current.flags |= 2;\n  workInProgress.memoizedState = null;\n  return current;\n}\nfunction scheduleSuspenseWorkOnFiber(fiber, renderLanes, propagationRoot) {\n  fiber.lanes |= renderLanes;\n  var alternate = fiber.alternate;\n  null !== alternate && (alternate.lanes |= renderLanes);\n  scheduleContextWorkOnParentPath(fiber.return, renderLanes, propagationRoot);\n}\nfunction initSuspenseListRenderState(\n  workInProgress,\n  isBackwards,\n  tail,\n  lastContentRow,\n  tailMode\n) {\n  var renderState = workInProgress.memoizedState;\n  null === renderState\n    ? (workInProgress.memoizedState = {\n        isBackwards: isBackwards,\n        rendering: null,\n        renderingStartTime: 0,\n        last: lastContentRow,\n        tail: tail,\n        tailMode: tailMode\n      })\n    : ((renderState.isBackwards = isBackwards),\n      (renderState.rendering = null),\n      (renderState.renderingStartTime = 0),\n      (renderState.last = lastContentRow),\n      (renderState.tail = tail),\n      (renderState.tailMode = tailMode));\n}\nfunction updateSuspenseListComponent(current, workInProgress, renderLanes) {\n  var nextProps = workInProgress.pendingProps,\n    revealOrder = nextProps.revealOrder,\n    tailMode = nextProps.tail;\n  reconcileChildren(current, workInProgress, nextProps.children, renderLanes);\n  nextProps = suspenseStackCursor.current;\n  if (0 !== (nextProps & 2))\n    (nextProps = (nextProps & 1) | 2), (workInProgress.flags |= 128);\n  else {\n    if (null !== current && 0 !== (current.flags & 128))\n      a: for (current = workInProgress.child; null !== current; ) {\n        if (13 === current.tag)\n          null !== current.memoizedState &&\n            scheduleSuspenseWorkOnFiber(current, renderLanes, workInProgress);\n        else if (19 === current.tag)\n          scheduleSuspenseWorkOnFiber(current, renderLanes, workInProgress);\n        else if (null !== current.child) {\n          current.child.return = current;\n          current = current.child;\n          continue;\n        }\n        if (current === workInProgress) break a;\n        for (; null === current.sibling; ) {\n          if (null === current.return || current.return === workInProgress)\n            break a;\n          current = current.return;\n        }\n        current.sibling.return = current.return;\n        current = current.sibling;\n      }\n    nextProps &= 1;\n  }\n  push(suspenseStackCursor, nextProps);\n  switch (revealOrder) {\n    case \"forwards\":\n      renderLanes = workInProgress.child;\n      for (revealOrder = null; null !== renderLanes; )\n        (current = renderLanes.alternate),\n          null !== current &&\n            null === findFirstSuspended(current) &&\n            (revealOrder = renderLanes),\n          (renderLanes = renderLanes.sibling);\n      renderLanes = revealOrder;\n      null === renderLanes\n        ? ((revealOrder = workInProgress.child), (workInProgress.child = null))\n        : ((revealOrder = renderLanes.sibling), (renderLanes.sibling = null));\n      initSuspenseListRenderState(\n        workInProgress,\n        !1,\n        revealOrder,\n        renderLanes,\n        tailMode\n      );\n      break;\n    case \"backwards\":\n      renderLanes = null;\n      revealOrder = workInProgress.child;\n      for (workInProgress.child = null; null !== revealOrder; ) {\n        current = revealOrder.alternate;\n        if (null !== current && null === findFirstSuspended(current)) {\n          workInProgress.child = revealOrder;\n          break;\n        }\n        current = revealOrder.sibling;\n        revealOrder.sibling = renderLanes;\n        renderLanes = revealOrder;\n        revealOrder = current;\n      }\n      initSuspenseListRenderState(\n        workInProgress,\n        !0,\n        renderLanes,\n        null,\n        tailMode\n      );\n      break;\n    case \"together\":\n      initSuspenseListRenderState(workInProgress, !1, null, null, void 0);\n      break;\n    default:\n      workInProgress.memoizedState = null;\n  }\n  return workInProgress.child;\n}\nfunction bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes) {\n  null !== current && (workInProgress.dependencies = current.dependencies);\n  workInProgressRootSkippedLanes |= workInProgress.lanes;\n  if (0 === (renderLanes & workInProgress.childLanes))\n    if (null !== current) {\n      if (\n        (propagateParentContextChanges(\n          current,\n          workInProgress,\n          renderLanes,\n          !1\n        ),\n        0 === (renderLanes & workInProgress.childLanes))\n      )\n        return null;\n    } else return null;\n  if (null !== current && workInProgress.child !== current.child)\n    throw Error(formatProdErrorMessage(153));\n  if (null !== workInProgress.child) {\n    current = workInProgress.child;\n    renderLanes = createWorkInProgress(current, current.pendingProps);\n    workInProgress.child = renderLanes;\n    for (renderLanes.return = workInProgress; null !== current.sibling; )\n      (current = current.sibling),\n        (renderLanes = renderLanes.sibling =\n          createWorkInProgress(current, current.pendingProps)),\n        (renderLanes.return = workInProgress);\n    renderLanes.sibling = null;\n  }\n  return workInProgress.child;\n}\nfunction checkScheduledUpdateOrContext(current, renderLanes) {\n  if (0 !== (current.lanes & renderLanes)) return !0;\n  current = current.dependencies;\n  return null !== current && checkIfContextChanged(current) ? !0 : !1;\n}\nfunction attemptEarlyBailoutIfNoScheduledUpdate(\n  current,\n  workInProgress,\n  renderLanes\n) {\n  switch (workInProgress.tag) {\n    case 3:\n      pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);\n      pushProvider(workInProgress, CacheContext, current.memoizedState.cache);\n      resetHydrationState();\n      break;\n    case 27:\n    case 5:\n      pushHostContext(workInProgress);\n      break;\n    case 4:\n      pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);\n      break;\n    case 10:\n      pushProvider(\n        workInProgress,\n        workInProgress.type,\n        workInProgress.memoizedProps.value\n      );\n      break;\n    case 13:\n      var state = workInProgress.memoizedState;\n      if (null !== state) {\n        if (null !== state.dehydrated)\n          return (\n            pushPrimaryTreeSuspenseHandler(workInProgress),\n            (workInProgress.flags |= 128),\n            null\n          );\n        if (0 !== (renderLanes & workInProgress.child.childLanes))\n          return updateSuspenseComponent(current, workInProgress, renderLanes);\n        pushPrimaryTreeSuspenseHandler(workInProgress);\n        current = bailoutOnAlreadyFinishedWork(\n          current,\n          workInProgress,\n          renderLanes\n        );\n        return null !== current ? current.sibling : null;\n      }\n      pushPrimaryTreeSuspenseHandler(workInProgress);\n      break;\n    case 19:\n      var didSuspendBefore = 0 !== (current.flags & 128);\n      state = 0 !== (renderLanes & workInProgress.childLanes);\n      state ||\n        (propagateParentContextChanges(\n          current,\n          workInProgress,\n          renderLanes,\n          !1\n        ),\n        (state = 0 !== (renderLanes & workInProgress.childLanes)));\n      if (didSuspendBefore) {\n        if (state)\n          return updateSuspenseListComponent(\n            current,\n            workInProgress,\n            renderLanes\n          );\n        workInProgress.flags |= 128;\n      }\n      didSuspendBefore = workInProgress.memoizedState;\n      null !== didSuspendBefore &&\n        ((didSuspendBefore.rendering = null),\n        (didSuspendBefore.tail = null),\n        (didSuspendBefore.lastEffect = null));\n      push(suspenseStackCursor, suspenseStackCursor.current);\n      if (state) break;\n      else return null;\n    case 22:\n    case 23:\n      return (\n        (workInProgress.lanes = 0),\n        updateOffscreenComponent(current, workInProgress, renderLanes)\n      );\n    case 24:\n      pushProvider(workInProgress, CacheContext, current.memoizedState.cache);\n  }\n  return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n}\nfunction beginWork(current, workInProgress, renderLanes) {\n  if (null !== current)\n    if (current.memoizedProps !== workInProgress.pendingProps)\n      didReceiveUpdate = !0;\n    else {\n      if (\n        !checkScheduledUpdateOrContext(current, renderLanes) &&\n        0 === (workInProgress.flags & 128)\n      )\n        return (\n          (didReceiveUpdate = !1),\n          attemptEarlyBailoutIfNoScheduledUpdate(\n            current,\n            workInProgress,\n            renderLanes\n          )\n        );\n      didReceiveUpdate = 0 !== (current.flags & 131072) ? !0 : !1;\n    }\n  else\n    (didReceiveUpdate = !1),\n      isHydrating &&\n        0 !== (workInProgress.flags & 1048576) &&\n        pushTreeId(workInProgress, treeForkCount, workInProgress.index);\n  workInProgress.lanes = 0;\n  switch (workInProgress.tag) {\n    case 16:\n      a: {\n        current = workInProgress.pendingProps;\n        var lazyComponent = workInProgress.elementType,\n          init = lazyComponent._init;\n        lazyComponent = init(lazyComponent._payload);\n        workInProgress.type = lazyComponent;\n        if (\"function\" === typeof lazyComponent)\n          shouldConstruct(lazyComponent)\n            ? ((current = resolveClassComponentProps(lazyComponent, current)),\n              (workInProgress.tag = 1),\n              (workInProgress = updateClassComponent(\n                null,\n                workInProgress,\n                lazyComponent,\n                current,\n                renderLanes\n              )))\n            : ((workInProgress.tag = 0),\n              (workInProgress = updateFunctionComponent(\n                null,\n                workInProgress,\n                lazyComponent,\n                current,\n                renderLanes\n              )));\n        else {\n          if (void 0 !== lazyComponent && null !== lazyComponent)\n            if (\n              ((init = lazyComponent.$$typeof), init === REACT_FORWARD_REF_TYPE)\n            ) {\n              workInProgress.tag = 11;\n              workInProgress = updateForwardRef(\n                null,\n                workInProgress,\n                lazyComponent,\n                current,\n                renderLanes\n              );\n              break a;\n            } else if (init === REACT_MEMO_TYPE) {\n              workInProgress.tag = 14;\n              workInProgress = updateMemoComponent(\n                null,\n                workInProgress,\n                lazyComponent,\n                current,\n                renderLanes\n              );\n              break a;\n            }\n          workInProgress =\n            getComponentNameFromType(lazyComponent) || lazyComponent;\n          throw Error(formatProdErrorMessage(306, workInProgress, \"\"));\n        }\n      }\n      return workInProgress;\n    case 0:\n      return updateFunctionComponent(\n        current,\n        workInProgress,\n        workInProgress.type,\n        workInProgress.pendingProps,\n        renderLanes\n      );\n    case 1:\n      return (\n        (lazyComponent = workInProgress.type),\n        (init = resolveClassComponentProps(\n          lazyComponent,\n          workInProgress.pendingProps\n        )),\n        updateClassComponent(\n          current,\n          workInProgress,\n          lazyComponent,\n          init,\n          renderLanes\n        )\n      );\n    case 3:\n      a: {\n        pushHostContainer(\n          workInProgress,\n          workInProgress.stateNode.containerInfo\n        );\n        if (null === current) throw Error(formatProdErrorMessage(387));\n        lazyComponent = workInProgress.pendingProps;\n        var prevState = workInProgress.memoizedState;\n        init = prevState.element;\n        cloneUpdateQueue(current, workInProgress);\n        processUpdateQueue(workInProgress, lazyComponent, null, renderLanes);\n        var nextState = workInProgress.memoizedState;\n        lazyComponent = nextState.cache;\n        pushProvider(workInProgress, CacheContext, lazyComponent);\n        lazyComponent !== prevState.cache &&\n          propagateContextChanges(\n            workInProgress,\n            [CacheContext],\n            renderLanes,\n            !0\n          );\n        suspendIfUpdateReadFromEntangledAsyncAction();\n        lazyComponent = nextState.element;\n        if (prevState.isDehydrated)\n          if (\n            ((prevState = {\n              element: lazyComponent,\n              isDehydrated: !1,\n              cache: nextState.cache\n            }),\n            (workInProgress.updateQueue.baseState = prevState),\n            (workInProgress.memoizedState = prevState),\n            workInProgress.flags & 256)\n          ) {\n            workInProgress = mountHostRootWithoutHydrating(\n              current,\n              workInProgress,\n              lazyComponent,\n              renderLanes\n            );\n            break a;\n          } else if (lazyComponent !== init) {\n            init = createCapturedValueAtFiber(\n              Error(formatProdErrorMessage(424)),\n              workInProgress\n            );\n            queueHydrationError(init);\n            workInProgress = mountHostRootWithoutHydrating(\n              current,\n              workInProgress,\n              lazyComponent,\n              renderLanes\n            );\n            break a;\n          } else {\n            current = workInProgress.stateNode.containerInfo;\n            switch (current.nodeType) {\n              case 9:\n                current = current.body;\n                break;\n              default:\n                current =\n                  \"HTML\" === current.nodeName\n                    ? current.ownerDocument.body\n                    : current;\n            }\n            nextHydratableInstance = getNextHydratable(current.firstChild);\n            hydrationParentFiber = workInProgress;\n            isHydrating = !0;\n            hydrationErrors = null;\n            rootOrSingletonContext = !0;\n            renderLanes = mountChildFibers(\n              workInProgress,\n              null,\n              lazyComponent,\n              renderLanes\n            );\n            for (workInProgress.child = renderLanes; renderLanes; )\n              (renderLanes.flags = (renderLanes.flags & -3) | 4096),\n                (renderLanes = renderLanes.sibling);\n          }\n        else {\n          resetHydrationState();\n          if (lazyComponent === init) {\n            workInProgress = bailoutOnAlreadyFinishedWork(\n              current,\n              workInProgress,\n              renderLanes\n            );\n            break a;\n          }\n          reconcileChildren(\n            current,\n            workInProgress,\n            lazyComponent,\n            renderLanes\n          );\n        }\n        workInProgress = workInProgress.child;\n      }\n      return workInProgress;\n    case 26:\n      return (\n        markRef(current, workInProgress),\n        null === current\n          ? (renderLanes = getResource(\n              workInProgress.type,\n              null,\n              workInProgress.pendingProps,\n              null\n            ))\n            ? (workInProgress.memoizedState = renderLanes)\n            : isHydrating ||\n              ((renderLanes = workInProgress.type),\n              (current = workInProgress.pendingProps),\n              (lazyComponent = getOwnerDocumentFromRootContainer(\n                rootInstanceStackCursor.current\n              ).createElement(renderLanes)),\n              (lazyComponent[internalInstanceKey] = workInProgress),\n              (lazyComponent[internalPropsKey] = current),\n              setInitialProperties(lazyComponent, renderLanes, current),\n              markNodeAsHoistable(lazyComponent),\n              (workInProgress.stateNode = lazyComponent))\n          : (workInProgress.memoizedState = getResource(\n              workInProgress.type,\n              current.memoizedProps,\n              workInProgress.pendingProps,\n              current.memoizedState\n            )),\n        null\n      );\n    case 27:\n      return (\n        pushHostContext(workInProgress),\n        null === current &&\n          isHydrating &&\n          ((lazyComponent = workInProgress.stateNode =\n            resolveSingletonInstance(\n              workInProgress.type,\n              workInProgress.pendingProps,\n              rootInstanceStackCursor.current\n            )),\n          (hydrationParentFiber = workInProgress),\n          (rootOrSingletonContext = !0),\n          (init = nextHydratableInstance),\n          isSingletonScope(workInProgress.type)\n            ? ((previousHydratableOnEnteringScopedSingleton = init),\n              (nextHydratableInstance = getNextHydratable(\n                lazyComponent.firstChild\n              )))\n            : (nextHydratableInstance = init)),\n        reconcileChildren(\n          current,\n          workInProgress,\n          workInProgress.pendingProps.children,\n          renderLanes\n        ),\n        markRef(current, workInProgress),\n        null === current && (workInProgress.flags |= 4194304),\n        workInProgress.child\n      );\n    case 5:\n      if (null === current && isHydrating) {\n        if ((init = lazyComponent = nextHydratableInstance))\n          (lazyComponent = canHydrateInstance(\n            lazyComponent,\n            workInProgress.type,\n            workInProgress.pendingProps,\n            rootOrSingletonContext\n          )),\n            null !== lazyComponent\n              ? ((workInProgress.stateNode = lazyComponent),\n                (hydrationParentFiber = workInProgress),\n                (nextHydratableInstance = getNextHydratable(\n                  lazyComponent.firstChild\n                )),\n                (rootOrSingletonContext = !1),\n                (init = !0))\n              : (init = !1);\n        init || throwOnHydrationMismatch(workInProgress);\n      }\n      pushHostContext(workInProgress);\n      init = workInProgress.type;\n      prevState = workInProgress.pendingProps;\n      nextState = null !== current ? current.memoizedProps : null;\n      lazyComponent = prevState.children;\n      shouldSetTextContent(init, prevState)\n        ? (lazyComponent = null)\n        : null !== nextState &&\n          shouldSetTextContent(init, nextState) &&\n          (workInProgress.flags |= 32);\n      null !== workInProgress.memoizedState &&\n        ((init = renderWithHooks(\n          current,\n          workInProgress,\n          TransitionAwareHostComponent,\n          null,\n          null,\n          renderLanes\n        )),\n        (HostTransitionContext._currentValue = init));\n      markRef(current, workInProgress);\n      reconcileChildren(current, workInProgress, lazyComponent, renderLanes);\n      return workInProgress.child;\n    case 6:\n      if (null === current && isHydrating) {\n        if ((current = renderLanes = nextHydratableInstance))\n          (renderLanes = canHydrateTextInstance(\n            renderLanes,\n            workInProgress.pendingProps,\n            rootOrSingletonContext\n          )),\n            null !== renderLanes\n              ? ((workInProgress.stateNode = renderLanes),\n                (hydrationParentFiber = workInProgress),\n                (nextHydratableInstance = null),\n                (current = !0))\n              : (current = !1);\n        current || throwOnHydrationMismatch(workInProgress);\n      }\n      return null;\n    case 13:\n      return updateSuspenseComponent(current, workInProgress, renderLanes);\n    case 4:\n      return (\n        pushHostContainer(\n          workInProgress,\n          workInProgress.stateNode.containerInfo\n        ),\n        (lazyComponent = workInProgress.pendingProps),\n        null === current\n          ? (workInProgress.child = reconcileChildFibers(\n              workInProgress,\n              null,\n              lazyComponent,\n              renderLanes\n            ))\n          : reconcileChildren(\n              current,\n              workInProgress,\n              lazyComponent,\n              renderLanes\n            ),\n        workInProgress.child\n      );\n    case 11:\n      return updateForwardRef(\n        current,\n        workInProgress,\n        workInProgress.type,\n        workInProgress.pendingProps,\n        renderLanes\n      );\n    case 7:\n      return (\n        reconcileChildren(\n          current,\n          workInProgress,\n          workInProgress.pendingProps,\n          renderLanes\n        ),\n        workInProgress.child\n      );\n    case 8:\n      return (\n        reconcileChildren(\n          current,\n          workInProgress,\n          workInProgress.pendingProps.children,\n          renderLanes\n        ),\n        workInProgress.child\n      );\n    case 12:\n      return (\n        reconcileChildren(\n          current,\n          workInProgress,\n          workInProgress.pendingProps.children,\n          renderLanes\n        ),\n        workInProgress.child\n      );\n    case 10:\n      return (\n        (lazyComponent = workInProgress.pendingProps),\n        pushProvider(workInProgress, workInProgress.type, lazyComponent.value),\n        reconcileChildren(\n          current,\n          workInProgress,\n          lazyComponent.children,\n          renderLanes\n        ),\n        workInProgress.child\n      );\n    case 9:\n      return (\n        (init = workInProgress.type._context),\n        (lazyComponent = workInProgress.pendingProps.children),\n        prepareToReadContext(workInProgress),\n        (init = readContext(init)),\n        (lazyComponent = lazyComponent(init)),\n        (workInProgress.flags |= 1),\n        reconcileChildren(current, workInProgress, lazyComponent, renderLanes),\n        workInProgress.child\n      );\n    case 14:\n      return updateMemoComponent(\n        current,\n        workInProgress,\n        workInProgress.type,\n        workInProgress.pendingProps,\n        renderLanes\n      );\n    case 15:\n      return updateSimpleMemoComponent(\n        current,\n        workInProgress,\n        workInProgress.type,\n        workInProgress.pendingProps,\n        renderLanes\n      );\n    case 19:\n      return updateSuspenseListComponent(current, workInProgress, renderLanes);\n    case 31:\n      return (\n        (lazyComponent = workInProgress.pendingProps),\n        (renderLanes = workInProgress.mode),\n        (lazyComponent = {\n          mode: lazyComponent.mode,\n          children: lazyComponent.children\n        }),\n        null === current\n          ? ((renderLanes = mountWorkInProgressOffscreenFiber(\n              lazyComponent,\n              renderLanes\n            )),\n            (renderLanes.ref = workInProgress.ref),\n            (workInProgress.child = renderLanes),\n            (renderLanes.return = workInProgress),\n            (workInProgress = renderLanes))\n          : ((renderLanes = createWorkInProgress(current.child, lazyComponent)),\n            (renderLanes.ref = workInProgress.ref),\n            (workInProgress.child = renderLanes),\n            (renderLanes.return = workInProgress),\n            (workInProgress = renderLanes)),\n        workInProgress\n      );\n    case 22:\n      return updateOffscreenComponent(current, workInProgress, renderLanes);\n    case 24:\n      return (\n        prepareToReadContext(workInProgress),\n        (lazyComponent = readContext(CacheContext)),\n        null === current\n          ? ((init = peekCacheFromPool()),\n            null === init &&\n              ((init = workInProgressRoot),\n              (prevState = createCache()),\n              (init.pooledCache = prevState),\n              prevState.refCount++,\n              null !== prevState && (init.pooledCacheLanes |= renderLanes),\n              (init = prevState)),\n            (workInProgress.memoizedState = {\n              parent: lazyComponent,\n              cache: init\n            }),\n            initializeUpdateQueue(workInProgress),\n            pushProvider(workInProgress, CacheContext, init))\n          : (0 !== (current.lanes & renderLanes) &&\n              (cloneUpdateQueue(current, workInProgress),\n              processUpdateQueue(workInProgress, null, null, renderLanes),\n              suspendIfUpdateReadFromEntangledAsyncAction()),\n            (init = current.memoizedState),\n            (prevState = workInProgress.memoizedState),\n            init.parent !== lazyComponent\n              ? ((init = { parent: lazyComponent, cache: lazyComponent }),\n                (workInProgress.memoizedState = init),\n                0 === workInProgress.lanes &&\n                  (workInProgress.memoizedState =\n                    workInProgress.updateQueue.baseState =\n                      init),\n                pushProvider(workInProgress, CacheContext, lazyComponent))\n              : ((lazyComponent = prevState.cache),\n                pushProvider(workInProgress, CacheContext, lazyComponent),\n                lazyComponent !== init.cache &&\n                  propagateContextChanges(\n                    workInProgress,\n                    [CacheContext],\n                    renderLanes,\n                    !0\n                  ))),\n        reconcileChildren(\n          current,\n          workInProgress,\n          workInProgress.pendingProps.children,\n          renderLanes\n        ),\n        workInProgress.child\n      );\n    case 29:\n      throw workInProgress.pendingProps;\n  }\n  throw Error(formatProdErrorMessage(156, workInProgress.tag));\n}\nfunction markUpdate(workInProgress) {\n  workInProgress.flags |= 4;\n}\nfunction preloadResourceAndSuspendIfNeeded(workInProgress, resource) {\n  if (\"stylesheet\" !== resource.type || 0 !== (resource.state.loading & 4))\n    workInProgress.flags &= -16777217;\n  else if (((workInProgress.flags |= 16777216), !preloadResource(resource))) {\n    resource = suspenseHandlerStackCursor.current;\n    if (\n      null !== resource &&\n      ((workInProgressRootRenderLanes & 4194048) ===\n      workInProgressRootRenderLanes\n        ? null !== shellBoundary\n        : ((workInProgressRootRenderLanes & 62914560) !==\n            workInProgressRootRenderLanes &&\n            0 === (workInProgressRootRenderLanes & 536870912)) ||\n          resource !== shellBoundary)\n    )\n      throw (\n        ((suspendedThenable = noopSuspenseyCommitThenable),\n        SuspenseyCommitException)\n      );\n    workInProgress.flags |= 8192;\n  }\n}\nfunction scheduleRetryEffect(workInProgress, retryQueue) {\n  null !== retryQueue && (workInProgress.flags |= 4);\n  workInProgress.flags & 16384 &&\n    ((retryQueue =\n      22 !== workInProgress.tag ? claimNextRetryLane() : 536870912),\n    (workInProgress.lanes |= retryQueue),\n    (workInProgressSuspendedRetryLanes |= retryQueue));\n}\nfunction cutOffTailIfNeeded(renderState, hasRenderedATailFallback) {\n  if (!isHydrating)\n    switch (renderState.tailMode) {\n      case \"hidden\":\n        hasRenderedATailFallback = renderState.tail;\n        for (var lastTailNode = null; null !== hasRenderedATailFallback; )\n          null !== hasRenderedATailFallback.alternate &&\n            (lastTailNode = hasRenderedATailFallback),\n            (hasRenderedATailFallback = hasRenderedATailFallback.sibling);\n        null === lastTailNode\n          ? (renderState.tail = null)\n          : (lastTailNode.sibling = null);\n        break;\n      case \"collapsed\":\n        lastTailNode = renderState.tail;\n        for (var lastTailNode$113 = null; null !== lastTailNode; )\n          null !== lastTailNode.alternate && (lastTailNode$113 = lastTailNode),\n            (lastTailNode = lastTailNode.sibling);\n        null === lastTailNode$113\n          ? hasRenderedATailFallback || null === renderState.tail\n            ? (renderState.tail = null)\n            : (renderState.tail.sibling = null)\n          : (lastTailNode$113.sibling = null);\n    }\n}\nfunction bubbleProperties(completedWork) {\n  var didBailout =\n      null !== completedWork.alternate &&\n      completedWork.alternate.child === completedWork.child,\n    newChildLanes = 0,\n    subtreeFlags = 0;\n  if (didBailout)\n    for (var child$114 = completedWork.child; null !== child$114; )\n      (newChildLanes |= child$114.lanes | child$114.childLanes),\n        (subtreeFlags |= child$114.subtreeFlags & 65011712),\n        (subtreeFlags |= child$114.flags & 65011712),\n        (child$114.return = completedWork),\n        (child$114 = child$114.sibling);\n  else\n    for (child$114 = completedWork.child; null !== child$114; )\n      (newChildLanes |= child$114.lanes | child$114.childLanes),\n        (subtreeFlags |= child$114.subtreeFlags),\n        (subtreeFlags |= child$114.flags),\n        (child$114.return = completedWork),\n        (child$114 = child$114.sibling);\n  completedWork.subtreeFlags |= subtreeFlags;\n  completedWork.childLanes = newChildLanes;\n  return didBailout;\n}\nfunction completeWork(current, workInProgress, renderLanes) {\n  var newProps = workInProgress.pendingProps;\n  popTreeContext(workInProgress);\n  switch (workInProgress.tag) {\n    case 31:\n    case 16:\n    case 15:\n    case 0:\n    case 11:\n    case 7:\n    case 8:\n    case 12:\n    case 9:\n    case 14:\n      return bubbleProperties(workInProgress), null;\n    case 1:\n      return bubbleProperties(workInProgress), null;\n    case 3:\n      renderLanes = workInProgress.stateNode;\n      newProps = null;\n      null !== current && (newProps = current.memoizedState.cache);\n      workInProgress.memoizedState.cache !== newProps &&\n        (workInProgress.flags |= 2048);\n      popProvider(CacheContext);\n      popHostContainer();\n      renderLanes.pendingContext &&\n        ((renderLanes.context = renderLanes.pendingContext),\n        (renderLanes.pendingContext = null));\n      if (null === current || null === current.child)\n        popHydrationState(workInProgress)\n          ? markUpdate(workInProgress)\n          : null === current ||\n            (current.memoizedState.isDehydrated &&\n              0 === (workInProgress.flags & 256)) ||\n            ((workInProgress.flags |= 1024),\n            upgradeHydrationErrorsToRecoverable());\n      bubbleProperties(workInProgress);\n      return null;\n    case 26:\n      return (\n        (renderLanes = workInProgress.memoizedState),\n        null === current\n          ? (markUpdate(workInProgress),\n            null !== renderLanes\n              ? (bubbleProperties(workInProgress),\n                preloadResourceAndSuspendIfNeeded(workInProgress, renderLanes))\n              : (bubbleProperties(workInProgress),\n                (workInProgress.flags &= -16777217)))\n          : renderLanes\n            ? renderLanes !== current.memoizedState\n              ? (markUpdate(workInProgress),\n                bubbleProperties(workInProgress),\n                preloadResourceAndSuspendIfNeeded(workInProgress, renderLanes))\n              : (bubbleProperties(workInProgress),\n                (workInProgress.flags &= -16777217))\n            : (current.memoizedProps !== newProps && markUpdate(workInProgress),\n              bubbleProperties(workInProgress),\n              (workInProgress.flags &= -16777217)),\n        null\n      );\n    case 27:\n      popHostContext(workInProgress);\n      renderLanes = rootInstanceStackCursor.current;\n      var type = workInProgress.type;\n      if (null !== current && null != workInProgress.stateNode)\n        current.memoizedProps !== newProps && markUpdate(workInProgress);\n      else {\n        if (!newProps) {\n          if (null === workInProgress.stateNode)\n            throw Error(formatProdErrorMessage(166));\n          bubbleProperties(workInProgress);\n          return null;\n        }\n        current = contextStackCursor.current;\n        popHydrationState(workInProgress)\n          ? prepareToHydrateHostInstance(workInProgress, current)\n          : ((current = resolveSingletonInstance(type, newProps, renderLanes)),\n            (workInProgress.stateNode = current),\n            markUpdate(workInProgress));\n      }\n      bubbleProperties(workInProgress);\n      return null;\n    case 5:\n      popHostContext(workInProgress);\n      renderLanes = workInProgress.type;\n      if (null !== current && null != workInProgress.stateNode)\n        current.memoizedProps !== newProps && markUpdate(workInProgress);\n      else {\n        if (!newProps) {\n          if (null === workInProgress.stateNode)\n            throw Error(formatProdErrorMessage(166));\n          bubbleProperties(workInProgress);\n          return null;\n        }\n        current = contextStackCursor.current;\n        if (popHydrationState(workInProgress))\n          prepareToHydrateHostInstance(workInProgress, current);\n        else {\n          type = getOwnerDocumentFromRootContainer(\n            rootInstanceStackCursor.current\n          );\n          switch (current) {\n            case 1:\n              current = type.createElementNS(\n                \"http://www.w3.org/2000/svg\",\n                renderLanes\n              );\n              break;\n            case 2:\n              current = type.createElementNS(\n                \"http://www.w3.org/1998/Math/MathML\",\n                renderLanes\n              );\n              break;\n            default:\n              switch (renderLanes) {\n                case \"svg\":\n                  current = type.createElementNS(\n                    \"http://www.w3.org/2000/svg\",\n                    renderLanes\n                  );\n                  break;\n                case \"math\":\n                  current = type.createElementNS(\n                    \"http://www.w3.org/1998/Math/MathML\",\n                    renderLanes\n                  );\n                  break;\n                case \"script\":\n                  current = type.createElement(\"div\");\n                  current.innerHTML = \"<script>\\x3c/script>\";\n                  current = current.removeChild(current.firstChild);\n                  break;\n                case \"select\":\n                  current =\n                    \"string\" === typeof newProps.is\n                      ? type.createElement(\"select\", { is: newProps.is })\n                      : type.createElement(\"select\");\n                  newProps.multiple\n                    ? (current.multiple = !0)\n                    : newProps.size && (current.size = newProps.size);\n                  break;\n                default:\n                  current =\n                    \"string\" === typeof newProps.is\n                      ? type.createElement(renderLanes, { is: newProps.is })\n                      : type.createElement(renderLanes);\n              }\n          }\n          current[internalInstanceKey] = workInProgress;\n          current[internalPropsKey] = newProps;\n          a: for (type = workInProgress.child; null !== type; ) {\n            if (5 === type.tag || 6 === type.tag)\n              current.appendChild(type.stateNode);\n            else if (4 !== type.tag && 27 !== type.tag && null !== type.child) {\n              type.child.return = type;\n              type = type.child;\n              continue;\n            }\n            if (type === workInProgress) break a;\n            for (; null === type.sibling; ) {\n              if (null === type.return || type.return === workInProgress)\n                break a;\n              type = type.return;\n            }\n            type.sibling.return = type.return;\n            type = type.sibling;\n          }\n          workInProgress.stateNode = current;\n          a: switch (\n            (setInitialProperties(current, renderLanes, newProps), renderLanes)\n          ) {\n            case \"button\":\n            case \"input\":\n            case \"select\":\n            case \"textarea\":\n              current = !!newProps.autoFocus;\n              break a;\n            case \"img\":\n              current = !0;\n              break a;\n            default:\n              current = !1;\n          }\n          current && markUpdate(workInProgress);\n        }\n      }\n      bubbleProperties(workInProgress);\n      workInProgress.flags &= -16777217;\n      return null;\n    case 6:\n      if (current && null != workInProgress.stateNode)\n        current.memoizedProps !== newProps && markUpdate(workInProgress);\n      else {\n        if (\"string\" !== typeof newProps && null === workInProgress.stateNode)\n          throw Error(formatProdErrorMessage(166));\n        current = rootInstanceStackCursor.current;\n        if (popHydrationState(workInProgress)) {\n          current = workInProgress.stateNode;\n          renderLanes = workInProgress.memoizedProps;\n          newProps = null;\n          type = hydrationParentFiber;\n          if (null !== type)\n            switch (type.tag) {\n              case 27:\n              case 5:\n                newProps = type.memoizedProps;\n            }\n          current[internalInstanceKey] = workInProgress;\n          current =\n            current.nodeValue === renderLanes ||\n            (null !== newProps && !0 === newProps.suppressHydrationWarning) ||\n            checkForUnmatchedText(current.nodeValue, renderLanes)\n              ? !0\n              : !1;\n          current || throwOnHydrationMismatch(workInProgress);\n        } else\n          (current =\n            getOwnerDocumentFromRootContainer(current).createTextNode(\n              newProps\n            )),\n            (current[internalInstanceKey] = workInProgress),\n            (workInProgress.stateNode = current);\n      }\n      bubbleProperties(workInProgress);\n      return null;\n    case 13:\n      newProps = workInProgress.memoizedState;\n      if (\n        null === current ||\n        (null !== current.memoizedState &&\n          null !== current.memoizedState.dehydrated)\n      ) {\n        type = popHydrationState(workInProgress);\n        if (null !== newProps && null !== newProps.dehydrated) {\n          if (null === current) {\n            if (!type) throw Error(formatProdErrorMessage(318));\n            type = workInProgress.memoizedState;\n            type = null !== type ? type.dehydrated : null;\n            if (!type) throw Error(formatProdErrorMessage(317));\n            type[internalInstanceKey] = workInProgress;\n          } else\n            resetHydrationState(),\n              0 === (workInProgress.flags & 128) &&\n                (workInProgress.memoizedState = null),\n              (workInProgress.flags |= 4);\n          bubbleProperties(workInProgress);\n          type = !1;\n        } else\n          (type = upgradeHydrationErrorsToRecoverable()),\n            null !== current &&\n              null !== current.memoizedState &&\n              (current.memoizedState.hydrationErrors = type),\n            (type = !0);\n        if (!type) {\n          if (workInProgress.flags & 256)\n            return popSuspenseHandler(workInProgress), workInProgress;\n          popSuspenseHandler(workInProgress);\n          return null;\n        }\n      }\n      popSuspenseHandler(workInProgress);\n      if (0 !== (workInProgress.flags & 128))\n        return (workInProgress.lanes = renderLanes), workInProgress;\n      renderLanes = null !== newProps;\n      current = null !== current && null !== current.memoizedState;\n      if (renderLanes) {\n        newProps = workInProgress.child;\n        type = null;\n        null !== newProps.alternate &&\n          null !== newProps.alternate.memoizedState &&\n          null !== newProps.alternate.memoizedState.cachePool &&\n          (type = newProps.alternate.memoizedState.cachePool.pool);\n        var cache$127 = null;\n        null !== newProps.memoizedState &&\n          null !== newProps.memoizedState.cachePool &&\n          (cache$127 = newProps.memoizedState.cachePool.pool);\n        cache$127 !== type && (newProps.flags |= 2048);\n      }\n      renderLanes !== current &&\n        renderLanes &&\n        (workInProgress.child.flags |= 8192);\n      scheduleRetryEffect(workInProgress, workInProgress.updateQueue);\n      bubbleProperties(workInProgress);\n      return null;\n    case 4:\n      return (\n        popHostContainer(),\n        null === current &&\n          listenToAllSupportedEvents(workInProgress.stateNode.containerInfo),\n        bubbleProperties(workInProgress),\n        null\n      );\n    case 10:\n      return (\n        popProvider(workInProgress.type), bubbleProperties(workInProgress), null\n      );\n    case 19:\n      pop(suspenseStackCursor);\n      type = workInProgress.memoizedState;\n      if (null === type) return bubbleProperties(workInProgress), null;\n      newProps = 0 !== (workInProgress.flags & 128);\n      cache$127 = type.rendering;\n      if (null === cache$127)\n        if (newProps) cutOffTailIfNeeded(type, !1);\n        else {\n          if (\n            0 !== workInProgressRootExitStatus ||\n            (null !== current && 0 !== (current.flags & 128))\n          )\n            for (current = workInProgress.child; null !== current; ) {\n              cache$127 = findFirstSuspended(current);\n              if (null !== cache$127) {\n                workInProgress.flags |= 128;\n                cutOffTailIfNeeded(type, !1);\n                current = cache$127.updateQueue;\n                workInProgress.updateQueue = current;\n                scheduleRetryEffect(workInProgress, current);\n                workInProgress.subtreeFlags = 0;\n                current = renderLanes;\n                for (renderLanes = workInProgress.child; null !== renderLanes; )\n                  resetWorkInProgress(renderLanes, current),\n                    (renderLanes = renderLanes.sibling);\n                push(\n                  suspenseStackCursor,\n                  (suspenseStackCursor.current & 1) | 2\n                );\n                return workInProgress.child;\n              }\n              current = current.sibling;\n            }\n          null !== type.tail &&\n            now() > workInProgressRootRenderTargetTime &&\n            ((workInProgress.flags |= 128),\n            (newProps = !0),\n            cutOffTailIfNeeded(type, !1),\n            (workInProgress.lanes = 4194304));\n        }\n      else {\n        if (!newProps)\n          if (((current = findFirstSuspended(cache$127)), null !== current)) {\n            if (\n              ((workInProgress.flags |= 128),\n              (newProps = !0),\n              (current = current.updateQueue),\n              (workInProgress.updateQueue = current),\n              scheduleRetryEffect(workInProgress, current),\n              cutOffTailIfNeeded(type, !0),\n              null === type.tail &&\n                \"hidden\" === type.tailMode &&\n                !cache$127.alternate &&\n                !isHydrating)\n            )\n              return bubbleProperties(workInProgress), null;\n          } else\n            2 * now() - type.renderingStartTime >\n              workInProgressRootRenderTargetTime &&\n              536870912 !== renderLanes &&\n              ((workInProgress.flags |= 128),\n              (newProps = !0),\n              cutOffTailIfNeeded(type, !1),\n              (workInProgress.lanes = 4194304));\n        type.isBackwards\n          ? ((cache$127.sibling = workInProgress.child),\n            (workInProgress.child = cache$127))\n          : ((current = type.last),\n            null !== current\n              ? (current.sibling = cache$127)\n              : (workInProgress.child = cache$127),\n            (type.last = cache$127));\n      }\n      if (null !== type.tail)\n        return (\n          (workInProgress = type.tail),\n          (type.rendering = workInProgress),\n          (type.tail = workInProgress.sibling),\n          (type.renderingStartTime = now()),\n          (workInProgress.sibling = null),\n          (current = suspenseStackCursor.current),\n          push(suspenseStackCursor, newProps ? (current & 1) | 2 : current & 1),\n          workInProgress\n        );\n      bubbleProperties(workInProgress);\n      return null;\n    case 22:\n    case 23:\n      return (\n        popSuspenseHandler(workInProgress),\n        popHiddenContext(),\n        (newProps = null !== workInProgress.memoizedState),\n        null !== current\n          ? (null !== current.memoizedState) !== newProps &&\n            (workInProgress.flags |= 8192)\n          : newProps && (workInProgress.flags |= 8192),\n        newProps\n          ? 0 !== (renderLanes & 536870912) &&\n            0 === (workInProgress.flags & 128) &&\n            (bubbleProperties(workInProgress),\n            workInProgress.subtreeFlags & 6 && (workInProgress.flags |= 8192))\n          : bubbleProperties(workInProgress),\n        (renderLanes = workInProgress.updateQueue),\n        null !== renderLanes &&\n          scheduleRetryEffect(workInProgress, renderLanes.retryQueue),\n        (renderLanes = null),\n        null !== current &&\n          null !== current.memoizedState &&\n          null !== current.memoizedState.cachePool &&\n          (renderLanes = current.memoizedState.cachePool.pool),\n        (newProps = null),\n        null !== workInProgress.memoizedState &&\n          null !== workInProgress.memoizedState.cachePool &&\n          (newProps = workInProgress.memoizedState.cachePool.pool),\n        newProps !== renderLanes && (workInProgress.flags |= 2048),\n        null !== current && pop(resumedCache),\n        null\n      );\n    case 24:\n      return (\n        (renderLanes = null),\n        null !== current && (renderLanes = current.memoizedState.cache),\n        workInProgress.memoizedState.cache !== renderLanes &&\n          (workInProgress.flags |= 2048),\n        popProvider(CacheContext),\n        bubbleProperties(workInProgress),\n        null\n      );\n    case 25:\n      return null;\n    case 30:\n      return null;\n  }\n  throw Error(formatProdErrorMessage(156, workInProgress.tag));\n}\nfunction unwindWork(current, workInProgress) {\n  popTreeContext(workInProgress);\n  switch (workInProgress.tag) {\n    case 1:\n      return (\n        (current = workInProgress.flags),\n        current & 65536\n          ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n          : null\n      );\n    case 3:\n      return (\n        popProvider(CacheContext),\n        popHostContainer(),\n        (current = workInProgress.flags),\n        0 !== (current & 65536) && 0 === (current & 128)\n          ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n          : null\n      );\n    case 26:\n    case 27:\n    case 5:\n      return popHostContext(workInProgress), null;\n    case 13:\n      popSuspenseHandler(workInProgress);\n      current = workInProgress.memoizedState;\n      if (null !== current && null !== current.dehydrated) {\n        if (null === workInProgress.alternate)\n          throw Error(formatProdErrorMessage(340));\n        resetHydrationState();\n      }\n      current = workInProgress.flags;\n      return current & 65536\n        ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n        : null;\n    case 19:\n      return pop(suspenseStackCursor), null;\n    case 4:\n      return popHostContainer(), null;\n    case 10:\n      return popProvider(workInProgress.type), null;\n    case 22:\n    case 23:\n      return (\n        popSuspenseHandler(workInProgress),\n        popHiddenContext(),\n        null !== current && pop(resumedCache),\n        (current = workInProgress.flags),\n        current & 65536\n          ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n          : null\n      );\n    case 24:\n      return popProvider(CacheContext), null;\n    case 25:\n      return null;\n    default:\n      return null;\n  }\n}\nfunction unwindInterruptedWork(current, interruptedWork) {\n  popTreeContext(interruptedWork);\n  switch (interruptedWork.tag) {\n    case 3:\n      popProvider(CacheContext);\n      popHostContainer();\n      break;\n    case 26:\n    case 27:\n    case 5:\n      popHostContext(interruptedWork);\n      break;\n    case 4:\n      popHostContainer();\n      break;\n    case 13:\n      popSuspenseHandler(interruptedWork);\n      break;\n    case 19:\n      pop(suspenseStackCursor);\n      break;\n    case 10:\n      popProvider(interruptedWork.type);\n      break;\n    case 22:\n    case 23:\n      popSuspenseHandler(interruptedWork);\n      popHiddenContext();\n      null !== current && pop(resumedCache);\n      break;\n    case 24:\n      popProvider(CacheContext);\n  }\n}\nfunction commitHookEffectListMount(flags, finishedWork) {\n  try {\n    var updateQueue = finishedWork.updateQueue,\n      lastEffect = null !== updateQueue ? updateQueue.lastEffect : null;\n    if (null !== lastEffect) {\n      var firstEffect = lastEffect.next;\n      updateQueue = firstEffect;\n      do {\n        if ((updateQueue.tag & flags) === flags) {\n          lastEffect = void 0;\n          var create = updateQueue.create,\n            inst = updateQueue.inst;\n          lastEffect = create();\n          inst.destroy = lastEffect;\n        }\n        updateQueue = updateQueue.next;\n      } while (updateQueue !== firstEffect);\n    }\n  } catch (error) {\n    captureCommitPhaseError(finishedWork, finishedWork.return, error);\n  }\n}\nfunction commitHookEffectListUnmount(\n  flags,\n  finishedWork,\n  nearestMountedAncestor$jscomp$0\n) {\n  try {\n    var updateQueue = finishedWork.updateQueue,\n      lastEffect = null !== updateQueue ? updateQueue.lastEffect : null;\n    if (null !== lastEffect) {\n      var firstEffect = lastEffect.next;\n      updateQueue = firstEffect;\n      do {\n        if ((updateQueue.tag & flags) === flags) {\n          var inst = updateQueue.inst,\n            destroy = inst.destroy;\n          if (void 0 !== destroy) {\n            inst.destroy = void 0;\n            lastEffect = finishedWork;\n            var nearestMountedAncestor = nearestMountedAncestor$jscomp$0,\n              destroy_ = destroy;\n            try {\n              destroy_();\n            } catch (error) {\n              captureCommitPhaseError(\n                lastEffect,\n                nearestMountedAncestor,\n                error\n              );\n            }\n          }\n        }\n        updateQueue = updateQueue.next;\n      } while (updateQueue !== firstEffect);\n    }\n  } catch (error) {\n    captureCommitPhaseError(finishedWork, finishedWork.return, error);\n  }\n}\nfunction commitClassCallbacks(finishedWork) {\n  var updateQueue = finishedWork.updateQueue;\n  if (null !== updateQueue) {\n    var instance = finishedWork.stateNode;\n    try {\n      commitCallbacks(updateQueue, instance);\n    } catch (error) {\n      captureCommitPhaseError(finishedWork, finishedWork.return, error);\n    }\n  }\n}\nfunction safelyCallComponentWillUnmount(\n  current,\n  nearestMountedAncestor,\n  instance\n) {\n  instance.props = resolveClassComponentProps(\n    current.type,\n    current.memoizedProps\n  );\n  instance.state = current.memoizedState;\n  try {\n    instance.componentWillUnmount();\n  } catch (error) {\n    captureCommitPhaseError(current, nearestMountedAncestor, error);\n  }\n}\nfunction safelyAttachRef(current, nearestMountedAncestor) {\n  try {\n    var ref = current.ref;\n    if (null !== ref) {\n      switch (current.tag) {\n        case 26:\n        case 27:\n        case 5:\n          var instanceToUse = current.stateNode;\n          break;\n        case 30:\n          instanceToUse = current.stateNode;\n          break;\n        default:\n          instanceToUse = current.stateNode;\n      }\n      \"function\" === typeof ref\n        ? (current.refCleanup = ref(instanceToUse))\n        : (ref.current = instanceToUse);\n    }\n  } catch (error) {\n    captureCommitPhaseError(current, nearestMountedAncestor, error);\n  }\n}\nfunction safelyDetachRef(current, nearestMountedAncestor) {\n  var ref = current.ref,\n    refCleanup = current.refCleanup;\n  if (null !== ref)\n    if (\"function\" === typeof refCleanup)\n      try {\n        refCleanup();\n      } catch (error) {\n        captureCommitPhaseError(current, nearestMountedAncestor, error);\n      } finally {\n        (current.refCleanup = null),\n          (current = current.alternate),\n          null != current && (current.refCleanup = null);\n      }\n    else if (\"function\" === typeof ref)\n      try {\n        ref(null);\n      } catch (error$143) {\n        captureCommitPhaseError(current, nearestMountedAncestor, error$143);\n      }\n    else ref.current = null;\n}\nfunction commitHostMount(finishedWork) {\n  var type = finishedWork.type,\n    props = finishedWork.memoizedProps,\n    instance = finishedWork.stateNode;\n  try {\n    a: switch (type) {\n      case \"button\":\n      case \"input\":\n      case \"select\":\n      case \"textarea\":\n        props.autoFocus && instance.focus();\n        break a;\n      case \"img\":\n        props.src\n          ? (instance.src = props.src)\n          : props.srcSet && (instance.srcset = props.srcSet);\n    }\n  } catch (error) {\n    captureCommitPhaseError(finishedWork, finishedWork.return, error);\n  }\n}\nfunction commitHostUpdate(finishedWork, newProps, oldProps) {\n  try {\n    var domElement = finishedWork.stateNode;\n    updateProperties(domElement, finishedWork.type, oldProps, newProps);\n    domElement[internalPropsKey] = newProps;\n  } catch (error) {\n    captureCommitPhaseError(finishedWork, finishedWork.return, error);\n  }\n}\nfunction isHostParent(fiber) {\n  return (\n    5 === fiber.tag ||\n    3 === fiber.tag ||\n    26 === fiber.tag ||\n    (27 === fiber.tag && isSingletonScope(fiber.type)) ||\n    4 === fiber.tag\n  );\n}\nfunction getHostSibling(fiber) {\n  a: for (;;) {\n    for (; null === fiber.sibling; ) {\n      if (null === fiber.return || isHostParent(fiber.return)) return null;\n      fiber = fiber.return;\n    }\n    fiber.sibling.return = fiber.return;\n    for (\n      fiber = fiber.sibling;\n      5 !== fiber.tag && 6 !== fiber.tag && 18 !== fiber.tag;\n\n    ) {\n      if (27 === fiber.tag && isSingletonScope(fiber.type)) continue a;\n      if (fiber.flags & 2) continue a;\n      if (null === fiber.child || 4 === fiber.tag) continue a;\n      else (fiber.child.return = fiber), (fiber = fiber.child);\n    }\n    if (!(fiber.flags & 2)) return fiber.stateNode;\n  }\n}\nfunction insertOrAppendPlacementNodeIntoContainer(node, before, parent) {\n  var tag = node.tag;\n  if (5 === tag || 6 === tag)\n    (node = node.stateNode),\n      before\n        ? (9 === parent.nodeType\n            ? parent.body\n            : \"HTML\" === parent.nodeName\n              ? parent.ownerDocument.body\n              : parent\n          ).insertBefore(node, before)\n        : ((before =\n            9 === parent.nodeType\n              ? parent.body\n              : \"HTML\" === parent.nodeName\n                ? parent.ownerDocument.body\n                : parent),\n          before.appendChild(node),\n          (parent = parent._reactRootContainer),\n          (null !== parent && void 0 !== parent) ||\n            null !== before.onclick ||\n            (before.onclick = noop$1));\n  else if (\n    4 !== tag &&\n    (27 === tag &&\n      isSingletonScope(node.type) &&\n      ((parent = node.stateNode), (before = null)),\n    (node = node.child),\n    null !== node)\n  )\n    for (\n      insertOrAppendPlacementNodeIntoContainer(node, before, parent),\n        node = node.sibling;\n      null !== node;\n\n    )\n      insertOrAppendPlacementNodeIntoContainer(node, before, parent),\n        (node = node.sibling);\n}\nfunction insertOrAppendPlacementNode(node, before, parent) {\n  var tag = node.tag;\n  if (5 === tag || 6 === tag)\n    (node = node.stateNode),\n      before ? parent.insertBefore(node, before) : parent.appendChild(node);\n  else if (\n    4 !== tag &&\n    (27 === tag && isSingletonScope(node.type) && (parent = node.stateNode),\n    (node = node.child),\n    null !== node)\n  )\n    for (\n      insertOrAppendPlacementNode(node, before, parent), node = node.sibling;\n      null !== node;\n\n    )\n      insertOrAppendPlacementNode(node, before, parent), (node = node.sibling);\n}\nfunction commitHostSingletonAcquisition(finishedWork) {\n  var singleton = finishedWork.stateNode,\n    props = finishedWork.memoizedProps;\n  try {\n    for (\n      var type = finishedWork.type, attributes = singleton.attributes;\n      attributes.length;\n\n    )\n      singleton.removeAttributeNode(attributes[0]);\n    setInitialProperties(singleton, type, props);\n    singleton[internalInstanceKey] = finishedWork;\n    singleton[internalPropsKey] = props;\n  } catch (error) {\n    captureCommitPhaseError(finishedWork, finishedWork.return, error);\n  }\n}\nvar offscreenSubtreeIsHidden = !1,\n  offscreenSubtreeWasHidden = !1,\n  needsFormReset = !1,\n  PossiblyWeakSet = \"function\" === typeof WeakSet ? WeakSet : Set,\n  nextEffect = null;\nfunction commitBeforeMutationEffects(root, firstChild) {\n  root = root.containerInfo;\n  eventsEnabled = _enabled;\n  root = getActiveElementDeep(root);\n  if (hasSelectionCapabilities(root)) {\n    if (\"selectionStart\" in root)\n      var JSCompiler_temp = {\n        start: root.selectionStart,\n        end: root.selectionEnd\n      };\n    else\n      a: {\n        JSCompiler_temp =\n          ((JSCompiler_temp = root.ownerDocument) &&\n            JSCompiler_temp.defaultView) ||\n          window;\n        var selection =\n          JSCompiler_temp.getSelection && JSCompiler_temp.getSelection();\n        if (selection && 0 !== selection.rangeCount) {\n          JSCompiler_temp = selection.anchorNode;\n          var anchorOffset = selection.anchorOffset,\n            focusNode = selection.focusNode;\n          selection = selection.focusOffset;\n          try {\n            JSCompiler_temp.nodeType, focusNode.nodeType;\n          } catch (e$20) {\n            JSCompiler_temp = null;\n            break a;\n          }\n          var length = 0,\n            start = -1,\n            end = -1,\n            indexWithinAnchor = 0,\n            indexWithinFocus = 0,\n            node = root,\n            parentNode = null;\n          b: for (;;) {\n            for (var next; ; ) {\n              node !== JSCompiler_temp ||\n                (0 !== anchorOffset && 3 !== node.nodeType) ||\n                (start = length + anchorOffset);\n              node !== focusNode ||\n                (0 !== selection && 3 !== node.nodeType) ||\n                (end = length + selection);\n              3 === node.nodeType && (length += node.nodeValue.length);\n              if (null === (next = node.firstChild)) break;\n              parentNode = node;\n              node = next;\n            }\n            for (;;) {\n              if (node === root) break b;\n              parentNode === JSCompiler_temp &&\n                ++indexWithinAnchor === anchorOffset &&\n                (start = length);\n              parentNode === focusNode &&\n                ++indexWithinFocus === selection &&\n                (end = length);\n              if (null !== (next = node.nextSibling)) break;\n              node = parentNode;\n              parentNode = node.parentNode;\n            }\n            node = next;\n          }\n          JSCompiler_temp =\n            -1 === start || -1 === end ? null : { start: start, end: end };\n        } else JSCompiler_temp = null;\n      }\n    JSCompiler_temp = JSCompiler_temp || { start: 0, end: 0 };\n  } else JSCompiler_temp = null;\n  selectionInformation = { focusedElem: root, selectionRange: JSCompiler_temp };\n  _enabled = !1;\n  for (nextEffect = firstChild; null !== nextEffect; )\n    if (\n      ((firstChild = nextEffect),\n      (root = firstChild.child),\n      0 !== (firstChild.subtreeFlags & 1024) && null !== root)\n    )\n      (root.return = firstChild), (nextEffect = root);\n    else\n      for (; null !== nextEffect; ) {\n        firstChild = nextEffect;\n        focusNode = firstChild.alternate;\n        root = firstChild.flags;\n        switch (firstChild.tag) {\n          case 0:\n            break;\n          case 11:\n          case 15:\n            break;\n          case 1:\n            if (0 !== (root & 1024) && null !== focusNode) {\n              root = void 0;\n              JSCompiler_temp = firstChild;\n              anchorOffset = focusNode.memoizedProps;\n              focusNode = focusNode.memoizedState;\n              selection = JSCompiler_temp.stateNode;\n              try {\n                var resolvedPrevProps = resolveClassComponentProps(\n                  JSCompiler_temp.type,\n                  anchorOffset,\n                  JSCompiler_temp.elementType === JSCompiler_temp.type\n                );\n                root = selection.getSnapshotBeforeUpdate(\n                  resolvedPrevProps,\n                  focusNode\n                );\n                selection.__reactInternalSnapshotBeforeUpdate = root;\n              } catch (error) {\n                captureCommitPhaseError(\n                  JSCompiler_temp,\n                  JSCompiler_temp.return,\n                  error\n                );\n              }\n            }\n            break;\n          case 3:\n            if (0 !== (root & 1024))\n              if (\n                ((root = firstChild.stateNode.containerInfo),\n                (JSCompiler_temp = root.nodeType),\n                9 === JSCompiler_temp)\n              )\n                clearContainerSparingly(root);\n              else if (1 === JSCompiler_temp)\n                switch (root.nodeName) {\n                  case \"HEAD\":\n                  case \"HTML\":\n                  case \"BODY\":\n                    clearContainerSparingly(root);\n                    break;\n                  default:\n                    root.textContent = \"\";\n                }\n            break;\n          case 5:\n          case 26:\n          case 27:\n          case 6:\n          case 4:\n          case 17:\n            break;\n          default:\n            if (0 !== (root & 1024)) throw Error(formatProdErrorMessage(163));\n        }\n        root = firstChild.sibling;\n        if (null !== root) {\n          root.return = firstChild.return;\n          nextEffect = root;\n          break;\n        }\n        nextEffect = firstChild.return;\n      }\n}\nfunction commitLayoutEffectOnFiber(finishedRoot, current, finishedWork) {\n  var flags = finishedWork.flags;\n  switch (finishedWork.tag) {\n    case 0:\n    case 11:\n    case 15:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n      flags & 4 && commitHookEffectListMount(5, finishedWork);\n      break;\n    case 1:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n      if (flags & 4)\n        if (((finishedRoot = finishedWork.stateNode), null === current))\n          try {\n            finishedRoot.componentDidMount();\n          } catch (error) {\n            captureCommitPhaseError(finishedWork, finishedWork.return, error);\n          }\n        else {\n          var prevProps = resolveClassComponentProps(\n            finishedWork.type,\n            current.memoizedProps\n          );\n          current = current.memoizedState;\n          try {\n            finishedRoot.componentDidUpdate(\n              prevProps,\n              current,\n              finishedRoot.__reactInternalSnapshotBeforeUpdate\n            );\n          } catch (error$142) {\n            captureCommitPhaseError(\n              finishedWork,\n              finishedWork.return,\n              error$142\n            );\n          }\n        }\n      flags & 64 && commitClassCallbacks(finishedWork);\n      flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);\n      break;\n    case 3:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n      if (\n        flags & 64 &&\n        ((finishedRoot = finishedWork.updateQueue), null !== finishedRoot)\n      ) {\n        current = null;\n        if (null !== finishedWork.child)\n          switch (finishedWork.child.tag) {\n            case 27:\n            case 5:\n              current = finishedWork.child.stateNode;\n              break;\n            case 1:\n              current = finishedWork.child.stateNode;\n          }\n        try {\n          commitCallbacks(finishedRoot, current);\n        } catch (error) {\n          captureCommitPhaseError(finishedWork, finishedWork.return, error);\n        }\n      }\n      break;\n    case 27:\n      null === current &&\n        flags & 4 &&\n        commitHostSingletonAcquisition(finishedWork);\n    case 26:\n    case 5:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n      null === current && flags & 4 && commitHostMount(finishedWork);\n      flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);\n      break;\n    case 12:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n      break;\n    case 13:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n      flags & 4 && commitSuspenseHydrationCallbacks(finishedRoot, finishedWork);\n      flags & 64 &&\n        ((finishedRoot = finishedWork.memoizedState),\n        null !== finishedRoot &&\n          ((finishedRoot = finishedRoot.dehydrated),\n          null !== finishedRoot &&\n            ((finishedWork = retryDehydratedSuspenseBoundary.bind(\n              null,\n              finishedWork\n            )),\n            registerSuspenseInstanceRetry(finishedRoot, finishedWork))));\n      break;\n    case 22:\n      flags = null !== finishedWork.memoizedState || offscreenSubtreeIsHidden;\n      if (!flags) {\n        current =\n          (null !== current && null !== current.memoizedState) ||\n          offscreenSubtreeWasHidden;\n        prevProps = offscreenSubtreeIsHidden;\n        var prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden;\n        offscreenSubtreeIsHidden = flags;\n        (offscreenSubtreeWasHidden = current) && !prevOffscreenSubtreeWasHidden\n          ? recursivelyTraverseReappearLayoutEffects(\n              finishedRoot,\n              finishedWork,\n              0 !== (finishedWork.subtreeFlags & 8772)\n            )\n          : recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n        offscreenSubtreeIsHidden = prevProps;\n        offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden;\n      }\n      break;\n    case 30:\n      break;\n    default:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n  }\n}\nfunction detachFiberAfterEffects(fiber) {\n  var alternate = fiber.alternate;\n  null !== alternate &&\n    ((fiber.alternate = null), detachFiberAfterEffects(alternate));\n  fiber.child = null;\n  fiber.deletions = null;\n  fiber.sibling = null;\n  5 === fiber.tag &&\n    ((alternate = fiber.stateNode),\n    null !== alternate && detachDeletedInstance(alternate));\n  fiber.stateNode = null;\n  fiber.return = null;\n  fiber.dependencies = null;\n  fiber.memoizedProps = null;\n  fiber.memoizedState = null;\n  fiber.pendingProps = null;\n  fiber.stateNode = null;\n  fiber.updateQueue = null;\n}\nvar hostParent = null,\n  hostParentIsContainer = !1;\nfunction recursivelyTraverseDeletionEffects(\n  finishedRoot,\n  nearestMountedAncestor,\n  parent\n) {\n  for (parent = parent.child; null !== parent; )\n    commitDeletionEffectsOnFiber(finishedRoot, nearestMountedAncestor, parent),\n      (parent = parent.sibling);\n}\nfunction commitDeletionEffectsOnFiber(\n  finishedRoot,\n  nearestMountedAncestor,\n  deletedFiber\n) {\n  if (injectedHook && \"function\" === typeof injectedHook.onCommitFiberUnmount)\n    try {\n      injectedHook.onCommitFiberUnmount(rendererID, deletedFiber);\n    } catch (err) {}\n  switch (deletedFiber.tag) {\n    case 26:\n      offscreenSubtreeWasHidden ||\n        safelyDetachRef(deletedFiber, nearestMountedAncestor);\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      deletedFiber.memoizedState\n        ? deletedFiber.memoizedState.count--\n        : deletedFiber.stateNode &&\n          ((deletedFiber = deletedFiber.stateNode),\n          deletedFiber.parentNode.removeChild(deletedFiber));\n      break;\n    case 27:\n      offscreenSubtreeWasHidden ||\n        safelyDetachRef(deletedFiber, nearestMountedAncestor);\n      var prevHostParent = hostParent,\n        prevHostParentIsContainer = hostParentIsContainer;\n      isSingletonScope(deletedFiber.type) &&\n        ((hostParent = deletedFiber.stateNode), (hostParentIsContainer = !1));\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      releaseSingletonInstance(deletedFiber.stateNode);\n      hostParent = prevHostParent;\n      hostParentIsContainer = prevHostParentIsContainer;\n      break;\n    case 5:\n      offscreenSubtreeWasHidden ||\n        safelyDetachRef(deletedFiber, nearestMountedAncestor);\n    case 6:\n      prevHostParent = hostParent;\n      prevHostParentIsContainer = hostParentIsContainer;\n      hostParent = null;\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      hostParent = prevHostParent;\n      hostParentIsContainer = prevHostParentIsContainer;\n      if (null !== hostParent)\n        if (hostParentIsContainer)\n          try {\n            (9 === hostParent.nodeType\n              ? hostParent.body\n              : \"HTML\" === hostParent.nodeName\n                ? hostParent.ownerDocument.body\n                : hostParent\n            ).removeChild(deletedFiber.stateNode);\n          } catch (error) {\n            captureCommitPhaseError(\n              deletedFiber,\n              nearestMountedAncestor,\n              error\n            );\n          }\n        else\n          try {\n            hostParent.removeChild(deletedFiber.stateNode);\n          } catch (error) {\n            captureCommitPhaseError(\n              deletedFiber,\n              nearestMountedAncestor,\n              error\n            );\n          }\n      break;\n    case 18:\n      null !== hostParent &&\n        (hostParentIsContainer\n          ? ((finishedRoot = hostParent),\n            clearSuspenseBoundary(\n              9 === finishedRoot.nodeType\n                ? finishedRoot.body\n                : \"HTML\" === finishedRoot.nodeName\n                  ? finishedRoot.ownerDocument.body\n                  : finishedRoot,\n              deletedFiber.stateNode\n            ),\n            retryIfBlockedOn(finishedRoot))\n          : clearSuspenseBoundary(hostParent, deletedFiber.stateNode));\n      break;\n    case 4:\n      prevHostParent = hostParent;\n      prevHostParentIsContainer = hostParentIsContainer;\n      hostParent = deletedFiber.stateNode.containerInfo;\n      hostParentIsContainer = !0;\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      hostParent = prevHostParent;\n      hostParentIsContainer = prevHostParentIsContainer;\n      break;\n    case 0:\n    case 11:\n    case 14:\n    case 15:\n      offscreenSubtreeWasHidden ||\n        commitHookEffectListUnmount(2, deletedFiber, nearestMountedAncestor);\n      offscreenSubtreeWasHidden ||\n        commitHookEffectListUnmount(4, deletedFiber, nearestMountedAncestor);\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      break;\n    case 1:\n      offscreenSubtreeWasHidden ||\n        (safelyDetachRef(deletedFiber, nearestMountedAncestor),\n        (prevHostParent = deletedFiber.stateNode),\n        \"function\" === typeof prevHostParent.componentWillUnmount &&\n          safelyCallComponentWillUnmount(\n            deletedFiber,\n            nearestMountedAncestor,\n            prevHostParent\n          ));\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      break;\n    case 21:\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      break;\n    case 22:\n      offscreenSubtreeWasHidden =\n        (prevHostParent = offscreenSubtreeWasHidden) ||\n        null !== deletedFiber.memoizedState;\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      offscreenSubtreeWasHidden = prevHostParent;\n      break;\n    default:\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n  }\n}\nfunction commitSuspenseHydrationCallbacks(finishedRoot, finishedWork) {\n  if (\n    null === finishedWork.memoizedState &&\n    ((finishedRoot = finishedWork.alternate),\n    null !== finishedRoot &&\n      ((finishedRoot = finishedRoot.memoizedState),\n      null !== finishedRoot &&\n        ((finishedRoot = finishedRoot.dehydrated), null !== finishedRoot)))\n  )\n    try {\n      retryIfBlockedOn(finishedRoot);\n    } catch (error) {\n      captureCommitPhaseError(finishedWork, finishedWork.return, error);\n    }\n}\nfunction getRetryCache(finishedWork) {\n  switch (finishedWork.tag) {\n    case 13:\n    case 19:\n      var retryCache = finishedWork.stateNode;\n      null === retryCache &&\n        (retryCache = finishedWork.stateNode = new PossiblyWeakSet());\n      return retryCache;\n    case 22:\n      return (\n        (finishedWork = finishedWork.stateNode),\n        (retryCache = finishedWork._retryCache),\n        null === retryCache &&\n          (retryCache = finishedWork._retryCache = new PossiblyWeakSet()),\n        retryCache\n      );\n    default:\n      throw Error(formatProdErrorMessage(435, finishedWork.tag));\n  }\n}\nfunction attachSuspenseRetryListeners(finishedWork, wakeables) {\n  var retryCache = getRetryCache(finishedWork);\n  wakeables.forEach(function (wakeable) {\n    var retry = resolveRetryWakeable.bind(null, finishedWork, wakeable);\n    retryCache.has(wakeable) ||\n      (retryCache.add(wakeable), wakeable.then(retry, retry));\n  });\n}\nfunction recursivelyTraverseMutationEffects(root$jscomp$0, parentFiber) {\n  var deletions = parentFiber.deletions;\n  if (null !== deletions)\n    for (var i = 0; i < deletions.length; i++) {\n      var childToDelete = deletions[i],\n        root = root$jscomp$0,\n        returnFiber = parentFiber,\n        parent = returnFiber;\n      a: for (; null !== parent; ) {\n        switch (parent.tag) {\n          case 27:\n            if (isSingletonScope(parent.type)) {\n              hostParent = parent.stateNode;\n              hostParentIsContainer = !1;\n              break a;\n            }\n            break;\n          case 5:\n            hostParent = parent.stateNode;\n            hostParentIsContainer = !1;\n            break a;\n          case 3:\n          case 4:\n            hostParent = parent.stateNode.containerInfo;\n            hostParentIsContainer = !0;\n            break a;\n        }\n        parent = parent.return;\n      }\n      if (null === hostParent) throw Error(formatProdErrorMessage(160));\n      commitDeletionEffectsOnFiber(root, returnFiber, childToDelete);\n      hostParent = null;\n      hostParentIsContainer = !1;\n      root = childToDelete.alternate;\n      null !== root && (root.return = null);\n      childToDelete.return = null;\n    }\n  if (parentFiber.subtreeFlags & 13878)\n    for (parentFiber = parentFiber.child; null !== parentFiber; )\n      commitMutationEffectsOnFiber(parentFiber, root$jscomp$0),\n        (parentFiber = parentFiber.sibling);\n}\nvar currentHoistableRoot = null;\nfunction commitMutationEffectsOnFiber(finishedWork, root) {\n  var current = finishedWork.alternate,\n    flags = finishedWork.flags;\n  switch (finishedWork.tag) {\n    case 0:\n    case 11:\n    case 14:\n    case 15:\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      flags & 4 &&\n        (commitHookEffectListUnmount(3, finishedWork, finishedWork.return),\n        commitHookEffectListMount(3, finishedWork),\n        commitHookEffectListUnmount(5, finishedWork, finishedWork.return));\n      break;\n    case 1:\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      flags & 512 &&\n        (offscreenSubtreeWasHidden ||\n          null === current ||\n          safelyDetachRef(current, current.return));\n      flags & 64 &&\n        offscreenSubtreeIsHidden &&\n        ((finishedWork = finishedWork.updateQueue),\n        null !== finishedWork &&\n          ((flags = finishedWork.callbacks),\n          null !== flags &&\n            ((current = finishedWork.shared.hiddenCallbacks),\n            (finishedWork.shared.hiddenCallbacks =\n              null === current ? flags : current.concat(flags)))));\n      break;\n    case 26:\n      var hoistableRoot = currentHoistableRoot;\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      flags & 512 &&\n        (offscreenSubtreeWasHidden ||\n          null === current ||\n          safelyDetachRef(current, current.return));\n      if (flags & 4) {\n        var currentResource = null !== current ? current.memoizedState : null;\n        flags = finishedWork.memoizedState;\n        if (null === current)\n          if (null === flags)\n            if (null === finishedWork.stateNode) {\n              a: {\n                flags = finishedWork.type;\n                current = finishedWork.memoizedProps;\n                hoistableRoot = hoistableRoot.ownerDocument || hoistableRoot;\n                b: switch (flags) {\n                  case \"title\":\n                    currentResource =\n                      hoistableRoot.getElementsByTagName(\"title\")[0];\n                    if (\n                      !currentResource ||\n                      currentResource[internalHoistableMarker] ||\n                      currentResource[internalInstanceKey] ||\n                      \"http://www.w3.org/2000/svg\" ===\n                        currentResource.namespaceURI ||\n                      currentResource.hasAttribute(\"itemprop\")\n                    )\n                      (currentResource = hoistableRoot.createElement(flags)),\n                        hoistableRoot.head.insertBefore(\n                          currentResource,\n                          hoistableRoot.querySelector(\"head > title\")\n                        );\n                    setInitialProperties(currentResource, flags, current);\n                    currentResource[internalInstanceKey] = finishedWork;\n                    markNodeAsHoistable(currentResource);\n                    flags = currentResource;\n                    break a;\n                  case \"link\":\n                    var maybeNodes = getHydratableHoistableCache(\n                      \"link\",\n                      \"href\",\n                      hoistableRoot\n                    ).get(flags + (current.href || \"\"));\n                    if (maybeNodes)\n                      for (var i = 0; i < maybeNodes.length; i++)\n                        if (\n                          ((currentResource = maybeNodes[i]),\n                          currentResource.getAttribute(\"href\") ===\n                            (null == current.href || \"\" === current.href\n                              ? null\n                              : current.href) &&\n                            currentResource.getAttribute(\"rel\") ===\n                              (null == current.rel ? null : current.rel) &&\n                            currentResource.getAttribute(\"title\") ===\n                              (null == current.title ? null : current.title) &&\n                            currentResource.getAttribute(\"crossorigin\") ===\n                              (null == current.crossOrigin\n                                ? null\n                                : current.crossOrigin))\n                        ) {\n                          maybeNodes.splice(i, 1);\n                          break b;\n                        }\n                    currentResource = hoistableRoot.createElement(flags);\n                    setInitialProperties(currentResource, flags, current);\n                    hoistableRoot.head.appendChild(currentResource);\n                    break;\n                  case \"meta\":\n                    if (\n                      (maybeNodes = getHydratableHoistableCache(\n                        \"meta\",\n                        \"content\",\n                        hoistableRoot\n                      ).get(flags + (current.content || \"\")))\n                    )\n                      for (i = 0; i < maybeNodes.length; i++)\n                        if (\n                          ((currentResource = maybeNodes[i]),\n                          currentResource.getAttribute(\"content\") ===\n                            (null == current.content\n                              ? null\n                              : \"\" + current.content) &&\n                            currentResource.getAttribute(\"name\") ===\n                              (null == current.name ? null : current.name) &&\n                            currentResource.getAttribute(\"property\") ===\n                              (null == current.property\n                                ? null\n                                : current.property) &&\n                            currentResource.getAttribute(\"http-equiv\") ===\n                              (null == current.httpEquiv\n                                ? null\n                                : current.httpEquiv) &&\n                            currentResource.getAttribute(\"charset\") ===\n                              (null == current.charSet\n                                ? null\n                                : current.charSet))\n                        ) {\n                          maybeNodes.splice(i, 1);\n                          break b;\n                        }\n                    currentResource = hoistableRoot.createElement(flags);\n                    setInitialProperties(currentResource, flags, current);\n                    hoistableRoot.head.appendChild(currentResource);\n                    break;\n                  default:\n                    throw Error(formatProdErrorMessage(468, flags));\n                }\n                currentResource[internalInstanceKey] = finishedWork;\n                markNodeAsHoistable(currentResource);\n                flags = currentResource;\n              }\n              finishedWork.stateNode = flags;\n            } else\n              mountHoistable(\n                hoistableRoot,\n                finishedWork.type,\n                finishedWork.stateNode\n              );\n          else\n            finishedWork.stateNode = acquireResource(\n              hoistableRoot,\n              flags,\n              finishedWork.memoizedProps\n            );\n        else\n          currentResource !== flags\n            ? (null === currentResource\n                ? null !== current.stateNode &&\n                  ((current = current.stateNode),\n                  current.parentNode.removeChild(current))\n                : currentResource.count--,\n              null === flags\n                ? mountHoistable(\n                    hoistableRoot,\n                    finishedWork.type,\n                    finishedWork.stateNode\n                  )\n                : acquireResource(\n                    hoistableRoot,\n                    flags,\n                    finishedWork.memoizedProps\n                  ))\n            : null === flags &&\n              null !== finishedWork.stateNode &&\n              commitHostUpdate(\n                finishedWork,\n                finishedWork.memoizedProps,\n                current.memoizedProps\n              );\n      }\n      break;\n    case 27:\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      flags & 512 &&\n        (offscreenSubtreeWasHidden ||\n          null === current ||\n          safelyDetachRef(current, current.return));\n      null !== current &&\n        flags & 4 &&\n        commitHostUpdate(\n          finishedWork,\n          finishedWork.memoizedProps,\n          current.memoizedProps\n        );\n      break;\n    case 5:\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      flags & 512 &&\n        (offscreenSubtreeWasHidden ||\n          null === current ||\n          safelyDetachRef(current, current.return));\n      if (finishedWork.flags & 32) {\n        hoistableRoot = finishedWork.stateNode;\n        try {\n          setTextContent(hoistableRoot, \"\");\n        } catch (error) {\n          captureCommitPhaseError(finishedWork, finishedWork.return, error);\n        }\n      }\n      flags & 4 &&\n        null != finishedWork.stateNode &&\n        ((hoistableRoot = finishedWork.memoizedProps),\n        commitHostUpdate(\n          finishedWork,\n          hoistableRoot,\n          null !== current ? current.memoizedProps : hoistableRoot\n        ));\n      flags & 1024 && (needsFormReset = !0);\n      break;\n    case 6:\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      if (flags & 4) {\n        if (null === finishedWork.stateNode)\n          throw Error(formatProdErrorMessage(162));\n        flags = finishedWork.memoizedProps;\n        current = finishedWork.stateNode;\n        try {\n          current.nodeValue = flags;\n        } catch (error) {\n          captureCommitPhaseError(finishedWork, finishedWork.return, error);\n        }\n      }\n      break;\n    case 3:\n      tagCaches = null;\n      hoistableRoot = currentHoistableRoot;\n      currentHoistableRoot = getHoistableRoot(root.containerInfo);\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      currentHoistableRoot = hoistableRoot;\n      commitReconciliationEffects(finishedWork);\n      if (flags & 4 && null !== current && current.memoizedState.isDehydrated)\n        try {\n          retryIfBlockedOn(root.containerInfo);\n        } catch (error) {\n          captureCommitPhaseError(finishedWork, finishedWork.return, error);\n        }\n      needsFormReset &&\n        ((needsFormReset = !1), recursivelyResetForms(finishedWork));\n      break;\n    case 4:\n      flags = currentHoistableRoot;\n      currentHoistableRoot = getHoistableRoot(\n        finishedWork.stateNode.containerInfo\n      );\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      currentHoistableRoot = flags;\n      break;\n    case 12:\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      break;\n    case 13:\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      finishedWork.child.flags & 8192 &&\n        (null !== finishedWork.memoizedState) !==\n          (null !== current && null !== current.memoizedState) &&\n        (globalMostRecentFallbackTime = now());\n      flags & 4 &&\n        ((flags = finishedWork.updateQueue),\n        null !== flags &&\n          ((finishedWork.updateQueue = null),\n          attachSuspenseRetryListeners(finishedWork, flags)));\n      break;\n    case 22:\n      hoistableRoot = null !== finishedWork.memoizedState;\n      var wasHidden = null !== current && null !== current.memoizedState,\n        prevOffscreenSubtreeIsHidden = offscreenSubtreeIsHidden,\n        prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden;\n      offscreenSubtreeIsHidden = prevOffscreenSubtreeIsHidden || hoistableRoot;\n      offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden || wasHidden;\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden;\n      offscreenSubtreeIsHidden = prevOffscreenSubtreeIsHidden;\n      commitReconciliationEffects(finishedWork);\n      if (flags & 8192)\n        a: for (\n          root = finishedWork.stateNode,\n            root._visibility = hoistableRoot\n              ? root._visibility & -2\n              : root._visibility | 1,\n            hoistableRoot &&\n              (null === current ||\n                wasHidden ||\n                offscreenSubtreeIsHidden ||\n                offscreenSubtreeWasHidden ||\n                recursivelyTraverseDisappearLayoutEffects(finishedWork)),\n            current = null,\n            root = finishedWork;\n          ;\n\n        ) {\n          if (5 === root.tag || 26 === root.tag) {\n            if (null === current) {\n              wasHidden = current = root;\n              try {\n                if (((currentResource = wasHidden.stateNode), hoistableRoot))\n                  (maybeNodes = currentResource.style),\n                    \"function\" === typeof maybeNodes.setProperty\n                      ? maybeNodes.setProperty(\"display\", \"none\", \"important\")\n                      : (maybeNodes.display = \"none\");\n                else {\n                  i = wasHidden.stateNode;\n                  var styleProp = wasHidden.memoizedProps.style,\n                    display =\n                      void 0 !== styleProp &&\n                      null !== styleProp &&\n                      styleProp.hasOwnProperty(\"display\")\n                        ? styleProp.display\n                        : null;\n                  i.style.display =\n                    null == display || \"boolean\" === typeof display\n                      ? \"\"\n                      : (\"\" + display).trim();\n                }\n              } catch (error) {\n                captureCommitPhaseError(wasHidden, wasHidden.return, error);\n              }\n            }\n          } else if (6 === root.tag) {\n            if (null === current) {\n              wasHidden = root;\n              try {\n                wasHidden.stateNode.nodeValue = hoistableRoot\n                  ? \"\"\n                  : wasHidden.memoizedProps;\n              } catch (error) {\n                captureCommitPhaseError(wasHidden, wasHidden.return, error);\n              }\n            }\n          } else if (\n            ((22 !== root.tag && 23 !== root.tag) ||\n              null === root.memoizedState ||\n              root === finishedWork) &&\n            null !== root.child\n          ) {\n            root.child.return = root;\n            root = root.child;\n            continue;\n          }\n          if (root === finishedWork) break a;\n          for (; null === root.sibling; ) {\n            if (null === root.return || root.return === finishedWork) break a;\n            current === root && (current = null);\n            root = root.return;\n          }\n          current === root && (current = null);\n          root.sibling.return = root.return;\n          root = root.sibling;\n        }\n      flags & 4 &&\n        ((flags = finishedWork.updateQueue),\n        null !== flags &&\n          ((current = flags.retryQueue),\n          null !== current &&\n            ((flags.retryQueue = null),\n            attachSuspenseRetryListeners(finishedWork, current))));\n      break;\n    case 19:\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      flags & 4 &&\n        ((flags = finishedWork.updateQueue),\n        null !== flags &&\n          ((finishedWork.updateQueue = null),\n          attachSuspenseRetryListeners(finishedWork, flags)));\n      break;\n    case 30:\n      break;\n    case 21:\n      break;\n    default:\n      recursivelyTraverseMutationEffects(root, finishedWork),\n        commitReconciliationEffects(finishedWork);\n  }\n}\nfunction commitReconciliationEffects(finishedWork) {\n  var flags = finishedWork.flags;\n  if (flags & 2) {\n    try {\n      for (\n        var hostParentFiber, parentFiber = finishedWork.return;\n        null !== parentFiber;\n\n      ) {\n        if (isHostParent(parentFiber)) {\n          hostParentFiber = parentFiber;\n          break;\n        }\n        parentFiber = parentFiber.return;\n      }\n      if (null == hostParentFiber) throw Error(formatProdErrorMessage(160));\n      switch (hostParentFiber.tag) {\n        case 27:\n          var parent = hostParentFiber.stateNode,\n            before = getHostSibling(finishedWork);\n          insertOrAppendPlacementNode(finishedWork, before, parent);\n          break;\n        case 5:\n          var parent$144 = hostParentFiber.stateNode;\n          hostParentFiber.flags & 32 &&\n            (setTextContent(parent$144, \"\"), (hostParentFiber.flags &= -33));\n          var before$145 = getHostSibling(finishedWork);\n          insertOrAppendPlacementNode(finishedWork, before$145, parent$144);\n          break;\n        case 3:\n        case 4:\n          var parent$146 = hostParentFiber.stateNode.containerInfo,\n            before$147 = getHostSibling(finishedWork);\n          insertOrAppendPlacementNodeIntoContainer(\n            finishedWork,\n            before$147,\n            parent$146\n          );\n          break;\n        default:\n          throw Error(formatProdErrorMessage(161));\n      }\n    } catch (error) {\n      captureCommitPhaseError(finishedWork, finishedWork.return, error);\n    }\n    finishedWork.flags &= -3;\n  }\n  flags & 4096 && (finishedWork.flags &= -4097);\n}\nfunction recursivelyResetForms(parentFiber) {\n  if (parentFiber.subtreeFlags & 1024)\n    for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n      var fiber = parentFiber;\n      recursivelyResetForms(fiber);\n      5 === fiber.tag && fiber.flags & 1024 && fiber.stateNode.reset();\n      parentFiber = parentFiber.sibling;\n    }\n}\nfunction recursivelyTraverseLayoutEffects(root, parentFiber) {\n  if (parentFiber.subtreeFlags & 8772)\n    for (parentFiber = parentFiber.child; null !== parentFiber; )\n      commitLayoutEffectOnFiber(root, parentFiber.alternate, parentFiber),\n        (parentFiber = parentFiber.sibling);\n}\nfunction recursivelyTraverseDisappearLayoutEffects(parentFiber) {\n  for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n    var finishedWork = parentFiber;\n    switch (finishedWork.tag) {\n      case 0:\n      case 11:\n      case 14:\n      case 15:\n        commitHookEffectListUnmount(4, finishedWork, finishedWork.return);\n        recursivelyTraverseDisappearLayoutEffects(finishedWork);\n        break;\n      case 1:\n        safelyDetachRef(finishedWork, finishedWork.return);\n        var instance = finishedWork.stateNode;\n        \"function\" === typeof instance.componentWillUnmount &&\n          safelyCallComponentWillUnmount(\n            finishedWork,\n            finishedWork.return,\n            instance\n          );\n        recursivelyTraverseDisappearLayoutEffects(finishedWork);\n        break;\n      case 27:\n        releaseSingletonInstance(finishedWork.stateNode);\n      case 26:\n      case 5:\n        safelyDetachRef(finishedWork, finishedWork.return);\n        recursivelyTraverseDisappearLayoutEffects(finishedWork);\n        break;\n      case 22:\n        null === finishedWork.memoizedState &&\n          recursivelyTraverseDisappearLayoutEffects(finishedWork);\n        break;\n      case 30:\n        recursivelyTraverseDisappearLayoutEffects(finishedWork);\n        break;\n      default:\n        recursivelyTraverseDisappearLayoutEffects(finishedWork);\n    }\n    parentFiber = parentFiber.sibling;\n  }\n}\nfunction recursivelyTraverseReappearLayoutEffects(\n  finishedRoot$jscomp$0,\n  parentFiber,\n  includeWorkInProgressEffects\n) {\n  includeWorkInProgressEffects =\n    includeWorkInProgressEffects && 0 !== (parentFiber.subtreeFlags & 8772);\n  for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n    var current = parentFiber.alternate,\n      finishedRoot = finishedRoot$jscomp$0,\n      finishedWork = parentFiber,\n      flags = finishedWork.flags;\n    switch (finishedWork.tag) {\n      case 0:\n      case 11:\n      case 15:\n        recursivelyTraverseReappearLayoutEffects(\n          finishedRoot,\n          finishedWork,\n          includeWorkInProgressEffects\n        );\n        commitHookEffectListMount(4, finishedWork);\n        break;\n      case 1:\n        recursivelyTraverseReappearLayoutEffects(\n          finishedRoot,\n          finishedWork,\n          includeWorkInProgressEffects\n        );\n        current = finishedWork;\n        finishedRoot = current.stateNode;\n        if (\"function\" === typeof finishedRoot.componentDidMount)\n          try {\n            finishedRoot.componentDidMount();\n          } catch (error) {\n            captureCommitPhaseError(current, current.return, error);\n          }\n        current = finishedWork;\n        finishedRoot = current.updateQueue;\n        if (null !== finishedRoot) {\n          var instance = current.stateNode;\n          try {\n            var hiddenCallbacks = finishedRoot.shared.hiddenCallbacks;\n            if (null !== hiddenCallbacks)\n              for (\n                finishedRoot.shared.hiddenCallbacks = null, finishedRoot = 0;\n                finishedRoot < hiddenCallbacks.length;\n                finishedRoot++\n              )\n                callCallback(hiddenCallbacks[finishedRoot], instance);\n          } catch (error) {\n            captureCommitPhaseError(current, current.return, error);\n          }\n        }\n        includeWorkInProgressEffects &&\n          flags & 64 &&\n          commitClassCallbacks(finishedWork);\n        safelyAttachRef(finishedWork, finishedWork.return);\n        break;\n      case 27:\n        commitHostSingletonAcquisition(finishedWork);\n      case 26:\n      case 5:\n        recursivelyTraverseReappearLayoutEffects(\n          finishedRoot,\n          finishedWork,\n          includeWorkInProgressEffects\n        );\n        includeWorkInProgressEffects &&\n          null === current &&\n          flags & 4 &&\n          commitHostMount(finishedWork);\n        safelyAttachRef(finishedWork, finishedWork.return);\n        break;\n      case 12:\n        recursivelyTraverseReappearLayoutEffects(\n          finishedRoot,\n          finishedWork,\n          includeWorkInProgressEffects\n        );\n        break;\n      case 13:\n        recursivelyTraverseReappearLayoutEffects(\n          finishedRoot,\n          finishedWork,\n          includeWorkInProgressEffects\n        );\n        includeWorkInProgressEffects &&\n          flags & 4 &&\n          commitSuspenseHydrationCallbacks(finishedRoot, finishedWork);\n        break;\n      case 22:\n        null === finishedWork.memoizedState &&\n          recursivelyTraverseReappearLayoutEffects(\n            finishedRoot,\n            finishedWork,\n            includeWorkInProgressEffects\n          );\n        safelyAttachRef(finishedWork, finishedWork.return);\n        break;\n      case 30:\n        break;\n      default:\n        recursivelyTraverseReappearLayoutEffects(\n          finishedRoot,\n          finishedWork,\n          includeWorkInProgressEffects\n        );\n    }\n    parentFiber = parentFiber.sibling;\n  }\n}\nfunction commitOffscreenPassiveMountEffects(current, finishedWork) {\n  var previousCache = null;\n  null !== current &&\n    null !== current.memoizedState &&\n    null !== current.memoizedState.cachePool &&\n    (previousCache = current.memoizedState.cachePool.pool);\n  current = null;\n  null !== finishedWork.memoizedState &&\n    null !== finishedWork.memoizedState.cachePool &&\n    (current = finishedWork.memoizedState.cachePool.pool);\n  current !== previousCache &&\n    (null != current && current.refCount++,\n    null != previousCache && releaseCache(previousCache));\n}\nfunction commitCachePassiveMountEffect(current, finishedWork) {\n  current = null;\n  null !== finishedWork.alternate &&\n    (current = finishedWork.alternate.memoizedState.cache);\n  finishedWork = finishedWork.memoizedState.cache;\n  finishedWork !== current &&\n    (finishedWork.refCount++, null != current && releaseCache(current));\n}\nfunction recursivelyTraversePassiveMountEffects(\n  root,\n  parentFiber,\n  committedLanes,\n  committedTransitions\n) {\n  if (parentFiber.subtreeFlags & 10256)\n    for (parentFiber = parentFiber.child; null !== parentFiber; )\n      commitPassiveMountOnFiber(\n        root,\n        parentFiber,\n        committedLanes,\n        committedTransitions\n      ),\n        (parentFiber = parentFiber.sibling);\n}\nfunction commitPassiveMountOnFiber(\n  finishedRoot,\n  finishedWork,\n  committedLanes,\n  committedTransitions\n) {\n  var flags = finishedWork.flags;\n  switch (finishedWork.tag) {\n    case 0:\n    case 11:\n    case 15:\n      recursivelyTraversePassiveMountEffects(\n        finishedRoot,\n        finishedWork,\n        committedLanes,\n        committedTransitions\n      );\n      flags & 2048 && commitHookEffectListMount(9, finishedWork);\n      break;\n    case 1:\n      recursivelyTraversePassiveMountEffects(\n        finishedRoot,\n        finishedWork,\n        committedLanes,\n        committedTransitions\n      );\n      break;\n    case 3:\n      recursivelyTraversePassiveMountEffects(\n        finishedRoot,\n        finishedWork,\n        committedLanes,\n        committedTransitions\n      );\n      flags & 2048 &&\n        ((finishedRoot = null),\n        null !== finishedWork.alternate &&\n          (finishedRoot = finishedWork.alternate.memoizedState.cache),\n        (finishedWork = finishedWork.memoizedState.cache),\n        finishedWork !== finishedRoot &&\n          (finishedWork.refCount++,\n          null != finishedRoot && releaseCache(finishedRoot)));\n      break;\n    case 12:\n      if (flags & 2048) {\n        recursivelyTraversePassiveMountEffects(\n          finishedRoot,\n          finishedWork,\n          committedLanes,\n          committedTransitions\n        );\n        finishedRoot = finishedWork.stateNode;\n        try {\n          var _finishedWork$memoize2 = finishedWork.memoizedProps,\n            id = _finishedWork$memoize2.id,\n            onPostCommit = _finishedWork$memoize2.onPostCommit;\n          \"function\" === typeof onPostCommit &&\n            onPostCommit(\n              id,\n              null === finishedWork.alternate ? \"mount\" : \"update\",\n              finishedRoot.passiveEffectDuration,\n              -0\n            );\n        } catch (error) {\n          captureCommitPhaseError(finishedWork, finishedWork.return, error);\n        }\n      } else\n        recursivelyTraversePassiveMountEffects(\n          finishedRoot,\n          finishedWork,\n          committedLanes,\n          committedTransitions\n        );\n      break;\n    case 13:\n      recursivelyTraversePassiveMountEffects(\n        finishedRoot,\n        finishedWork,\n        committedLanes,\n        committedTransitions\n      );\n      break;\n    case 23:\n      break;\n    case 22:\n      _finishedWork$memoize2 = finishedWork.stateNode;\n      id = finishedWork.alternate;\n      null !== finishedWork.memoizedState\n        ? _finishedWork$memoize2._visibility & 2\n          ? recursivelyTraversePassiveMountEffects(\n              finishedRoot,\n              finishedWork,\n              committedLanes,\n              committedTransitions\n            )\n          : recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork)\n        : _finishedWork$memoize2._visibility & 2\n          ? recursivelyTraversePassiveMountEffects(\n              finishedRoot,\n              finishedWork,\n              committedLanes,\n              committedTransitions\n            )\n          : ((_finishedWork$memoize2._visibility |= 2),\n            recursivelyTraverseReconnectPassiveEffects(\n              finishedRoot,\n              finishedWork,\n              committedLanes,\n              committedTransitions,\n              0 !== (finishedWork.subtreeFlags & 10256)\n            ));\n      flags & 2048 && commitOffscreenPassiveMountEffects(id, finishedWork);\n      break;\n    case 24:\n      recursivelyTraversePassiveMountEffects(\n        finishedRoot,\n        finishedWork,\n        committedLanes,\n        committedTransitions\n      );\n      flags & 2048 &&\n        commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);\n      break;\n    default:\n      recursivelyTraversePassiveMountEffects(\n        finishedRoot,\n        finishedWork,\n        committedLanes,\n        committedTransitions\n      );\n  }\n}\nfunction recursivelyTraverseReconnectPassiveEffects(\n  finishedRoot$jscomp$0,\n  parentFiber,\n  committedLanes$jscomp$0,\n  committedTransitions$jscomp$0,\n  includeWorkInProgressEffects\n) {\n  includeWorkInProgressEffects =\n    includeWorkInProgressEffects && 0 !== (parentFiber.subtreeFlags & 10256);\n  for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n    var finishedRoot = finishedRoot$jscomp$0,\n      finishedWork = parentFiber,\n      committedLanes = committedLanes$jscomp$0,\n      committedTransitions = committedTransitions$jscomp$0,\n      flags = finishedWork.flags;\n    switch (finishedWork.tag) {\n      case 0:\n      case 11:\n      case 15:\n        recursivelyTraverseReconnectPassiveEffects(\n          finishedRoot,\n          finishedWork,\n          committedLanes,\n          committedTransitions,\n          includeWorkInProgressEffects\n        );\n        commitHookEffectListMount(8, finishedWork);\n        break;\n      case 23:\n        break;\n      case 22:\n        var instance = finishedWork.stateNode;\n        null !== finishedWork.memoizedState\n          ? instance._visibility & 2\n            ? recursivelyTraverseReconnectPassiveEffects(\n                finishedRoot,\n                finishedWork,\n                committedLanes,\n                committedTransitions,\n                includeWorkInProgressEffects\n              )\n            : recursivelyTraverseAtomicPassiveEffects(\n                finishedRoot,\n                finishedWork\n              )\n          : ((instance._visibility |= 2),\n            recursivelyTraverseReconnectPassiveEffects(\n              finishedRoot,\n              finishedWork,\n              committedLanes,\n              committedTransitions,\n              includeWorkInProgressEffects\n            ));\n        includeWorkInProgressEffects &&\n          flags & 2048 &&\n          commitOffscreenPassiveMountEffects(\n            finishedWork.alternate,\n            finishedWork\n          );\n        break;\n      case 24:\n        recursivelyTraverseReconnectPassiveEffects(\n          finishedRoot,\n          finishedWork,\n          committedLanes,\n          committedTransitions,\n          includeWorkInProgressEffects\n        );\n        includeWorkInProgressEffects &&\n          flags & 2048 &&\n          commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);\n        break;\n      default:\n        recursivelyTraverseReconnectPassiveEffects(\n          finishedRoot,\n          finishedWork,\n          committedLanes,\n          committedTransitions,\n          includeWorkInProgressEffects\n        );\n    }\n    parentFiber = parentFiber.sibling;\n  }\n}\nfunction recursivelyTraverseAtomicPassiveEffects(\n  finishedRoot$jscomp$0,\n  parentFiber\n) {\n  if (parentFiber.subtreeFlags & 10256)\n    for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n      var finishedRoot = finishedRoot$jscomp$0,\n        finishedWork = parentFiber,\n        flags = finishedWork.flags;\n      switch (finishedWork.tag) {\n        case 22:\n          recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n          flags & 2048 &&\n            commitOffscreenPassiveMountEffects(\n              finishedWork.alternate,\n              finishedWork\n            );\n          break;\n        case 24:\n          recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n          flags & 2048 &&\n            commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);\n          break;\n        default:\n          recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n      }\n      parentFiber = parentFiber.sibling;\n    }\n}\nvar suspenseyCommitFlag = 8192;\nfunction recursivelyAccumulateSuspenseyCommit(parentFiber) {\n  if (parentFiber.subtreeFlags & suspenseyCommitFlag)\n    for (parentFiber = parentFiber.child; null !== parentFiber; )\n      accumulateSuspenseyCommitOnFiber(parentFiber),\n        (parentFiber = parentFiber.sibling);\n}\nfunction accumulateSuspenseyCommitOnFiber(fiber) {\n  switch (fiber.tag) {\n    case 26:\n      recursivelyAccumulateSuspenseyCommit(fiber);\n      fiber.flags & suspenseyCommitFlag &&\n        null !== fiber.memoizedState &&\n        suspendResource(\n          currentHoistableRoot,\n          fiber.memoizedState,\n          fiber.memoizedProps\n        );\n      break;\n    case 5:\n      recursivelyAccumulateSuspenseyCommit(fiber);\n      break;\n    case 3:\n    case 4:\n      var previousHoistableRoot = currentHoistableRoot;\n      currentHoistableRoot = getHoistableRoot(fiber.stateNode.containerInfo);\n      recursivelyAccumulateSuspenseyCommit(fiber);\n      currentHoistableRoot = previousHoistableRoot;\n      break;\n    case 22:\n      null === fiber.memoizedState &&\n        ((previousHoistableRoot = fiber.alternate),\n        null !== previousHoistableRoot &&\n        null !== previousHoistableRoot.memoizedState\n          ? ((previousHoistableRoot = suspenseyCommitFlag),\n            (suspenseyCommitFlag = 16777216),\n            recursivelyAccumulateSuspenseyCommit(fiber),\n            (suspenseyCommitFlag = previousHoistableRoot))\n          : recursivelyAccumulateSuspenseyCommit(fiber));\n      break;\n    default:\n      recursivelyAccumulateSuspenseyCommit(fiber);\n  }\n}\nfunction detachAlternateSiblings(parentFiber) {\n  var previousFiber = parentFiber.alternate;\n  if (\n    null !== previousFiber &&\n    ((parentFiber = previousFiber.child), null !== parentFiber)\n  ) {\n    previousFiber.child = null;\n    do\n      (previousFiber = parentFiber.sibling),\n        (parentFiber.sibling = null),\n        (parentFiber = previousFiber);\n    while (null !== parentFiber);\n  }\n}\nfunction recursivelyTraversePassiveUnmountEffects(parentFiber) {\n  var deletions = parentFiber.deletions;\n  if (0 !== (parentFiber.flags & 16)) {\n    if (null !== deletions)\n      for (var i = 0; i < deletions.length; i++) {\n        var childToDelete = deletions[i];\n        nextEffect = childToDelete;\n        commitPassiveUnmountEffectsInsideOfDeletedTree_begin(\n          childToDelete,\n          parentFiber\n        );\n      }\n    detachAlternateSiblings(parentFiber);\n  }\n  if (parentFiber.subtreeFlags & 10256)\n    for (parentFiber = parentFiber.child; null !== parentFiber; )\n      commitPassiveUnmountOnFiber(parentFiber),\n        (parentFiber = parentFiber.sibling);\n}\nfunction commitPassiveUnmountOnFiber(finishedWork) {\n  switch (finishedWork.tag) {\n    case 0:\n    case 11:\n    case 15:\n      recursivelyTraversePassiveUnmountEffects(finishedWork);\n      finishedWork.flags & 2048 &&\n        commitHookEffectListUnmount(9, finishedWork, finishedWork.return);\n      break;\n    case 3:\n      recursivelyTraversePassiveUnmountEffects(finishedWork);\n      break;\n    case 12:\n      recursivelyTraversePassiveUnmountEffects(finishedWork);\n      break;\n    case 22:\n      var instance = finishedWork.stateNode;\n      null !== finishedWork.memoizedState &&\n      instance._visibility & 2 &&\n      (null === finishedWork.return || 13 !== finishedWork.return.tag)\n        ? ((instance._visibility &= -3),\n          recursivelyTraverseDisconnectPassiveEffects(finishedWork))\n        : recursivelyTraversePassiveUnmountEffects(finishedWork);\n      break;\n    default:\n      recursivelyTraversePassiveUnmountEffects(finishedWork);\n  }\n}\nfunction recursivelyTraverseDisconnectPassiveEffects(parentFiber) {\n  var deletions = parentFiber.deletions;\n  if (0 !== (parentFiber.flags & 16)) {\n    if (null !== deletions)\n      for (var i = 0; i < deletions.length; i++) {\n        var childToDelete = deletions[i];\n        nextEffect = childToDelete;\n        commitPassiveUnmountEffectsInsideOfDeletedTree_begin(\n          childToDelete,\n          parentFiber\n        );\n      }\n    detachAlternateSiblings(parentFiber);\n  }\n  for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n    deletions = parentFiber;\n    switch (deletions.tag) {\n      case 0:\n      case 11:\n      case 15:\n        commitHookEffectListUnmount(8, deletions, deletions.return);\n        recursivelyTraverseDisconnectPassiveEffects(deletions);\n        break;\n      case 22:\n        i = deletions.stateNode;\n        i._visibility & 2 &&\n          ((i._visibility &= -3),\n          recursivelyTraverseDisconnectPassiveEffects(deletions));\n        break;\n      default:\n        recursivelyTraverseDisconnectPassiveEffects(deletions);\n    }\n    parentFiber = parentFiber.sibling;\n  }\n}\nfunction commitPassiveUnmountEffectsInsideOfDeletedTree_begin(\n  deletedSubtreeRoot,\n  nearestMountedAncestor\n) {\n  for (; null !== nextEffect; ) {\n    var fiber = nextEffect;\n    switch (fiber.tag) {\n      case 0:\n      case 11:\n      case 15:\n        commitHookEffectListUnmount(8, fiber, nearestMountedAncestor);\n        break;\n      case 23:\n      case 22:\n        if (\n          null !== fiber.memoizedState &&\n          null !== fiber.memoizedState.cachePool\n        ) {\n          var cache = fiber.memoizedState.cachePool.pool;\n          null != cache && cache.refCount++;\n        }\n        break;\n      case 24:\n        releaseCache(fiber.memoizedState.cache);\n    }\n    cache = fiber.child;\n    if (null !== cache) (cache.return = fiber), (nextEffect = cache);\n    else\n      a: for (fiber = deletedSubtreeRoot; null !== nextEffect; ) {\n        cache = nextEffect;\n        var sibling = cache.sibling,\n          returnFiber = cache.return;\n        detachFiberAfterEffects(cache);\n        if (cache === fiber) {\n          nextEffect = null;\n          break a;\n        }\n        if (null !== sibling) {\n          sibling.return = returnFiber;\n          nextEffect = sibling;\n          break a;\n        }\n        nextEffect = returnFiber;\n      }\n  }\n}\nvar DefaultAsyncDispatcher = {\n    getCacheForType: function (resourceType) {\n      var cache = readContext(CacheContext),\n        cacheForType = cache.data.get(resourceType);\n      void 0 === cacheForType &&\n        ((cacheForType = resourceType()),\n        cache.data.set(resourceType, cacheForType));\n      return cacheForType;\n    }\n  },\n  PossiblyWeakMap = \"function\" === typeof WeakMap ? WeakMap : Map,\n  executionContext = 0,\n  workInProgressRoot = null,\n  workInProgress = null,\n  workInProgressRootRenderLanes = 0,\n  workInProgressSuspendedReason = 0,\n  workInProgressThrownValue = null,\n  workInProgressRootDidSkipSuspendedSiblings = !1,\n  workInProgressRootIsPrerendering = !1,\n  workInProgressRootDidAttachPingListener = !1,\n  entangledRenderLanes = 0,\n  workInProgressRootExitStatus = 0,\n  workInProgressRootSkippedLanes = 0,\n  workInProgressRootInterleavedUpdatedLanes = 0,\n  workInProgressRootPingedLanes = 0,\n  workInProgressDeferredLane = 0,\n  workInProgressSuspendedRetryLanes = 0,\n  workInProgressRootConcurrentErrors = null,\n  workInProgressRootRecoverableErrors = null,\n  workInProgressRootDidIncludeRecursiveRenderUpdate = !1,\n  globalMostRecentFallbackTime = 0,\n  workInProgressRootRenderTargetTime = Infinity,\n  workInProgressTransitions = null,\n  legacyErrorBoundariesThatAlreadyFailed = null,\n  pendingEffectsStatus = 0,\n  pendingEffectsRoot = null,\n  pendingFinishedWork = null,\n  pendingEffectsLanes = 0,\n  pendingEffectsRemainingLanes = 0,\n  pendingPassiveTransitions = null,\n  pendingRecoverableErrors = null,\n  nestedUpdateCount = 0,\n  rootWithNestedUpdates = null;\nfunction requestUpdateLane() {\n  if (0 !== (executionContext & 2) && 0 !== workInProgressRootRenderLanes)\n    return workInProgressRootRenderLanes & -workInProgressRootRenderLanes;\n  if (null !== ReactSharedInternals.T) {\n    var actionScopeLane = currentEntangledLane;\n    return 0 !== actionScopeLane ? actionScopeLane : requestTransitionLane();\n  }\n  return resolveUpdatePriority();\n}\nfunction requestDeferredLane() {\n  0 === workInProgressDeferredLane &&\n    (workInProgressDeferredLane =\n      0 === (workInProgressRootRenderLanes & 536870912) || isHydrating\n        ? claimNextTransitionLane()\n        : 536870912);\n  var suspenseHandler = suspenseHandlerStackCursor.current;\n  null !== suspenseHandler && (suspenseHandler.flags |= 32);\n  return workInProgressDeferredLane;\n}\nfunction scheduleUpdateOnFiber(root, fiber, lane) {\n  if (\n    (root === workInProgressRoot &&\n      (2 === workInProgressSuspendedReason ||\n        9 === workInProgressSuspendedReason)) ||\n    null !== root.cancelPendingCommit\n  )\n    prepareFreshStack(root, 0),\n      markRootSuspended(\n        root,\n        workInProgressRootRenderLanes,\n        workInProgressDeferredLane,\n        !1\n      );\n  markRootUpdated$1(root, lane);\n  if (0 === (executionContext & 2) || root !== workInProgressRoot)\n    root === workInProgressRoot &&\n      (0 === (executionContext & 2) &&\n        (workInProgressRootInterleavedUpdatedLanes |= lane),\n      4 === workInProgressRootExitStatus &&\n        markRootSuspended(\n          root,\n          workInProgressRootRenderLanes,\n          workInProgressDeferredLane,\n          !1\n        )),\n      ensureRootIsScheduled(root);\n}\nfunction performWorkOnRoot(root$jscomp$0, lanes, forceSync) {\n  if (0 !== (executionContext & 6)) throw Error(formatProdErrorMessage(327));\n  var shouldTimeSlice =\n      (!forceSync &&\n        0 === (lanes & 124) &&\n        0 === (lanes & root$jscomp$0.expiredLanes)) ||\n      checkIfRootIsPrerendering(root$jscomp$0, lanes),\n    exitStatus = shouldTimeSlice\n      ? renderRootConcurrent(root$jscomp$0, lanes)\n      : renderRootSync(root$jscomp$0, lanes, !0),\n    renderWasConcurrent = shouldTimeSlice;\n  do {\n    if (0 === exitStatus) {\n      workInProgressRootIsPrerendering &&\n        !shouldTimeSlice &&\n        markRootSuspended(root$jscomp$0, lanes, 0, !1);\n      break;\n    } else {\n      forceSync = root$jscomp$0.current.alternate;\n      if (\n        renderWasConcurrent &&\n        !isRenderConsistentWithExternalStores(forceSync)\n      ) {\n        exitStatus = renderRootSync(root$jscomp$0, lanes, !1);\n        renderWasConcurrent = !1;\n        continue;\n      }\n      if (2 === exitStatus) {\n        renderWasConcurrent = lanes;\n        if (root$jscomp$0.errorRecoveryDisabledLanes & renderWasConcurrent)\n          var JSCompiler_inline_result = 0;\n        else\n          (JSCompiler_inline_result = root$jscomp$0.pendingLanes & -536870913),\n            (JSCompiler_inline_result =\n              0 !== JSCompiler_inline_result\n                ? JSCompiler_inline_result\n                : JSCompiler_inline_result & 536870912\n                  ? 536870912\n                  : 0);\n        if (0 !== JSCompiler_inline_result) {\n          lanes = JSCompiler_inline_result;\n          a: {\n            var root = root$jscomp$0;\n            exitStatus = workInProgressRootConcurrentErrors;\n            var wasRootDehydrated = root.current.memoizedState.isDehydrated;\n            wasRootDehydrated &&\n              (prepareFreshStack(root, JSCompiler_inline_result).flags |= 256);\n            JSCompiler_inline_result = renderRootSync(\n              root,\n              JSCompiler_inline_result,\n              !1\n            );\n            if (2 !== JSCompiler_inline_result) {\n              if (\n                workInProgressRootDidAttachPingListener &&\n                !wasRootDehydrated\n              ) {\n                root.errorRecoveryDisabledLanes |= renderWasConcurrent;\n                workInProgressRootInterleavedUpdatedLanes |=\n                  renderWasConcurrent;\n                exitStatus = 4;\n                break a;\n              }\n              renderWasConcurrent = workInProgressRootRecoverableErrors;\n              workInProgressRootRecoverableErrors = exitStatus;\n              null !== renderWasConcurrent &&\n                (null === workInProgressRootRecoverableErrors\n                  ? (workInProgressRootRecoverableErrors = renderWasConcurrent)\n                  : workInProgressRootRecoverableErrors.push.apply(\n                      workInProgressRootRecoverableErrors,\n                      renderWasConcurrent\n                    ));\n            }\n            exitStatus = JSCompiler_inline_result;\n          }\n          renderWasConcurrent = !1;\n          if (2 !== exitStatus) continue;\n        }\n      }\n      if (1 === exitStatus) {\n        prepareFreshStack(root$jscomp$0, 0);\n        markRootSuspended(root$jscomp$0, lanes, 0, !0);\n        break;\n      }\n      a: {\n        shouldTimeSlice = root$jscomp$0;\n        renderWasConcurrent = exitStatus;\n        switch (renderWasConcurrent) {\n          case 0:\n          case 1:\n            throw Error(formatProdErrorMessage(345));\n          case 4:\n            if ((lanes & 4194048) !== lanes) break;\n          case 6:\n            markRootSuspended(\n              shouldTimeSlice,\n              lanes,\n              workInProgressDeferredLane,\n              !workInProgressRootDidSkipSuspendedSiblings\n            );\n            break a;\n          case 2:\n            workInProgressRootRecoverableErrors = null;\n            break;\n          case 3:\n          case 5:\n            break;\n          default:\n            throw Error(formatProdErrorMessage(329));\n        }\n        if (\n          (lanes & 62914560) === lanes &&\n          ((exitStatus = globalMostRecentFallbackTime + 300 - now()),\n          10 < exitStatus)\n        ) {\n          markRootSuspended(\n            shouldTimeSlice,\n            lanes,\n            workInProgressDeferredLane,\n            !workInProgressRootDidSkipSuspendedSiblings\n          );\n          if (0 !== getNextLanes(shouldTimeSlice, 0, !0)) break a;\n          shouldTimeSlice.timeoutHandle = scheduleTimeout(\n            commitRootWhenReady.bind(\n              null,\n              shouldTimeSlice,\n              forceSync,\n              workInProgressRootRecoverableErrors,\n              workInProgressTransitions,\n              workInProgressRootDidIncludeRecursiveRenderUpdate,\n              lanes,\n              workInProgressDeferredLane,\n              workInProgressRootInterleavedUpdatedLanes,\n              workInProgressSuspendedRetryLanes,\n              workInProgressRootDidSkipSuspendedSiblings,\n              renderWasConcurrent,\n              2,\n              -0,\n              0\n            ),\n            exitStatus\n          );\n          break a;\n        }\n        commitRootWhenReady(\n          shouldTimeSlice,\n          forceSync,\n          workInProgressRootRecoverableErrors,\n          workInProgressTransitions,\n          workInProgressRootDidIncludeRecursiveRenderUpdate,\n          lanes,\n          workInProgressDeferredLane,\n          workInProgressRootInterleavedUpdatedLanes,\n          workInProgressSuspendedRetryLanes,\n          workInProgressRootDidSkipSuspendedSiblings,\n          renderWasConcurrent,\n          0,\n          -0,\n          0\n        );\n      }\n    }\n    break;\n  } while (1);\n  ensureRootIsScheduled(root$jscomp$0);\n}\nfunction commitRootWhenReady(\n  root,\n  finishedWork,\n  recoverableErrors,\n  transitions,\n  didIncludeRenderPhaseUpdate,\n  lanes,\n  spawnedLane,\n  updatedLanes,\n  suspendedRetryLanes,\n  didSkipSuspendedSiblings,\n  exitStatus,\n  suspendedCommitReason,\n  completedRenderStartTime,\n  completedRenderEndTime\n) {\n  root.timeoutHandle = -1;\n  suspendedCommitReason = finishedWork.subtreeFlags;\n  if (\n    suspendedCommitReason & 8192 ||\n    16785408 === (suspendedCommitReason & 16785408)\n  )\n    if (\n      ((suspendedState = { stylesheets: null, count: 0, unsuspend: noop }),\n      accumulateSuspenseyCommitOnFiber(finishedWork),\n      (suspendedCommitReason = waitForCommitToBeReady()),\n      null !== suspendedCommitReason)\n    ) {\n      root.cancelPendingCommit = suspendedCommitReason(\n        commitRoot.bind(\n          null,\n          root,\n          finishedWork,\n          lanes,\n          recoverableErrors,\n          transitions,\n          didIncludeRenderPhaseUpdate,\n          spawnedLane,\n          updatedLanes,\n          suspendedRetryLanes,\n          exitStatus,\n          1,\n          completedRenderStartTime,\n          completedRenderEndTime\n        )\n      );\n      markRootSuspended(root, lanes, spawnedLane, !didSkipSuspendedSiblings);\n      return;\n    }\n  commitRoot(\n    root,\n    finishedWork,\n    lanes,\n    recoverableErrors,\n    transitions,\n    didIncludeRenderPhaseUpdate,\n    spawnedLane,\n    updatedLanes,\n    suspendedRetryLanes\n  );\n}\nfunction isRenderConsistentWithExternalStores(finishedWork) {\n  for (var node = finishedWork; ; ) {\n    var tag = node.tag;\n    if (\n      (0 === tag || 11 === tag || 15 === tag) &&\n      node.flags & 16384 &&\n      ((tag = node.updateQueue),\n      null !== tag && ((tag = tag.stores), null !== tag))\n    )\n      for (var i = 0; i < tag.length; i++) {\n        var check = tag[i],\n          getSnapshot = check.getSnapshot;\n        check = check.value;\n        try {\n          if (!objectIs(getSnapshot(), check)) return !1;\n        } catch (error) {\n          return !1;\n        }\n      }\n    tag = node.child;\n    if (node.subtreeFlags & 16384 && null !== tag)\n      (tag.return = node), (node = tag);\n    else {\n      if (node === finishedWork) break;\n      for (; null === node.sibling; ) {\n        if (null === node.return || node.return === finishedWork) return !0;\n        node = node.return;\n      }\n      node.sibling.return = node.return;\n      node = node.sibling;\n    }\n  }\n  return !0;\n}\nfunction markRootSuspended(\n  root,\n  suspendedLanes,\n  spawnedLane,\n  didAttemptEntireTree\n) {\n  suspendedLanes &= ~workInProgressRootPingedLanes;\n  suspendedLanes &= ~workInProgressRootInterleavedUpdatedLanes;\n  root.suspendedLanes |= suspendedLanes;\n  root.pingedLanes &= ~suspendedLanes;\n  didAttemptEntireTree && (root.warmLanes |= suspendedLanes);\n  didAttemptEntireTree = root.expirationTimes;\n  for (var lanes = suspendedLanes; 0 < lanes; ) {\n    var index$4 = 31 - clz32(lanes),\n      lane = 1 << index$4;\n    didAttemptEntireTree[index$4] = -1;\n    lanes &= ~lane;\n  }\n  0 !== spawnedLane &&\n    markSpawnedDeferredLane(root, spawnedLane, suspendedLanes);\n}\nfunction flushSyncWork$1() {\n  return 0 === (executionContext & 6)\n    ? (flushSyncWorkAcrossRoots_impl(0, !1), !1)\n    : !0;\n}\nfunction resetWorkInProgressStack() {\n  if (null !== workInProgress) {\n    if (0 === workInProgressSuspendedReason)\n      var interruptedWork = workInProgress.return;\n    else\n      (interruptedWork = workInProgress),\n        (lastContextDependency = currentlyRenderingFiber$1 = null),\n        resetHooksOnUnwind(interruptedWork),\n        (thenableState = null),\n        (thenableIndexCounter = 0),\n        (interruptedWork = workInProgress);\n    for (; null !== interruptedWork; )\n      unwindInterruptedWork(interruptedWork.alternate, interruptedWork),\n        (interruptedWork = interruptedWork.return);\n    workInProgress = null;\n  }\n}\nfunction prepareFreshStack(root, lanes) {\n  var timeoutHandle = root.timeoutHandle;\n  -1 !== timeoutHandle &&\n    ((root.timeoutHandle = -1), cancelTimeout(timeoutHandle));\n  timeoutHandle = root.cancelPendingCommit;\n  null !== timeoutHandle &&\n    ((root.cancelPendingCommit = null), timeoutHandle());\n  resetWorkInProgressStack();\n  workInProgressRoot = root;\n  workInProgress = timeoutHandle = createWorkInProgress(root.current, null);\n  workInProgressRootRenderLanes = lanes;\n  workInProgressSuspendedReason = 0;\n  workInProgressThrownValue = null;\n  workInProgressRootDidSkipSuspendedSiblings = !1;\n  workInProgressRootIsPrerendering = checkIfRootIsPrerendering(root, lanes);\n  workInProgressRootDidAttachPingListener = !1;\n  workInProgressSuspendedRetryLanes =\n    workInProgressDeferredLane =\n    workInProgressRootPingedLanes =\n    workInProgressRootInterleavedUpdatedLanes =\n    workInProgressRootSkippedLanes =\n    workInProgressRootExitStatus =\n      0;\n  workInProgressRootRecoverableErrors = workInProgressRootConcurrentErrors =\n    null;\n  workInProgressRootDidIncludeRecursiveRenderUpdate = !1;\n  0 !== (lanes & 8) && (lanes |= lanes & 32);\n  var allEntangledLanes = root.entangledLanes;\n  if (0 !== allEntangledLanes)\n    for (\n      root = root.entanglements, allEntangledLanes &= lanes;\n      0 < allEntangledLanes;\n\n    ) {\n      var index$2 = 31 - clz32(allEntangledLanes),\n        lane = 1 << index$2;\n      lanes |= root[index$2];\n      allEntangledLanes &= ~lane;\n    }\n  entangledRenderLanes = lanes;\n  finishQueueingConcurrentUpdates();\n  return timeoutHandle;\n}\nfunction handleThrow(root, thrownValue) {\n  currentlyRenderingFiber = null;\n  ReactSharedInternals.H = ContextOnlyDispatcher;\n  thrownValue === SuspenseException || thrownValue === SuspenseActionException\n    ? ((thrownValue = getSuspendedThenable()),\n      (workInProgressSuspendedReason = 3))\n    : thrownValue === SuspenseyCommitException\n      ? ((thrownValue = getSuspendedThenable()),\n        (workInProgressSuspendedReason = 4))\n      : (workInProgressSuspendedReason =\n          thrownValue === SelectiveHydrationException\n            ? 8\n            : null !== thrownValue &&\n                \"object\" === typeof thrownValue &&\n                \"function\" === typeof thrownValue.then\n              ? 6\n              : 1);\n  workInProgressThrownValue = thrownValue;\n  null === workInProgress &&\n    ((workInProgressRootExitStatus = 1),\n    logUncaughtError(\n      root,\n      createCapturedValueAtFiber(thrownValue, root.current)\n    ));\n}\nfunction pushDispatcher() {\n  var prevDispatcher = ReactSharedInternals.H;\n  ReactSharedInternals.H = ContextOnlyDispatcher;\n  return null === prevDispatcher ? ContextOnlyDispatcher : prevDispatcher;\n}\nfunction pushAsyncDispatcher() {\n  var prevAsyncDispatcher = ReactSharedInternals.A;\n  ReactSharedInternals.A = DefaultAsyncDispatcher;\n  return prevAsyncDispatcher;\n}\nfunction renderDidSuspendDelayIfPossible() {\n  workInProgressRootExitStatus = 4;\n  workInProgressRootDidSkipSuspendedSiblings ||\n    ((workInProgressRootRenderLanes & 4194048) !==\n      workInProgressRootRenderLanes &&\n      null !== suspenseHandlerStackCursor.current) ||\n    (workInProgressRootIsPrerendering = !0);\n  (0 === (workInProgressRootSkippedLanes & 134217727) &&\n    0 === (workInProgressRootInterleavedUpdatedLanes & 134217727)) ||\n    null === workInProgressRoot ||\n    markRootSuspended(\n      workInProgressRoot,\n      workInProgressRootRenderLanes,\n      workInProgressDeferredLane,\n      !1\n    );\n}\nfunction renderRootSync(root, lanes, shouldYieldForPrerendering) {\n  var prevExecutionContext = executionContext;\n  executionContext |= 2;\n  var prevDispatcher = pushDispatcher(),\n    prevAsyncDispatcher = pushAsyncDispatcher();\n  if (workInProgressRoot !== root || workInProgressRootRenderLanes !== lanes)\n    (workInProgressTransitions = null), prepareFreshStack(root, lanes);\n  lanes = !1;\n  var exitStatus = workInProgressRootExitStatus;\n  a: do\n    try {\n      if (0 !== workInProgressSuspendedReason && null !== workInProgress) {\n        var unitOfWork = workInProgress,\n          thrownValue = workInProgressThrownValue;\n        switch (workInProgressSuspendedReason) {\n          case 8:\n            resetWorkInProgressStack();\n            exitStatus = 6;\n            break a;\n          case 3:\n          case 2:\n          case 9:\n          case 6:\n            null === suspenseHandlerStackCursor.current && (lanes = !0);\n            var reason = workInProgressSuspendedReason;\n            workInProgressSuspendedReason = 0;\n            workInProgressThrownValue = null;\n            throwAndUnwindWorkLoop(root, unitOfWork, thrownValue, reason);\n            if (\n              shouldYieldForPrerendering &&\n              workInProgressRootIsPrerendering\n            ) {\n              exitStatus = 0;\n              break a;\n            }\n            break;\n          default:\n            (reason = workInProgressSuspendedReason),\n              (workInProgressSuspendedReason = 0),\n              (workInProgressThrownValue = null),\n              throwAndUnwindWorkLoop(root, unitOfWork, thrownValue, reason);\n        }\n      }\n      workLoopSync();\n      exitStatus = workInProgressRootExitStatus;\n      break;\n    } catch (thrownValue$167) {\n      handleThrow(root, thrownValue$167);\n    }\n  while (1);\n  lanes && root.shellSuspendCounter++;\n  lastContextDependency = currentlyRenderingFiber$1 = null;\n  executionContext = prevExecutionContext;\n  ReactSharedInternals.H = prevDispatcher;\n  ReactSharedInternals.A = prevAsyncDispatcher;\n  null === workInProgress &&\n    ((workInProgressRoot = null),\n    (workInProgressRootRenderLanes = 0),\n    finishQueueingConcurrentUpdates());\n  return exitStatus;\n}\nfunction workLoopSync() {\n  for (; null !== workInProgress; ) performUnitOfWork(workInProgress);\n}\nfunction renderRootConcurrent(root, lanes) {\n  var prevExecutionContext = executionContext;\n  executionContext |= 2;\n  var prevDispatcher = pushDispatcher(),\n    prevAsyncDispatcher = pushAsyncDispatcher();\n  workInProgressRoot !== root || workInProgressRootRenderLanes !== lanes\n    ? ((workInProgressTransitions = null),\n      (workInProgressRootRenderTargetTime = now() + 500),\n      prepareFreshStack(root, lanes))\n    : (workInProgressRootIsPrerendering = checkIfRootIsPrerendering(\n        root,\n        lanes\n      ));\n  a: do\n    try {\n      if (0 !== workInProgressSuspendedReason && null !== workInProgress) {\n        lanes = workInProgress;\n        var thrownValue = workInProgressThrownValue;\n        b: switch (workInProgressSuspendedReason) {\n          case 1:\n            workInProgressSuspendedReason = 0;\n            workInProgressThrownValue = null;\n            throwAndUnwindWorkLoop(root, lanes, thrownValue, 1);\n            break;\n          case 2:\n          case 9:\n            if (isThenableResolved(thrownValue)) {\n              workInProgressSuspendedReason = 0;\n              workInProgressThrownValue = null;\n              replaySuspendedUnitOfWork(lanes);\n              break;\n            }\n            lanes = function () {\n              (2 !== workInProgressSuspendedReason &&\n                9 !== workInProgressSuspendedReason) ||\n                workInProgressRoot !== root ||\n                (workInProgressSuspendedReason = 7);\n              ensureRootIsScheduled(root);\n            };\n            thrownValue.then(lanes, lanes);\n            break a;\n          case 3:\n            workInProgressSuspendedReason = 7;\n            break a;\n          case 4:\n            workInProgressSuspendedReason = 5;\n            break a;\n          case 7:\n            isThenableResolved(thrownValue)\n              ? ((workInProgressSuspendedReason = 0),\n                (workInProgressThrownValue = null),\n                replaySuspendedUnitOfWork(lanes))\n              : ((workInProgressSuspendedReason = 0),\n                (workInProgressThrownValue = null),\n                throwAndUnwindWorkLoop(root, lanes, thrownValue, 7));\n            break;\n          case 5:\n            var resource = null;\n            switch (workInProgress.tag) {\n              case 26:\n                resource = workInProgress.memoizedState;\n              case 5:\n              case 27:\n                var hostFiber = workInProgress;\n                if (resource ? preloadResource(resource) : 1) {\n                  workInProgressSuspendedReason = 0;\n                  workInProgressThrownValue = null;\n                  var sibling = hostFiber.sibling;\n                  if (null !== sibling) workInProgress = sibling;\n                  else {\n                    var returnFiber = hostFiber.return;\n                    null !== returnFiber\n                      ? ((workInProgress = returnFiber),\n                        completeUnitOfWork(returnFiber))\n                      : (workInProgress = null);\n                  }\n                  break b;\n                }\n            }\n            workInProgressSuspendedReason = 0;\n            workInProgressThrownValue = null;\n            throwAndUnwindWorkLoop(root, lanes, thrownValue, 5);\n            break;\n          case 6:\n            workInProgressSuspendedReason = 0;\n            workInProgressThrownValue = null;\n            throwAndUnwindWorkLoop(root, lanes, thrownValue, 6);\n            break;\n          case 8:\n            resetWorkInProgressStack();\n            workInProgressRootExitStatus = 6;\n            break a;\n          default:\n            throw Error(formatProdErrorMessage(462));\n        }\n      }\n      workLoopConcurrentByScheduler();\n      break;\n    } catch (thrownValue$169) {\n      handleThrow(root, thrownValue$169);\n    }\n  while (1);\n  lastContextDependency = currentlyRenderingFiber$1 = null;\n  ReactSharedInternals.H = prevDispatcher;\n  ReactSharedInternals.A = prevAsyncDispatcher;\n  executionContext = prevExecutionContext;\n  if (null !== workInProgress) return 0;\n  workInProgressRoot = null;\n  workInProgressRootRenderLanes = 0;\n  finishQueueingConcurrentUpdates();\n  return workInProgressRootExitStatus;\n}\nfunction workLoopConcurrentByScheduler() {\n  for (; null !== workInProgress && !shouldYield(); )\n    performUnitOfWork(workInProgress);\n}\nfunction performUnitOfWork(unitOfWork) {\n  var next = beginWork(unitOfWork.alternate, unitOfWork, entangledRenderLanes);\n  unitOfWork.memoizedProps = unitOfWork.pendingProps;\n  null === next ? completeUnitOfWork(unitOfWork) : (workInProgress = next);\n}\nfunction replaySuspendedUnitOfWork(unitOfWork) {\n  var next = unitOfWork;\n  var current = next.alternate;\n  switch (next.tag) {\n    case 15:\n    case 0:\n      next = replayFunctionComponent(\n        current,\n        next,\n        next.pendingProps,\n        next.type,\n        void 0,\n        workInProgressRootRenderLanes\n      );\n      break;\n    case 11:\n      next = replayFunctionComponent(\n        current,\n        next,\n        next.pendingProps,\n        next.type.render,\n        next.ref,\n        workInProgressRootRenderLanes\n      );\n      break;\n    case 5:\n      resetHooksOnUnwind(next);\n    default:\n      unwindInterruptedWork(current, next),\n        (next = workInProgress =\n          resetWorkInProgress(next, entangledRenderLanes)),\n        (next = beginWork(current, next, entangledRenderLanes));\n  }\n  unitOfWork.memoizedProps = unitOfWork.pendingProps;\n  null === next ? completeUnitOfWork(unitOfWork) : (workInProgress = next);\n}\nfunction throwAndUnwindWorkLoop(\n  root,\n  unitOfWork,\n  thrownValue,\n  suspendedReason\n) {\n  lastContextDependency = currentlyRenderingFiber$1 = null;\n  resetHooksOnUnwind(unitOfWork);\n  thenableState = null;\n  thenableIndexCounter = 0;\n  var returnFiber = unitOfWork.return;\n  try {\n    if (\n      throwException(\n        root,\n        returnFiber,\n        unitOfWork,\n        thrownValue,\n        workInProgressRootRenderLanes\n      )\n    ) {\n      workInProgressRootExitStatus = 1;\n      logUncaughtError(\n        root,\n        createCapturedValueAtFiber(thrownValue, root.current)\n      );\n      workInProgress = null;\n      return;\n    }\n  } catch (error) {\n    if (null !== returnFiber) throw ((workInProgress = returnFiber), error);\n    workInProgressRootExitStatus = 1;\n    logUncaughtError(\n      root,\n      createCapturedValueAtFiber(thrownValue, root.current)\n    );\n    workInProgress = null;\n    return;\n  }\n  if (unitOfWork.flags & 32768) {\n    if (isHydrating || 1 === suspendedReason) root = !0;\n    else if (\n      workInProgressRootIsPrerendering ||\n      0 !== (workInProgressRootRenderLanes & 536870912)\n    )\n      root = !1;\n    else if (\n      ((workInProgressRootDidSkipSuspendedSiblings = root = !0),\n      2 === suspendedReason ||\n        9 === suspendedReason ||\n        3 === suspendedReason ||\n        6 === suspendedReason)\n    )\n      (suspendedReason = suspenseHandlerStackCursor.current),\n        null !== suspendedReason &&\n          13 === suspendedReason.tag &&\n          (suspendedReason.flags |= 16384);\n    unwindUnitOfWork(unitOfWork, root);\n  } else completeUnitOfWork(unitOfWork);\n}\nfunction completeUnitOfWork(unitOfWork) {\n  var completedWork = unitOfWork;\n  do {\n    if (0 !== (completedWork.flags & 32768)) {\n      unwindUnitOfWork(\n        completedWork,\n        workInProgressRootDidSkipSuspendedSiblings\n      );\n      return;\n    }\n    unitOfWork = completedWork.return;\n    var next = completeWork(\n      completedWork.alternate,\n      completedWork,\n      entangledRenderLanes\n    );\n    if (null !== next) {\n      workInProgress = next;\n      return;\n    }\n    completedWork = completedWork.sibling;\n    if (null !== completedWork) {\n      workInProgress = completedWork;\n      return;\n    }\n    workInProgress = completedWork = unitOfWork;\n  } while (null !== completedWork);\n  0 === workInProgressRootExitStatus && (workInProgressRootExitStatus = 5);\n}\nfunction unwindUnitOfWork(unitOfWork, skipSiblings) {\n  do {\n    var next = unwindWork(unitOfWork.alternate, unitOfWork);\n    if (null !== next) {\n      next.flags &= 32767;\n      workInProgress = next;\n      return;\n    }\n    next = unitOfWork.return;\n    null !== next &&\n      ((next.flags |= 32768), (next.subtreeFlags = 0), (next.deletions = null));\n    if (\n      !skipSiblings &&\n      ((unitOfWork = unitOfWork.sibling), null !== unitOfWork)\n    ) {\n      workInProgress = unitOfWork;\n      return;\n    }\n    workInProgress = unitOfWork = next;\n  } while (null !== unitOfWork);\n  workInProgressRootExitStatus = 6;\n  workInProgress = null;\n}\nfunction commitRoot(\n  root,\n  finishedWork,\n  lanes,\n  recoverableErrors,\n  transitions,\n  didIncludeRenderPhaseUpdate,\n  spawnedLane,\n  updatedLanes,\n  suspendedRetryLanes\n) {\n  root.cancelPendingCommit = null;\n  do flushPendingEffects();\n  while (0 !== pendingEffectsStatus);\n  if (0 !== (executionContext & 6)) throw Error(formatProdErrorMessage(327));\n  if (null !== finishedWork) {\n    if (finishedWork === root.current) throw Error(formatProdErrorMessage(177));\n    didIncludeRenderPhaseUpdate = finishedWork.lanes | finishedWork.childLanes;\n    didIncludeRenderPhaseUpdate |= concurrentlyUpdatedLanes;\n    markRootFinished(\n      root,\n      lanes,\n      didIncludeRenderPhaseUpdate,\n      spawnedLane,\n      updatedLanes,\n      suspendedRetryLanes\n    );\n    root === workInProgressRoot &&\n      ((workInProgress = workInProgressRoot = null),\n      (workInProgressRootRenderLanes = 0));\n    pendingFinishedWork = finishedWork;\n    pendingEffectsRoot = root;\n    pendingEffectsLanes = lanes;\n    pendingEffectsRemainingLanes = didIncludeRenderPhaseUpdate;\n    pendingPassiveTransitions = transitions;\n    pendingRecoverableErrors = recoverableErrors;\n    0 !== (finishedWork.subtreeFlags & 10256) ||\n    0 !== (finishedWork.flags & 10256)\n      ? ((root.callbackNode = null),\n        (root.callbackPriority = 0),\n        scheduleCallback$1(NormalPriority$1, function () {\n          flushPassiveEffects(!0);\n          return null;\n        }))\n      : ((root.callbackNode = null), (root.callbackPriority = 0));\n    recoverableErrors = 0 !== (finishedWork.flags & 13878);\n    if (0 !== (finishedWork.subtreeFlags & 13878) || recoverableErrors) {\n      recoverableErrors = ReactSharedInternals.T;\n      ReactSharedInternals.T = null;\n      transitions = ReactDOMSharedInternals.p;\n      ReactDOMSharedInternals.p = 2;\n      spawnedLane = executionContext;\n      executionContext |= 4;\n      try {\n        commitBeforeMutationEffects(root, finishedWork, lanes);\n      } finally {\n        (executionContext = spawnedLane),\n          (ReactDOMSharedInternals.p = transitions),\n          (ReactSharedInternals.T = recoverableErrors);\n      }\n    }\n    pendingEffectsStatus = 1;\n    flushMutationEffects();\n    flushLayoutEffects();\n    flushSpawnedWork();\n  }\n}\nfunction flushMutationEffects() {\n  if (1 === pendingEffectsStatus) {\n    pendingEffectsStatus = 0;\n    var root = pendingEffectsRoot,\n      finishedWork = pendingFinishedWork,\n      rootMutationHasEffect = 0 !== (finishedWork.flags & 13878);\n    if (0 !== (finishedWork.subtreeFlags & 13878) || rootMutationHasEffect) {\n      rootMutationHasEffect = ReactSharedInternals.T;\n      ReactSharedInternals.T = null;\n      var previousPriority = ReactDOMSharedInternals.p;\n      ReactDOMSharedInternals.p = 2;\n      var prevExecutionContext = executionContext;\n      executionContext |= 4;\n      try {\n        commitMutationEffectsOnFiber(finishedWork, root);\n        var priorSelectionInformation = selectionInformation,\n          curFocusedElem = getActiveElementDeep(root.containerInfo),\n          priorFocusedElem = priorSelectionInformation.focusedElem,\n          priorSelectionRange = priorSelectionInformation.selectionRange;\n        if (\n          curFocusedElem !== priorFocusedElem &&\n          priorFocusedElem &&\n          priorFocusedElem.ownerDocument &&\n          containsNode(\n            priorFocusedElem.ownerDocument.documentElement,\n            priorFocusedElem\n          )\n        ) {\n          if (\n            null !== priorSelectionRange &&\n            hasSelectionCapabilities(priorFocusedElem)\n          ) {\n            var start = priorSelectionRange.start,\n              end = priorSelectionRange.end;\n            void 0 === end && (end = start);\n            if (\"selectionStart\" in priorFocusedElem)\n              (priorFocusedElem.selectionStart = start),\n                (priorFocusedElem.selectionEnd = Math.min(\n                  end,\n                  priorFocusedElem.value.length\n                ));\n            else {\n              var doc = priorFocusedElem.ownerDocument || document,\n                win = (doc && doc.defaultView) || window;\n              if (win.getSelection) {\n                var selection = win.getSelection(),\n                  length = priorFocusedElem.textContent.length,\n                  start$jscomp$0 = Math.min(priorSelectionRange.start, length),\n                  end$jscomp$0 =\n                    void 0 === priorSelectionRange.end\n                      ? start$jscomp$0\n                      : Math.min(priorSelectionRange.end, length);\n                !selection.extend &&\n                  start$jscomp$0 > end$jscomp$0 &&\n                  ((curFocusedElem = end$jscomp$0),\n                  (end$jscomp$0 = start$jscomp$0),\n                  (start$jscomp$0 = curFocusedElem));\n                var startMarker = getNodeForCharacterOffset(\n                    priorFocusedElem,\n                    start$jscomp$0\n                  ),\n                  endMarker = getNodeForCharacterOffset(\n                    priorFocusedElem,\n                    end$jscomp$0\n                  );\n                if (\n                  startMarker &&\n                  endMarker &&\n                  (1 !== selection.rangeCount ||\n                    selection.anchorNode !== startMarker.node ||\n                    selection.anchorOffset !== startMarker.offset ||\n                    selection.focusNode !== endMarker.node ||\n                    selection.focusOffset !== endMarker.offset)\n                ) {\n                  var range = doc.createRange();\n                  range.setStart(startMarker.node, startMarker.offset);\n                  selection.removeAllRanges();\n                  start$jscomp$0 > end$jscomp$0\n                    ? (selection.addRange(range),\n                      selection.extend(endMarker.node, endMarker.offset))\n                    : (range.setEnd(endMarker.node, endMarker.offset),\n                      selection.addRange(range));\n                }\n              }\n            }\n          }\n          doc = [];\n          for (\n            selection = priorFocusedElem;\n            (selection = selection.parentNode);\n\n          )\n            1 === selection.nodeType &&\n              doc.push({\n                element: selection,\n                left: selection.scrollLeft,\n                top: selection.scrollTop\n              });\n          \"function\" === typeof priorFocusedElem.focus &&\n            priorFocusedElem.focus();\n          for (\n            priorFocusedElem = 0;\n            priorFocusedElem < doc.length;\n            priorFocusedElem++\n          ) {\n            var info = doc[priorFocusedElem];\n            info.element.scrollLeft = info.left;\n            info.element.scrollTop = info.top;\n          }\n        }\n        _enabled = !!eventsEnabled;\n        selectionInformation = eventsEnabled = null;\n      } finally {\n        (executionContext = prevExecutionContext),\n          (ReactDOMSharedInternals.p = previousPriority),\n          (ReactSharedInternals.T = rootMutationHasEffect);\n      }\n    }\n    root.current = finishedWork;\n    pendingEffectsStatus = 2;\n  }\n}\nfunction flushLayoutEffects() {\n  if (2 === pendingEffectsStatus) {\n    pendingEffectsStatus = 0;\n    var root = pendingEffectsRoot,\n      finishedWork = pendingFinishedWork,\n      rootHasLayoutEffect = 0 !== (finishedWork.flags & 8772);\n    if (0 !== (finishedWork.subtreeFlags & 8772) || rootHasLayoutEffect) {\n      rootHasLayoutEffect = ReactSharedInternals.T;\n      ReactSharedInternals.T = null;\n      var previousPriority = ReactDOMSharedInternals.p;\n      ReactDOMSharedInternals.p = 2;\n      var prevExecutionContext = executionContext;\n      executionContext |= 4;\n      try {\n        commitLayoutEffectOnFiber(root, finishedWork.alternate, finishedWork);\n      } finally {\n        (executionContext = prevExecutionContext),\n          (ReactDOMSharedInternals.p = previousPriority),\n          (ReactSharedInternals.T = rootHasLayoutEffect);\n      }\n    }\n    pendingEffectsStatus = 3;\n  }\n}\nfunction flushSpawnedWork() {\n  if (4 === pendingEffectsStatus || 3 === pendingEffectsStatus) {\n    pendingEffectsStatus = 0;\n    requestPaint();\n    var root = pendingEffectsRoot,\n      finishedWork = pendingFinishedWork,\n      lanes = pendingEffectsLanes,\n      recoverableErrors = pendingRecoverableErrors;\n    0 !== (finishedWork.subtreeFlags & 10256) ||\n    0 !== (finishedWork.flags & 10256)\n      ? (pendingEffectsStatus = 5)\n      : ((pendingEffectsStatus = 0),\n        (pendingFinishedWork = pendingEffectsRoot = null),\n        releaseRootPooledCache(root, root.pendingLanes));\n    var remainingLanes = root.pendingLanes;\n    0 === remainingLanes && (legacyErrorBoundariesThatAlreadyFailed = null);\n    lanesToEventPriority(lanes);\n    finishedWork = finishedWork.stateNode;\n    if (injectedHook && \"function\" === typeof injectedHook.onCommitFiberRoot)\n      try {\n        injectedHook.onCommitFiberRoot(\n          rendererID,\n          finishedWork,\n          void 0,\n          128 === (finishedWork.current.flags & 128)\n        );\n      } catch (err) {}\n    if (null !== recoverableErrors) {\n      finishedWork = ReactSharedInternals.T;\n      remainingLanes = ReactDOMSharedInternals.p;\n      ReactDOMSharedInternals.p = 2;\n      ReactSharedInternals.T = null;\n      try {\n        for (\n          var onRecoverableError = root.onRecoverableError, i = 0;\n          i < recoverableErrors.length;\n          i++\n        ) {\n          var recoverableError = recoverableErrors[i];\n          onRecoverableError(recoverableError.value, {\n            componentStack: recoverableError.stack\n          });\n        }\n      } finally {\n        (ReactSharedInternals.T = finishedWork),\n          (ReactDOMSharedInternals.p = remainingLanes);\n      }\n    }\n    0 !== (pendingEffectsLanes & 3) && flushPendingEffects();\n    ensureRootIsScheduled(root);\n    remainingLanes = root.pendingLanes;\n    0 !== (lanes & 4194090) && 0 !== (remainingLanes & 42)\n      ? root === rootWithNestedUpdates\n        ? nestedUpdateCount++\n        : ((nestedUpdateCount = 0), (rootWithNestedUpdates = root))\n      : (nestedUpdateCount = 0);\n    flushSyncWorkAcrossRoots_impl(0, !1);\n  }\n}\nfunction releaseRootPooledCache(root, remainingLanes) {\n  0 === (root.pooledCacheLanes &= remainingLanes) &&\n    ((remainingLanes = root.pooledCache),\n    null != remainingLanes &&\n      ((root.pooledCache = null), releaseCache(remainingLanes)));\n}\nfunction flushPendingEffects(wasDelayedCommit) {\n  flushMutationEffects();\n  flushLayoutEffects();\n  flushSpawnedWork();\n  return flushPassiveEffects(wasDelayedCommit);\n}\nfunction flushPassiveEffects() {\n  if (5 !== pendingEffectsStatus) return !1;\n  var root = pendingEffectsRoot,\n    remainingLanes = pendingEffectsRemainingLanes;\n  pendingEffectsRemainingLanes = 0;\n  var renderPriority = lanesToEventPriority(pendingEffectsLanes),\n    prevTransition = ReactSharedInternals.T,\n    previousPriority = ReactDOMSharedInternals.p;\n  try {\n    ReactDOMSharedInternals.p = 32 > renderPriority ? 32 : renderPriority;\n    ReactSharedInternals.T = null;\n    renderPriority = pendingPassiveTransitions;\n    pendingPassiveTransitions = null;\n    var root$jscomp$0 = pendingEffectsRoot,\n      lanes = pendingEffectsLanes;\n    pendingEffectsStatus = 0;\n    pendingFinishedWork = pendingEffectsRoot = null;\n    pendingEffectsLanes = 0;\n    if (0 !== (executionContext & 6)) throw Error(formatProdErrorMessage(331));\n    var prevExecutionContext = executionContext;\n    executionContext |= 4;\n    commitPassiveUnmountOnFiber(root$jscomp$0.current);\n    commitPassiveMountOnFiber(\n      root$jscomp$0,\n      root$jscomp$0.current,\n      lanes,\n      renderPriority\n    );\n    executionContext = prevExecutionContext;\n    flushSyncWorkAcrossRoots_impl(0, !1);\n    if (\n      injectedHook &&\n      \"function\" === typeof injectedHook.onPostCommitFiberRoot\n    )\n      try {\n        injectedHook.onPostCommitFiberRoot(rendererID, root$jscomp$0);\n      } catch (err) {}\n    return !0;\n  } finally {\n    (ReactDOMSharedInternals.p = previousPriority),\n      (ReactSharedInternals.T = prevTransition),\n      releaseRootPooledCache(root, remainingLanes);\n  }\n}\nfunction captureCommitPhaseErrorOnRoot(rootFiber, sourceFiber, error) {\n  sourceFiber = createCapturedValueAtFiber(error, sourceFiber);\n  sourceFiber = createRootErrorUpdate(rootFiber.stateNode, sourceFiber, 2);\n  rootFiber = enqueueUpdate(rootFiber, sourceFiber, 2);\n  null !== rootFiber &&\n    (markRootUpdated$1(rootFiber, 2), ensureRootIsScheduled(rootFiber));\n}\nfunction captureCommitPhaseError(sourceFiber, nearestMountedAncestor, error) {\n  if (3 === sourceFiber.tag)\n    captureCommitPhaseErrorOnRoot(sourceFiber, sourceFiber, error);\n  else\n    for (; null !== nearestMountedAncestor; ) {\n      if (3 === nearestMountedAncestor.tag) {\n        captureCommitPhaseErrorOnRoot(\n          nearestMountedAncestor,\n          sourceFiber,\n          error\n        );\n        break;\n      } else if (1 === nearestMountedAncestor.tag) {\n        var instance = nearestMountedAncestor.stateNode;\n        if (\n          \"function\" ===\n            typeof nearestMountedAncestor.type.getDerivedStateFromError ||\n          (\"function\" === typeof instance.componentDidCatch &&\n            (null === legacyErrorBoundariesThatAlreadyFailed ||\n              !legacyErrorBoundariesThatAlreadyFailed.has(instance)))\n        ) {\n          sourceFiber = createCapturedValueAtFiber(error, sourceFiber);\n          error = createClassErrorUpdate(2);\n          instance = enqueueUpdate(nearestMountedAncestor, error, 2);\n          null !== instance &&\n            (initializeClassErrorUpdate(\n              error,\n              instance,\n              nearestMountedAncestor,\n              sourceFiber\n            ),\n            markRootUpdated$1(instance, 2),\n            ensureRootIsScheduled(instance));\n          break;\n        }\n      }\n      nearestMountedAncestor = nearestMountedAncestor.return;\n    }\n}\nfunction attachPingListener(root, wakeable, lanes) {\n  var pingCache = root.pingCache;\n  if (null === pingCache) {\n    pingCache = root.pingCache = new PossiblyWeakMap();\n    var threadIDs = new Set();\n    pingCache.set(wakeable, threadIDs);\n  } else\n    (threadIDs = pingCache.get(wakeable)),\n      void 0 === threadIDs &&\n        ((threadIDs = new Set()), pingCache.set(wakeable, threadIDs));\n  threadIDs.has(lanes) ||\n    ((workInProgressRootDidAttachPingListener = !0),\n    threadIDs.add(lanes),\n    (root = pingSuspendedRoot.bind(null, root, wakeable, lanes)),\n    wakeable.then(root, root));\n}\nfunction pingSuspendedRoot(root, wakeable, pingedLanes) {\n  var pingCache = root.pingCache;\n  null !== pingCache && pingCache.delete(wakeable);\n  root.pingedLanes |= root.suspendedLanes & pingedLanes;\n  root.warmLanes &= ~pingedLanes;\n  workInProgressRoot === root &&\n    (workInProgressRootRenderLanes & pingedLanes) === pingedLanes &&\n    (4 === workInProgressRootExitStatus ||\n    (3 === workInProgressRootExitStatus &&\n      (workInProgressRootRenderLanes & 62914560) ===\n        workInProgressRootRenderLanes &&\n      300 > now() - globalMostRecentFallbackTime)\n      ? 0 === (executionContext & 2) && prepareFreshStack(root, 0)\n      : (workInProgressRootPingedLanes |= pingedLanes),\n    workInProgressSuspendedRetryLanes === workInProgressRootRenderLanes &&\n      (workInProgressSuspendedRetryLanes = 0));\n  ensureRootIsScheduled(root);\n}\nfunction retryTimedOutBoundary(boundaryFiber, retryLane) {\n  0 === retryLane && (retryLane = claimNextRetryLane());\n  boundaryFiber = enqueueConcurrentRenderForLane(boundaryFiber, retryLane);\n  null !== boundaryFiber &&\n    (markRootUpdated$1(boundaryFiber, retryLane),\n    ensureRootIsScheduled(boundaryFiber));\n}\nfunction retryDehydratedSuspenseBoundary(boundaryFiber) {\n  var suspenseState = boundaryFiber.memoizedState,\n    retryLane = 0;\n  null !== suspenseState && (retryLane = suspenseState.retryLane);\n  retryTimedOutBoundary(boundaryFiber, retryLane);\n}\nfunction resolveRetryWakeable(boundaryFiber, wakeable) {\n  var retryLane = 0;\n  switch (boundaryFiber.tag) {\n    case 13:\n      var retryCache = boundaryFiber.stateNode;\n      var suspenseState = boundaryFiber.memoizedState;\n      null !== suspenseState && (retryLane = suspenseState.retryLane);\n      break;\n    case 19:\n      retryCache = boundaryFiber.stateNode;\n      break;\n    case 22:\n      retryCache = boundaryFiber.stateNode._retryCache;\n      break;\n    default:\n      throw Error(formatProdErrorMessage(314));\n  }\n  null !== retryCache && retryCache.delete(wakeable);\n  retryTimedOutBoundary(boundaryFiber, retryLane);\n}\nfunction scheduleCallback$1(priorityLevel, callback) {\n  return scheduleCallback$3(priorityLevel, callback);\n}\nvar firstScheduledRoot = null,\n  lastScheduledRoot = null,\n  didScheduleMicrotask = !1,\n  mightHavePendingSyncWork = !1,\n  isFlushingWork = !1,\n  currentEventTransitionLane = 0;\nfunction ensureRootIsScheduled(root) {\n  root !== lastScheduledRoot &&\n    null === root.next &&\n    (null === lastScheduledRoot\n      ? (firstScheduledRoot = lastScheduledRoot = root)\n      : (lastScheduledRoot = lastScheduledRoot.next = root));\n  mightHavePendingSyncWork = !0;\n  didScheduleMicrotask ||\n    ((didScheduleMicrotask = !0), scheduleImmediateRootScheduleTask());\n}\nfunction flushSyncWorkAcrossRoots_impl(syncTransitionLanes, onlyLegacy) {\n  if (!isFlushingWork && mightHavePendingSyncWork) {\n    isFlushingWork = !0;\n    do {\n      var didPerformSomeWork = !1;\n      for (var root$174 = firstScheduledRoot; null !== root$174; ) {\n        if (!onlyLegacy)\n          if (0 !== syncTransitionLanes) {\n            var pendingLanes = root$174.pendingLanes;\n            if (0 === pendingLanes) var JSCompiler_inline_result = 0;\n            else {\n              var suspendedLanes = root$174.suspendedLanes,\n                pingedLanes = root$174.pingedLanes;\n              JSCompiler_inline_result =\n                (1 << (31 - clz32(42 | syncTransitionLanes) + 1)) - 1;\n              JSCompiler_inline_result &=\n                pendingLanes & ~(suspendedLanes & ~pingedLanes);\n              JSCompiler_inline_result =\n                JSCompiler_inline_result & 201326741\n                  ? (JSCompiler_inline_result & 201326741) | 1\n                  : JSCompiler_inline_result\n                    ? JSCompiler_inline_result | 2\n                    : 0;\n            }\n            0 !== JSCompiler_inline_result &&\n              ((didPerformSomeWork = !0),\n              performSyncWorkOnRoot(root$174, JSCompiler_inline_result));\n          } else\n            (JSCompiler_inline_result = workInProgressRootRenderLanes),\n              (JSCompiler_inline_result = getNextLanes(\n                root$174,\n                root$174 === workInProgressRoot ? JSCompiler_inline_result : 0,\n                null !== root$174.cancelPendingCommit ||\n                  -1 !== root$174.timeoutHandle\n              )),\n              0 === (JSCompiler_inline_result & 3) ||\n                checkIfRootIsPrerendering(root$174, JSCompiler_inline_result) ||\n                ((didPerformSomeWork = !0),\n                performSyncWorkOnRoot(root$174, JSCompiler_inline_result));\n        root$174 = root$174.next;\n      }\n    } while (didPerformSomeWork);\n    isFlushingWork = !1;\n  }\n}\nfunction processRootScheduleInImmediateTask() {\n  processRootScheduleInMicrotask();\n}\nfunction processRootScheduleInMicrotask() {\n  mightHavePendingSyncWork = didScheduleMicrotask = !1;\n  var syncTransitionLanes = 0;\n  0 !== currentEventTransitionLane &&\n    (shouldAttemptEagerTransition() &&\n      (syncTransitionLanes = currentEventTransitionLane),\n    (currentEventTransitionLane = 0));\n  for (\n    var currentTime = now(), prev = null, root = firstScheduledRoot;\n    null !== root;\n\n  ) {\n    var next = root.next,\n      nextLanes = scheduleTaskForRootDuringMicrotask(root, currentTime);\n    if (0 === nextLanes)\n      (root.next = null),\n        null === prev ? (firstScheduledRoot = next) : (prev.next = next),\n        null === next && (lastScheduledRoot = prev);\n    else if (\n      ((prev = root), 0 !== syncTransitionLanes || 0 !== (nextLanes & 3))\n    )\n      mightHavePendingSyncWork = !0;\n    root = next;\n  }\n  flushSyncWorkAcrossRoots_impl(syncTransitionLanes, !1);\n}\nfunction scheduleTaskForRootDuringMicrotask(root, currentTime) {\n  for (\n    var suspendedLanes = root.suspendedLanes,\n      pingedLanes = root.pingedLanes,\n      expirationTimes = root.expirationTimes,\n      lanes = root.pendingLanes & -62914561;\n    0 < lanes;\n\n  ) {\n    var index$3 = 31 - clz32(lanes),\n      lane = 1 << index$3,\n      expirationTime = expirationTimes[index$3];\n    if (-1 === expirationTime) {\n      if (0 === (lane & suspendedLanes) || 0 !== (lane & pingedLanes))\n        expirationTimes[index$3] = computeExpirationTime(lane, currentTime);\n    } else expirationTime <= currentTime && (root.expiredLanes |= lane);\n    lanes &= ~lane;\n  }\n  currentTime = workInProgressRoot;\n  suspendedLanes = workInProgressRootRenderLanes;\n  suspendedLanes = getNextLanes(\n    root,\n    root === currentTime ? suspendedLanes : 0,\n    null !== root.cancelPendingCommit || -1 !== root.timeoutHandle\n  );\n  pingedLanes = root.callbackNode;\n  if (\n    0 === suspendedLanes ||\n    (root === currentTime &&\n      (2 === workInProgressSuspendedReason ||\n        9 === workInProgressSuspendedReason)) ||\n    null !== root.cancelPendingCommit\n  )\n    return (\n      null !== pingedLanes &&\n        null !== pingedLanes &&\n        cancelCallback$1(pingedLanes),\n      (root.callbackNode = null),\n      (root.callbackPriority = 0)\n    );\n  if (\n    0 === (suspendedLanes & 3) ||\n    checkIfRootIsPrerendering(root, suspendedLanes)\n  ) {\n    currentTime = suspendedLanes & -suspendedLanes;\n    if (currentTime === root.callbackPriority) return currentTime;\n    null !== pingedLanes && cancelCallback$1(pingedLanes);\n    switch (lanesToEventPriority(suspendedLanes)) {\n      case 2:\n      case 8:\n        suspendedLanes = UserBlockingPriority;\n        break;\n      case 32:\n        suspendedLanes = NormalPriority$1;\n        break;\n      case 268435456:\n        suspendedLanes = IdlePriority;\n        break;\n      default:\n        suspendedLanes = NormalPriority$1;\n    }\n    pingedLanes = performWorkOnRootViaSchedulerTask.bind(null, root);\n    suspendedLanes = scheduleCallback$3(suspendedLanes, pingedLanes);\n    root.callbackPriority = currentTime;\n    root.callbackNode = suspendedLanes;\n    return currentTime;\n  }\n  null !== pingedLanes && null !== pingedLanes && cancelCallback$1(pingedLanes);\n  root.callbackPriority = 2;\n  root.callbackNode = null;\n  return 2;\n}\nfunction performWorkOnRootViaSchedulerTask(root, didTimeout) {\n  if (0 !== pendingEffectsStatus && 5 !== pendingEffectsStatus)\n    return (root.callbackNode = null), (root.callbackPriority = 0), null;\n  var originalCallbackNode = root.callbackNode;\n  if (flushPendingEffects(!0) && root.callbackNode !== originalCallbackNode)\n    return null;\n  var workInProgressRootRenderLanes$jscomp$0 = workInProgressRootRenderLanes;\n  workInProgressRootRenderLanes$jscomp$0 = getNextLanes(\n    root,\n    root === workInProgressRoot ? workInProgressRootRenderLanes$jscomp$0 : 0,\n    null !== root.cancelPendingCommit || -1 !== root.timeoutHandle\n  );\n  if (0 === workInProgressRootRenderLanes$jscomp$0) return null;\n  performWorkOnRoot(root, workInProgressRootRenderLanes$jscomp$0, didTimeout);\n  scheduleTaskForRootDuringMicrotask(root, now());\n  return null != root.callbackNode && root.callbackNode === originalCallbackNode\n    ? performWorkOnRootViaSchedulerTask.bind(null, root)\n    : null;\n}\nfunction performSyncWorkOnRoot(root, lanes) {\n  if (flushPendingEffects()) return null;\n  performWorkOnRoot(root, lanes, !0);\n}\nfunction scheduleImmediateRootScheduleTask() {\n  scheduleMicrotask(function () {\n    0 !== (executionContext & 6)\n      ? scheduleCallback$3(\n          ImmediatePriority,\n          processRootScheduleInImmediateTask\n        )\n      : processRootScheduleInMicrotask();\n  });\n}\nfunction requestTransitionLane() {\n  0 === currentEventTransitionLane &&\n    (currentEventTransitionLane = claimNextTransitionLane());\n  return currentEventTransitionLane;\n}\nfunction coerceFormActionProp(actionProp) {\n  return null == actionProp ||\n    \"symbol\" === typeof actionProp ||\n    \"boolean\" === typeof actionProp\n    ? null\n    : \"function\" === typeof actionProp\n      ? actionProp\n      : sanitizeURL(\"\" + actionProp);\n}\nfunction createFormDataWithSubmitter(form, submitter) {\n  var temp = submitter.ownerDocument.createElement(\"input\");\n  temp.name = submitter.name;\n  temp.value = submitter.value;\n  form.id && temp.setAttribute(\"form\", form.id);\n  submitter.parentNode.insertBefore(temp, submitter);\n  form = new FormData(form);\n  temp.parentNode.removeChild(temp);\n  return form;\n}\nfunction extractEvents$1(\n  dispatchQueue,\n  domEventName,\n  maybeTargetInst,\n  nativeEvent,\n  nativeEventTarget\n) {\n  if (\n    \"submit\" === domEventName &&\n    maybeTargetInst &&\n    maybeTargetInst.stateNode === nativeEventTarget\n  ) {\n    var action = coerceFormActionProp(\n        (nativeEventTarget[internalPropsKey] || null).action\n      ),\n      submitter = nativeEvent.submitter;\n    submitter &&\n      ((domEventName = (domEventName = submitter[internalPropsKey] || null)\n        ? coerceFormActionProp(domEventName.formAction)\n        : submitter.getAttribute(\"formAction\")),\n      null !== domEventName && ((action = domEventName), (submitter = null)));\n    var event = new SyntheticEvent(\n      \"action\",\n      \"action\",\n      null,\n      nativeEvent,\n      nativeEventTarget\n    );\n    dispatchQueue.push({\n      event: event,\n      listeners: [\n        {\n          instance: null,\n          listener: function () {\n            if (nativeEvent.defaultPrevented) {\n              if (0 !== currentEventTransitionLane) {\n                var formData = submitter\n                  ? createFormDataWithSubmitter(nativeEventTarget, submitter)\n                  : new FormData(nativeEventTarget);\n                startHostTransition(\n                  maybeTargetInst,\n                  {\n                    pending: !0,\n                    data: formData,\n                    method: nativeEventTarget.method,\n                    action: action\n                  },\n                  null,\n                  formData\n                );\n              }\n            } else\n              \"function\" === typeof action &&\n                (event.preventDefault(),\n                (formData = submitter\n                  ? createFormDataWithSubmitter(nativeEventTarget, submitter)\n                  : new FormData(nativeEventTarget)),\n                startHostTransition(\n                  maybeTargetInst,\n                  {\n                    pending: !0,\n                    data: formData,\n                    method: nativeEventTarget.method,\n                    action: action\n                  },\n                  action,\n                  formData\n                ));\n          },\n          currentTarget: nativeEventTarget\n        }\n      ]\n    });\n  }\n}\nfor (\n  var i$jscomp$inline_1528 = 0;\n  i$jscomp$inline_1528 < simpleEventPluginEvents.length;\n  i$jscomp$inline_1528++\n) {\n  var eventName$jscomp$inline_1529 =\n      simpleEventPluginEvents[i$jscomp$inline_1528],\n    domEventName$jscomp$inline_1530 =\n      eventName$jscomp$inline_1529.toLowerCase(),\n    capitalizedEvent$jscomp$inline_1531 =\n      eventName$jscomp$inline_1529[0].toUpperCase() +\n      eventName$jscomp$inline_1529.slice(1);\n  registerSimpleEvent(\n    domEventName$jscomp$inline_1530,\n    \"on\" + capitalizedEvent$jscomp$inline_1531\n  );\n}\nregisterSimpleEvent(ANIMATION_END, \"onAnimationEnd\");\nregisterSimpleEvent(ANIMATION_ITERATION, \"onAnimationIteration\");\nregisterSimpleEvent(ANIMATION_START, \"onAnimationStart\");\nregisterSimpleEvent(\"dblclick\", \"onDoubleClick\");\nregisterSimpleEvent(\"focusin\", \"onFocus\");\nregisterSimpleEvent(\"focusout\", \"onBlur\");\nregisterSimpleEvent(TRANSITION_RUN, \"onTransitionRun\");\nregisterSimpleEvent(TRANSITION_START, \"onTransitionStart\");\nregisterSimpleEvent(TRANSITION_CANCEL, \"onTransitionCancel\");\nregisterSimpleEvent(TRANSITION_END, \"onTransitionEnd\");\nregisterDirectEvent(\"onMouseEnter\", [\"mouseout\", \"mouseover\"]);\nregisterDirectEvent(\"onMouseLeave\", [\"mouseout\", \"mouseover\"]);\nregisterDirectEvent(\"onPointerEnter\", [\"pointerout\", \"pointerover\"]);\nregisterDirectEvent(\"onPointerLeave\", [\"pointerout\", \"pointerover\"]);\nregisterTwoPhaseEvent(\n  \"onChange\",\n  \"change click focusin focusout input keydown keyup selectionchange\".split(\" \")\n);\nregisterTwoPhaseEvent(\n  \"onSelect\",\n  \"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\n    \" \"\n  )\n);\nregisterTwoPhaseEvent(\"onBeforeInput\", [\n  \"compositionend\",\n  \"keypress\",\n  \"textInput\",\n  \"paste\"\n]);\nregisterTwoPhaseEvent(\n  \"onCompositionEnd\",\n  \"compositionend focusout keydown keypress keyup mousedown\".split(\" \")\n);\nregisterTwoPhaseEvent(\n  \"onCompositionStart\",\n  \"compositionstart focusout keydown keypress keyup mousedown\".split(\" \")\n);\nregisterTwoPhaseEvent(\n  \"onCompositionUpdate\",\n  \"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \")\n);\nvar mediaEventTypes =\n    \"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting\".split(\n      \" \"\n    ),\n  nonDelegatedEvents = new Set(\n    \"beforetoggle cancel close invalid load scroll scrollend toggle\"\n      .split(\" \")\n      .concat(mediaEventTypes)\n  );\nfunction processDispatchQueue(dispatchQueue, eventSystemFlags) {\n  eventSystemFlags = 0 !== (eventSystemFlags & 4);\n  for (var i = 0; i < dispatchQueue.length; i++) {\n    var _dispatchQueue$i = dispatchQueue[i],\n      event = _dispatchQueue$i.event;\n    _dispatchQueue$i = _dispatchQueue$i.listeners;\n    a: {\n      var previousInstance = void 0;\n      if (eventSystemFlags)\n        for (\n          var i$jscomp$0 = _dispatchQueue$i.length - 1;\n          0 <= i$jscomp$0;\n          i$jscomp$0--\n        ) {\n          var _dispatchListeners$i = _dispatchQueue$i[i$jscomp$0],\n            instance = _dispatchListeners$i.instance,\n            currentTarget = _dispatchListeners$i.currentTarget;\n          _dispatchListeners$i = _dispatchListeners$i.listener;\n          if (instance !== previousInstance && event.isPropagationStopped())\n            break a;\n          previousInstance = _dispatchListeners$i;\n          event.currentTarget = currentTarget;\n          try {\n            previousInstance(event);\n          } catch (error) {\n            reportGlobalError(error);\n          }\n          event.currentTarget = null;\n          previousInstance = instance;\n        }\n      else\n        for (\n          i$jscomp$0 = 0;\n          i$jscomp$0 < _dispatchQueue$i.length;\n          i$jscomp$0++\n        ) {\n          _dispatchListeners$i = _dispatchQueue$i[i$jscomp$0];\n          instance = _dispatchListeners$i.instance;\n          currentTarget = _dispatchListeners$i.currentTarget;\n          _dispatchListeners$i = _dispatchListeners$i.listener;\n          if (instance !== previousInstance && event.isPropagationStopped())\n            break a;\n          previousInstance = _dispatchListeners$i;\n          event.currentTarget = currentTarget;\n          try {\n            previousInstance(event);\n          } catch (error) {\n            reportGlobalError(error);\n          }\n          event.currentTarget = null;\n          previousInstance = instance;\n        }\n    }\n  }\n}\nfunction listenToNonDelegatedEvent(domEventName, targetElement) {\n  var JSCompiler_inline_result = targetElement[internalEventHandlersKey];\n  void 0 === JSCompiler_inline_result &&\n    (JSCompiler_inline_result = targetElement[internalEventHandlersKey] =\n      new Set());\n  var listenerSetKey = domEventName + \"__bubble\";\n  JSCompiler_inline_result.has(listenerSetKey) ||\n    (addTrappedEventListener(targetElement, domEventName, 2, !1),\n    JSCompiler_inline_result.add(listenerSetKey));\n}\nfunction listenToNativeEvent(domEventName, isCapturePhaseListener, target) {\n  var eventSystemFlags = 0;\n  isCapturePhaseListener && (eventSystemFlags |= 4);\n  addTrappedEventListener(\n    target,\n    domEventName,\n    eventSystemFlags,\n    isCapturePhaseListener\n  );\n}\nvar listeningMarker = \"_reactListening\" + Math.random().toString(36).slice(2);\nfunction listenToAllSupportedEvents(rootContainerElement) {\n  if (!rootContainerElement[listeningMarker]) {\n    rootContainerElement[listeningMarker] = !0;\n    allNativeEvents.forEach(function (domEventName) {\n      \"selectionchange\" !== domEventName &&\n        (nonDelegatedEvents.has(domEventName) ||\n          listenToNativeEvent(domEventName, !1, rootContainerElement),\n        listenToNativeEvent(domEventName, !0, rootContainerElement));\n    });\n    var ownerDocument =\n      9 === rootContainerElement.nodeType\n        ? rootContainerElement\n        : rootContainerElement.ownerDocument;\n    null === ownerDocument ||\n      ownerDocument[listeningMarker] ||\n      ((ownerDocument[listeningMarker] = !0),\n      listenToNativeEvent(\"selectionchange\", !1, ownerDocument));\n  }\n}\nfunction addTrappedEventListener(\n  targetContainer,\n  domEventName,\n  eventSystemFlags,\n  isCapturePhaseListener\n) {\n  switch (getEventPriority(domEventName)) {\n    case 2:\n      var listenerWrapper = dispatchDiscreteEvent;\n      break;\n    case 8:\n      listenerWrapper = dispatchContinuousEvent;\n      break;\n    default:\n      listenerWrapper = dispatchEvent;\n  }\n  eventSystemFlags = listenerWrapper.bind(\n    null,\n    domEventName,\n    eventSystemFlags,\n    targetContainer\n  );\n  listenerWrapper = void 0;\n  !passiveBrowserEventsSupported ||\n    (\"touchstart\" !== domEventName &&\n      \"touchmove\" !== domEventName &&\n      \"wheel\" !== domEventName) ||\n    (listenerWrapper = !0);\n  isCapturePhaseListener\n    ? void 0 !== listenerWrapper\n      ? targetContainer.addEventListener(domEventName, eventSystemFlags, {\n          capture: !0,\n          passive: listenerWrapper\n        })\n      : targetContainer.addEventListener(domEventName, eventSystemFlags, !0)\n    : void 0 !== listenerWrapper\n      ? targetContainer.addEventListener(domEventName, eventSystemFlags, {\n          passive: listenerWrapper\n        })\n      : targetContainer.addEventListener(domEventName, eventSystemFlags, !1);\n}\nfunction dispatchEventForPluginEventSystem(\n  domEventName,\n  eventSystemFlags,\n  nativeEvent,\n  targetInst$jscomp$0,\n  targetContainer\n) {\n  var ancestorInst = targetInst$jscomp$0;\n  if (\n    0 === (eventSystemFlags & 1) &&\n    0 === (eventSystemFlags & 2) &&\n    null !== targetInst$jscomp$0\n  )\n    a: for (;;) {\n      if (null === targetInst$jscomp$0) return;\n      var nodeTag = targetInst$jscomp$0.tag;\n      if (3 === nodeTag || 4 === nodeTag) {\n        var container = targetInst$jscomp$0.stateNode.containerInfo;\n        if (container === targetContainer) break;\n        if (4 === nodeTag)\n          for (nodeTag = targetInst$jscomp$0.return; null !== nodeTag; ) {\n            var grandTag = nodeTag.tag;\n            if (\n              (3 === grandTag || 4 === grandTag) &&\n              nodeTag.stateNode.containerInfo === targetContainer\n            )\n              return;\n            nodeTag = nodeTag.return;\n          }\n        for (; null !== container; ) {\n          nodeTag = getClosestInstanceFromNode(container);\n          if (null === nodeTag) return;\n          grandTag = nodeTag.tag;\n          if (\n            5 === grandTag ||\n            6 === grandTag ||\n            26 === grandTag ||\n            27 === grandTag\n          ) {\n            targetInst$jscomp$0 = ancestorInst = nodeTag;\n            continue a;\n          }\n          container = container.parentNode;\n        }\n      }\n      targetInst$jscomp$0 = targetInst$jscomp$0.return;\n    }\n  batchedUpdates$1(function () {\n    var targetInst = ancestorInst,\n      nativeEventTarget = getEventTarget(nativeEvent),\n      dispatchQueue = [];\n    a: {\n      var reactName = topLevelEventsToReactNames.get(domEventName);\n      if (void 0 !== reactName) {\n        var SyntheticEventCtor = SyntheticEvent,\n          reactEventType = domEventName;\n        switch (domEventName) {\n          case \"keypress\":\n            if (0 === getEventCharCode(nativeEvent)) break a;\n          case \"keydown\":\n          case \"keyup\":\n            SyntheticEventCtor = SyntheticKeyboardEvent;\n            break;\n          case \"focusin\":\n            reactEventType = \"focus\";\n            SyntheticEventCtor = SyntheticFocusEvent;\n            break;\n          case \"focusout\":\n            reactEventType = \"blur\";\n            SyntheticEventCtor = SyntheticFocusEvent;\n            break;\n          case \"beforeblur\":\n          case \"afterblur\":\n            SyntheticEventCtor = SyntheticFocusEvent;\n            break;\n          case \"click\":\n            if (2 === nativeEvent.button) break a;\n          case \"auxclick\":\n          case \"dblclick\":\n          case \"mousedown\":\n          case \"mousemove\":\n          case \"mouseup\":\n          case \"mouseout\":\n          case \"mouseover\":\n          case \"contextmenu\":\n            SyntheticEventCtor = SyntheticMouseEvent;\n            break;\n          case \"drag\":\n          case \"dragend\":\n          case \"dragenter\":\n          case \"dragexit\":\n          case \"dragleave\":\n          case \"dragover\":\n          case \"dragstart\":\n          case \"drop\":\n            SyntheticEventCtor = SyntheticDragEvent;\n            break;\n          case \"touchcancel\":\n          case \"touchend\":\n          case \"touchmove\":\n          case \"touchstart\":\n            SyntheticEventCtor = SyntheticTouchEvent;\n            break;\n          case ANIMATION_END:\n          case ANIMATION_ITERATION:\n          case ANIMATION_START:\n            SyntheticEventCtor = SyntheticAnimationEvent;\n            break;\n          case TRANSITION_END:\n            SyntheticEventCtor = SyntheticTransitionEvent;\n            break;\n          case \"scroll\":\n          case \"scrollend\":\n            SyntheticEventCtor = SyntheticUIEvent;\n            break;\n          case \"wheel\":\n            SyntheticEventCtor = SyntheticWheelEvent;\n            break;\n          case \"copy\":\n          case \"cut\":\n          case \"paste\":\n            SyntheticEventCtor = SyntheticClipboardEvent;\n            break;\n          case \"gotpointercapture\":\n          case \"lostpointercapture\":\n          case \"pointercancel\":\n          case \"pointerdown\":\n          case \"pointermove\":\n          case \"pointerout\":\n          case \"pointerover\":\n          case \"pointerup\":\n            SyntheticEventCtor = SyntheticPointerEvent;\n            break;\n          case \"toggle\":\n          case \"beforetoggle\":\n            SyntheticEventCtor = SyntheticToggleEvent;\n        }\n        var inCapturePhase = 0 !== (eventSystemFlags & 4),\n          accumulateTargetOnly =\n            !inCapturePhase &&\n            (\"scroll\" === domEventName || \"scrollend\" === domEventName),\n          reactEventName = inCapturePhase\n            ? null !== reactName\n              ? reactName + \"Capture\"\n              : null\n            : reactName;\n        inCapturePhase = [];\n        for (\n          var instance = targetInst, lastHostComponent;\n          null !== instance;\n\n        ) {\n          var _instance = instance;\n          lastHostComponent = _instance.stateNode;\n          _instance = _instance.tag;\n          (5 !== _instance && 26 !== _instance && 27 !== _instance) ||\n            null === lastHostComponent ||\n            null === reactEventName ||\n            ((_instance = getListener(instance, reactEventName)),\n            null != _instance &&\n              inCapturePhase.push(\n                createDispatchListener(instance, _instance, lastHostComponent)\n              ));\n          if (accumulateTargetOnly) break;\n          instance = instance.return;\n        }\n        0 < inCapturePhase.length &&\n          ((reactName = new SyntheticEventCtor(\n            reactName,\n            reactEventType,\n            null,\n            nativeEvent,\n            nativeEventTarget\n          )),\n          dispatchQueue.push({ event: reactName, listeners: inCapturePhase }));\n      }\n    }\n    if (0 === (eventSystemFlags & 7)) {\n      a: {\n        reactName =\n          \"mouseover\" === domEventName || \"pointerover\" === domEventName;\n        SyntheticEventCtor =\n          \"mouseout\" === domEventName || \"pointerout\" === domEventName;\n        if (\n          reactName &&\n          nativeEvent !== currentReplayingEvent &&\n          (reactEventType =\n            nativeEvent.relatedTarget || nativeEvent.fromElement) &&\n          (getClosestInstanceFromNode(reactEventType) ||\n            reactEventType[internalContainerInstanceKey])\n        )\n          break a;\n        if (SyntheticEventCtor || reactName) {\n          reactName =\n            nativeEventTarget.window === nativeEventTarget\n              ? nativeEventTarget\n              : (reactName = nativeEventTarget.ownerDocument)\n                ? reactName.defaultView || reactName.parentWindow\n                : window;\n          if (SyntheticEventCtor) {\n            if (\n              ((reactEventType =\n                nativeEvent.relatedTarget || nativeEvent.toElement),\n              (SyntheticEventCtor = targetInst),\n              (reactEventType = reactEventType\n                ? getClosestInstanceFromNode(reactEventType)\n                : null),\n              null !== reactEventType &&\n                ((accumulateTargetOnly =\n                  getNearestMountedFiber(reactEventType)),\n                (inCapturePhase = reactEventType.tag),\n                reactEventType !== accumulateTargetOnly ||\n                  (5 !== inCapturePhase &&\n                    27 !== inCapturePhase &&\n                    6 !== inCapturePhase)))\n            )\n              reactEventType = null;\n          } else (SyntheticEventCtor = null), (reactEventType = targetInst);\n          if (SyntheticEventCtor !== reactEventType) {\n            inCapturePhase = SyntheticMouseEvent;\n            _instance = \"onMouseLeave\";\n            reactEventName = \"onMouseEnter\";\n            instance = \"mouse\";\n            if (\"pointerout\" === domEventName || \"pointerover\" === domEventName)\n              (inCapturePhase = SyntheticPointerEvent),\n                (_instance = \"onPointerLeave\"),\n                (reactEventName = \"onPointerEnter\"),\n                (instance = \"pointer\");\n            accumulateTargetOnly =\n              null == SyntheticEventCtor\n                ? reactName\n                : getNodeFromInstance(SyntheticEventCtor);\n            lastHostComponent =\n              null == reactEventType\n                ? reactName\n                : getNodeFromInstance(reactEventType);\n            reactName = new inCapturePhase(\n              _instance,\n              instance + \"leave\",\n              SyntheticEventCtor,\n              nativeEvent,\n              nativeEventTarget\n            );\n            reactName.target = accumulateTargetOnly;\n            reactName.relatedTarget = lastHostComponent;\n            _instance = null;\n            getClosestInstanceFromNode(nativeEventTarget) === targetInst &&\n              ((inCapturePhase = new inCapturePhase(\n                reactEventName,\n                instance + \"enter\",\n                reactEventType,\n                nativeEvent,\n                nativeEventTarget\n              )),\n              (inCapturePhase.target = lastHostComponent),\n              (inCapturePhase.relatedTarget = accumulateTargetOnly),\n              (_instance = inCapturePhase));\n            accumulateTargetOnly = _instance;\n            if (SyntheticEventCtor && reactEventType)\n              b: {\n                inCapturePhase = SyntheticEventCtor;\n                reactEventName = reactEventType;\n                instance = 0;\n                for (\n                  lastHostComponent = inCapturePhase;\n                  lastHostComponent;\n                  lastHostComponent = getParent(lastHostComponent)\n                )\n                  instance++;\n                lastHostComponent = 0;\n                for (\n                  _instance = reactEventName;\n                  _instance;\n                  _instance = getParent(_instance)\n                )\n                  lastHostComponent++;\n                for (; 0 < instance - lastHostComponent; )\n                  (inCapturePhase = getParent(inCapturePhase)), instance--;\n                for (; 0 < lastHostComponent - instance; )\n                  (reactEventName = getParent(reactEventName)),\n                    lastHostComponent--;\n                for (; instance--; ) {\n                  if (\n                    inCapturePhase === reactEventName ||\n                    (null !== reactEventName &&\n                      inCapturePhase === reactEventName.alternate)\n                  )\n                    break b;\n                  inCapturePhase = getParent(inCapturePhase);\n                  reactEventName = getParent(reactEventName);\n                }\n                inCapturePhase = null;\n              }\n            else inCapturePhase = null;\n            null !== SyntheticEventCtor &&\n              accumulateEnterLeaveListenersForEvent(\n                dispatchQueue,\n                reactName,\n                SyntheticEventCtor,\n                inCapturePhase,\n                !1\n              );\n            null !== reactEventType &&\n              null !== accumulateTargetOnly &&\n              accumulateEnterLeaveListenersForEvent(\n                dispatchQueue,\n                accumulateTargetOnly,\n                reactEventType,\n                inCapturePhase,\n                !0\n              );\n          }\n        }\n      }\n      a: {\n        reactName = targetInst ? getNodeFromInstance(targetInst) : window;\n        SyntheticEventCtor =\n          reactName.nodeName && reactName.nodeName.toLowerCase();\n        if (\n          \"select\" === SyntheticEventCtor ||\n          (\"input\" === SyntheticEventCtor && \"file\" === reactName.type)\n        )\n          var getTargetInstFunc = getTargetInstForChangeEvent;\n        else if (isTextInputElement(reactName))\n          if (isInputEventSupported)\n            getTargetInstFunc = getTargetInstForInputOrChangeEvent;\n          else {\n            getTargetInstFunc = getTargetInstForInputEventPolyfill;\n            var handleEventFunc = handleEventsForInputEventPolyfill;\n          }\n        else\n          (SyntheticEventCtor = reactName.nodeName),\n            !SyntheticEventCtor ||\n            \"input\" !== SyntheticEventCtor.toLowerCase() ||\n            (\"checkbox\" !== reactName.type && \"radio\" !== reactName.type)\n              ? targetInst &&\n                isCustomElement(targetInst.elementType) &&\n                (getTargetInstFunc = getTargetInstForChangeEvent)\n              : (getTargetInstFunc = getTargetInstForClickEvent);\n        if (\n          getTargetInstFunc &&\n          (getTargetInstFunc = getTargetInstFunc(domEventName, targetInst))\n        ) {\n          createAndAccumulateChangeEvent(\n            dispatchQueue,\n            getTargetInstFunc,\n            nativeEvent,\n            nativeEventTarget\n          );\n          break a;\n        }\n        handleEventFunc && handleEventFunc(domEventName, reactName, targetInst);\n        \"focusout\" === domEventName &&\n          targetInst &&\n          \"number\" === reactName.type &&\n          null != targetInst.memoizedProps.value &&\n          setDefaultValue(reactName, \"number\", reactName.value);\n      }\n      handleEventFunc = targetInst ? getNodeFromInstance(targetInst) : window;\n      switch (domEventName) {\n        case \"focusin\":\n          if (\n            isTextInputElement(handleEventFunc) ||\n            \"true\" === handleEventFunc.contentEditable\n          )\n            (activeElement = handleEventFunc),\n              (activeElementInst = targetInst),\n              (lastSelection = null);\n          break;\n        case \"focusout\":\n          lastSelection = activeElementInst = activeElement = null;\n          break;\n        case \"mousedown\":\n          mouseDown = !0;\n          break;\n        case \"contextmenu\":\n        case \"mouseup\":\n        case \"dragend\":\n          mouseDown = !1;\n          constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget);\n          break;\n        case \"selectionchange\":\n          if (skipSelectionChangeEvent) break;\n        case \"keydown\":\n        case \"keyup\":\n          constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget);\n      }\n      var fallbackData;\n      if (canUseCompositionEvent)\n        b: {\n          switch (domEventName) {\n            case \"compositionstart\":\n              var eventType = \"onCompositionStart\";\n              break b;\n            case \"compositionend\":\n              eventType = \"onCompositionEnd\";\n              break b;\n            case \"compositionupdate\":\n              eventType = \"onCompositionUpdate\";\n              break b;\n          }\n          eventType = void 0;\n        }\n      else\n        isComposing\n          ? isFallbackCompositionEnd(domEventName, nativeEvent) &&\n            (eventType = \"onCompositionEnd\")\n          : \"keydown\" === domEventName &&\n            229 === nativeEvent.keyCode &&\n            (eventType = \"onCompositionStart\");\n      eventType &&\n        (useFallbackCompositionData &&\n          \"ko\" !== nativeEvent.locale &&\n          (isComposing || \"onCompositionStart\" !== eventType\n            ? \"onCompositionEnd\" === eventType &&\n              isComposing &&\n              (fallbackData = getData())\n            : ((root = nativeEventTarget),\n              (startText = \"value\" in root ? root.value : root.textContent),\n              (isComposing = !0))),\n        (handleEventFunc = accumulateTwoPhaseListeners(targetInst, eventType)),\n        0 < handleEventFunc.length &&\n          ((eventType = new SyntheticCompositionEvent(\n            eventType,\n            domEventName,\n            null,\n            nativeEvent,\n            nativeEventTarget\n          )),\n          dispatchQueue.push({ event: eventType, listeners: handleEventFunc }),\n          fallbackData\n            ? (eventType.data = fallbackData)\n            : ((fallbackData = getDataFromCustomEvent(nativeEvent)),\n              null !== fallbackData && (eventType.data = fallbackData))));\n      if (\n        (fallbackData = canUseTextInputEvent\n          ? getNativeBeforeInputChars(domEventName, nativeEvent)\n          : getFallbackBeforeInputChars(domEventName, nativeEvent))\n      )\n        (eventType = accumulateTwoPhaseListeners(targetInst, \"onBeforeInput\")),\n          0 < eventType.length &&\n            ((handleEventFunc = new SyntheticCompositionEvent(\n              \"onBeforeInput\",\n              \"beforeinput\",\n              null,\n              nativeEvent,\n              nativeEventTarget\n            )),\n            dispatchQueue.push({\n              event: handleEventFunc,\n              listeners: eventType\n            }),\n            (handleEventFunc.data = fallbackData));\n      extractEvents$1(\n        dispatchQueue,\n        domEventName,\n        targetInst,\n        nativeEvent,\n        nativeEventTarget\n      );\n    }\n    processDispatchQueue(dispatchQueue, eventSystemFlags);\n  });\n}\nfunction createDispatchListener(instance, listener, currentTarget) {\n  return {\n    instance: instance,\n    listener: listener,\n    currentTarget: currentTarget\n  };\n}\nfunction accumulateTwoPhaseListeners(targetFiber, reactName) {\n  for (\n    var captureName = reactName + \"Capture\", listeners = [];\n    null !== targetFiber;\n\n  ) {\n    var _instance2 = targetFiber,\n      stateNode = _instance2.stateNode;\n    _instance2 = _instance2.tag;\n    (5 !== _instance2 && 26 !== _instance2 && 27 !== _instance2) ||\n      null === stateNode ||\n      ((_instance2 = getListener(targetFiber, captureName)),\n      null != _instance2 &&\n        listeners.unshift(\n          createDispatchListener(targetFiber, _instance2, stateNode)\n        ),\n      (_instance2 = getListener(targetFiber, reactName)),\n      null != _instance2 &&\n        listeners.push(\n          createDispatchListener(targetFiber, _instance2, stateNode)\n        ));\n    if (3 === targetFiber.tag) return listeners;\n    targetFiber = targetFiber.return;\n  }\n  return [];\n}\nfunction getParent(inst) {\n  if (null === inst) return null;\n  do inst = inst.return;\n  while (inst && 5 !== inst.tag && 27 !== inst.tag);\n  return inst ? inst : null;\n}\nfunction accumulateEnterLeaveListenersForEvent(\n  dispatchQueue,\n  event,\n  target,\n  common,\n  inCapturePhase\n) {\n  for (\n    var registrationName = event._reactName, listeners = [];\n    null !== target && target !== common;\n\n  ) {\n    var _instance3 = target,\n      alternate = _instance3.alternate,\n      stateNode = _instance3.stateNode;\n    _instance3 = _instance3.tag;\n    if (null !== alternate && alternate === common) break;\n    (5 !== _instance3 && 26 !== _instance3 && 27 !== _instance3) ||\n      null === stateNode ||\n      ((alternate = stateNode),\n      inCapturePhase\n        ? ((stateNode = getListener(target, registrationName)),\n          null != stateNode &&\n            listeners.unshift(\n              createDispatchListener(target, stateNode, alternate)\n            ))\n        : inCapturePhase ||\n          ((stateNode = getListener(target, registrationName)),\n          null != stateNode &&\n            listeners.push(\n              createDispatchListener(target, stateNode, alternate)\n            )));\n    target = target.return;\n  }\n  0 !== listeners.length &&\n    dispatchQueue.push({ event: event, listeners: listeners });\n}\nvar NORMALIZE_NEWLINES_REGEX = /\\r\\n?/g,\n  NORMALIZE_NULL_AND_REPLACEMENT_REGEX = /\\u0000|\\uFFFD/g;\nfunction normalizeMarkupForTextOrAttribute(markup) {\n  return (\"string\" === typeof markup ? markup : \"\" + markup)\n    .replace(NORMALIZE_NEWLINES_REGEX, \"\\n\")\n    .replace(NORMALIZE_NULL_AND_REPLACEMENT_REGEX, \"\");\n}\nfunction checkForUnmatchedText(serverText, clientText) {\n  clientText = normalizeMarkupForTextOrAttribute(clientText);\n  return normalizeMarkupForTextOrAttribute(serverText) === clientText ? !0 : !1;\n}\nfunction noop$1() {}\nfunction setProp(domElement, tag, key, value, props, prevValue) {\n  switch (key) {\n    case \"children\":\n      \"string\" === typeof value\n        ? \"body\" === tag ||\n          (\"textarea\" === tag && \"\" === value) ||\n          setTextContent(domElement, value)\n        : (\"number\" === typeof value || \"bigint\" === typeof value) &&\n          \"body\" !== tag &&\n          setTextContent(domElement, \"\" + value);\n      break;\n    case \"className\":\n      setValueForKnownAttribute(domElement, \"class\", value);\n      break;\n    case \"tabIndex\":\n      setValueForKnownAttribute(domElement, \"tabindex\", value);\n      break;\n    case \"dir\":\n    case \"role\":\n    case \"viewBox\":\n    case \"width\":\n    case \"height\":\n      setValueForKnownAttribute(domElement, key, value);\n      break;\n    case \"style\":\n      setValueForStyles(domElement, value, prevValue);\n      break;\n    case \"data\":\n      if (\"object\" !== tag) {\n        setValueForKnownAttribute(domElement, \"data\", value);\n        break;\n      }\n    case \"src\":\n    case \"href\":\n      if (\"\" === value && (\"a\" !== tag || \"href\" !== key)) {\n        domElement.removeAttribute(key);\n        break;\n      }\n      if (\n        null == value ||\n        \"function\" === typeof value ||\n        \"symbol\" === typeof value ||\n        \"boolean\" === typeof value\n      ) {\n        domElement.removeAttribute(key);\n        break;\n      }\n      value = sanitizeURL(\"\" + value);\n      domElement.setAttribute(key, value);\n      break;\n    case \"action\":\n    case \"formAction\":\n      if (\"function\" === typeof value) {\n        domElement.setAttribute(\n          key,\n          \"javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')\"\n        );\n        break;\n      } else\n        \"function\" === typeof prevValue &&\n          (\"formAction\" === key\n            ? (\"input\" !== tag &&\n                setProp(domElement, tag, \"name\", props.name, props, null),\n              setProp(\n                domElement,\n                tag,\n                \"formEncType\",\n                props.formEncType,\n                props,\n                null\n              ),\n              setProp(\n                domElement,\n                tag,\n                \"formMethod\",\n                props.formMethod,\n                props,\n                null\n              ),\n              setProp(\n                domElement,\n                tag,\n                \"formTarget\",\n                props.formTarget,\n                props,\n                null\n              ))\n            : (setProp(domElement, tag, \"encType\", props.encType, props, null),\n              setProp(domElement, tag, \"method\", props.method, props, null),\n              setProp(domElement, tag, \"target\", props.target, props, null)));\n      if (\n        null == value ||\n        \"symbol\" === typeof value ||\n        \"boolean\" === typeof value\n      ) {\n        domElement.removeAttribute(key);\n        break;\n      }\n      value = sanitizeURL(\"\" + value);\n      domElement.setAttribute(key, value);\n      break;\n    case \"onClick\":\n      null != value && (domElement.onclick = noop$1);\n      break;\n    case \"onScroll\":\n      null != value && listenToNonDelegatedEvent(\"scroll\", domElement);\n      break;\n    case \"onScrollEnd\":\n      null != value && listenToNonDelegatedEvent(\"scrollend\", domElement);\n      break;\n    case \"dangerouslySetInnerHTML\":\n      if (null != value) {\n        if (\"object\" !== typeof value || !(\"__html\" in value))\n          throw Error(formatProdErrorMessage(61));\n        key = value.__html;\n        if (null != key) {\n          if (null != props.children) throw Error(formatProdErrorMessage(60));\n          domElement.innerHTML = key;\n        }\n      }\n      break;\n    case \"multiple\":\n      domElement.multiple =\n        value && \"function\" !== typeof value && \"symbol\" !== typeof value;\n      break;\n    case \"muted\":\n      domElement.muted =\n        value && \"function\" !== typeof value && \"symbol\" !== typeof value;\n      break;\n    case \"suppressContentEditableWarning\":\n    case \"suppressHydrationWarning\":\n    case \"defaultValue\":\n    case \"defaultChecked\":\n    case \"innerHTML\":\n    case \"ref\":\n      break;\n    case \"autoFocus\":\n      break;\n    case \"xlinkHref\":\n      if (\n        null == value ||\n        \"function\" === typeof value ||\n        \"boolean\" === typeof value ||\n        \"symbol\" === typeof value\n      ) {\n        domElement.removeAttribute(\"xlink:href\");\n        break;\n      }\n      key = sanitizeURL(\"\" + value);\n      domElement.setAttributeNS(\n        \"http://www.w3.org/1999/xlink\",\n        \"xlink:href\",\n        key\n      );\n      break;\n    case \"contentEditable\":\n    case \"spellCheck\":\n    case \"draggable\":\n    case \"value\":\n    case \"autoReverse\":\n    case \"externalResourcesRequired\":\n    case \"focusable\":\n    case \"preserveAlpha\":\n      null != value && \"function\" !== typeof value && \"symbol\" !== typeof value\n        ? domElement.setAttribute(key, \"\" + value)\n        : domElement.removeAttribute(key);\n      break;\n    case \"inert\":\n    case \"allowFullScreen\":\n    case \"async\":\n    case \"autoPlay\":\n    case \"controls\":\n    case \"default\":\n    case \"defer\":\n    case \"disabled\":\n    case \"disablePictureInPicture\":\n    case \"disableRemotePlayback\":\n    case \"formNoValidate\":\n    case \"hidden\":\n    case \"loop\":\n    case \"noModule\":\n    case \"noValidate\":\n    case \"open\":\n    case \"playsInline\":\n    case \"readOnly\":\n    case \"required\":\n    case \"reversed\":\n    case \"scoped\":\n    case \"seamless\":\n    case \"itemScope\":\n      value && \"function\" !== typeof value && \"symbol\" !== typeof value\n        ? domElement.setAttribute(key, \"\")\n        : domElement.removeAttribute(key);\n      break;\n    case \"capture\":\n    case \"download\":\n      !0 === value\n        ? domElement.setAttribute(key, \"\")\n        : !1 !== value &&\n            null != value &&\n            \"function\" !== typeof value &&\n            \"symbol\" !== typeof value\n          ? domElement.setAttribute(key, value)\n          : domElement.removeAttribute(key);\n      break;\n    case \"cols\":\n    case \"rows\":\n    case \"size\":\n    case \"span\":\n      null != value &&\n      \"function\" !== typeof value &&\n      \"symbol\" !== typeof value &&\n      !isNaN(value) &&\n      1 <= value\n        ? domElement.setAttribute(key, value)\n        : domElement.removeAttribute(key);\n      break;\n    case \"rowSpan\":\n    case \"start\":\n      null == value ||\n      \"function\" === typeof value ||\n      \"symbol\" === typeof value ||\n      isNaN(value)\n        ? domElement.removeAttribute(key)\n        : domElement.setAttribute(key, value);\n      break;\n    case \"popover\":\n      listenToNonDelegatedEvent(\"beforetoggle\", domElement);\n      listenToNonDelegatedEvent(\"toggle\", domElement);\n      setValueForAttribute(domElement, \"popover\", value);\n      break;\n    case \"xlinkActuate\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/1999/xlink\",\n        \"xlink:actuate\",\n        value\n      );\n      break;\n    case \"xlinkArcrole\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/1999/xlink\",\n        \"xlink:arcrole\",\n        value\n      );\n      break;\n    case \"xlinkRole\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/1999/xlink\",\n        \"xlink:role\",\n        value\n      );\n      break;\n    case \"xlinkShow\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/1999/xlink\",\n        \"xlink:show\",\n        value\n      );\n      break;\n    case \"xlinkTitle\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/1999/xlink\",\n        \"xlink:title\",\n        value\n      );\n      break;\n    case \"xlinkType\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/1999/xlink\",\n        \"xlink:type\",\n        value\n      );\n      break;\n    case \"xmlBase\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/XML/1998/namespace\",\n        \"xml:base\",\n        value\n      );\n      break;\n    case \"xmlLang\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/XML/1998/namespace\",\n        \"xml:lang\",\n        value\n      );\n      break;\n    case \"xmlSpace\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/XML/1998/namespace\",\n        \"xml:space\",\n        value\n      );\n      break;\n    case \"is\":\n      setValueForAttribute(domElement, \"is\", value);\n      break;\n    case \"innerText\":\n    case \"textContent\":\n      break;\n    default:\n      if (\n        !(2 < key.length) ||\n        (\"o\" !== key[0] && \"O\" !== key[0]) ||\n        (\"n\" !== key[1] && \"N\" !== key[1])\n      )\n        (key = aliases.get(key) || key),\n          setValueForAttribute(domElement, key, value);\n  }\n}\nfunction setPropOnCustomElement(domElement, tag, key, value, props, prevValue) {\n  switch (key) {\n    case \"style\":\n      setValueForStyles(domElement, value, prevValue);\n      break;\n    case \"dangerouslySetInnerHTML\":\n      if (null != value) {\n        if (\"object\" !== typeof value || !(\"__html\" in value))\n          throw Error(formatProdErrorMessage(61));\n        key = value.__html;\n        if (null != key) {\n          if (null != props.children) throw Error(formatProdErrorMessage(60));\n          domElement.innerHTML = key;\n        }\n      }\n      break;\n    case \"children\":\n      \"string\" === typeof value\n        ? setTextContent(domElement, value)\n        : (\"number\" === typeof value || \"bigint\" === typeof value) &&\n          setTextContent(domElement, \"\" + value);\n      break;\n    case \"onScroll\":\n      null != value && listenToNonDelegatedEvent(\"scroll\", domElement);\n      break;\n    case \"onScrollEnd\":\n      null != value && listenToNonDelegatedEvent(\"scrollend\", domElement);\n      break;\n    case \"onClick\":\n      null != value && (domElement.onclick = noop$1);\n      break;\n    case \"suppressContentEditableWarning\":\n    case \"suppressHydrationWarning\":\n    case \"innerHTML\":\n    case \"ref\":\n      break;\n    case \"innerText\":\n    case \"textContent\":\n      break;\n    default:\n      if (!registrationNameDependencies.hasOwnProperty(key))\n        a: {\n          if (\n            \"o\" === key[0] &&\n            \"n\" === key[1] &&\n            ((props = key.endsWith(\"Capture\")),\n            (tag = key.slice(2, props ? key.length - 7 : void 0)),\n            (prevValue = domElement[internalPropsKey] || null),\n            (prevValue = null != prevValue ? prevValue[key] : null),\n            \"function\" === typeof prevValue &&\n              domElement.removeEventListener(tag, prevValue, props),\n            \"function\" === typeof value)\n          ) {\n            \"function\" !== typeof prevValue &&\n              null !== prevValue &&\n              (key in domElement\n                ? (domElement[key] = null)\n                : domElement.hasAttribute(key) &&\n                  domElement.removeAttribute(key));\n            domElement.addEventListener(tag, value, props);\n            break a;\n          }\n          key in domElement\n            ? (domElement[key] = value)\n            : !0 === value\n              ? domElement.setAttribute(key, \"\")\n              : setValueForAttribute(domElement, key, value);\n        }\n  }\n}\nfunction setInitialProperties(domElement, tag, props) {\n  switch (tag) {\n    case \"div\":\n    case \"span\":\n    case \"svg\":\n    case \"path\":\n    case \"a\":\n    case \"g\":\n    case \"p\":\n    case \"li\":\n      break;\n    case \"img\":\n      listenToNonDelegatedEvent(\"error\", domElement);\n      listenToNonDelegatedEvent(\"load\", domElement);\n      var hasSrc = !1,\n        hasSrcSet = !1,\n        propKey;\n      for (propKey in props)\n        if (props.hasOwnProperty(propKey)) {\n          var propValue = props[propKey];\n          if (null != propValue)\n            switch (propKey) {\n              case \"src\":\n                hasSrc = !0;\n                break;\n              case \"srcSet\":\n                hasSrcSet = !0;\n                break;\n              case \"children\":\n              case \"dangerouslySetInnerHTML\":\n                throw Error(formatProdErrorMessage(137, tag));\n              default:\n                setProp(domElement, tag, propKey, propValue, props, null);\n            }\n        }\n      hasSrcSet &&\n        setProp(domElement, tag, \"srcSet\", props.srcSet, props, null);\n      hasSrc && setProp(domElement, tag, \"src\", props.src, props, null);\n      return;\n    case \"input\":\n      listenToNonDelegatedEvent(\"invalid\", domElement);\n      var defaultValue = (propKey = propValue = hasSrcSet = null),\n        checked = null,\n        defaultChecked = null;\n      for (hasSrc in props)\n        if (props.hasOwnProperty(hasSrc)) {\n          var propValue$188 = props[hasSrc];\n          if (null != propValue$188)\n            switch (hasSrc) {\n              case \"name\":\n                hasSrcSet = propValue$188;\n                break;\n              case \"type\":\n                propValue = propValue$188;\n                break;\n              case \"checked\":\n                checked = propValue$188;\n                break;\n              case \"defaultChecked\":\n                defaultChecked = propValue$188;\n                break;\n              case \"value\":\n                propKey = propValue$188;\n                break;\n              case \"defaultValue\":\n                defaultValue = propValue$188;\n                break;\n              case \"children\":\n              case \"dangerouslySetInnerHTML\":\n                if (null != propValue$188)\n                  throw Error(formatProdErrorMessage(137, tag));\n                break;\n              default:\n                setProp(domElement, tag, hasSrc, propValue$188, props, null);\n            }\n        }\n      initInput(\n        domElement,\n        propKey,\n        defaultValue,\n        checked,\n        defaultChecked,\n        propValue,\n        hasSrcSet,\n        !1\n      );\n      track(domElement);\n      return;\n    case \"select\":\n      listenToNonDelegatedEvent(\"invalid\", domElement);\n      hasSrc = propValue = propKey = null;\n      for (hasSrcSet in props)\n        if (\n          props.hasOwnProperty(hasSrcSet) &&\n          ((defaultValue = props[hasSrcSet]), null != defaultValue)\n        )\n          switch (hasSrcSet) {\n            case \"value\":\n              propKey = defaultValue;\n              break;\n            case \"defaultValue\":\n              propValue = defaultValue;\n              break;\n            case \"multiple\":\n              hasSrc = defaultValue;\n            default:\n              setProp(domElement, tag, hasSrcSet, defaultValue, props, null);\n          }\n      tag = propKey;\n      props = propValue;\n      domElement.multiple = !!hasSrc;\n      null != tag\n        ? updateOptions(domElement, !!hasSrc, tag, !1)\n        : null != props && updateOptions(domElement, !!hasSrc, props, !0);\n      return;\n    case \"textarea\":\n      listenToNonDelegatedEvent(\"invalid\", domElement);\n      propKey = hasSrcSet = hasSrc = null;\n      for (propValue in props)\n        if (\n          props.hasOwnProperty(propValue) &&\n          ((defaultValue = props[propValue]), null != defaultValue)\n        )\n          switch (propValue) {\n            case \"value\":\n              hasSrc = defaultValue;\n              break;\n            case \"defaultValue\":\n              hasSrcSet = defaultValue;\n              break;\n            case \"children\":\n              propKey = defaultValue;\n              break;\n            case \"dangerouslySetInnerHTML\":\n              if (null != defaultValue) throw Error(formatProdErrorMessage(91));\n              break;\n            default:\n              setProp(domElement, tag, propValue, defaultValue, props, null);\n          }\n      initTextarea(domElement, hasSrc, hasSrcSet, propKey);\n      track(domElement);\n      return;\n    case \"option\":\n      for (checked in props)\n        if (\n          props.hasOwnProperty(checked) &&\n          ((hasSrc = props[checked]), null != hasSrc)\n        )\n          switch (checked) {\n            case \"selected\":\n              domElement.selected =\n                hasSrc &&\n                \"function\" !== typeof hasSrc &&\n                \"symbol\" !== typeof hasSrc;\n              break;\n            default:\n              setProp(domElement, tag, checked, hasSrc, props, null);\n          }\n      return;\n    case \"dialog\":\n      listenToNonDelegatedEvent(\"beforetoggle\", domElement);\n      listenToNonDelegatedEvent(\"toggle\", domElement);\n      listenToNonDelegatedEvent(\"cancel\", domElement);\n      listenToNonDelegatedEvent(\"close\", domElement);\n      break;\n    case \"iframe\":\n    case \"object\":\n      listenToNonDelegatedEvent(\"load\", domElement);\n      break;\n    case \"video\":\n    case \"audio\":\n      for (hasSrc = 0; hasSrc < mediaEventTypes.length; hasSrc++)\n        listenToNonDelegatedEvent(mediaEventTypes[hasSrc], domElement);\n      break;\n    case \"image\":\n      listenToNonDelegatedEvent(\"error\", domElement);\n      listenToNonDelegatedEvent(\"load\", domElement);\n      break;\n    case \"details\":\n      listenToNonDelegatedEvent(\"toggle\", domElement);\n      break;\n    case \"embed\":\n    case \"source\":\n    case \"link\":\n      listenToNonDelegatedEvent(\"error\", domElement),\n        listenToNonDelegatedEvent(\"load\", domElement);\n    case \"area\":\n    case \"base\":\n    case \"br\":\n    case \"col\":\n    case \"hr\":\n    case \"keygen\":\n    case \"meta\":\n    case \"param\":\n    case \"track\":\n    case \"wbr\":\n    case \"menuitem\":\n      for (defaultChecked in props)\n        if (\n          props.hasOwnProperty(defaultChecked) &&\n          ((hasSrc = props[defaultChecked]), null != hasSrc)\n        )\n          switch (defaultChecked) {\n            case \"children\":\n            case \"dangerouslySetInnerHTML\":\n              throw Error(formatProdErrorMessage(137, tag));\n            default:\n              setProp(domElement, tag, defaultChecked, hasSrc, props, null);\n          }\n      return;\n    default:\n      if (isCustomElement(tag)) {\n        for (propValue$188 in props)\n          props.hasOwnProperty(propValue$188) &&\n            ((hasSrc = props[propValue$188]),\n            void 0 !== hasSrc &&\n              setPropOnCustomElement(\n                domElement,\n                tag,\n                propValue$188,\n                hasSrc,\n                props,\n                void 0\n              ));\n        return;\n      }\n  }\n  for (defaultValue in props)\n    props.hasOwnProperty(defaultValue) &&\n      ((hasSrc = props[defaultValue]),\n      null != hasSrc &&\n        setProp(domElement, tag, defaultValue, hasSrc, props, null));\n}\nfunction updateProperties(domElement, tag, lastProps, nextProps) {\n  switch (tag) {\n    case \"div\":\n    case \"span\":\n    case \"svg\":\n    case \"path\":\n    case \"a\":\n    case \"g\":\n    case \"p\":\n    case \"li\":\n      break;\n    case \"input\":\n      var name = null,\n        type = null,\n        value = null,\n        defaultValue = null,\n        lastDefaultValue = null,\n        checked = null,\n        defaultChecked = null;\n      for (propKey in lastProps) {\n        var lastProp = lastProps[propKey];\n        if (lastProps.hasOwnProperty(propKey) && null != lastProp)\n          switch (propKey) {\n            case \"checked\":\n              break;\n            case \"value\":\n              break;\n            case \"defaultValue\":\n              lastDefaultValue = lastProp;\n            default:\n              nextProps.hasOwnProperty(propKey) ||\n                setProp(domElement, tag, propKey, null, nextProps, lastProp);\n          }\n      }\n      for (var propKey$205 in nextProps) {\n        var propKey = nextProps[propKey$205];\n        lastProp = lastProps[propKey$205];\n        if (\n          nextProps.hasOwnProperty(propKey$205) &&\n          (null != propKey || null != lastProp)\n        )\n          switch (propKey$205) {\n            case \"type\":\n              type = propKey;\n              break;\n            case \"name\":\n              name = propKey;\n              break;\n            case \"checked\":\n              checked = propKey;\n              break;\n            case \"defaultChecked\":\n              defaultChecked = propKey;\n              break;\n            case \"value\":\n              value = propKey;\n              break;\n            case \"defaultValue\":\n              defaultValue = propKey;\n              break;\n            case \"children\":\n            case \"dangerouslySetInnerHTML\":\n              if (null != propKey)\n                throw Error(formatProdErrorMessage(137, tag));\n              break;\n            default:\n              propKey !== lastProp &&\n                setProp(\n                  domElement,\n                  tag,\n                  propKey$205,\n                  propKey,\n                  nextProps,\n                  lastProp\n                );\n          }\n      }\n      updateInput(\n        domElement,\n        value,\n        defaultValue,\n        lastDefaultValue,\n        checked,\n        defaultChecked,\n        type,\n        name\n      );\n      return;\n    case \"select\":\n      propKey = value = defaultValue = propKey$205 = null;\n      for (type in lastProps)\n        if (\n          ((lastDefaultValue = lastProps[type]),\n          lastProps.hasOwnProperty(type) && null != lastDefaultValue)\n        )\n          switch (type) {\n            case \"value\":\n              break;\n            case \"multiple\":\n              propKey = lastDefaultValue;\n            default:\n              nextProps.hasOwnProperty(type) ||\n                setProp(\n                  domElement,\n                  tag,\n                  type,\n                  null,\n                  nextProps,\n                  lastDefaultValue\n                );\n          }\n      for (name in nextProps)\n        if (\n          ((type = nextProps[name]),\n          (lastDefaultValue = lastProps[name]),\n          nextProps.hasOwnProperty(name) &&\n            (null != type || null != lastDefaultValue))\n        )\n          switch (name) {\n            case \"value\":\n              propKey$205 = type;\n              break;\n            case \"defaultValue\":\n              defaultValue = type;\n              break;\n            case \"multiple\":\n              value = type;\n            default:\n              type !== lastDefaultValue &&\n                setProp(\n                  domElement,\n                  tag,\n                  name,\n                  type,\n                  nextProps,\n                  lastDefaultValue\n                );\n          }\n      tag = defaultValue;\n      lastProps = value;\n      nextProps = propKey;\n      null != propKey$205\n        ? updateOptions(domElement, !!lastProps, propKey$205, !1)\n        : !!nextProps !== !!lastProps &&\n          (null != tag\n            ? updateOptions(domElement, !!lastProps, tag, !0)\n            : updateOptions(domElement, !!lastProps, lastProps ? [] : \"\", !1));\n      return;\n    case \"textarea\":\n      propKey = propKey$205 = null;\n      for (defaultValue in lastProps)\n        if (\n          ((name = lastProps[defaultValue]),\n          lastProps.hasOwnProperty(defaultValue) &&\n            null != name &&\n            !nextProps.hasOwnProperty(defaultValue))\n        )\n          switch (defaultValue) {\n            case \"value\":\n              break;\n            case \"children\":\n              break;\n            default:\n              setProp(domElement, tag, defaultValue, null, nextProps, name);\n          }\n      for (value in nextProps)\n        if (\n          ((name = nextProps[value]),\n          (type = lastProps[value]),\n          nextProps.hasOwnProperty(value) && (null != name || null != type))\n        )\n          switch (value) {\n            case \"value\":\n              propKey$205 = name;\n              break;\n            case \"defaultValue\":\n              propKey = name;\n              break;\n            case \"children\":\n              break;\n            case \"dangerouslySetInnerHTML\":\n              if (null != name) throw Error(formatProdErrorMessage(91));\n              break;\n            default:\n              name !== type &&\n                setProp(domElement, tag, value, name, nextProps, type);\n          }\n      updateTextarea(domElement, propKey$205, propKey);\n      return;\n    case \"option\":\n      for (var propKey$221 in lastProps)\n        if (\n          ((propKey$205 = lastProps[propKey$221]),\n          lastProps.hasOwnProperty(propKey$221) &&\n            null != propKey$205 &&\n            !nextProps.hasOwnProperty(propKey$221))\n        )\n          switch (propKey$221) {\n            case \"selected\":\n              domElement.selected = !1;\n              break;\n            default:\n              setProp(\n                domElement,\n                tag,\n                propKey$221,\n                null,\n                nextProps,\n                propKey$205\n              );\n          }\n      for (lastDefaultValue in nextProps)\n        if (\n          ((propKey$205 = nextProps[lastDefaultValue]),\n          (propKey = lastProps[lastDefaultValue]),\n          nextProps.hasOwnProperty(lastDefaultValue) &&\n            propKey$205 !== propKey &&\n            (null != propKey$205 || null != propKey))\n        )\n          switch (lastDefaultValue) {\n            case \"selected\":\n              domElement.selected =\n                propKey$205 &&\n                \"function\" !== typeof propKey$205 &&\n                \"symbol\" !== typeof propKey$205;\n              break;\n            default:\n              setProp(\n                domElement,\n                tag,\n                lastDefaultValue,\n                propKey$205,\n                nextProps,\n                propKey\n              );\n          }\n      return;\n    case \"img\":\n    case \"link\":\n    case \"area\":\n    case \"base\":\n    case \"br\":\n    case \"col\":\n    case \"embed\":\n    case \"hr\":\n    case \"keygen\":\n    case \"meta\":\n    case \"param\":\n    case \"source\":\n    case \"track\":\n    case \"wbr\":\n    case \"menuitem\":\n      for (var propKey$226 in lastProps)\n        (propKey$205 = lastProps[propKey$226]),\n          lastProps.hasOwnProperty(propKey$226) &&\n            null != propKey$205 &&\n            !nextProps.hasOwnProperty(propKey$226) &&\n            setProp(domElement, tag, propKey$226, null, nextProps, propKey$205);\n      for (checked in nextProps)\n        if (\n          ((propKey$205 = nextProps[checked]),\n          (propKey = lastProps[checked]),\n          nextProps.hasOwnProperty(checked) &&\n            propKey$205 !== propKey &&\n            (null != propKey$205 || null != propKey))\n        )\n          switch (checked) {\n            case \"children\":\n            case \"dangerouslySetInnerHTML\":\n              if (null != propKey$205)\n                throw Error(formatProdErrorMessage(137, tag));\n              break;\n            default:\n              setProp(\n                domElement,\n                tag,\n                checked,\n                propKey$205,\n                nextProps,\n                propKey\n              );\n          }\n      return;\n    default:\n      if (isCustomElement(tag)) {\n        for (var propKey$231 in lastProps)\n          (propKey$205 = lastProps[propKey$231]),\n            lastProps.hasOwnProperty(propKey$231) &&\n              void 0 !== propKey$205 &&\n              !nextProps.hasOwnProperty(propKey$231) &&\n              setPropOnCustomElement(\n                domElement,\n                tag,\n                propKey$231,\n                void 0,\n                nextProps,\n                propKey$205\n              );\n        for (defaultChecked in nextProps)\n          (propKey$205 = nextProps[defaultChecked]),\n            (propKey = lastProps[defaultChecked]),\n            !nextProps.hasOwnProperty(defaultChecked) ||\n              propKey$205 === propKey ||\n              (void 0 === propKey$205 && void 0 === propKey) ||\n              setPropOnCustomElement(\n                domElement,\n                tag,\n                defaultChecked,\n                propKey$205,\n                nextProps,\n                propKey\n              );\n        return;\n      }\n  }\n  for (var propKey$236 in lastProps)\n    (propKey$205 = lastProps[propKey$236]),\n      lastProps.hasOwnProperty(propKey$236) &&\n        null != propKey$205 &&\n        !nextProps.hasOwnProperty(propKey$236) &&\n        setProp(domElement, tag, propKey$236, null, nextProps, propKey$205);\n  for (lastProp in nextProps)\n    (propKey$205 = nextProps[lastProp]),\n      (propKey = lastProps[lastProp]),\n      !nextProps.hasOwnProperty(lastProp) ||\n        propKey$205 === propKey ||\n        (null == propKey$205 && null == propKey) ||\n        setProp(domElement, tag, lastProp, propKey$205, nextProps, propKey);\n}\nvar eventsEnabled = null,\n  selectionInformation = null;\nfunction getOwnerDocumentFromRootContainer(rootContainerElement) {\n  return 9 === rootContainerElement.nodeType\n    ? rootContainerElement\n    : rootContainerElement.ownerDocument;\n}\nfunction getOwnHostContext(namespaceURI) {\n  switch (namespaceURI) {\n    case \"http://www.w3.org/2000/svg\":\n      return 1;\n    case \"http://www.w3.org/1998/Math/MathML\":\n      return 2;\n    default:\n      return 0;\n  }\n}\nfunction getChildHostContextProd(parentNamespace, type) {\n  if (0 === parentNamespace)\n    switch (type) {\n      case \"svg\":\n        return 1;\n      case \"math\":\n        return 2;\n      default:\n        return 0;\n    }\n  return 1 === parentNamespace && \"foreignObject\" === type\n    ? 0\n    : parentNamespace;\n}\nfunction shouldSetTextContent(type, props) {\n  return (\n    \"textarea\" === type ||\n    \"noscript\" === type ||\n    \"string\" === typeof props.children ||\n    \"number\" === typeof props.children ||\n    \"bigint\" === typeof props.children ||\n    (\"object\" === typeof props.dangerouslySetInnerHTML &&\n      null !== props.dangerouslySetInnerHTML &&\n      null != props.dangerouslySetInnerHTML.__html)\n  );\n}\nvar currentPopstateTransitionEvent = null;\nfunction shouldAttemptEagerTransition() {\n  var event = window.event;\n  if (event && \"popstate\" === event.type) {\n    if (event === currentPopstateTransitionEvent) return !1;\n    currentPopstateTransitionEvent = event;\n    return !0;\n  }\n  currentPopstateTransitionEvent = null;\n  return !1;\n}\nvar scheduleTimeout = \"function\" === typeof setTimeout ? setTimeout : void 0,\n  cancelTimeout = \"function\" === typeof clearTimeout ? clearTimeout : void 0,\n  localPromise = \"function\" === typeof Promise ? Promise : void 0,\n  scheduleMicrotask =\n    \"function\" === typeof queueMicrotask\n      ? queueMicrotask\n      : \"undefined\" !== typeof localPromise\n        ? function (callback) {\n            return localPromise\n              .resolve(null)\n              .then(callback)\n              .catch(handleErrorInNextTick);\n          }\n        : scheduleTimeout;\nfunction handleErrorInNextTick(error) {\n  setTimeout(function () {\n    throw error;\n  });\n}\nfunction isSingletonScope(type) {\n  return \"head\" === type;\n}\nfunction clearSuspenseBoundary(parentInstance, suspenseInstance) {\n  var node = suspenseInstance,\n    possiblePreambleContribution = 0,\n    depth = 0;\n  do {\n    var nextNode = node.nextSibling;\n    parentInstance.removeChild(node);\n    if (nextNode && 8 === nextNode.nodeType)\n      if (((node = nextNode.data), \"/$\" === node)) {\n        if (\n          0 < possiblePreambleContribution &&\n          8 > possiblePreambleContribution\n        ) {\n          node = possiblePreambleContribution;\n          var ownerDocument = parentInstance.ownerDocument;\n          node & 1 && releaseSingletonInstance(ownerDocument.documentElement);\n          node & 2 && releaseSingletonInstance(ownerDocument.body);\n          if (node & 4)\n            for (\n              node = ownerDocument.head,\n                releaseSingletonInstance(node),\n                ownerDocument = node.firstChild;\n              ownerDocument;\n\n            ) {\n              var nextNode$jscomp$0 = ownerDocument.nextSibling,\n                nodeName = ownerDocument.nodeName;\n              ownerDocument[internalHoistableMarker] ||\n                \"SCRIPT\" === nodeName ||\n                \"STYLE\" === nodeName ||\n                (\"LINK\" === nodeName &&\n                  \"stylesheet\" === ownerDocument.rel.toLowerCase()) ||\n                node.removeChild(ownerDocument);\n              ownerDocument = nextNode$jscomp$0;\n            }\n        }\n        if (0 === depth) {\n          parentInstance.removeChild(nextNode);\n          retryIfBlockedOn(suspenseInstance);\n          return;\n        }\n        depth--;\n      } else\n        \"$\" === node || \"$?\" === node || \"$!\" === node\n          ? depth++\n          : (possiblePreambleContribution = node.charCodeAt(0) - 48);\n    else possiblePreambleContribution = 0;\n    node = nextNode;\n  } while (node);\n  retryIfBlockedOn(suspenseInstance);\n}\nfunction clearContainerSparingly(container) {\n  var nextNode = container.firstChild;\n  nextNode && 10 === nextNode.nodeType && (nextNode = nextNode.nextSibling);\n  for (; nextNode; ) {\n    var node = nextNode;\n    nextNode = nextNode.nextSibling;\n    switch (node.nodeName) {\n      case \"HTML\":\n      case \"HEAD\":\n      case \"BODY\":\n        clearContainerSparingly(node);\n        detachDeletedInstance(node);\n        continue;\n      case \"SCRIPT\":\n      case \"STYLE\":\n        continue;\n      case \"LINK\":\n        if (\"stylesheet\" === node.rel.toLowerCase()) continue;\n    }\n    container.removeChild(node);\n  }\n}\nfunction canHydrateInstance(instance, type, props, inRootOrSingleton) {\n  for (; 1 === instance.nodeType; ) {\n    var anyProps = props;\n    if (instance.nodeName.toLowerCase() !== type.toLowerCase()) {\n      if (\n        !inRootOrSingleton &&\n        (\"INPUT\" !== instance.nodeName || \"hidden\" !== instance.type)\n      )\n        break;\n    } else if (!inRootOrSingleton)\n      if (\"input\" === type && \"hidden\" === instance.type) {\n        var name = null == anyProps.name ? null : \"\" + anyProps.name;\n        if (\n          \"hidden\" === anyProps.type &&\n          instance.getAttribute(\"name\") === name\n        )\n          return instance;\n      } else return instance;\n    else if (!instance[internalHoistableMarker])\n      switch (type) {\n        case \"meta\":\n          if (!instance.hasAttribute(\"itemprop\")) break;\n          return instance;\n        case \"link\":\n          name = instance.getAttribute(\"rel\");\n          if (\"stylesheet\" === name && instance.hasAttribute(\"data-precedence\"))\n            break;\n          else if (\n            name !== anyProps.rel ||\n            instance.getAttribute(\"href\") !==\n              (null == anyProps.href || \"\" === anyProps.href\n                ? null\n                : anyProps.href) ||\n            instance.getAttribute(\"crossorigin\") !==\n              (null == anyProps.crossOrigin ? null : anyProps.crossOrigin) ||\n            instance.getAttribute(\"title\") !==\n              (null == anyProps.title ? null : anyProps.title)\n          )\n            break;\n          return instance;\n        case \"style\":\n          if (instance.hasAttribute(\"data-precedence\")) break;\n          return instance;\n        case \"script\":\n          name = instance.getAttribute(\"src\");\n          if (\n            (name !== (null == anyProps.src ? null : anyProps.src) ||\n              instance.getAttribute(\"type\") !==\n                (null == anyProps.type ? null : anyProps.type) ||\n              instance.getAttribute(\"crossorigin\") !==\n                (null == anyProps.crossOrigin ? null : anyProps.crossOrigin)) &&\n            name &&\n            instance.hasAttribute(\"async\") &&\n            !instance.hasAttribute(\"itemprop\")\n          )\n            break;\n          return instance;\n        default:\n          return instance;\n      }\n    instance = getNextHydratable(instance.nextSibling);\n    if (null === instance) break;\n  }\n  return null;\n}\nfunction canHydrateTextInstance(instance, text, inRootOrSingleton) {\n  if (\"\" === text) return null;\n  for (; 3 !== instance.nodeType; ) {\n    if (\n      (1 !== instance.nodeType ||\n        \"INPUT\" !== instance.nodeName ||\n        \"hidden\" !== instance.type) &&\n      !inRootOrSingleton\n    )\n      return null;\n    instance = getNextHydratable(instance.nextSibling);\n    if (null === instance) return null;\n  }\n  return instance;\n}\nfunction isSuspenseInstanceFallback(instance) {\n  return (\n    \"$!\" === instance.data ||\n    (\"$?\" === instance.data && \"complete\" === instance.ownerDocument.readyState)\n  );\n}\nfunction registerSuspenseInstanceRetry(instance, callback) {\n  var ownerDocument = instance.ownerDocument;\n  if (\"$?\" !== instance.data || \"complete\" === ownerDocument.readyState)\n    callback();\n  else {\n    var listener = function () {\n      callback();\n      ownerDocument.removeEventListener(\"DOMContentLoaded\", listener);\n    };\n    ownerDocument.addEventListener(\"DOMContentLoaded\", listener);\n    instance._reactRetry = listener;\n  }\n}\nfunction getNextHydratable(node) {\n  for (; null != node; node = node.nextSibling) {\n    var nodeType = node.nodeType;\n    if (1 === nodeType || 3 === nodeType) break;\n    if (8 === nodeType) {\n      nodeType = node.data;\n      if (\n        \"$\" === nodeType ||\n        \"$!\" === nodeType ||\n        \"$?\" === nodeType ||\n        \"F!\" === nodeType ||\n        \"F\" === nodeType\n      )\n        break;\n      if (\"/$\" === nodeType) return null;\n    }\n  }\n  return node;\n}\nvar previousHydratableOnEnteringScopedSingleton = null;\nfunction getParentSuspenseInstance(targetInstance) {\n  targetInstance = targetInstance.previousSibling;\n  for (var depth = 0; targetInstance; ) {\n    if (8 === targetInstance.nodeType) {\n      var data = targetInstance.data;\n      if (\"$\" === data || \"$!\" === data || \"$?\" === data) {\n        if (0 === depth) return targetInstance;\n        depth--;\n      } else \"/$\" === data && depth++;\n    }\n    targetInstance = targetInstance.previousSibling;\n  }\n  return null;\n}\nfunction resolveSingletonInstance(type, props, rootContainerInstance) {\n  props = getOwnerDocumentFromRootContainer(rootContainerInstance);\n  switch (type) {\n    case \"html\":\n      type = props.documentElement;\n      if (!type) throw Error(formatProdErrorMessage(452));\n      return type;\n    case \"head\":\n      type = props.head;\n      if (!type) throw Error(formatProdErrorMessage(453));\n      return type;\n    case \"body\":\n      type = props.body;\n      if (!type) throw Error(formatProdErrorMessage(454));\n      return type;\n    default:\n      throw Error(formatProdErrorMessage(451));\n  }\n}\nfunction releaseSingletonInstance(instance) {\n  for (var attributes = instance.attributes; attributes.length; )\n    instance.removeAttributeNode(attributes[0]);\n  detachDeletedInstance(instance);\n}\nvar preloadPropsMap = new Map(),\n  preconnectsSet = new Set();\nfunction getHoistableRoot(container) {\n  return \"function\" === typeof container.getRootNode\n    ? container.getRootNode()\n    : 9 === container.nodeType\n      ? container\n      : container.ownerDocument;\n}\nvar previousDispatcher = ReactDOMSharedInternals.d;\nReactDOMSharedInternals.d = {\n  f: flushSyncWork,\n  r: requestFormReset,\n  D: prefetchDNS,\n  C: preconnect,\n  L: preload,\n  m: preloadModule,\n  X: preinitScript,\n  S: preinitStyle,\n  M: preinitModuleScript\n};\nfunction flushSyncWork() {\n  var previousWasRendering = previousDispatcher.f(),\n    wasRendering = flushSyncWork$1();\n  return previousWasRendering || wasRendering;\n}\nfunction requestFormReset(form) {\n  var formInst = getInstanceFromNode(form);\n  null !== formInst && 5 === formInst.tag && \"form\" === formInst.type\n    ? requestFormReset$1(formInst)\n    : previousDispatcher.r(form);\n}\nvar globalDocument = \"undefined\" === typeof document ? null : document;\nfunction preconnectAs(rel, href, crossOrigin) {\n  var ownerDocument = globalDocument;\n  if (ownerDocument && \"string\" === typeof href && href) {\n    var limitedEscapedHref =\n      escapeSelectorAttributeValueInsideDoubleQuotes(href);\n    limitedEscapedHref =\n      'link[rel=\"' + rel + '\"][href=\"' + limitedEscapedHref + '\"]';\n    \"string\" === typeof crossOrigin &&\n      (limitedEscapedHref += '[crossorigin=\"' + crossOrigin + '\"]');\n    preconnectsSet.has(limitedEscapedHref) ||\n      (preconnectsSet.add(limitedEscapedHref),\n      (rel = { rel: rel, crossOrigin: crossOrigin, href: href }),\n      null === ownerDocument.querySelector(limitedEscapedHref) &&\n        ((href = ownerDocument.createElement(\"link\")),\n        setInitialProperties(href, \"link\", rel),\n        markNodeAsHoistable(href),\n        ownerDocument.head.appendChild(href)));\n  }\n}\nfunction prefetchDNS(href) {\n  previousDispatcher.D(href);\n  preconnectAs(\"dns-prefetch\", href, null);\n}\nfunction preconnect(href, crossOrigin) {\n  previousDispatcher.C(href, crossOrigin);\n  preconnectAs(\"preconnect\", href, crossOrigin);\n}\nfunction preload(href, as, options) {\n  previousDispatcher.L(href, as, options);\n  var ownerDocument = globalDocument;\n  if (ownerDocument && href && as) {\n    var preloadSelector =\n      'link[rel=\"preload\"][as=\"' +\n      escapeSelectorAttributeValueInsideDoubleQuotes(as) +\n      '\"]';\n    \"image\" === as\n      ? options && options.imageSrcSet\n        ? ((preloadSelector +=\n            '[imagesrcset=\"' +\n            escapeSelectorAttributeValueInsideDoubleQuotes(\n              options.imageSrcSet\n            ) +\n            '\"]'),\n          \"string\" === typeof options.imageSizes &&\n            (preloadSelector +=\n              '[imagesizes=\"' +\n              escapeSelectorAttributeValueInsideDoubleQuotes(\n                options.imageSizes\n              ) +\n              '\"]'))\n        : (preloadSelector +=\n            '[href=\"' +\n            escapeSelectorAttributeValueInsideDoubleQuotes(href) +\n            '\"]')\n      : (preloadSelector +=\n          '[href=\"' +\n          escapeSelectorAttributeValueInsideDoubleQuotes(href) +\n          '\"]');\n    var key = preloadSelector;\n    switch (as) {\n      case \"style\":\n        key = getStyleKey(href);\n        break;\n      case \"script\":\n        key = getScriptKey(href);\n    }\n    preloadPropsMap.has(key) ||\n      ((href = assign(\n        {\n          rel: \"preload\",\n          href:\n            \"image\" === as && options && options.imageSrcSet ? void 0 : href,\n          as: as\n        },\n        options\n      )),\n      preloadPropsMap.set(key, href),\n      null !== ownerDocument.querySelector(preloadSelector) ||\n        (\"style\" === as &&\n          ownerDocument.querySelector(getStylesheetSelectorFromKey(key))) ||\n        (\"script\" === as &&\n          ownerDocument.querySelector(getScriptSelectorFromKey(key))) ||\n        ((as = ownerDocument.createElement(\"link\")),\n        setInitialProperties(as, \"link\", href),\n        markNodeAsHoistable(as),\n        ownerDocument.head.appendChild(as)));\n  }\n}\nfunction preloadModule(href, options) {\n  previousDispatcher.m(href, options);\n  var ownerDocument = globalDocument;\n  if (ownerDocument && href) {\n    var as = options && \"string\" === typeof options.as ? options.as : \"script\",\n      preloadSelector =\n        'link[rel=\"modulepreload\"][as=\"' +\n        escapeSelectorAttributeValueInsideDoubleQuotes(as) +\n        '\"][href=\"' +\n        escapeSelectorAttributeValueInsideDoubleQuotes(href) +\n        '\"]',\n      key = preloadSelector;\n    switch (as) {\n      case \"audioworklet\":\n      case \"paintworklet\":\n      case \"serviceworker\":\n      case \"sharedworker\":\n      case \"worker\":\n      case \"script\":\n        key = getScriptKey(href);\n    }\n    if (\n      !preloadPropsMap.has(key) &&\n      ((href = assign({ rel: \"modulepreload\", href: href }, options)),\n      preloadPropsMap.set(key, href),\n      null === ownerDocument.querySelector(preloadSelector))\n    ) {\n      switch (as) {\n        case \"audioworklet\":\n        case \"paintworklet\":\n        case \"serviceworker\":\n        case \"sharedworker\":\n        case \"worker\":\n        case \"script\":\n          if (ownerDocument.querySelector(getScriptSelectorFromKey(key)))\n            return;\n      }\n      as = ownerDocument.createElement(\"link\");\n      setInitialProperties(as, \"link\", href);\n      markNodeAsHoistable(as);\n      ownerDocument.head.appendChild(as);\n    }\n  }\n}\nfunction preinitStyle(href, precedence, options) {\n  previousDispatcher.S(href, precedence, options);\n  var ownerDocument = globalDocument;\n  if (ownerDocument && href) {\n    var styles = getResourcesFromRoot(ownerDocument).hoistableStyles,\n      key = getStyleKey(href);\n    precedence = precedence || \"default\";\n    var resource = styles.get(key);\n    if (!resource) {\n      var state = { loading: 0, preload: null };\n      if (\n        (resource = ownerDocument.querySelector(\n          getStylesheetSelectorFromKey(key)\n        ))\n      )\n        state.loading = 5;\n      else {\n        href = assign(\n          { rel: \"stylesheet\", href: href, \"data-precedence\": precedence },\n          options\n        );\n        (options = preloadPropsMap.get(key)) &&\n          adoptPreloadPropsForStylesheet(href, options);\n        var link = (resource = ownerDocument.createElement(\"link\"));\n        markNodeAsHoistable(link);\n        setInitialProperties(link, \"link\", href);\n        link._p = new Promise(function (resolve, reject) {\n          link.onload = resolve;\n          link.onerror = reject;\n        });\n        link.addEventListener(\"load\", function () {\n          state.loading |= 1;\n        });\n        link.addEventListener(\"error\", function () {\n          state.loading |= 2;\n        });\n        state.loading |= 4;\n        insertStylesheet(resource, precedence, ownerDocument);\n      }\n      resource = {\n        type: \"stylesheet\",\n        instance: resource,\n        count: 1,\n        state: state\n      };\n      styles.set(key, resource);\n    }\n  }\n}\nfunction preinitScript(src, options) {\n  previousDispatcher.X(src, options);\n  var ownerDocument = globalDocument;\n  if (ownerDocument && src) {\n    var scripts = getResourcesFromRoot(ownerDocument).hoistableScripts,\n      key = getScriptKey(src),\n      resource = scripts.get(key);\n    resource ||\n      ((resource = ownerDocument.querySelector(getScriptSelectorFromKey(key))),\n      resource ||\n        ((src = assign({ src: src, async: !0 }, options)),\n        (options = preloadPropsMap.get(key)) &&\n          adoptPreloadPropsForScript(src, options),\n        (resource = ownerDocument.createElement(\"script\")),\n        markNodeAsHoistable(resource),\n        setInitialProperties(resource, \"link\", src),\n        ownerDocument.head.appendChild(resource)),\n      (resource = {\n        type: \"script\",\n        instance: resource,\n        count: 1,\n        state: null\n      }),\n      scripts.set(key, resource));\n  }\n}\nfunction preinitModuleScript(src, options) {\n  previousDispatcher.M(src, options);\n  var ownerDocument = globalDocument;\n  if (ownerDocument && src) {\n    var scripts = getResourcesFromRoot(ownerDocument).hoistableScripts,\n      key = getScriptKey(src),\n      resource = scripts.get(key);\n    resource ||\n      ((resource = ownerDocument.querySelector(getScriptSelectorFromKey(key))),\n      resource ||\n        ((src = assign({ src: src, async: !0, type: \"module\" }, options)),\n        (options = preloadPropsMap.get(key)) &&\n          adoptPreloadPropsForScript(src, options),\n        (resource = ownerDocument.createElement(\"script\")),\n        markNodeAsHoistable(resource),\n        setInitialProperties(resource, \"link\", src),\n        ownerDocument.head.appendChild(resource)),\n      (resource = {\n        type: \"script\",\n        instance: resource,\n        count: 1,\n        state: null\n      }),\n      scripts.set(key, resource));\n  }\n}\nfunction getResource(type, currentProps, pendingProps, currentResource) {\n  var JSCompiler_inline_result = (JSCompiler_inline_result =\n    rootInstanceStackCursor.current)\n    ? getHoistableRoot(JSCompiler_inline_result)\n    : null;\n  if (!JSCompiler_inline_result) throw Error(formatProdErrorMessage(446));\n  switch (type) {\n    case \"meta\":\n    case \"title\":\n      return null;\n    case \"style\":\n      return \"string\" === typeof pendingProps.precedence &&\n        \"string\" === typeof pendingProps.href\n        ? ((currentProps = getStyleKey(pendingProps.href)),\n          (pendingProps = getResourcesFromRoot(\n            JSCompiler_inline_result\n          ).hoistableStyles),\n          (currentResource = pendingProps.get(currentProps)),\n          currentResource ||\n            ((currentResource = {\n              type: \"style\",\n              instance: null,\n              count: 0,\n              state: null\n            }),\n            pendingProps.set(currentProps, currentResource)),\n          currentResource)\n        : { type: \"void\", instance: null, count: 0, state: null };\n    case \"link\":\n      if (\n        \"stylesheet\" === pendingProps.rel &&\n        \"string\" === typeof pendingProps.href &&\n        \"string\" === typeof pendingProps.precedence\n      ) {\n        type = getStyleKey(pendingProps.href);\n        var styles$244 = getResourcesFromRoot(\n            JSCompiler_inline_result\n          ).hoistableStyles,\n          resource$245 = styles$244.get(type);\n        resource$245 ||\n          ((JSCompiler_inline_result =\n            JSCompiler_inline_result.ownerDocument || JSCompiler_inline_result),\n          (resource$245 = {\n            type: \"stylesheet\",\n            instance: null,\n            count: 0,\n            state: { loading: 0, preload: null }\n          }),\n          styles$244.set(type, resource$245),\n          (styles$244 = JSCompiler_inline_result.querySelector(\n            getStylesheetSelectorFromKey(type)\n          )) &&\n            !styles$244._p &&\n            ((resource$245.instance = styles$244),\n            (resource$245.state.loading = 5)),\n          preloadPropsMap.has(type) ||\n            ((pendingProps = {\n              rel: \"preload\",\n              as: \"style\",\n              href: pendingProps.href,\n              crossOrigin: pendingProps.crossOrigin,\n              integrity: pendingProps.integrity,\n              media: pendingProps.media,\n              hrefLang: pendingProps.hrefLang,\n              referrerPolicy: pendingProps.referrerPolicy\n            }),\n            preloadPropsMap.set(type, pendingProps),\n            styles$244 ||\n              preloadStylesheet(\n                JSCompiler_inline_result,\n                type,\n                pendingProps,\n                resource$245.state\n              )));\n        if (currentProps && null === currentResource)\n          throw Error(formatProdErrorMessage(528, \"\"));\n        return resource$245;\n      }\n      if (currentProps && null !== currentResource)\n        throw Error(formatProdErrorMessage(529, \"\"));\n      return null;\n    case \"script\":\n      return (\n        (currentProps = pendingProps.async),\n        (pendingProps = pendingProps.src),\n        \"string\" === typeof pendingProps &&\n        currentProps &&\n        \"function\" !== typeof currentProps &&\n        \"symbol\" !== typeof currentProps\n          ? ((currentProps = getScriptKey(pendingProps)),\n            (pendingProps = getResourcesFromRoot(\n              JSCompiler_inline_result\n            ).hoistableScripts),\n            (currentResource = pendingProps.get(currentProps)),\n            currentResource ||\n              ((currentResource = {\n                type: \"script\",\n                instance: null,\n                count: 0,\n                state: null\n              }),\n              pendingProps.set(currentProps, currentResource)),\n            currentResource)\n          : { type: \"void\", instance: null, count: 0, state: null }\n      );\n    default:\n      throw Error(formatProdErrorMessage(444, type));\n  }\n}\nfunction getStyleKey(href) {\n  return 'href=\"' + escapeSelectorAttributeValueInsideDoubleQuotes(href) + '\"';\n}\nfunction getStylesheetSelectorFromKey(key) {\n  return 'link[rel=\"stylesheet\"][' + key + \"]\";\n}\nfunction stylesheetPropsFromRawProps(rawProps) {\n  return assign({}, rawProps, {\n    \"data-precedence\": rawProps.precedence,\n    precedence: null\n  });\n}\nfunction preloadStylesheet(ownerDocument, key, preloadProps, state) {\n  ownerDocument.querySelector('link[rel=\"preload\"][as=\"style\"][' + key + \"]\")\n    ? (state.loading = 1)\n    : ((key = ownerDocument.createElement(\"link\")),\n      (state.preload = key),\n      key.addEventListener(\"load\", function () {\n        return (state.loading |= 1);\n      }),\n      key.addEventListener(\"error\", function () {\n        return (state.loading |= 2);\n      }),\n      setInitialProperties(key, \"link\", preloadProps),\n      markNodeAsHoistable(key),\n      ownerDocument.head.appendChild(key));\n}\nfunction getScriptKey(src) {\n  return '[src=\"' + escapeSelectorAttributeValueInsideDoubleQuotes(src) + '\"]';\n}\nfunction getScriptSelectorFromKey(key) {\n  return \"script[async]\" + key;\n}\nfunction acquireResource(hoistableRoot, resource, props) {\n  resource.count++;\n  if (null === resource.instance)\n    switch (resource.type) {\n      case \"style\":\n        var instance = hoistableRoot.querySelector(\n          'style[data-href~=\"' +\n            escapeSelectorAttributeValueInsideDoubleQuotes(props.href) +\n            '\"]'\n        );\n        if (instance)\n          return (\n            (resource.instance = instance),\n            markNodeAsHoistable(instance),\n            instance\n          );\n        var styleProps = assign({}, props, {\n          \"data-href\": props.href,\n          \"data-precedence\": props.precedence,\n          href: null,\n          precedence: null\n        });\n        instance = (hoistableRoot.ownerDocument || hoistableRoot).createElement(\n          \"style\"\n        );\n        markNodeAsHoistable(instance);\n        setInitialProperties(instance, \"style\", styleProps);\n        insertStylesheet(instance, props.precedence, hoistableRoot);\n        return (resource.instance = instance);\n      case \"stylesheet\":\n        styleProps = getStyleKey(props.href);\n        var instance$250 = hoistableRoot.querySelector(\n          getStylesheetSelectorFromKey(styleProps)\n        );\n        if (instance$250)\n          return (\n            (resource.state.loading |= 4),\n            (resource.instance = instance$250),\n            markNodeAsHoistable(instance$250),\n            instance$250\n          );\n        instance = stylesheetPropsFromRawProps(props);\n        (styleProps = preloadPropsMap.get(styleProps)) &&\n          adoptPreloadPropsForStylesheet(instance, styleProps);\n        instance$250 = (\n          hoistableRoot.ownerDocument || hoistableRoot\n        ).createElement(\"link\");\n        markNodeAsHoistable(instance$250);\n        var linkInstance = instance$250;\n        linkInstance._p = new Promise(function (resolve, reject) {\n          linkInstance.onload = resolve;\n          linkInstance.onerror = reject;\n        });\n        setInitialProperties(instance$250, \"link\", instance);\n        resource.state.loading |= 4;\n        insertStylesheet(instance$250, props.precedence, hoistableRoot);\n        return (resource.instance = instance$250);\n      case \"script\":\n        instance$250 = getScriptKey(props.src);\n        if (\n          (styleProps = hoistableRoot.querySelector(\n            getScriptSelectorFromKey(instance$250)\n          ))\n        )\n          return (\n            (resource.instance = styleProps),\n            markNodeAsHoistable(styleProps),\n            styleProps\n          );\n        instance = props;\n        if ((styleProps = preloadPropsMap.get(instance$250)))\n          (instance = assign({}, props)),\n            adoptPreloadPropsForScript(instance, styleProps);\n        hoistableRoot = hoistableRoot.ownerDocument || hoistableRoot;\n        styleProps = hoistableRoot.createElement(\"script\");\n        markNodeAsHoistable(styleProps);\n        setInitialProperties(styleProps, \"link\", instance);\n        hoistableRoot.head.appendChild(styleProps);\n        return (resource.instance = styleProps);\n      case \"void\":\n        return null;\n      default:\n        throw Error(formatProdErrorMessage(443, resource.type));\n    }\n  else\n    \"stylesheet\" === resource.type &&\n      0 === (resource.state.loading & 4) &&\n      ((instance = resource.instance),\n      (resource.state.loading |= 4),\n      insertStylesheet(instance, props.precedence, hoistableRoot));\n  return resource.instance;\n}\nfunction insertStylesheet(instance, precedence, root) {\n  for (\n    var nodes = root.querySelectorAll(\n        'link[rel=\"stylesheet\"][data-precedence],style[data-precedence]'\n      ),\n      last = nodes.length ? nodes[nodes.length - 1] : null,\n      prior = last,\n      i = 0;\n    i < nodes.length;\n    i++\n  ) {\n    var node = nodes[i];\n    if (node.dataset.precedence === precedence) prior = node;\n    else if (prior !== last) break;\n  }\n  prior\n    ? prior.parentNode.insertBefore(instance, prior.nextSibling)\n    : ((precedence = 9 === root.nodeType ? root.head : root),\n      precedence.insertBefore(instance, precedence.firstChild));\n}\nfunction adoptPreloadPropsForStylesheet(stylesheetProps, preloadProps) {\n  null == stylesheetProps.crossOrigin &&\n    (stylesheetProps.crossOrigin = preloadProps.crossOrigin);\n  null == stylesheetProps.referrerPolicy &&\n    (stylesheetProps.referrerPolicy = preloadProps.referrerPolicy);\n  null == stylesheetProps.title && (stylesheetProps.title = preloadProps.title);\n}\nfunction adoptPreloadPropsForScript(scriptProps, preloadProps) {\n  null == scriptProps.crossOrigin &&\n    (scriptProps.crossOrigin = preloadProps.crossOrigin);\n  null == scriptProps.referrerPolicy &&\n    (scriptProps.referrerPolicy = preloadProps.referrerPolicy);\n  null == scriptProps.integrity &&\n    (scriptProps.integrity = preloadProps.integrity);\n}\nvar tagCaches = null;\nfunction getHydratableHoistableCache(type, keyAttribute, ownerDocument) {\n  if (null === tagCaches) {\n    var cache = new Map();\n    var caches = (tagCaches = new Map());\n    caches.set(ownerDocument, cache);\n  } else\n    (caches = tagCaches),\n      (cache = caches.get(ownerDocument)),\n      cache || ((cache = new Map()), caches.set(ownerDocument, cache));\n  if (cache.has(type)) return cache;\n  cache.set(type, null);\n  ownerDocument = ownerDocument.getElementsByTagName(type);\n  for (caches = 0; caches < ownerDocument.length; caches++) {\n    var node = ownerDocument[caches];\n    if (\n      !(\n        node[internalHoistableMarker] ||\n        node[internalInstanceKey] ||\n        (\"link\" === type && \"stylesheet\" === node.getAttribute(\"rel\"))\n      ) &&\n      \"http://www.w3.org/2000/svg\" !== node.namespaceURI\n    ) {\n      var nodeKey = node.getAttribute(keyAttribute) || \"\";\n      nodeKey = type + nodeKey;\n      var existing = cache.get(nodeKey);\n      existing ? existing.push(node) : cache.set(nodeKey, [node]);\n    }\n  }\n  return cache;\n}\nfunction mountHoistable(hoistableRoot, type, instance) {\n  hoistableRoot = hoistableRoot.ownerDocument || hoistableRoot;\n  hoistableRoot.head.insertBefore(\n    instance,\n    \"title\" === type ? hoistableRoot.querySelector(\"head > title\") : null\n  );\n}\nfunction isHostHoistableType(type, props, hostContext) {\n  if (1 === hostContext || null != props.itemProp) return !1;\n  switch (type) {\n    case \"meta\":\n    case \"title\":\n      return !0;\n    case \"style\":\n      if (\n        \"string\" !== typeof props.precedence ||\n        \"string\" !== typeof props.href ||\n        \"\" === props.href\n      )\n        break;\n      return !0;\n    case \"link\":\n      if (\n        \"string\" !== typeof props.rel ||\n        \"string\" !== typeof props.href ||\n        \"\" === props.href ||\n        props.onLoad ||\n        props.onError\n      )\n        break;\n      switch (props.rel) {\n        case \"stylesheet\":\n          return (\n            (type = props.disabled),\n            \"string\" === typeof props.precedence && null == type\n          );\n        default:\n          return !0;\n      }\n    case \"script\":\n      if (\n        props.async &&\n        \"function\" !== typeof props.async &&\n        \"symbol\" !== typeof props.async &&\n        !props.onLoad &&\n        !props.onError &&\n        props.src &&\n        \"string\" === typeof props.src\n      )\n        return !0;\n  }\n  return !1;\n}\nfunction preloadResource(resource) {\n  return \"stylesheet\" === resource.type && 0 === (resource.state.loading & 3)\n    ? !1\n    : !0;\n}\nvar suspendedState = null;\nfunction noop() {}\nfunction suspendResource(hoistableRoot, resource, props) {\n  if (null === suspendedState) throw Error(formatProdErrorMessage(475));\n  var state = suspendedState;\n  if (\n    \"stylesheet\" === resource.type &&\n    (\"string\" !== typeof props.media ||\n      !1 !== matchMedia(props.media).matches) &&\n    0 === (resource.state.loading & 4)\n  ) {\n    if (null === resource.instance) {\n      var key = getStyleKey(props.href),\n        instance = hoistableRoot.querySelector(\n          getStylesheetSelectorFromKey(key)\n        );\n      if (instance) {\n        hoistableRoot = instance._p;\n        null !== hoistableRoot &&\n          \"object\" === typeof hoistableRoot &&\n          \"function\" === typeof hoistableRoot.then &&\n          (state.count++,\n          (state = onUnsuspend.bind(state)),\n          hoistableRoot.then(state, state));\n        resource.state.loading |= 4;\n        resource.instance = instance;\n        markNodeAsHoistable(instance);\n        return;\n      }\n      instance = hoistableRoot.ownerDocument || hoistableRoot;\n      props = stylesheetPropsFromRawProps(props);\n      (key = preloadPropsMap.get(key)) &&\n        adoptPreloadPropsForStylesheet(props, key);\n      instance = instance.createElement(\"link\");\n      markNodeAsHoistable(instance);\n      var linkInstance = instance;\n      linkInstance._p = new Promise(function (resolve, reject) {\n        linkInstance.onload = resolve;\n        linkInstance.onerror = reject;\n      });\n      setInitialProperties(instance, \"link\", props);\n      resource.instance = instance;\n    }\n    null === state.stylesheets && (state.stylesheets = new Map());\n    state.stylesheets.set(resource, hoistableRoot);\n    (hoistableRoot = resource.state.preload) &&\n      0 === (resource.state.loading & 3) &&\n      (state.count++,\n      (resource = onUnsuspend.bind(state)),\n      hoistableRoot.addEventListener(\"load\", resource),\n      hoistableRoot.addEventListener(\"error\", resource));\n  }\n}\nfunction waitForCommitToBeReady() {\n  if (null === suspendedState) throw Error(formatProdErrorMessage(475));\n  var state = suspendedState;\n  state.stylesheets &&\n    0 === state.count &&\n    insertSuspendedStylesheets(state, state.stylesheets);\n  return 0 < state.count\n    ? function (commit) {\n        var stylesheetTimer = setTimeout(function () {\n          state.stylesheets &&\n            insertSuspendedStylesheets(state, state.stylesheets);\n          if (state.unsuspend) {\n            var unsuspend = state.unsuspend;\n            state.unsuspend = null;\n            unsuspend();\n          }\n        }, 6e4);\n        state.unsuspend = commit;\n        return function () {\n          state.unsuspend = null;\n          clearTimeout(stylesheetTimer);\n        };\n      }\n    : null;\n}\nfunction onUnsuspend() {\n  this.count--;\n  if (0 === this.count)\n    if (this.stylesheets) insertSuspendedStylesheets(this, this.stylesheets);\n    else if (this.unsuspend) {\n      var unsuspend = this.unsuspend;\n      this.unsuspend = null;\n      unsuspend();\n    }\n}\nvar precedencesByRoot = null;\nfunction insertSuspendedStylesheets(state, resources) {\n  state.stylesheets = null;\n  null !== state.unsuspend &&\n    (state.count++,\n    (precedencesByRoot = new Map()),\n    resources.forEach(insertStylesheetIntoRoot, state),\n    (precedencesByRoot = null),\n    onUnsuspend.call(state));\n}\nfunction insertStylesheetIntoRoot(root, resource) {\n  if (!(resource.state.loading & 4)) {\n    var precedences = precedencesByRoot.get(root);\n    if (precedences) var last = precedences.get(null);\n    else {\n      precedences = new Map();\n      precedencesByRoot.set(root, precedences);\n      for (\n        var nodes = root.querySelectorAll(\n            \"link[data-precedence],style[data-precedence]\"\n          ),\n          i = 0;\n        i < nodes.length;\n        i++\n      ) {\n        var node = nodes[i];\n        if (\n          \"LINK\" === node.nodeName ||\n          \"not all\" !== node.getAttribute(\"media\")\n        )\n          precedences.set(node.dataset.precedence, node), (last = node);\n      }\n      last && precedences.set(null, last);\n    }\n    nodes = resource.instance;\n    node = nodes.getAttribute(\"data-precedence\");\n    i = precedences.get(node) || last;\n    i === last && precedences.set(null, nodes);\n    precedences.set(node, nodes);\n    this.count++;\n    last = onUnsuspend.bind(this);\n    nodes.addEventListener(\"load\", last);\n    nodes.addEventListener(\"error\", last);\n    i\n      ? i.parentNode.insertBefore(nodes, i.nextSibling)\n      : ((root = 9 === root.nodeType ? root.head : root),\n        root.insertBefore(nodes, root.firstChild));\n    resource.state.loading |= 4;\n  }\n}\nvar HostTransitionContext = {\n  $$typeof: REACT_CONTEXT_TYPE,\n  Provider: null,\n  Consumer: null,\n  _currentValue: sharedNotPendingObject,\n  _currentValue2: sharedNotPendingObject,\n  _threadCount: 0\n};\nfunction FiberRootNode(\n  containerInfo,\n  tag,\n  hydrate,\n  identifierPrefix,\n  onUncaughtError,\n  onCaughtError,\n  onRecoverableError,\n  formState\n) {\n  this.tag = 1;\n  this.containerInfo = containerInfo;\n  this.pingCache = this.current = this.pendingChildren = null;\n  this.timeoutHandle = -1;\n  this.callbackNode =\n    this.next =\n    this.pendingContext =\n    this.context =\n    this.cancelPendingCommit =\n      null;\n  this.callbackPriority = 0;\n  this.expirationTimes = createLaneMap(-1);\n  this.entangledLanes =\n    this.shellSuspendCounter =\n    this.errorRecoveryDisabledLanes =\n    this.expiredLanes =\n    this.warmLanes =\n    this.pingedLanes =\n    this.suspendedLanes =\n    this.pendingLanes =\n      0;\n  this.entanglements = createLaneMap(0);\n  this.hiddenUpdates = createLaneMap(null);\n  this.identifierPrefix = identifierPrefix;\n  this.onUncaughtError = onUncaughtError;\n  this.onCaughtError = onCaughtError;\n  this.onRecoverableError = onRecoverableError;\n  this.pooledCache = null;\n  this.pooledCacheLanes = 0;\n  this.formState = formState;\n  this.incompleteTransitions = new Map();\n}\nfunction createFiberRoot(\n  containerInfo,\n  tag,\n  hydrate,\n  initialChildren,\n  hydrationCallbacks,\n  isStrictMode,\n  identifierPrefix,\n  onUncaughtError,\n  onCaughtError,\n  onRecoverableError,\n  transitionCallbacks,\n  formState\n) {\n  containerInfo = new FiberRootNode(\n    containerInfo,\n    tag,\n    hydrate,\n    identifierPrefix,\n    onUncaughtError,\n    onCaughtError,\n    onRecoverableError,\n    formState\n  );\n  tag = 1;\n  !0 === isStrictMode && (tag |= 24);\n  isStrictMode = createFiberImplClass(3, null, null, tag);\n  containerInfo.current = isStrictMode;\n  isStrictMode.stateNode = containerInfo;\n  tag = createCache();\n  tag.refCount++;\n  containerInfo.pooledCache = tag;\n  tag.refCount++;\n  isStrictMode.memoizedState = {\n    element: initialChildren,\n    isDehydrated: hydrate,\n    cache: tag\n  };\n  initializeUpdateQueue(isStrictMode);\n  return containerInfo;\n}\nfunction getContextForSubtree(parentComponent) {\n  if (!parentComponent) return emptyContextObject;\n  parentComponent = emptyContextObject;\n  return parentComponent;\n}\nfunction updateContainerImpl(\n  rootFiber,\n  lane,\n  element,\n  container,\n  parentComponent,\n  callback\n) {\n  parentComponent = getContextForSubtree(parentComponent);\n  null === container.context\n    ? (container.context = parentComponent)\n    : (container.pendingContext = parentComponent);\n  container = createUpdate(lane);\n  container.payload = { element: element };\n  callback = void 0 === callback ? null : callback;\n  null !== callback && (container.callback = callback);\n  element = enqueueUpdate(rootFiber, container, lane);\n  null !== element &&\n    (scheduleUpdateOnFiber(element, rootFiber, lane),\n    entangleTransitions(element, rootFiber, lane));\n}\nfunction markRetryLaneImpl(fiber, retryLane) {\n  fiber = fiber.memoizedState;\n  if (null !== fiber && null !== fiber.dehydrated) {\n    var a = fiber.retryLane;\n    fiber.retryLane = 0 !== a && a < retryLane ? a : retryLane;\n  }\n}\nfunction markRetryLaneIfNotHydrated(fiber, retryLane) {\n  markRetryLaneImpl(fiber, retryLane);\n  (fiber = fiber.alternate) && markRetryLaneImpl(fiber, retryLane);\n}\nfunction attemptContinuousHydration(fiber) {\n  if (13 === fiber.tag) {\n    var root = enqueueConcurrentRenderForLane(fiber, 67108864);\n    null !== root && scheduleUpdateOnFiber(root, fiber, 67108864);\n    markRetryLaneIfNotHydrated(fiber, 67108864);\n  }\n}\nvar _enabled = !0;\nfunction dispatchDiscreteEvent(\n  domEventName,\n  eventSystemFlags,\n  container,\n  nativeEvent\n) {\n  var prevTransition = ReactSharedInternals.T;\n  ReactSharedInternals.T = null;\n  var previousPriority = ReactDOMSharedInternals.p;\n  try {\n    (ReactDOMSharedInternals.p = 2),\n      dispatchEvent(domEventName, eventSystemFlags, container, nativeEvent);\n  } finally {\n    (ReactDOMSharedInternals.p = previousPriority),\n      (ReactSharedInternals.T = prevTransition);\n  }\n}\nfunction dispatchContinuousEvent(\n  domEventName,\n  eventSystemFlags,\n  container,\n  nativeEvent\n) {\n  var prevTransition = ReactSharedInternals.T;\n  ReactSharedInternals.T = null;\n  var previousPriority = ReactDOMSharedInternals.p;\n  try {\n    (ReactDOMSharedInternals.p = 8),\n      dispatchEvent(domEventName, eventSystemFlags, container, nativeEvent);\n  } finally {\n    (ReactDOMSharedInternals.p = previousPriority),\n      (ReactSharedInternals.T = prevTransition);\n  }\n}\nfunction dispatchEvent(\n  domEventName,\n  eventSystemFlags,\n  targetContainer,\n  nativeEvent\n) {\n  if (_enabled) {\n    var blockedOn = findInstanceBlockingEvent(nativeEvent);\n    if (null === blockedOn)\n      dispatchEventForPluginEventSystem(\n        domEventName,\n        eventSystemFlags,\n        nativeEvent,\n        return_targetInst,\n        targetContainer\n      ),\n        clearIfContinuousEvent(domEventName, nativeEvent);\n    else if (\n      queueIfContinuousEvent(\n        blockedOn,\n        domEventName,\n        eventSystemFlags,\n        targetContainer,\n        nativeEvent\n      )\n    )\n      nativeEvent.stopPropagation();\n    else if (\n      (clearIfContinuousEvent(domEventName, nativeEvent),\n      eventSystemFlags & 4 &&\n        -1 < discreteReplayableEvents.indexOf(domEventName))\n    ) {\n      for (; null !== blockedOn; ) {\n        var fiber = getInstanceFromNode(blockedOn);\n        if (null !== fiber)\n          switch (fiber.tag) {\n            case 3:\n              fiber = fiber.stateNode;\n              if (fiber.current.memoizedState.isDehydrated) {\n                var lanes = getHighestPriorityLanes(fiber.pendingLanes);\n                if (0 !== lanes) {\n                  var root = fiber;\n                  root.pendingLanes |= 2;\n                  for (root.entangledLanes |= 2; lanes; ) {\n                    var lane = 1 << (31 - clz32(lanes));\n                    root.entanglements[1] |= lane;\n                    lanes &= ~lane;\n                  }\n                  ensureRootIsScheduled(fiber);\n                  0 === (executionContext & 6) &&\n                    ((workInProgressRootRenderTargetTime = now() + 500),\n                    flushSyncWorkAcrossRoots_impl(0, !1));\n                }\n              }\n              break;\n            case 13:\n              (root = enqueueConcurrentRenderForLane(fiber, 2)),\n                null !== root && scheduleUpdateOnFiber(root, fiber, 2),\n                flushSyncWork$1(),\n                markRetryLaneIfNotHydrated(fiber, 2);\n          }\n        fiber = findInstanceBlockingEvent(nativeEvent);\n        null === fiber &&\n          dispatchEventForPluginEventSystem(\n            domEventName,\n            eventSystemFlags,\n            nativeEvent,\n            return_targetInst,\n            targetContainer\n          );\n        if (fiber === blockedOn) break;\n        blockedOn = fiber;\n      }\n      null !== blockedOn && nativeEvent.stopPropagation();\n    } else\n      dispatchEventForPluginEventSystem(\n        domEventName,\n        eventSystemFlags,\n        nativeEvent,\n        null,\n        targetContainer\n      );\n  }\n}\nfunction findInstanceBlockingEvent(nativeEvent) {\n  nativeEvent = getEventTarget(nativeEvent);\n  return findInstanceBlockingTarget(nativeEvent);\n}\nvar return_targetInst = null;\nfunction findInstanceBlockingTarget(targetNode) {\n  return_targetInst = null;\n  targetNode = getClosestInstanceFromNode(targetNode);\n  if (null !== targetNode) {\n    var nearestMounted = getNearestMountedFiber(targetNode);\n    if (null === nearestMounted) targetNode = null;\n    else {\n      var tag = nearestMounted.tag;\n      if (13 === tag) {\n        targetNode = getSuspenseInstanceFromFiber(nearestMounted);\n        if (null !== targetNode) return targetNode;\n        targetNode = null;\n      } else if (3 === tag) {\n        if (nearestMounted.stateNode.current.memoizedState.isDehydrated)\n          return 3 === nearestMounted.tag\n            ? nearestMounted.stateNode.containerInfo\n            : null;\n        targetNode = null;\n      } else nearestMounted !== targetNode && (targetNode = null);\n    }\n  }\n  return_targetInst = targetNode;\n  return null;\n}\nfunction getEventPriority(domEventName) {\n  switch (domEventName) {\n    case \"beforetoggle\":\n    case \"cancel\":\n    case \"click\":\n    case \"close\":\n    case \"contextmenu\":\n    case \"copy\":\n    case \"cut\":\n    case \"auxclick\":\n    case \"dblclick\":\n    case \"dragend\":\n    case \"dragstart\":\n    case \"drop\":\n    case \"focusin\":\n    case \"focusout\":\n    case \"input\":\n    case \"invalid\":\n    case \"keydown\":\n    case \"keypress\":\n    case \"keyup\":\n    case \"mousedown\":\n    case \"mouseup\":\n    case \"paste\":\n    case \"pause\":\n    case \"play\":\n    case \"pointercancel\":\n    case \"pointerdown\":\n    case \"pointerup\":\n    case \"ratechange\":\n    case \"reset\":\n    case \"resize\":\n    case \"seeked\":\n    case \"submit\":\n    case \"toggle\":\n    case \"touchcancel\":\n    case \"touchend\":\n    case \"touchstart\":\n    case \"volumechange\":\n    case \"change\":\n    case \"selectionchange\":\n    case \"textInput\":\n    case \"compositionstart\":\n    case \"compositionend\":\n    case \"compositionupdate\":\n    case \"beforeblur\":\n    case \"afterblur\":\n    case \"beforeinput\":\n    case \"blur\":\n    case \"fullscreenchange\":\n    case \"focus\":\n    case \"hashchange\":\n    case \"popstate\":\n    case \"select\":\n    case \"selectstart\":\n      return 2;\n    case \"drag\":\n    case \"dragenter\":\n    case \"dragexit\":\n    case \"dragleave\":\n    case \"dragover\":\n    case \"mousemove\":\n    case \"mouseout\":\n    case \"mouseover\":\n    case \"pointermove\":\n    case \"pointerout\":\n    case \"pointerover\":\n    case \"scroll\":\n    case \"touchmove\":\n    case \"wheel\":\n    case \"mouseenter\":\n    case \"mouseleave\":\n    case \"pointerenter\":\n    case \"pointerleave\":\n      return 8;\n    case \"message\":\n      switch (getCurrentPriorityLevel()) {\n        case ImmediatePriority:\n          return 2;\n        case UserBlockingPriority:\n          return 8;\n        case NormalPriority$1:\n        case LowPriority:\n          return 32;\n        case IdlePriority:\n          return 268435456;\n        default:\n          return 32;\n      }\n    default:\n      return 32;\n  }\n}\nvar hasScheduledReplayAttempt = !1,\n  queuedFocus = null,\n  queuedDrag = null,\n  queuedMouse = null,\n  queuedPointers = new Map(),\n  queuedPointerCaptures = new Map(),\n  queuedExplicitHydrationTargets = [],\n  discreteReplayableEvents =\n    \"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset\".split(\n      \" \"\n    );\nfunction clearIfContinuousEvent(domEventName, nativeEvent) {\n  switch (domEventName) {\n    case \"focusin\":\n    case \"focusout\":\n      queuedFocus = null;\n      break;\n    case \"dragenter\":\n    case \"dragleave\":\n      queuedDrag = null;\n      break;\n    case \"mouseover\":\n    case \"mouseout\":\n      queuedMouse = null;\n      break;\n    case \"pointerover\":\n    case \"pointerout\":\n      queuedPointers.delete(nativeEvent.pointerId);\n      break;\n    case \"gotpointercapture\":\n    case \"lostpointercapture\":\n      queuedPointerCaptures.delete(nativeEvent.pointerId);\n  }\n}\nfunction accumulateOrCreateContinuousQueuedReplayableEvent(\n  existingQueuedEvent,\n  blockedOn,\n  domEventName,\n  eventSystemFlags,\n  targetContainer,\n  nativeEvent\n) {\n  if (\n    null === existingQueuedEvent ||\n    existingQueuedEvent.nativeEvent !== nativeEvent\n  )\n    return (\n      (existingQueuedEvent = {\n        blockedOn: blockedOn,\n        domEventName: domEventName,\n        eventSystemFlags: eventSystemFlags,\n        nativeEvent: nativeEvent,\n        targetContainers: [targetContainer]\n      }),\n      null !== blockedOn &&\n        ((blockedOn = getInstanceFromNode(blockedOn)),\n        null !== blockedOn && attemptContinuousHydration(blockedOn)),\n      existingQueuedEvent\n    );\n  existingQueuedEvent.eventSystemFlags |= eventSystemFlags;\n  blockedOn = existingQueuedEvent.targetContainers;\n  null !== targetContainer &&\n    -1 === blockedOn.indexOf(targetContainer) &&\n    blockedOn.push(targetContainer);\n  return existingQueuedEvent;\n}\nfunction queueIfContinuousEvent(\n  blockedOn,\n  domEventName,\n  eventSystemFlags,\n  targetContainer,\n  nativeEvent\n) {\n  switch (domEventName) {\n    case \"focusin\":\n      return (\n        (queuedFocus = accumulateOrCreateContinuousQueuedReplayableEvent(\n          queuedFocus,\n          blockedOn,\n          domEventName,\n          eventSystemFlags,\n          targetContainer,\n          nativeEvent\n        )),\n        !0\n      );\n    case \"dragenter\":\n      return (\n        (queuedDrag = accumulateOrCreateContinuousQueuedReplayableEvent(\n          queuedDrag,\n          blockedOn,\n          domEventName,\n          eventSystemFlags,\n          targetContainer,\n          nativeEvent\n        )),\n        !0\n      );\n    case \"mouseover\":\n      return (\n        (queuedMouse = accumulateOrCreateContinuousQueuedReplayableEvent(\n          queuedMouse,\n          blockedOn,\n          domEventName,\n          eventSystemFlags,\n          targetContainer,\n          nativeEvent\n        )),\n        !0\n      );\n    case \"pointerover\":\n      var pointerId = nativeEvent.pointerId;\n      queuedPointers.set(\n        pointerId,\n        accumulateOrCreateContinuousQueuedReplayableEvent(\n          queuedPointers.get(pointerId) || null,\n          blockedOn,\n          domEventName,\n          eventSystemFlags,\n          targetContainer,\n          nativeEvent\n        )\n      );\n      return !0;\n    case \"gotpointercapture\":\n      return (\n        (pointerId = nativeEvent.pointerId),\n        queuedPointerCaptures.set(\n          pointerId,\n          accumulateOrCreateContinuousQueuedReplayableEvent(\n            queuedPointerCaptures.get(pointerId) || null,\n            blockedOn,\n            domEventName,\n            eventSystemFlags,\n            targetContainer,\n            nativeEvent\n          )\n        ),\n        !0\n      );\n  }\n  return !1;\n}\nfunction attemptExplicitHydrationTarget(queuedTarget) {\n  var targetInst = getClosestInstanceFromNode(queuedTarget.target);\n  if (null !== targetInst) {\n    var nearestMounted = getNearestMountedFiber(targetInst);\n    if (null !== nearestMounted)\n      if (((targetInst = nearestMounted.tag), 13 === targetInst)) {\n        if (\n          ((targetInst = getSuspenseInstanceFromFiber(nearestMounted)),\n          null !== targetInst)\n        ) {\n          queuedTarget.blockedOn = targetInst;\n          runWithPriority(queuedTarget.priority, function () {\n            if (13 === nearestMounted.tag) {\n              var lane = requestUpdateLane();\n              lane = getBumpedLaneForHydrationByLane(lane);\n              var root = enqueueConcurrentRenderForLane(nearestMounted, lane);\n              null !== root &&\n                scheduleUpdateOnFiber(root, nearestMounted, lane);\n              markRetryLaneIfNotHydrated(nearestMounted, lane);\n            }\n          });\n          return;\n        }\n      } else if (\n        3 === targetInst &&\n        nearestMounted.stateNode.current.memoizedState.isDehydrated\n      ) {\n        queuedTarget.blockedOn =\n          3 === nearestMounted.tag\n            ? nearestMounted.stateNode.containerInfo\n            : null;\n        return;\n      }\n  }\n  queuedTarget.blockedOn = null;\n}\nfunction attemptReplayContinuousQueuedEvent(queuedEvent) {\n  if (null !== queuedEvent.blockedOn) return !1;\n  for (\n    var targetContainers = queuedEvent.targetContainers;\n    0 < targetContainers.length;\n\n  ) {\n    var nextBlockedOn = findInstanceBlockingEvent(queuedEvent.nativeEvent);\n    if (null === nextBlockedOn) {\n      nextBlockedOn = queuedEvent.nativeEvent;\n      var nativeEventClone = new nextBlockedOn.constructor(\n        nextBlockedOn.type,\n        nextBlockedOn\n      );\n      currentReplayingEvent = nativeEventClone;\n      nextBlockedOn.target.dispatchEvent(nativeEventClone);\n      currentReplayingEvent = null;\n    } else\n      return (\n        (targetContainers = getInstanceFromNode(nextBlockedOn)),\n        null !== targetContainers &&\n          attemptContinuousHydration(targetContainers),\n        (queuedEvent.blockedOn = nextBlockedOn),\n        !1\n      );\n    targetContainers.shift();\n  }\n  return !0;\n}\nfunction attemptReplayContinuousQueuedEventInMap(queuedEvent, key, map) {\n  attemptReplayContinuousQueuedEvent(queuedEvent) && map.delete(key);\n}\nfunction replayUnblockedEvents() {\n  hasScheduledReplayAttempt = !1;\n  null !== queuedFocus &&\n    attemptReplayContinuousQueuedEvent(queuedFocus) &&\n    (queuedFocus = null);\n  null !== queuedDrag &&\n    attemptReplayContinuousQueuedEvent(queuedDrag) &&\n    (queuedDrag = null);\n  null !== queuedMouse &&\n    attemptReplayContinuousQueuedEvent(queuedMouse) &&\n    (queuedMouse = null);\n  queuedPointers.forEach(attemptReplayContinuousQueuedEventInMap);\n  queuedPointerCaptures.forEach(attemptReplayContinuousQueuedEventInMap);\n}\nfunction scheduleCallbackIfUnblocked(queuedEvent, unblocked) {\n  queuedEvent.blockedOn === unblocked &&\n    ((queuedEvent.blockedOn = null),\n    hasScheduledReplayAttempt ||\n      ((hasScheduledReplayAttempt = !0),\n      Scheduler.unstable_scheduleCallback(\n        Scheduler.unstable_NormalPriority,\n        replayUnblockedEvents\n      )));\n}\nvar lastScheduledReplayQueue = null;\nfunction scheduleReplayQueueIfNeeded(formReplayingQueue) {\n  lastScheduledReplayQueue !== formReplayingQueue &&\n    ((lastScheduledReplayQueue = formReplayingQueue),\n    Scheduler.unstable_scheduleCallback(\n      Scheduler.unstable_NormalPriority,\n      function () {\n        lastScheduledReplayQueue === formReplayingQueue &&\n          (lastScheduledReplayQueue = null);\n        for (var i = 0; i < formReplayingQueue.length; i += 3) {\n          var form = formReplayingQueue[i],\n            submitterOrAction = formReplayingQueue[i + 1],\n            formData = formReplayingQueue[i + 2];\n          if (\"function\" !== typeof submitterOrAction)\n            if (null === findInstanceBlockingTarget(submitterOrAction || form))\n              continue;\n            else break;\n          var formInst = getInstanceFromNode(form);\n          null !== formInst &&\n            (formReplayingQueue.splice(i, 3),\n            (i -= 3),\n            startHostTransition(\n              formInst,\n              {\n                pending: !0,\n                data: formData,\n                method: form.method,\n                action: submitterOrAction\n              },\n              submitterOrAction,\n              formData\n            ));\n        }\n      }\n    ));\n}\nfunction retryIfBlockedOn(unblocked) {\n  function unblock(queuedEvent) {\n    return scheduleCallbackIfUnblocked(queuedEvent, unblocked);\n  }\n  null !== queuedFocus && scheduleCallbackIfUnblocked(queuedFocus, unblocked);\n  null !== queuedDrag && scheduleCallbackIfUnblocked(queuedDrag, unblocked);\n  null !== queuedMouse && scheduleCallbackIfUnblocked(queuedMouse, unblocked);\n  queuedPointers.forEach(unblock);\n  queuedPointerCaptures.forEach(unblock);\n  for (var i = 0; i < queuedExplicitHydrationTargets.length; i++) {\n    var queuedTarget = queuedExplicitHydrationTargets[i];\n    queuedTarget.blockedOn === unblocked && (queuedTarget.blockedOn = null);\n  }\n  for (\n    ;\n    0 < queuedExplicitHydrationTargets.length &&\n    ((i = queuedExplicitHydrationTargets[0]), null === i.blockedOn);\n\n  )\n    attemptExplicitHydrationTarget(i),\n      null === i.blockedOn && queuedExplicitHydrationTargets.shift();\n  i = (unblocked.ownerDocument || unblocked).$$reactFormReplay;\n  if (null != i)\n    for (queuedTarget = 0; queuedTarget < i.length; queuedTarget += 3) {\n      var form = i[queuedTarget],\n        submitterOrAction = i[queuedTarget + 1],\n        formProps = form[internalPropsKey] || null;\n      if (\"function\" === typeof submitterOrAction)\n        formProps || scheduleReplayQueueIfNeeded(i);\n      else if (formProps) {\n        var action = null;\n        if (submitterOrAction && submitterOrAction.hasAttribute(\"formAction\"))\n          if (\n            ((form = submitterOrAction),\n            (formProps = submitterOrAction[internalPropsKey] || null))\n          )\n            action = formProps.formAction;\n          else {\n            if (null !== findInstanceBlockingTarget(form)) continue;\n          }\n        else action = formProps.action;\n        \"function\" === typeof action\n          ? (i[queuedTarget + 1] = action)\n          : (i.splice(queuedTarget, 3), (queuedTarget -= 3));\n        scheduleReplayQueueIfNeeded(i);\n      }\n    }\n}\nfunction ReactDOMRoot(internalRoot) {\n  this._internalRoot = internalRoot;\n}\nReactDOMHydrationRoot.prototype.render = ReactDOMRoot.prototype.render =\n  function (children) {\n    var root = this._internalRoot;\n    if (null === root) throw Error(formatProdErrorMessage(409));\n    var current = root.current,\n      lane = requestUpdateLane();\n    updateContainerImpl(current, lane, children, root, null, null);\n  };\nReactDOMHydrationRoot.prototype.unmount = ReactDOMRoot.prototype.unmount =\n  function () {\n    var root = this._internalRoot;\n    if (null !== root) {\n      this._internalRoot = null;\n      var container = root.containerInfo;\n      updateContainerImpl(root.current, 2, null, root, null, null);\n      flushSyncWork$1();\n      container[internalContainerInstanceKey] = null;\n    }\n  };\nfunction ReactDOMHydrationRoot(internalRoot) {\n  this._internalRoot = internalRoot;\n}\nReactDOMHydrationRoot.prototype.unstable_scheduleHydration = function (target) {\n  if (target) {\n    var updatePriority = resolveUpdatePriority();\n    target = { blockedOn: null, target: target, priority: updatePriority };\n    for (\n      var i = 0;\n      i < queuedExplicitHydrationTargets.length &&\n      0 !== updatePriority &&\n      updatePriority < queuedExplicitHydrationTargets[i].priority;\n      i++\n    );\n    queuedExplicitHydrationTargets.splice(i, 0, target);\n    0 === i && attemptExplicitHydrationTarget(target);\n  }\n};\nvar isomorphicReactPackageVersion$jscomp$inline_1785 = React.version;\nif (\n  \"19.1.0\" !==\n  isomorphicReactPackageVersion$jscomp$inline_1785\n)\n  throw Error(\n    formatProdErrorMessage(\n      527,\n      isomorphicReactPackageVersion$jscomp$inline_1785,\n      \"19.1.0\"\n    )\n  );\nReactDOMSharedInternals.findDOMNode = function (componentOrElement) {\n  var fiber = componentOrElement._reactInternals;\n  if (void 0 === fiber) {\n    if (\"function\" === typeof componentOrElement.render)\n      throw Error(formatProdErrorMessage(188));\n    componentOrElement = Object.keys(componentOrElement).join(\",\");\n    throw Error(formatProdErrorMessage(268, componentOrElement));\n  }\n  componentOrElement = findCurrentFiberUsingSlowPath(fiber);\n  componentOrElement =\n    null !== componentOrElement\n      ? findCurrentHostFiberImpl(componentOrElement)\n      : null;\n  componentOrElement =\n    null === componentOrElement ? null : componentOrElement.stateNode;\n  return componentOrElement;\n};\nvar internals$jscomp$inline_2256 = {\n  bundleType: 0,\n  version: \"19.1.0\",\n  rendererPackageName: \"react-dom\",\n  currentDispatcherRef: ReactSharedInternals,\n  reconcilerVersion: \"19.1.0\"\n};\nif (\"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {\n  var hook$jscomp$inline_2257 = __REACT_DEVTOOLS_GLOBAL_HOOK__;\n  if (\n    !hook$jscomp$inline_2257.isDisabled &&\n    hook$jscomp$inline_2257.supportsFiber\n  )\n    try {\n      (rendererID = hook$jscomp$inline_2257.inject(\n        internals$jscomp$inline_2256\n      )),\n        (injectedHook = hook$jscomp$inline_2257);\n    } catch (err) {}\n}\nexports.createRoot = function (container, options) {\n  if (!isValidContainer(container)) throw Error(formatProdErrorMessage(299));\n  var isStrictMode = !1,\n    identifierPrefix = \"\",\n    onUncaughtError = defaultOnUncaughtError,\n    onCaughtError = defaultOnCaughtError,\n    onRecoverableError = defaultOnRecoverableError,\n    transitionCallbacks = null;\n  null !== options &&\n    void 0 !== options &&\n    (!0 === options.unstable_strictMode && (isStrictMode = !0),\n    void 0 !== options.identifierPrefix &&\n      (identifierPrefix = options.identifierPrefix),\n    void 0 !== options.onUncaughtError &&\n      (onUncaughtError = options.onUncaughtError),\n    void 0 !== options.onCaughtError && (onCaughtError = options.onCaughtError),\n    void 0 !== options.onRecoverableError &&\n      (onRecoverableError = options.onRecoverableError),\n    void 0 !== options.unstable_transitionCallbacks &&\n      (transitionCallbacks = options.unstable_transitionCallbacks));\n  options = createFiberRoot(\n    container,\n    1,\n    !1,\n    null,\n    null,\n    isStrictMode,\n    identifierPrefix,\n    onUncaughtError,\n    onCaughtError,\n    onRecoverableError,\n    transitionCallbacks,\n    null\n  );\n  container[internalContainerInstanceKey] = options.current;\n  listenToAllSupportedEvents(container);\n  return new ReactDOMRoot(options);\n};\nexports.hydrateRoot = function (container, initialChildren, options) {\n  if (!isValidContainer(container)) throw Error(formatProdErrorMessage(299));\n  var isStrictMode = !1,\n    identifierPrefix = \"\",\n    onUncaughtError = defaultOnUncaughtError,\n    onCaughtError = defaultOnCaughtError,\n    onRecoverableError = defaultOnRecoverableError,\n    transitionCallbacks = null,\n    formState = null;\n  null !== options &&\n    void 0 !== options &&\n    (!0 === options.unstable_strictMode && (isStrictMode = !0),\n    void 0 !== options.identifierPrefix &&\n      (identifierPrefix = options.identifierPrefix),\n    void 0 !== options.onUncaughtError &&\n      (onUncaughtError = options.onUncaughtError),\n    void 0 !== options.onCaughtError && (onCaughtError = options.onCaughtError),\n    void 0 !== options.onRecoverableError &&\n      (onRecoverableError = options.onRecoverableError),\n    void 0 !== options.unstable_transitionCallbacks &&\n      (transitionCallbacks = options.unstable_transitionCallbacks),\n    void 0 !== options.formState && (formState = options.formState));\n  initialChildren = createFiberRoot(\n    container,\n    1,\n    !0,\n    initialChildren,\n    null != options ? options : null,\n    isStrictMode,\n    identifierPrefix,\n    onUncaughtError,\n    onCaughtError,\n    onRecoverableError,\n    transitionCallbacks,\n    formState\n  );\n  initialChildren.context = getContextForSubtree(null);\n  options = initialChildren.current;\n  isStrictMode = requestUpdateLane();\n  isStrictMode = getBumpedLaneForHydrationByLane(isStrictMode);\n  identifierPrefix = createUpdate(isStrictMode);\n  identifierPrefix.callback = null;\n  enqueueUpdate(options, identifierPrefix, isStrictMode);\n  options = isStrictMode;\n  initialChildren.current.lanes = options;\n  markRootUpdated$1(initialChildren, options);\n  ensureRootIsScheduled(initialChildren);\n  container[internalContainerInstanceKey] = initialChildren.current;\n  listenToAllSupportedEvents(container);\n  return new ReactDOMHydrationRoot(initialChildren);\n};\nexports.version = \"19.1.0\";\n","'use strict';\n\nfunction checkDCE() {\n  /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n  if (\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n  ) {\n    return;\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    // This branch is unreachable because this function is only called\n    // in production, but the condition is true only in development.\n    // Therefore if the branch is still here, dead code elimination wasn't\n    // properly applied.\n    // Don't change the message. React DevTools relies on it. Also make sure\n    // this message doesn't occur elsewhere in this function, or it will cause\n    // a false positive.\n    throw new Error('^_^');\n  }\n  try {\n    // Verify that the code above has been dead code eliminated (DCE'd).\n    __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n  } catch (err) {\n    // DevTools shouldn't crash React, no matter what.\n    // We should still report in case we break this code.\n    console.error(err);\n  }\n}\n\nif (process.env.NODE_ENV === 'production') {\n  // DCE check should happen before ReactDOM bundle executes so that\n  // DevTools can report bad minification during injection.\n  checkDCE();\n  module.exports = require('./cjs/react-dom-client.production.js');\n} else {\n  module.exports = require('./cjs/react-dom-client.development.js');\n}\n","/**\n * @license React\n * use-sync-external-store-shim.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var e=require(\"react\");function h(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var k=\"function\"===typeof Object.is?Object.is:h,l=e.useState,m=e.useEffect,n=e.useLayoutEffect,p=e.useDebugValue;function q(a,b){var d=b(),f=l({inst:{value:d,getSnapshot:b}}),c=f[0].inst,g=f[1];n(function(){c.value=d;c.getSnapshot=b;r(c)&&g({inst:c})},[a,d,b]);m(function(){r(c)&&g({inst:c});return a(function(){r(c)&&g({inst:c})})},[a]);p(d);return d}\nfunction r(a){var b=a.getSnapshot;a=a.value;try{var d=b();return!k(a,d)}catch(f){return!0}}function t(a,b){return b()}var u=\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement?t:q;exports.useSyncExternalStore=void 0!==e.useSyncExternalStore?e.useSyncExternalStore:u;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('../cjs/use-sync-external-store-shim.production.min.js');\n} else {\n  module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var h=require(\"react\"),n=require(\"use-sync-external-store/shim\");function p(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var q=\"function\"===typeof Object.is?Object.is:p,r=n.useSyncExternalStore,t=h.useRef,u=h.useEffect,v=h.useMemo,w=h.useDebugValue;\nexports.useSyncExternalStoreWithSelector=function(a,b,e,l,g){var c=t(null);if(null===c.current){var f={hasValue:!1,value:null};c.current=f}else f=c.current;c=v(function(){function a(a){if(!c){c=!0;d=a;a=l(a);if(void 0!==g&&f.hasValue){var b=f.value;if(g(b,a))return k=b}return k=a}b=k;if(q(d,a))return b;var e=l(a);if(void 0!==g&&g(b,e))return b;d=a;return k=e}var c=!1,d,k,m=void 0===e?null:e;return[function(){return a(b())},null===m?void 0:function(){return a(m())}]},[b,e,l,g]);var d=r(a,c[0],c[1]);\nu(function(){f.hasValue=!0;f.value=d},[d]);w(d);return d};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('../cjs/use-sync-external-store-shim/with-selector.production.min.js');\n} else {\n  module.exports = require('../cjs/use-sync-external-store-shim/with-selector.development.js');\n}\n","// Default to a dummy \"batch\" implementation that just runs the callback\nfunction defaultNoopBatch(callback) {\n  callback();\n}\n\nlet batch = defaultNoopBatch; // Allow injecting another batching function later\n\nexport const setBatch = newBatch => batch = newBatch; // Supply a getter just to skip dealing with ESM bindings\n\nexport const getBatch = () => batch;","import * as React from 'react';\nconst ContextKey = Symbol.for(`react-redux-context`);\nconst gT = typeof globalThis !== \"undefined\" ? globalThis :\n/* fall back to a per-module scope (pre-8.1 behaviour) if `globalThis` is not available */\n{};\n\nfunction getContext() {\n  var _gT$ContextKey;\n\n  if (!React.createContext) return {};\n  const contextMap = (_gT$ContextKey = gT[ContextKey]) != null ? _gT$ContextKey : gT[ContextKey] = new Map();\n  let realContext = contextMap.get(React.createContext);\n\n  if (!realContext) {\n    realContext = React.createContext(null);\n\n    if (process.env.NODE_ENV !== 'production') {\n      realContext.displayName = 'ReactRedux';\n    }\n\n    contextMap.set(React.createContext, realContext);\n  }\n\n  return realContext;\n}\n\nexport const ReactReduxContext = /*#__PURE__*/getContext();\nexport default ReactReduxContext;","import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\n\n/**\r\n * Hook factory, which creates a `useReduxContext` hook bound to a given context. This is a low-level\r\n * hook that you should usually not need to call directly.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useReduxContext` hook bound to the specified context.\r\n */\nexport function createReduxContextHook(context = ReactReduxContext) {\n  return function useReduxContext() {\n    const contextValue = useContext(context);\n\n    if (process.env.NODE_ENV !== 'production' && !contextValue) {\n      throw new Error('could not find react-redux context value; please ensure the component is wrapped in a <Provider>');\n    }\n\n    return contextValue;\n  };\n}\n/**\r\n * A hook to access the value of the `ReactReduxContext`. This is a low-level\r\n * hook that you should usually not need to call directly.\r\n *\r\n * @returns {any} the value of the `ReactReduxContext`\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useReduxContext } from 'react-redux'\r\n *\r\n * export const CounterComponent = () => {\r\n *   const { store } = useReduxContext()\r\n *   return <div>{store.getState()}</div>\r\n * }\r\n */\n\nexport const useReduxContext = /*#__PURE__*/createReduxContextHook();","import { useCallback, useDebugValue, useRef } from 'react';\nimport { createReduxContextHook, useReduxContext as useDefaultReduxContext } from './useReduxContext';\nimport { ReactReduxContext } from '../components/Context';\nimport { notInitialized } from '../utils/useSyncExternalStore';\nlet useSyncExternalStoreWithSelector = notInitialized;\nexport const initializeUseSelector = fn => {\n  useSyncExternalStoreWithSelector = fn;\n};\n\nconst refEquality = (a, b) => a === b;\n/**\r\n * Hook factory, which creates a `useSelector` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useSelector` hook bound to the specified context.\r\n */\n\n\nexport function createSelectorHook(context = ReactReduxContext) {\n  const useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : createReduxContextHook(context);\n  return function useSelector(selector, equalityFnOrOptions = {}) {\n    const {\n      equalityFn = refEquality,\n      stabilityCheck = undefined,\n      noopCheck = undefined\n    } = typeof equalityFnOrOptions === 'function' ? {\n      equalityFn: equalityFnOrOptions\n    } : equalityFnOrOptions;\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (!selector) {\n        throw new Error(`You must pass a selector to useSelector`);\n      }\n\n      if (typeof selector !== 'function') {\n        throw new Error(`You must pass a function as a selector to useSelector`);\n      }\n\n      if (typeof equalityFn !== 'function') {\n        throw new Error(`You must pass a function as an equality function to useSelector`);\n      }\n    }\n\n    const {\n      store,\n      subscription,\n      getServerState,\n      stabilityCheck: globalStabilityCheck,\n      noopCheck: globalNoopCheck\n    } = useReduxContext();\n    const firstRun = useRef(true);\n    const wrappedSelector = useCallback({\n      [selector.name](state) {\n        const selected = selector(state);\n\n        if (process.env.NODE_ENV !== 'production') {\n          const finalStabilityCheck = typeof stabilityCheck === 'undefined' ? globalStabilityCheck : stabilityCheck;\n\n          if (finalStabilityCheck === 'always' || finalStabilityCheck === 'once' && firstRun.current) {\n            const toCompare = selector(state);\n\n            if (!equalityFn(selected, toCompare)) {\n              let stack = undefined;\n\n              try {\n                throw new Error();\n              } catch (e) {\n                ;\n                ({\n                  stack\n                } = e);\n              }\n\n              console.warn('Selector ' + (selector.name || 'unknown') + ' returned a different result when called with the same parameters. This can lead to unnecessary rerenders.' + '\\nSelectors that return a new reference (such as an object or an array) should be memoized: https://redux.js.org/usage/deriving-data-selectors#optimizing-selectors-with-memoization', {\n                state,\n                selected,\n                selected2: toCompare,\n                stack\n              });\n            }\n          }\n\n          const finalNoopCheck = typeof noopCheck === 'undefined' ? globalNoopCheck : noopCheck;\n\n          if (finalNoopCheck === 'always' || finalNoopCheck === 'once' && firstRun.current) {\n            // @ts-ignore\n            if (selected === state) {\n              let stack = undefined;\n\n              try {\n                throw new Error();\n              } catch (e) {\n                ;\n                ({\n                  stack\n                } = e);\n              }\n\n              console.warn('Selector ' + (selector.name || 'unknown') + ' returned the root state when called. This can lead to unnecessary rerenders.' + '\\nSelectors that return the entire state are almost certainly a mistake, as they will cause a rerender whenever *anything* in state changes.', {\n                stack\n              });\n            }\n          }\n\n          if (firstRun.current) firstRun.current = false;\n        }\n\n        return selected;\n      }\n\n    }[selector.name], [selector, globalStabilityCheck, stabilityCheck]);\n    const selectedState = useSyncExternalStoreWithSelector(subscription.addNestedSub, store.getState, getServerState || store.getState, wrappedSelector, equalityFn);\n    useDebugValue(selectedState);\n    return selectedState;\n  };\n}\n/**\r\n * A hook to access the redux store's state. This hook takes a selector function\r\n * as an argument. The selector is called with the store state.\r\n *\r\n * This hook takes an optional equality comparison function as the second parameter\r\n * that allows you to customize the way the selected state is compared to determine\r\n * whether the component needs to be re-rendered.\r\n *\r\n * @param {Function} selector the selector function\r\n * @param {Function=} equalityFn the function that will be used to determine equality\r\n *\r\n * @returns {any} the selected state\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useSelector } from 'react-redux'\r\n *\r\n * export const CounterComponent = () => {\r\n *   const counter = useSelector(state => state.counter)\r\n *   return <div>{counter}</div>\r\n * }\r\n */\n\nexport const useSelector = /*#__PURE__*/createSelectorHook();","export const notInitialized = () => {\n  throw new Error('uSES not initialized!');\n};","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","/**\n * @license React\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=Symbol.for(\"react.element\"),c=Symbol.for(\"react.portal\"),d=Symbol.for(\"react.fragment\"),e=Symbol.for(\"react.strict_mode\"),f=Symbol.for(\"react.profiler\"),g=Symbol.for(\"react.provider\"),h=Symbol.for(\"react.context\"),k=Symbol.for(\"react.server_context\"),l=Symbol.for(\"react.forward_ref\"),m=Symbol.for(\"react.suspense\"),n=Symbol.for(\"react.suspense_list\"),p=Symbol.for(\"react.memo\"),q=Symbol.for(\"react.lazy\"),t=Symbol.for(\"react.offscreen\"),u;u=Symbol.for(\"react.module.reference\");\nfunction v(a){if(\"object\"===typeof a&&null!==a){var r=a.$$typeof;switch(r){case b:switch(a=a.type,a){case d:case f:case e:case m:case n:return a;default:switch(a=a&&a.$$typeof,a){case k:case h:case l:case q:case p:case g:return a;default:return r}}case c:return r}}}exports.ContextConsumer=h;exports.ContextProvider=g;exports.Element=b;exports.ForwardRef=l;exports.Fragment=d;exports.Lazy=q;exports.Memo=p;exports.Portal=c;exports.Profiler=f;exports.StrictMode=e;exports.Suspense=m;\nexports.SuspenseList=n;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return v(a)===h};exports.isContextProvider=function(a){return v(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return v(a)===l};exports.isFragment=function(a){return v(a)===d};exports.isLazy=function(a){return v(a)===q};exports.isMemo=function(a){return v(a)===p};\nexports.isPortal=function(a){return v(a)===c};exports.isProfiler=function(a){return v(a)===f};exports.isStrictMode=function(a){return v(a)===e};exports.isSuspense=function(a){return v(a)===m};exports.isSuspenseList=function(a){return v(a)===n};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===e||a===m||a===n||a===t||\"object\"===typeof a&&null!==a&&(a.$$typeof===q||a.$$typeof===p||a.$$typeof===g||a.$$typeof===h||a.$$typeof===l||a.$$typeof===u||void 0!==a.getModuleId)?!0:!1};exports.typeOf=v;\n","import { getBatch } from './batch'; // encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\n\nfunction createListenerCollection() {\n  const batch = getBatch();\n  let first = null;\n  let last = null;\n  return {\n    clear() {\n      first = null;\n      last = null;\n    },\n\n    notify() {\n      batch(() => {\n        let listener = first;\n\n        while (listener) {\n          listener.callback();\n          listener = listener.next;\n        }\n      });\n    },\n\n    get() {\n      let listeners = [];\n      let listener = first;\n\n      while (listener) {\n        listeners.push(listener);\n        listener = listener.next;\n      }\n\n      return listeners;\n    },\n\n    subscribe(callback) {\n      let isSubscribed = true;\n      let listener = last = {\n        callback,\n        next: null,\n        prev: last\n      };\n\n      if (listener.prev) {\n        listener.prev.next = listener;\n      } else {\n        first = listener;\n      }\n\n      return function unsubscribe() {\n        if (!isSubscribed || first === null) return;\n        isSubscribed = false;\n\n        if (listener.next) {\n          listener.next.prev = listener.prev;\n        } else {\n          last = listener.prev;\n        }\n\n        if (listener.prev) {\n          listener.prev.next = listener.next;\n        } else {\n          first = listener.next;\n        }\n      };\n    }\n\n  };\n}\n\nconst nullListeners = {\n  notify() {},\n\n  get: () => []\n};\nexport function createSubscription(store, parentSub) {\n  let unsubscribe;\n  let listeners = nullListeners; // Reasons to keep the subscription active\n\n  let subscriptionsAmount = 0; // Is this specific subscription subscribed (or only nested ones?)\n\n  let selfSubscribed = false;\n\n  function addNestedSub(listener) {\n    trySubscribe();\n    const cleanupListener = listeners.subscribe(listener); // cleanup nested sub\n\n    let removed = false;\n    return () => {\n      if (!removed) {\n        removed = true;\n        cleanupListener();\n        tryUnsubscribe();\n      }\n    };\n  }\n\n  function notifyNestedSubs() {\n    listeners.notify();\n  }\n\n  function handleChangeWrapper() {\n    if (subscription.onStateChange) {\n      subscription.onStateChange();\n    }\n  }\n\n  function isSubscribed() {\n    return selfSubscribed;\n  }\n\n  function trySubscribe() {\n    subscriptionsAmount++;\n\n    if (!unsubscribe) {\n      unsubscribe = parentSub ? parentSub.addNestedSub(handleChangeWrapper) : store.subscribe(handleChangeWrapper);\n      listeners = createListenerCollection();\n    }\n  }\n\n  function tryUnsubscribe() {\n    subscriptionsAmount--;\n\n    if (unsubscribe && subscriptionsAmount === 0) {\n      unsubscribe();\n      unsubscribe = undefined;\n      listeners.clear();\n      listeners = nullListeners;\n    }\n  }\n\n  function trySubscribeSelf() {\n    if (!selfSubscribed) {\n      selfSubscribed = true;\n      trySubscribe();\n    }\n  }\n\n  function tryUnsubscribeSelf() {\n    if (selfSubscribed) {\n      selfSubscribed = false;\n      tryUnsubscribe();\n    }\n  }\n\n  const subscription = {\n    addNestedSub,\n    notifyNestedSubs,\n    handleChangeWrapper,\n    isSubscribed,\n    trySubscribe: trySubscribeSelf,\n    tryUnsubscribe: tryUnsubscribeSelf,\n    getListeners: () => listeners\n  };\n  return subscription;\n}","import * as React from 'react'; // React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store\n// subscription callback always has the selector from the latest render commit\n// available, otherwise a store update may happen between render and the effect,\n// which may cause missed updates; we also must ensure the store subscription\n// is created synchronously, otherwise a store update may occur before the\n// subscription is created and an inconsistent state may be observed\n// Matches logic in React's `shared/ExecutionEnvironment` file\n\nexport const canUseDOM = !!(typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined');\nexport const useIsomorphicLayoutEffect = canUseDOM ? React.useLayoutEffect : React.useEffect;","import * as React from 'react';\nimport { ReactReduxContext } from './Context';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\n\nfunction Provider({\n  store,\n  context,\n  children,\n  serverState,\n  stabilityCheck = 'once',\n  noopCheck = 'once'\n}) {\n  const contextValue = React.useMemo(() => {\n    const subscription = createSubscription(store);\n    return {\n      store,\n      subscription,\n      getServerState: serverState ? () => serverState : undefined,\n      stabilityCheck,\n      noopCheck\n    };\n  }, [store, serverState, stabilityCheck, noopCheck]);\n  const previousState = React.useMemo(() => store.getState(), [store]);\n  useIsomorphicLayoutEffect(() => {\n    const {\n      subscription\n    } = contextValue;\n    subscription.onStateChange = subscription.notifyNestedSubs;\n    subscription.trySubscribe();\n\n    if (previousState !== store.getState()) {\n      subscription.notifyNestedSubs();\n    }\n\n    return () => {\n      subscription.tryUnsubscribe();\n      subscription.onStateChange = undefined;\n    };\n  }, [contextValue, previousState]);\n  const Context = context || ReactReduxContext; // @ts-ignore 'AnyAction' is assignable to the constraint of type 'A', but 'A' could be instantiated with a different subtype\n\n  return /*#__PURE__*/React.createElement(Context.Provider, {\n    value: contextValue\n  }, children);\n}\n\nexport default Provider;","import { ReactReduxContext } from '../components/Context';\nimport { useReduxContext as useDefaultReduxContext, createReduxContextHook } from './useReduxContext';\n/**\r\n * Hook factory, which creates a `useStore` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useStore` hook bound to the specified context.\r\n */\n\nexport function createStoreHook(context = ReactReduxContext) {\n  const useReduxContext = // @ts-ignore\n  context === ReactReduxContext ? useDefaultReduxContext : // @ts-ignore\n  createReduxContextHook(context);\n  return function useStore() {\n    const {\n      store\n    } = useReduxContext(); // @ts-ignore\n\n    return store;\n  };\n}\n/**\r\n * A hook to access the redux store.\r\n *\r\n * @returns {any} the redux store\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useStore } from 'react-redux'\r\n *\r\n * export const ExampleComponent = () => {\r\n *   const store = useStore()\r\n *   return <div>{store.getState()}</div>\r\n * }\r\n */\n\nexport const useStore = /*#__PURE__*/createStoreHook();","import { ReactReduxContext } from '../components/Context';\nimport { useStore as useDefaultStore, createStoreHook } from './useStore';\n/**\r\n * Hook factory, which creates a `useDispatch` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useDispatch` hook bound to the specified context.\r\n */\n\nexport function createDispatchHook(context = ReactReduxContext) {\n  const useStore = // @ts-ignore\n  context === ReactReduxContext ? useDefaultStore : createStoreHook(context);\n  return function useDispatch() {\n    const store = useStore(); // @ts-ignore\n\n    return store.dispatch;\n  };\n}\n/**\r\n * A hook to access the redux `dispatch` function.\r\n *\r\n * @returns {any|function} redux store's `dispatch` function\r\n *\r\n * @example\r\n *\r\n * import React, { useCallback } from 'react'\r\n * import { useDispatch } from 'react-redux'\r\n *\r\n * export const CounterComponent = ({ value }) => {\r\n *   const dispatch = useDispatch()\r\n *   const increaseCounter = useCallback(() => dispatch({ type: 'increase-counter' }), [])\r\n *   return (\r\n *     <div>\r\n *       <span>{value}</span>\r\n *       <button onClick={increaseCounter}>Increase counter</button>\r\n *     </div>\r\n *   )\r\n * }\r\n */\n\nexport const useDispatch = /*#__PURE__*/createDispatchHook();","// src/utils/formatProdErrorMessage.ts\nfunction formatProdErrorMessage(code) {\n  return `Minified Redux error #${code}; visit https://redux.js.org/Errors?code=${code} for the full message or use the non-minified dev environment for full errors. `;\n}\n\n// src/utils/symbol-observable.ts\nvar $$observable = /* @__PURE__ */ (() => typeof Symbol === \"function\" && Symbol.observable || \"@@observable\")();\nvar symbol_observable_default = $$observable;\n\n// src/utils/actionTypes.ts\nvar randomString = () => Math.random().toString(36).substring(7).split(\"\").join(\".\");\nvar ActionTypes = {\n  INIT: `@@redux/INIT${/* @__PURE__ */ randomString()}`,\n  REPLACE: `@@redux/REPLACE${/* @__PURE__ */ randomString()}`,\n  PROBE_UNKNOWN_ACTION: () => `@@redux/PROBE_UNKNOWN_ACTION${randomString()}`\n};\nvar actionTypes_default = ActionTypes;\n\n// src/utils/isPlainObject.ts\nfunction isPlainObject(obj) {\n  if (typeof obj !== \"object\" || obj === null)\n    return false;\n  let proto = obj;\n  while (Object.getPrototypeOf(proto) !== null) {\n    proto = Object.getPrototypeOf(proto);\n  }\n  return Object.getPrototypeOf(obj) === proto || Object.getPrototypeOf(obj) === null;\n}\n\n// src/utils/kindOf.ts\nfunction miniKindOf(val) {\n  if (val === void 0)\n    return \"undefined\";\n  if (val === null)\n    return \"null\";\n  const type = typeof val;\n  switch (type) {\n    case \"boolean\":\n    case \"string\":\n    case \"number\":\n    case \"symbol\":\n    case \"function\": {\n      return type;\n    }\n  }\n  if (Array.isArray(val))\n    return \"array\";\n  if (isDate(val))\n    return \"date\";\n  if (isError(val))\n    return \"error\";\n  const constructorName = ctorName(val);\n  switch (constructorName) {\n    case \"Symbol\":\n    case \"Promise\":\n    case \"WeakMap\":\n    case \"WeakSet\":\n    case \"Map\":\n    case \"Set\":\n      return constructorName;\n  }\n  return Object.prototype.toString.call(val).slice(8, -1).toLowerCase().replace(/\\s/g, \"\");\n}\nfunction ctorName(val) {\n  return typeof val.constructor === \"function\" ? val.constructor.name : null;\n}\nfunction isError(val) {\n  return val instanceof Error || typeof val.message === \"string\" && val.constructor && typeof val.constructor.stackTraceLimit === \"number\";\n}\nfunction isDate(val) {\n  if (val instanceof Date)\n    return true;\n  return typeof val.toDateString === \"function\" && typeof val.getDate === \"function\" && typeof val.setDate === \"function\";\n}\nfunction kindOf(val) {\n  let typeOfVal = typeof val;\n  if (process.env.NODE_ENV !== \"production\") {\n    typeOfVal = miniKindOf(val);\n  }\n  return typeOfVal;\n}\n\n// src/createStore.ts\nfunction createStore(reducer, preloadedState, enhancer) {\n  if (typeof reducer !== \"function\") {\n    throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(2) : `Expected the root reducer to be a function. Instead, received: '${kindOf(reducer)}'`);\n  }\n  if (typeof preloadedState === \"function\" && typeof enhancer === \"function\" || typeof enhancer === \"function\" && typeof arguments[3] === \"function\") {\n    throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(0) : \"It looks like you are passing several store enhancers to createStore(). This is not supported. Instead, compose them together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.\");\n  }\n  if (typeof preloadedState === \"function\" && typeof enhancer === \"undefined\") {\n    enhancer = preloadedState;\n    preloadedState = void 0;\n  }\n  if (typeof enhancer !== \"undefined\") {\n    if (typeof enhancer !== \"function\") {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(1) : `Expected the enhancer to be a function. Instead, received: '${kindOf(enhancer)}'`);\n    }\n    return enhancer(createStore)(reducer, preloadedState);\n  }\n  let currentReducer = reducer;\n  let currentState = preloadedState;\n  let currentListeners = /* @__PURE__ */ new Map();\n  let nextListeners = currentListeners;\n  let listenerIdCounter = 0;\n  let isDispatching = false;\n  function ensureCanMutateNextListeners() {\n    if (nextListeners === currentListeners) {\n      nextListeners = /* @__PURE__ */ new Map();\n      currentListeners.forEach((listener, key) => {\n        nextListeners.set(key, listener);\n      });\n    }\n  }\n  function getState() {\n    if (isDispatching) {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(3) : \"You may not call store.getState() while the reducer is executing. The reducer has already received the state as an argument. Pass it down from the top reducer instead of reading it from the store.\");\n    }\n    return currentState;\n  }\n  function subscribe(listener) {\n    if (typeof listener !== \"function\") {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(4) : `Expected the listener to be a function. Instead, received: '${kindOf(listener)}'`);\n    }\n    if (isDispatching) {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(5) : \"You may not call store.subscribe() while the reducer is executing. If you would like to be notified after the store has been updated, subscribe from a component and invoke store.getState() in the callback to access the latest state. See https://redux.js.org/api/store#subscribelistener for more details.\");\n    }\n    let isSubscribed = true;\n    ensureCanMutateNextListeners();\n    const listenerId = listenerIdCounter++;\n    nextListeners.set(listenerId, listener);\n    return function unsubscribe() {\n      if (!isSubscribed) {\n        return;\n      }\n      if (isDispatching) {\n        throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(6) : \"You may not unsubscribe from a store listener while the reducer is executing. See https://redux.js.org/api/store#subscribelistener for more details.\");\n      }\n      isSubscribed = false;\n      ensureCanMutateNextListeners();\n      nextListeners.delete(listenerId);\n      currentListeners = null;\n    };\n  }\n  function dispatch(action) {\n    if (!isPlainObject(action)) {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(7) : `Actions must be plain objects. Instead, the actual type was: '${kindOf(action)}'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.`);\n    }\n    if (typeof action.type === \"undefined\") {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(8) : 'Actions may not have an undefined \"type\" property. You may have misspelled an action type string constant.');\n    }\n    if (typeof action.type !== \"string\") {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(17) : `Action \"type\" property must be a string. Instead, the actual type was: '${kindOf(action.type)}'. Value was: '${action.type}' (stringified)`);\n    }\n    if (isDispatching) {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(9) : \"Reducers may not dispatch actions.\");\n    }\n    try {\n      isDispatching = true;\n      currentState = currentReducer(currentState, action);\n    } finally {\n      isDispatching = false;\n    }\n    const listeners = currentListeners = nextListeners;\n    listeners.forEach((listener) => {\n      listener();\n    });\n    return action;\n  }\n  function replaceReducer(nextReducer) {\n    if (typeof nextReducer !== \"function\") {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(10) : `Expected the nextReducer to be a function. Instead, received: '${kindOf(nextReducer)}`);\n    }\n    currentReducer = nextReducer;\n    dispatch({\n      type: actionTypes_default.REPLACE\n    });\n  }\n  function observable() {\n    const outerSubscribe = subscribe;\n    return {\n      /**\n       * The minimal observable subscription method.\n       * @param observer Any object that can be used as an observer.\n       * The observer object should have a `next` method.\n       * @returns An object with an `unsubscribe` method that can\n       * be used to unsubscribe the observable from the store, and prevent further\n       * emission of values from the observable.\n       */\n      subscribe(observer) {\n        if (typeof observer !== \"object\" || observer === null) {\n          throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(11) : `Expected the observer to be an object. Instead, received: '${kindOf(observer)}'`);\n        }\n        function observeState() {\n          const observerAsObserver = observer;\n          if (observerAsObserver.next) {\n            observerAsObserver.next(getState());\n          }\n        }\n        observeState();\n        const unsubscribe = outerSubscribe(observeState);\n        return {\n          unsubscribe\n        };\n      },\n      [symbol_observable_default]() {\n        return this;\n      }\n    };\n  }\n  dispatch({\n    type: actionTypes_default.INIT\n  });\n  const store = {\n    dispatch,\n    subscribe,\n    getState,\n    replaceReducer,\n    [symbol_observable_default]: observable\n  };\n  return store;\n}\nfunction legacy_createStore(reducer, preloadedState, enhancer) {\n  return createStore(reducer, preloadedState, enhancer);\n}\n\n// src/utils/warning.ts\nfunction warning(message) {\n  if (typeof console !== \"undefined\" && typeof console.error === \"function\") {\n    console.error(message);\n  }\n  try {\n    throw new Error(message);\n  } catch (e) {\n  }\n}\n\n// src/combineReducers.ts\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n  const reducerKeys = Object.keys(reducers);\n  const argumentName = action && action.type === actionTypes_default.INIT ? \"preloadedState argument passed to createStore\" : \"previous state received by the reducer\";\n  if (reducerKeys.length === 0) {\n    return \"Store does not have a valid reducer. Make sure the argument passed to combineReducers is an object whose values are reducers.\";\n  }\n  if (!isPlainObject(inputState)) {\n    return `The ${argumentName} has unexpected type of \"${kindOf(inputState)}\". Expected argument to be an object with the following keys: \"${reducerKeys.join('\", \"')}\"`;\n  }\n  const unexpectedKeys = Object.keys(inputState).filter((key) => !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key]);\n  unexpectedKeys.forEach((key) => {\n    unexpectedKeyCache[key] = true;\n  });\n  if (action && action.type === actionTypes_default.REPLACE)\n    return;\n  if (unexpectedKeys.length > 0) {\n    return `Unexpected ${unexpectedKeys.length > 1 ? \"keys\" : \"key\"} \"${unexpectedKeys.join('\", \"')}\" found in ${argumentName}. Expected to find one of the known reducer keys instead: \"${reducerKeys.join('\", \"')}\". Unexpected keys will be ignored.`;\n  }\n}\nfunction assertReducerShape(reducers) {\n  Object.keys(reducers).forEach((key) => {\n    const reducer = reducers[key];\n    const initialState = reducer(void 0, {\n      type: actionTypes_default.INIT\n    });\n    if (typeof initialState === \"undefined\") {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(12) : `The slice reducer for key \"${key}\" returned undefined during initialization. If the state passed to the reducer is undefined, you must explicitly return the initial state. The initial state may not be undefined. If you don't want to set a value for this reducer, you can use null instead of undefined.`);\n    }\n    if (typeof reducer(void 0, {\n      type: actionTypes_default.PROBE_UNKNOWN_ACTION()\n    }) === \"undefined\") {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(13) : `The slice reducer for key \"${key}\" returned undefined when probed with a random type. Don't try to handle '${actionTypes_default.INIT}' or other actions in \"redux/*\" namespace. They are considered private. Instead, you must return the current state for any unknown actions, unless it is undefined, in which case you must return the initial state, regardless of the action type. The initial state may not be undefined, but can be null.`);\n    }\n  });\n}\nfunction combineReducers(reducers) {\n  const reducerKeys = Object.keys(reducers);\n  const finalReducers = {};\n  for (let i = 0; i < reducerKeys.length; i++) {\n    const key = reducerKeys[i];\n    if (process.env.NODE_ENV !== \"production\") {\n      if (typeof reducers[key] === \"undefined\") {\n        warning(`No reducer provided for key \"${key}\"`);\n      }\n    }\n    if (typeof reducers[key] === \"function\") {\n      finalReducers[key] = reducers[key];\n    }\n  }\n  const finalReducerKeys = Object.keys(finalReducers);\n  let unexpectedKeyCache;\n  if (process.env.NODE_ENV !== \"production\") {\n    unexpectedKeyCache = {};\n  }\n  let shapeAssertionError;\n  try {\n    assertReducerShape(finalReducers);\n  } catch (e) {\n    shapeAssertionError = e;\n  }\n  return function combination(state = {}, action) {\n    if (shapeAssertionError) {\n      throw shapeAssertionError;\n    }\n    if (process.env.NODE_ENV !== \"production\") {\n      const warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n      if (warningMessage) {\n        warning(warningMessage);\n      }\n    }\n    let hasChanged = false;\n    const nextState = {};\n    for (let i = 0; i < finalReducerKeys.length; i++) {\n      const key = finalReducerKeys[i];\n      const reducer = finalReducers[key];\n      const previousStateForKey = state[key];\n      const nextStateForKey = reducer(previousStateForKey, action);\n      if (typeof nextStateForKey === \"undefined\") {\n        const actionType = action && action.type;\n        throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(14) : `When called with an action of type ${actionType ? `\"${String(actionType)}\"` : \"(unknown type)\"}, the slice reducer for key \"${key}\" returned undefined. To ignore an action, you must explicitly return the previous state. If you want this reducer to hold no value, you can return null instead of undefined.`);\n      }\n      nextState[key] = nextStateForKey;\n      hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n    }\n    hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n    return hasChanged ? nextState : state;\n  };\n}\n\n// src/bindActionCreators.ts\nfunction bindActionCreator(actionCreator, dispatch) {\n  return function(...args) {\n    return dispatch(actionCreator.apply(this, args));\n  };\n}\nfunction bindActionCreators(actionCreators, dispatch) {\n  if (typeof actionCreators === \"function\") {\n    return bindActionCreator(actionCreators, dispatch);\n  }\n  if (typeof actionCreators !== \"object\" || actionCreators === null) {\n    throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(16) : `bindActionCreators expected an object or a function, but instead received: '${kindOf(actionCreators)}'. Did you write \"import ActionCreators from\" instead of \"import * as ActionCreators from\"?`);\n  }\n  const boundActionCreators = {};\n  for (const key in actionCreators) {\n    const actionCreator = actionCreators[key];\n    if (typeof actionCreator === \"function\") {\n      boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n    }\n  }\n  return boundActionCreators;\n}\n\n// src/compose.ts\nfunction compose(...funcs) {\n  if (funcs.length === 0) {\n    return (arg) => arg;\n  }\n  if (funcs.length === 1) {\n    return funcs[0];\n  }\n  return funcs.reduce((a, b) => (...args) => a(b(...args)));\n}\n\n// src/applyMiddleware.ts\nfunction applyMiddleware(...middlewares) {\n  return (createStore2) => (reducer, preloadedState) => {\n    const store = createStore2(reducer, preloadedState);\n    let dispatch = () => {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(15) : \"Dispatching while constructing your middleware is not allowed. Other middleware would not be applied to this dispatch.\");\n    };\n    const middlewareAPI = {\n      getState: store.getState,\n      dispatch: (action, ...args) => dispatch(action, ...args)\n    };\n    const chain = middlewares.map((middleware) => middleware(middlewareAPI));\n    dispatch = compose(...chain)(store.dispatch);\n    return {\n      ...store,\n      dispatch\n    };\n  };\n}\n\n// src/utils/isAction.ts\nfunction isAction(action) {\n  return isPlainObject(action) && \"type\" in action && typeof action.type === \"string\";\n}\nexport {\n  actionTypes_default as __DO_NOT_USE__ActionTypes,\n  applyMiddleware,\n  bindActionCreators,\n  combineReducers,\n  compose,\n  createStore,\n  isAction,\n  isPlainObject,\n  legacy_createStore\n};\n//# sourceMappingURL=redux.mjs.map","// The primary entry point assumes we're working with standard ReactDOM/RN, but\n// older versions that do not include `useSyncExternalStore` (React 16.9 - 17.x).\n// Because of that, the useSyncExternalStore compat shim is needed.\nimport { useSyncExternalStore } from 'use-sync-external-store/shim';\nimport { useSyncExternalStoreWithSelector } from 'use-sync-external-store/shim/with-selector';\nimport { unstable_batchedUpdates as batch } from './utils/reactBatchedUpdates';\nimport { setBatch } from './utils/batch';\nimport { initializeUseSelector } from './hooks/useSelector';\nimport { initializeConnect } from './components/connect';\ninitializeUseSelector(useSyncExternalStoreWithSelector);\ninitializeConnect(useSyncExternalStore); // Enable batched updates in our subscriptions for use\n// with standard React renderers (ReactDOM, React Native)\n\nsetBatch(batch);\nexport { batch };\nexport * from './exports';","/** A function that accepts a potential \"extra argument\" value to be injected later,\r\n * and returns an instance of the thunk middleware that uses that value\r\n */\nfunction createThunkMiddleware(extraArgument) {\n  // Standard Redux middleware definition pattern:\n  // See: https://redux.js.org/tutorials/fundamentals/part-4-store#writing-custom-middleware\n  var middleware = function middleware(_ref) {\n    var dispatch = _ref.dispatch,\n        getState = _ref.getState;\n    return function (next) {\n      return function (action) {\n        // The thunk middleware looks for any functions that were passed to `store.dispatch`.\n        // If this \"action\" is really a function, call it and return the result.\n        if (typeof action === 'function') {\n          // Inject the store's `dispatch` and `getState` methods, as well as any \"extra arg\"\n          return action(dispatch, getState, extraArgument);\n        } // Otherwise, pass the action down the middleware chain as usual\n\n\n        return next(action);\n      };\n    };\n  };\n\n  return middleware;\n}\n\nvar thunk = createThunkMiddleware(); // Attach the factory function so users can create a customized version\n// with whatever \"extra arg\" they want to inject into their thunks\n\nthunk.withExtraArgument = createThunkMiddleware;\nexport default thunk;","import { compose } from 'redux';\nfunction extensionComposeStub() {\n  for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n    funcs[_key] = arguments[_key];\n  }\n  if (funcs.length === 0) return undefined;\n  if (typeof funcs[0] === 'object') return compose;\n  return compose(...funcs);\n}\nexport const composeWithDevTools = typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ : extensionComposeStub;\nexport const devToolsEnhancer = typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION__ ? window.__REDUX_DEVTOOLS_EXTENSION__ : function () {\n  return function (noop) {\n    return noop;\n  };\n};\nexport { composeWithDevTools as composeWithDevToolsDevelopmentOnly, devToolsEnhancer as devToolsEnhancerDevelopmentOnly } from './developmentOnly';\nexport { composeWithDevTools as composeWithDevToolsLogOnly, devToolsEnhancer as devToolsEnhancerLogOnly } from './logOnly';\nexport { composeWithDevTools as composeWithDevToolsLogOnlyInProduction, devToolsEnhancer as devToolsEnhancerLogOnlyInProduction } from './logOnlyInProduction';","import {\n  Band,\n  MediaTagRequestStatus,\n  MediaStatus,\n  LoadStyle,\n  TimeMode,\n  WindowId,\n  PlayerMediaStatus,\n} from \"./types\";\nimport baseSkin from \"./baseSkin.json\";\nexport const BANDS: Band[] = [\n  60, 170, 310, 600, 1000, 3000, 6000, 12000, 14000, 16000,\n];\n\nexport const WINDOWS: { [key: string]: WindowId } = {\n  MAIN: \"main\",\n  PLAYLIST: \"playlist\",\n  EQUALIZER: \"equalizer\",\n  MILKDROP: \"milkdrop\",\n};\n\nexport const LOAD_STYLE: Record<LoadStyle, LoadStyle> = {\n  BUFFER: \"BUFFER\",\n  PLAY: \"PLAY\",\n  NONE: \"NONE\",\n};\n\n// TODO: Make this an enum?\nexport const MEDIA_TAG_REQUEST_STATUS: Record<\n  MediaTagRequestStatus,\n  MediaTagRequestStatus\n> = {\n  INITIALIZED: \"INITIALIZED\",\n  FAILED: \"FAILED\",\n  COMPLETE: \"COMPLETE\",\n  NOT_REQUESTED: \"NOT_REQUESTED\",\n};\n\nexport const UTF8_ELLIPSIS = \"\\u2026\";\nexport const CHARACTER_WIDTH = 5;\nexport const WINDOW_RESIZE_SEGMENT_WIDTH = 25;\nexport const WINDOW_RESIZE_SEGMENT_HEIGHT = 29;\nexport const WINDOW_HEIGHT = 116;\nexport const WINDOW_WIDTH = 275;\nexport const TRACK_HEIGHT = 13;\nexport const LETTERS = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\".split(\"\");\n\nexport const DEFAULT_SKIN = baseSkin;\n\nexport const VISUALIZERS = {\n  OSCILLOSCOPE: \"OSCILLOSCOPE\",\n  BAR: \"BAR\",\n  NONE: \"NONE\",\n  MILKDROP: \"MILKDROP\",\n};\n\nexport const VISUALIZER_ORDER = [\n  VISUALIZERS.BAR,\n  VISUALIZERS.OSCILLOSCOPE, // Order is correct\n  VISUALIZERS.NONE,\n];\n\nexport const TIME_MODE: Record<TimeMode, TimeMode> = {\n  ELAPSED: \"ELAPSED\",\n  REMAINING: \"REMAINING\",\n};\n\nexport const MEDIA_STATUS: Record<MediaStatus, MediaStatus> = {\n  PLAYING: \"PLAYING\",\n  STOPPED: \"STOPPED\",\n  PAUSED: \"PAUSED\",\n};\n\nexport const PLAYER_MEDIA_STATUS: Record<PlayerMediaStatus, PlayerMediaStatus> =\n  {\n    PLAYING: \"PLAYING\",\n    STOPPED: \"STOPPED\",\n    PAUSED: \"PAUSED\",\n    ENDED: \"ENDED\",\n    CLOSED: \"CLOSED\",\n  };\n","import { DEFAULT_SKIN } from \"./constants\";\nimport { WindowInfo } from \"./types\";\n\ninterface Time {\n  minutesFirstDigit: string;\n  minutesSecondDigit: string;\n  secondsFirstDigit: string;\n  secondsSecondDigit: string;\n}\n\ninterface IniData {\n  [section: string]: {\n    [key: string]: string;\n  };\n}\n\nexport function imgFromUrl(url: string): Promise<HTMLImageElement> {\n  return new Promise((resolve, reject) => {\n    const img = new Image();\n    img.onload = () => {\n      resolve(img);\n    };\n    img.onerror = reject;\n    img.src = url;\n  });\n}\n\nexport const getTimeObj = (time: number | null): Time => {\n  if (time == null) {\n    // If we clean up `<MiniTime />` we don't need to do this any more.\n    return {\n      minutesFirstDigit: \" \",\n      minutesSecondDigit: \" \",\n      secondsFirstDigit: \" \",\n      secondsSecondDigit: \" \",\n    };\n  }\n  const minutes = Math.floor(time / 60);\n  const seconds = time % 60;\n\n  const digits =\n    time == null\n      ? [\" \", \" \", \" \", \" \"]\n      : [\n          String(Math.floor(minutes / 10)),\n          String(Math.floor(minutes % 10)),\n          String(Math.floor(seconds / 10)),\n          String(Math.floor(seconds % 10)),\n        ];\n\n  const [\n    minutesFirstDigit,\n    minutesSecondDigit,\n    secondsFirstDigit,\n    secondsSecondDigit,\n  ] = digits;\n\n  return {\n    minutesFirstDigit,\n    minutesSecondDigit,\n    secondsFirstDigit,\n    secondsSecondDigit,\n  };\n};\n\nexport const getTimeStr = (\n  time: number | null,\n  truncate: boolean = true\n): string => {\n  if (time == null) {\n    return \"\";\n  }\n  const {\n    minutesFirstDigit,\n    minutesSecondDigit,\n    secondsFirstDigit,\n    secondsSecondDigit,\n  } = getTimeObj(time);\n\n  return [\n    truncate && minutesFirstDigit === \"0\" ? \"\" : minutesFirstDigit,\n    minutesSecondDigit,\n    \":\",\n    secondsFirstDigit,\n    secondsSecondDigit,\n  ].join(\"\");\n};\n\nexport const parseViscolors = (text: string): string[] => {\n  const entries = text.split(\"\\n\");\n  const regex = /^\\s*(\\d+)\\s*,?\\s*(\\d+)\\s*,?\\s*(\\d+)/;\n  const colors = [...DEFAULT_SKIN.colors];\n  entries\n    .map((line) => regex.exec(line))\n    .filter(Boolean)\n    .map((matches) => (matches as RegExpExecArray).slice(1, 4).join(\",\"))\n    .map((rgb, i) => {\n      colors[i] = `rgb(${rgb})`;\n    });\n  return colors;\n};\n\nconst SECTION_REGEX = /^\\s*\\[(.+?)\\]\\s*$/;\nconst PROPERTY_REGEX = /^\\s*([^;][^=]*)\\s*=\\s*(.*)\\s*$/;\n\nexport const parseIni = (text: string): IniData => {\n  let section: string, match;\n  return text.split(/[\\r\\n]+/g).reduce((data: IniData, line) => {\n    if ((match = line.match(PROPERTY_REGEX)) && section != null) {\n      const key = match[1].trim().toLowerCase();\n      const value = match[2]\n        // Ignore anything after a second `=`\n        // TODO: What if this is inside quotes or escaped?\n        .replace(/\\=.*$/g, \"\")\n        .trim()\n        // Strip quotes\n        // TODO: What about escaped quotes?\n        // TODO: What about unbalanced quotes?\n        .replace(/(^\")|(\"$)|(^')|('$)/g, \"\");\n      data[section][key] = value;\n    } else if ((match = line.match(SECTION_REGEX))) {\n      section = match[1].trim().toLowerCase();\n      data[section] = {};\n    }\n    return data;\n  }, {});\n};\n\nexport const clamp = (value: number, min: number, max: number): number =>\n  Math.min(Math.max(value, min), max);\n\nexport const sum = (values: number[]): number =>\n  values.reduce((total, value) => total + value, 0);\n\nexport function base64FromDataArray(dataArray: Uint8Array): string {\n  return window.btoa(\n    Array.from(dataArray)\n      .map((byte) => String.fromCharCode(byte))\n      .join(\"\")\n  );\n}\n\nexport const base64FromArrayBuffer = (arrayBuffer: ArrayBuffer): string => {\n  return base64FromDataArray(new Uint8Array(arrayBuffer));\n};\n\n// https://stackoverflow.com/a/15832662/1263117\nexport function downloadURI(uri: string, name: string): void {\n  const link = document.createElement(\"a\");\n  link.download = name;\n  link.href = uri;\n  window.document.body.appendChild(link);\n  link.click();\n  window.document.body.removeChild(link);\n}\n\nexport const toPercent = (min: number, max: number, value: number): number =>\n  (value - min) / (max - min);\n\nexport const percentToRange = (percent: number, min: number, max: number) =>\n  min + Math.round(percent * (max - min));\n\nexport const percentToIndex = (percent: number, length: number): number =>\n  percentToRange(percent, 0, length - 1);\n\nconst rebound =\n  (oldMin: number, oldMax: number, newMin: number, newMax: number) =>\n  (oldValue: number): number =>\n    percentToRange(toPercent(oldMin, oldMax, oldValue), newMin, newMax);\n\n// Convert an .eqf value to a 0-100\nexport const normalizeEqBand = rebound(1, 64, 0, 100);\n\n// Convert a 0-100 to an .eqf value\nexport const denormalizeEqBand = rebound(0, 100, 1, 64);\n\n// Merge a `source` object to a `target` recursively\n// TODO: The typing here is a bit of a disaster.\nexport function merge<T extends object, S extends object>(\n  target: T,\n  source: S\n): T & S {\n  const s = source as any;\n  const t = target as any;\n  // Iterate through `source` properties and if an `Object` set property to merge of `target` and `source` properties\n  for (const key of Object.keys(s as any)) {\n    if (s[key] instanceof Object) Object.assign(s[key], merge(t[key], s[key]));\n  }\n\n  // Join `target` and modified `source`\n  Object.assign(target || {}, source);\n  return target as any;\n}\n\n// Maps a value in a range (defined my min/max) to a value in an array (options).\nexport function segment<V>(\n  min: number,\n  max: number,\n  value: number,\n  newValues: V[]\n): V {\n  const ratio = toPercent(min, max, value);\n  /*\n  | 0 | 1 | 2 |\n  0   1   2   3\n  */\n  return newValues[percentToIndex(ratio, newValues.length)];\n}\n\n// https://bost.ocks.org/mike/shuffle/\n// Shuffle an array in O(n)\nexport function shuffle<T>(array: T[]): T[] {\n  const sorted = [...array];\n  let m = sorted.length;\n\n  // While there remain elements to shuffle…\n  while (m) {\n    // Pick a remaining element…\n    const i = Math.floor(Math.random() * m--);\n\n    // And swap it with the current element.\n    const val = sorted[m];\n    sorted[m] = sorted[i];\n    sorted[i] = val;\n  }\n\n  return sorted;\n}\n\nexport function sort<T>(\n  array: T[],\n  iteratee: (value: T) => number | string\n): T[] {\n  return [...array].sort((a, b) => {\n    const aKey = iteratee(a);\n    const bKey = iteratee(b);\n    if (aKey < bKey) {\n      return -1;\n    } else if (aKey > bKey) {\n      return 1;\n    }\n    return 0;\n  });\n}\n\nexport function moveSelected<V>(\n  arr: V[],\n  isSelected: (index: number) => boolean,\n  offset: number\n): V[] {\n  const newArr = new Array(arr.length);\n  let next = 0;\n  for (let i = 0; i < newArr.length; i++) {\n    const from = i - offset;\n    // Is a value supposed to move here?\n    if (from >= 0 && from < arr.length && isSelected(from)) {\n      newArr[i] = arr[from];\n    } else {\n      while (next < arr.length && isSelected(next)) {\n        next++;\n      }\n      newArr[i] = arr[next];\n      next++;\n    }\n  }\n  return newArr;\n}\n\nexport function spliceIn<T>(original: T[], start: number, newValues: T[]): T[] {\n  const newArr = [...original];\n  newArr.splice(start, 0, ...newValues);\n  return newArr;\n}\n\nexport function replaceAtIndex<T>(arr: T[], index: number, newValue: T): T[] {\n  return [...arr.slice(0, index), newValue, ...arr.slice(index + 1)];\n}\n\nexport function debounce(func: Function, delay: number): Function {\n  let timeout: number;\n  let callbackArgs: any[] = [];\n\n  return function (context: Object, ...args: any[]): void {\n    callbackArgs = args;\n\n    if (timeout != null) {\n      clearTimeout(timeout);\n    }\n    timeout = window.setTimeout(() => {\n      func.apply(context, callbackArgs);\n    }, delay);\n  };\n}\n\n// Trailing edge only throttle\nexport function throttle(func: Function, delay: number): Function {\n  let timeout: number | null = null;\n  let callbackArgs: any[] = [];\n\n  return function (context: Object, ...args: any[]): void {\n    callbackArgs = args;\n\n    if (!timeout) {\n      timeout = window.setTimeout(() => {\n        func.apply(context, callbackArgs);\n        timeout = null;\n      }, delay);\n    }\n  };\n}\n\nlet counter = 0;\nexport function uniqueId() {\n  return counter++;\n}\n\nexport function objectForEach<V>(\n  obj: { [key: string]: V },\n  cb: (value: V, key: string) => void\n): void {\n  Object.keys(obj).forEach((key) => cb(obj[key], key));\n}\n\nexport function objectMap<V, N>(\n  obj: { [key: string]: V },\n  cb: (value: V, key: string) => N\n): { [key: string]: N } {\n  const modified: { [key: string]: N } = {};\n  Object.keys(obj).forEach((key) => (modified[key] = cb(obj[key], key)));\n  return modified;\n}\n\nexport function objectFilter<V>(\n  obj: { [key: string]: V },\n  predicate: (value: V, key: string) => boolean\n): { [key: string]: V } {\n  // TODO: Could return the original reference if no values change\n  return Object.keys(obj).reduce((newObj: { [key: string]: V }, key) => {\n    if (predicate(obj[key], key)) {\n      newObj[key] = obj[key];\n    }\n    return newObj;\n  }, {});\n}\n\nexport const calculateBoundingBox = (windows: WindowInfo[]) => {\n  if (windows.length === 0) {\n    return null;\n  }\n  const windowSizes = windows.map((w) => ({\n    left: w.x,\n    top: w.y,\n    bottom: w.y + w.height,\n    right: w.x + w.width,\n  }));\n  return windowSizes.reduce((b, w) => ({\n    left: Math.min(b.left, w.left),\n    top: Math.min(b.top, w.top),\n    bottom: Math.max(b.bottom, w.bottom),\n    right: Math.max(b.right, w.right),\n  }));\n};\n\nexport function findLastIndex<T>(arr: T[], cb: (val: T) => boolean) {\n  for (let i = arr.length - 1; i >= 0; i--) {\n    if (cb(arr[i])) {\n      return i;\n    }\n  }\n  return -1;\n}\n\nexport function getWindowSize(): { width: number; height: number } {\n  // Apparently this is crazy across browsers.\n  return {\n    width: Math.max(\n      document.body.scrollWidth,\n      document.documentElement!.scrollWidth,\n      document.body.offsetWidth,\n      document.documentElement!.offsetWidth,\n      document.body.clientWidth,\n      document.documentElement!.clientWidth\n    ),\n    height: Math.max(\n      document.body.scrollHeight,\n      document.documentElement!.scrollHeight,\n      document.body.offsetHeight,\n      document.documentElement!.offsetHeight,\n      document.body.clientHeight,\n      document.documentElement!.clientHeight\n    ),\n  };\n}\n\nexport function getScreenSize(): { width: number; height: number } {\n  return {\n    width: window.screen.width,\n    height: window.screen.height,\n  };\n}\n\ntype PosEvent =\n  | MouseEvent\n  | TouchEvent\n  | React.MouseEvent<HTMLElement>\n  | React.TouchEvent<HTMLElement>;\n\nfunction getPos(e: PosEvent): { clientX: number; clientY: number } {\n  switch (e.type) {\n    case \"touchstart\":\n    case \"touchmove\": {\n      const touch =\n        (e as TouchEvent).targetTouches[0] ?? (e as TouchEvent).touches[0];\n      if (touch == null) {\n        // Investigating https://github.com/captbaritone/webamp/issues/1105\n        throw new Error(\"Unexpected touch event with zero touch targets.\");\n      }\n      return touch;\n    }\n    case \"mousedown\":\n    case \"mousemove\": {\n      return e as MouseEvent;\n    }\n    default:\n      throw new Error(`Unexpected event type: ${e.type}`);\n  }\n}\n\nexport function getX(e: PosEvent) {\n  return getPos(e).clientX;\n}\n\nexport function getY(e: PosEvent) {\n  return getPos(e).clientY;\n}\n\nexport function weakMapMemoize<T extends object, R>(\n  func: (value: T) => R\n): (value: T) => R {\n  const cache = new WeakMap();\n  return (value: T) => {\n    if (!cache.has(value)) {\n      cache.set(value, func(value));\n    }\n    return cache.get(value);\n  };\n}\n","import { Action } from \"../types\";\nimport { shuffle, moveSelected } from \"../utils\";\n\nexport interface PlaylistState {\n  trackOrder: number[];\n  lastSelectedIndex: number | null;\n  currentTrack: number | null;\n  selectedTracks: number[];\n}\n\nconst defaultPlaylistState: PlaylistState = {\n  trackOrder: [],\n  currentTrack: null,\n  lastSelectedIndex: null,\n  selectedTracks: [],\n};\n\nconst playlist = (\n  state: PlaylistState = defaultPlaylistState,\n  action: Action\n): PlaylistState => {\n  switch (action.type) {\n    case \"CLICKED_TRACK\":\n      return {\n        ...state,\n        selectedTracks: [state.trackOrder[(action as any).index]],\n        lastSelectedIndex: (action as any).index,\n      };\n    case \"CTRL_CLICKED_TRACK\": {\n      const id = state.trackOrder[(action as any).index];\n      const index = state.selectedTracks.indexOf(id);\n      const newSelectedTracks = [...state.selectedTracks];\n      if (index === -1) {\n        newSelectedTracks.push(id);\n      } else {\n        newSelectedTracks.splice(index, 1);\n      }\n      return {\n        ...state,\n        selectedTracks: newSelectedTracks,\n        // Using this as the lastClickedIndex is kinda funny, since you\n        // may have just _un_selected the track. However, this is what\n        // Winamp 2 does, so we'll copy it.\n        lastSelectedIndex: (action as any).index,\n      };\n    }\n    case \"SHIFT_CLICKED_TRACK\":\n      if (state.lastSelectedIndex == null) {\n        return state;\n      }\n      const clickedIndex = (action as any).index;\n      const start = Math.min(clickedIndex, state.lastSelectedIndex);\n      const end = Math.max(clickedIndex, state.lastSelectedIndex);\n      const selectedTracks = state.trackOrder.slice(start, end + 1);\n      return {\n        ...state,\n        selectedTracks,\n      };\n    case \"SELECT_ALL\":\n      return {\n        ...state,\n        selectedTracks: [...state.trackOrder],\n      };\n    case \"SELECT_ZERO\":\n      return {\n        ...state,\n        selectedTracks: [],\n      };\n    case \"INVERT_SELECTION\":\n      return {\n        ...state,\n        selectedTracks: state.trackOrder.filter(\n          (id) => !state.selectedTracks.includes(id)\n        ),\n      };\n    case \"REMOVE_ALL_TRACKS\":\n      // TODO: Consider disposing of ObjectUrls\n      return {\n        ...state,\n        trackOrder: [],\n        currentTrack: null,\n        selectedTracks: [],\n        lastSelectedIndex: null,\n      };\n    case \"REMOVE_TRACKS\":\n      // TODO: Consider disposing of ObjectUrls\n      const actionIds = new Set((action as any).ids.map(Number));\n      const { currentTrack } = state;\n      return {\n        ...state,\n        trackOrder: state.trackOrder.filter(\n          (trackId) => !actionIds.has(trackId)\n        ),\n        currentTrack: actionIds.has(Number(currentTrack)) ? null : currentTrack,\n        selectedTracks: Array.from(state.selectedTracks).filter((id) =>\n          actionIds.has(id)\n        ),\n        // TODO: This could probably be made to work, but we clear it just to be safe.\n        lastSelectedIndex: null,\n      };\n    case \"REVERSE_LIST\":\n      return {\n        ...state,\n        trackOrder: [...state.trackOrder].reverse(),\n        // TODO: This could probably be made to work, but we clear it just to be safe.\n        lastSelectedIndex: null,\n      };\n    case \"RANDOMIZE_LIST\":\n      return {\n        ...state,\n        trackOrder: shuffle(state.trackOrder),\n      };\n    case \"SET_TRACK_ORDER\":\n      const { trackOrder } = action as any;\n      return { ...state, trackOrder };\n    case \"ADD_TRACK_FROM_URL\":\n      const atIndex =\n        (action as any).atIndex == null\n          ? state.trackOrder.length\n          : (action as any).atIndex;\n      return {\n        ...state,\n        trackOrder: [\n          ...state.trackOrder.slice(0, atIndex),\n          Number((action as any).id),\n          ...state.trackOrder.slice(atIndex),\n        ],\n        // TODO: This could probably be made to work, but we clear it just to be safe.\n        lastSelectedIndex: null,\n      };\n    case \"PLAY_TRACK\":\n    case \"BUFFER_TRACK\":\n      return {\n        ...state,\n        currentTrack: (action as any).id,\n      };\n    case \"DRAG_SELECTED\":\n      return {\n        ...state,\n        trackOrder: moveSelected(\n          state.trackOrder,\n          (i) => state.selectedTracks.includes(state.trackOrder[i]),\n          (action as any).offset\n        ),\n        // TODO: This could probably be made to work, but we clear it just to be safe.\n        lastSelectedIndex: null,\n      };\n    default:\n      return state;\n  }\n};\n\nexport default playlist;\n","import { Action, WindowId, Box, Point } from \"../types\";\nimport { WINDOWS } from \"../constants\";\nimport * as Utils from \"../utils\";\nimport { WindowsSerializedStateV1 } from \"../serializedStates/v1Types\";\n\nexport type WindowPositions = {\n  [windowId: string]: Point;\n};\n\nexport interface WebampWindow {\n  title: string;\n  size: [number, number];\n  open: boolean;\n  shade?: boolean;\n  canResize: boolean;\n  canShade: boolean;\n  canDouble: boolean;\n  hotkey?: string;\n  position: Point;\n}\n\nexport interface WindowInfo extends Box {\n  key: WindowId;\n}\nexport interface WindowsState {\n  focused: WindowId | null;\n  genWindows: { [name: string]: WebampWindow };\n  browserWindowSize: { height: number; width: number };\n  positionsAreRelative: boolean;\n  windowOrder: WindowId[];\n  milkdropEnabled: boolean;\n}\n\nconst defaultWindowsState: WindowsState = {\n  focused: WINDOWS.MAIN,\n  positionsAreRelative: true,\n  genWindows: {\n    // TODO: Remove static capabilities and derive them from ids/generic\n    [WINDOWS.MAIN]: {\n      title: \"Main Window\",\n      size: [0, 0],\n      open: true,\n      shade: false,\n      canResize: false,\n      canShade: true,\n      canDouble: true,\n      hotkey: \"Alt+W\",\n      position: { x: 0, y: 0 },\n    },\n    [WINDOWS.EQUALIZER]: {\n      title: \"Equalizer\",\n      size: [0, 0],\n      open: true,\n      shade: false,\n      canResize: false,\n      canShade: true,\n      canDouble: true,\n      hotkey: \"Alt+G\",\n      position: { x: 0, y: 0 },\n    },\n    [WINDOWS.PLAYLIST]: {\n      title: \"Playlist Editor\",\n      size: [0, 0],\n      open: true,\n      shade: false,\n      canResize: true,\n      canShade: true,\n      canDouble: false,\n      hotkey: \"Alt+E\",\n      position: { x: 0, y: 0 },\n    },\n    [WINDOWS.MILKDROP]: {\n      title: \"Milkdrop\",\n      size: [0, 0],\n      open: false,\n      shade: false,\n      canResize: true,\n      canShade: false,\n      canDouble: false,\n      position: { x: 0, y: 0 },\n    },\n  },\n  browserWindowSize: { width: 0, height: 0 },\n  windowOrder: [\n    WINDOWS.PLAYLIST,\n    WINDOWS.EQUALIZER,\n    WINDOWS.MILKDROP,\n    WINDOWS.MAIN,\n  ],\n  milkdropEnabled: false,\n};\n\nconst windows = (\n  state: WindowsState = defaultWindowsState,\n  action: Action\n): WindowsState => {\n  switch (action.type) {\n    case \"ENABLE_MILKDROP\":\n      return {\n        ...state,\n        milkdropEnabled: true,\n        genWindows: {\n          ...state.genWindows,\n          [WINDOWS.MILKDROP]: {\n            ...state.genWindows[WINDOWS.MILKDROP],\n            open: (action as any).open,\n          },\n        },\n      };\n    case \"SET_FOCUSED_WINDOW\":\n      let windowOrder = state.windowOrder;\n      if ((action as any).window != null) {\n        windowOrder = [\n          ...state.windowOrder.filter(\n            (windowId) => windowId !== (action as any).window\n          ),\n          (action as any).window,\n        ];\n      }\n      return { ...state, focused: (action as any).window, windowOrder };\n    case \"TOGGLE_WINDOW_SHADE_MODE\":\n      const { canShade } = state.genWindows[(action as any).windowId];\n      if (!canShade) {\n        throw new Error(\n          `Tried to shade/unshade a window that cannot be shaded: ${\n            (action as any).windowId\n          }`\n        );\n      }\n      return {\n        ...state,\n        genWindows: {\n          ...state.genWindows,\n          [(action as any).windowId]: {\n            ...state.genWindows[(action as any).windowId],\n            shade: !state.genWindows[(action as any).windowId].shade,\n          },\n        },\n      };\n    case \"TOGGLE_WINDOW\":\n      const windowState = state.genWindows[(action as any).windowId];\n      return {\n        ...state,\n        genWindows: {\n          ...state.genWindows,\n          [(action as any).windowId]: {\n            ...windowState,\n            open: !windowState.open,\n          },\n        },\n      };\n    case \"CLOSE_WINDOW\":\n      return {\n        ...state,\n        genWindows: {\n          ...state.genWindows,\n          [(action as any).windowId]: {\n            ...state.genWindows[(action as any).windowId],\n            open: false,\n          },\n        },\n      };\n    case \"WINDOW_SIZE_CHANGED\":\n      const { canResize } = state.genWindows[(action as any).windowId];\n      if (!canResize) {\n        throw new Error(\n          `Tried to resize a window that cannot be resized: ${\n            (action as any).windowId\n          }`\n        );\n      }\n      return {\n        ...state,\n        genWindows: {\n          ...state.genWindows,\n          [(action as any).windowId]: {\n            ...state.genWindows[(action as any).windowId],\n            size: (action as any).size,\n          },\n        },\n      };\n    case \"UPDATE_WINDOW_POSITIONS\":\n      return {\n        ...state,\n        positionsAreRelative:\n          (action as any).absolute === true\n            ? false\n            : state.positionsAreRelative,\n        genWindows: Utils.objectMap(state.genWindows, (w, windowId) => {\n          const newPosition = (action as any).positions[windowId];\n          if (newPosition == null) {\n            return w;\n          }\n          return { ...w, position: newPosition };\n        }),\n      };\n    case \"RESET_WINDOW_SIZES\":\n      return {\n        ...state,\n        genWindows: Utils.objectMap(state.genWindows, (w) => ({\n          ...w,\n          // Not sure why TypeScript can't figure this out for itself.\n          size: [0, 0] as [number, number],\n        })),\n      };\n    case \"LOAD_SERIALIZED_STATE\": {\n      const { genWindows, focused, positionsAreRelative } = (action as any)\n        .serializedState.windows;\n      return {\n        ...state,\n        positionsAreRelative,\n        genWindows: Utils.objectMap(state.genWindows, (w, windowId) => {\n          const serializedW = genWindows[windowId];\n          if (serializedW == null) {\n            return w;\n          }\n          // Pull out `hidden` since it's been removed from our state.\n          const { hidden, ...rest } = serializedW;\n          return { ...w, ...rest };\n        }),\n        focused,\n      };\n    }\n    case \"BROWSER_WINDOW_SIZE_CHANGED\":\n      return {\n        ...state,\n        browserWindowSize: {\n          height: (action as any).height,\n          width: (action as any).width,\n        },\n      };\n\n    default:\n      return state;\n  }\n};\n\nexport function getSerializedState(\n  state: WindowsState\n): WindowsSerializedStateV1 {\n  return {\n    positionsAreRelative: state.positionsAreRelative,\n    genWindows: Utils.objectMap(state.genWindows, (w) => {\n      return {\n        size: w.size,\n        open: w.open,\n        hidden: false, // Not used any more\n        shade: w.shade || false,\n        position: w.position,\n      };\n    }),\n    focused: state.focused,\n  };\n}\n\nexport default windows;\n","import { Action, PlayerMediaStatus, TimeMode } from \"../types\";\nimport { TIME_MODE, PLAYER_MEDIA_STATUS } from \"../constants\";\nimport { MediaSerializedStateV1 } from \"../serializedStates/v1Types\";\n\nexport interface MediaState {\n  timeMode: TimeMode; // TODO: Convert this to an enum\n  timeElapsed: number;\n  volume: number;\n  balance: number;\n  shuffle: boolean;\n  repeat: boolean;\n  status: PlayerMediaStatus;\n}\n\nconst defaultState = {\n  timeMode: TIME_MODE.ELAPSED,\n  timeElapsed: 0,\n\n  // The winamp ini file declares the default volume as \"200\".\n  // The UI seems to show a default volume near 78, which would\n  // math with the default value being 200 out of 255.\n  volume: Math.round((200 / 255) * 100),\n  balance: 0,\n  shuffle: false,\n  repeat: false,\n  // TODO: Enforce possible values\n  status: PLAYER_MEDIA_STATUS.STOPPED,\n};\n\nconst media = (\n  state: MediaState = defaultState,\n  action: Action\n): MediaState => {\n  switch (action.type) {\n    // TODO: Make these constants\n    case \"PLAY\":\n    case \"IS_PLAYING\":\n      return { ...state, status: PLAYER_MEDIA_STATUS.PLAYING };\n    case \"PAUSE\":\n      return { ...state, status: PLAYER_MEDIA_STATUS.PAUSED };\n    case \"STOP\":\n      return { ...state, status: PLAYER_MEDIA_STATUS.STOPPED };\n    case \"IS_STOPPED\":\n      return { ...state, status: PLAYER_MEDIA_STATUS.ENDED };\n    case \"OPEN_WINAMP\":\n      return { ...state, status: PLAYER_MEDIA_STATUS.STOPPED };\n    case \"CLOSE_WINAMP\":\n      return { ...state, status: PLAYER_MEDIA_STATUS.CLOSED };\n    case \"TOGGLE_TIME_MODE\":\n      const newMode =\n        state.timeMode === TIME_MODE.REMAINING\n          ? TIME_MODE.ELAPSED\n          : TIME_MODE.REMAINING;\n      return { ...state, timeMode: newMode };\n    case \"UPDATE_TIME_ELAPSED\":\n      return { ...state, timeElapsed: (action as any).elapsed };\n    case \"SET_MEDIA\":\n      return {\n        ...state,\n      };\n    case \"SET_VOLUME\":\n      return { ...state, volume: (action as any).volume };\n    case \"SET_BALANCE\":\n      return { ...state, balance: (action as any).balance };\n    case \"TOGGLE_REPEAT\":\n      return { ...state, repeat: !state.repeat };\n    case \"TOGGLE_SHUFFLE\":\n      return { ...state, shuffle: !state.shuffle };\n    case \"LOAD_SERIALIZED_STATE\":\n      return { ...state, ...(action as any).serializedState.media };\n    default:\n      return state;\n  }\n};\n\nexport function getSerializedState(state: MediaState): MediaSerializedStateV1 {\n  const { volume, balance, shuffle, repeat } = state;\n  return { volume, balance, shuffle, repeat };\n}\n\nexport default media;\n","'use strict';\n\nexports.__esModule = true;\nexports.defaultMemoize = defaultMemoize;\nexports.createSelectorCreator = createSelectorCreator;\nexports.createStructuredSelector = createStructuredSelector;\nfunction defaultEqualityCheck(a, b) {\n  return a === b;\n}\n\nfunction areArgumentsShallowlyEqual(equalityCheck, prev, next) {\n  if (prev === null || next === null || prev.length !== next.length) {\n    return false;\n  }\n\n  // Do this in a for loop (and not a `forEach` or an `every`) so we can determine equality as fast as possible.\n  var length = prev.length;\n  for (var i = 0; i < length; i++) {\n    if (!equalityCheck(prev[i], next[i])) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nfunction defaultMemoize(func) {\n  var equalityCheck = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultEqualityCheck;\n\n  var lastArgs = null;\n  var lastResult = null;\n  // we reference arguments instead of spreading them for performance reasons\n  return function () {\n    if (!areArgumentsShallowlyEqual(equalityCheck, lastArgs, arguments)) {\n      // apply arguments instead of spreading for performance.\n      lastResult = func.apply(null, arguments);\n    }\n\n    lastArgs = arguments;\n    return lastResult;\n  };\n}\n\nfunction getDependencies(funcs) {\n  var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs;\n\n  if (!dependencies.every(function (dep) {\n    return typeof dep === 'function';\n  })) {\n    var dependencyTypes = dependencies.map(function (dep) {\n      return typeof dep;\n    }).join(', ');\n    throw new Error('Selector creators expect all input-selectors to be functions, ' + ('instead received the following types: [' + dependencyTypes + ']'));\n  }\n\n  return dependencies;\n}\n\nfunction createSelectorCreator(memoize) {\n  for (var _len = arguments.length, memoizeOptions = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    memoizeOptions[_key - 1] = arguments[_key];\n  }\n\n  return function () {\n    for (var _len2 = arguments.length, funcs = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      funcs[_key2] = arguments[_key2];\n    }\n\n    var recomputations = 0;\n    var resultFunc = funcs.pop();\n    var dependencies = getDependencies(funcs);\n\n    var memoizedResultFunc = memoize.apply(undefined, [function () {\n      recomputations++;\n      // apply arguments instead of spreading for performance.\n      return resultFunc.apply(null, arguments);\n    }].concat(memoizeOptions));\n\n    // If a selector is called with the exact same arguments we don't need to traverse our dependencies again.\n    var selector = defaultMemoize(function () {\n      var params = [];\n      var length = dependencies.length;\n\n      for (var i = 0; i < length; i++) {\n        // apply arguments instead of spreading and mutate a local list of params for performance.\n        params.push(dependencies[i].apply(null, arguments));\n      }\n\n      // apply arguments instead of spreading for performance.\n      return memoizedResultFunc.apply(null, params);\n    });\n\n    selector.resultFunc = resultFunc;\n    selector.recomputations = function () {\n      return recomputations;\n    };\n    selector.resetRecomputations = function () {\n      return recomputations = 0;\n    };\n    return selector;\n  };\n}\n\nvar createSelector = exports.createSelector = createSelectorCreator(defaultMemoize);\n\nfunction createStructuredSelector(selectors) {\n  var selectorCreator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : createSelector;\n\n  if (typeof selectors !== 'object') {\n    throw new Error('createStructuredSelector expects first argument to be an object ' + ('where each property is a selector, instead received a ' + typeof selectors));\n  }\n  var objectKeys = Object.keys(selectors);\n  return selectorCreator(objectKeys.map(function (key) {\n    return selectors[key];\n  }), function () {\n    for (var _len3 = arguments.length, values = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n      values[_key3] = arguments[_key3];\n    }\n\n    return values.reduce(function (composition, value, index) {\n      composition[objectKeys[index]] = value;\n      return composition;\n    }, {});\n  });\n}","import {\n  Action,\n  SkinImages,\n  Cursors,\n  SkinRegion,\n  GenLetterWidths,\n  PlaylistStyle,\n  SkinGenExColors,\n  DummyVizData,\n} from \"../types\";\nimport * as Utils from \"../utils\";\nimport { createSelector } from \"reselect\";\nimport { DEFAULT_SKIN, VISUALIZER_ORDER } from \"../constants\";\nimport { DisplaySerializedStateV1 } from \"../serializedStates/v1Types\";\n\nexport interface DisplayState {\n  visualizerStyle: number;\n  doubled: boolean;\n  llama: boolean;\n  disableMarquee: boolean;\n  marqueeStep: number;\n  skinImages: SkinImages;\n  skinCursors: Cursors | null;\n  skinRegion: SkinRegion;\n  skinGenLetterWidths: GenLetterWidths | null;\n  skinColors: string[]; // Theoretically this could be a tuple of a specific length\n  skinPlaylistStyle: PlaylistStyle | null;\n  skinGenExColors: SkinGenExColors;\n  working: boolean;\n  closed: boolean;\n  loading: boolean;\n  playlistScrollPosition: number;\n  zIndex: number;\n  dummyVizData: DummyVizData | null;\n}\n\nconst defaultSkinGenExColors = {\n  itemBackground: \"rgb(0,0,0)\",\n  itemForeground: \"rgb(0,255,0)\",\n  windowBackground: \"rgb(56,55,87)\",\n  buttonText: \"rgb(57,57,66)\",\n  windowText: \"rgb(255,255,255)\",\n  divider: \"rgb(117,116,139)\",\n  playlistSelection: \"rgb(0,0,198)\",\n  listHeaderBackground: \"rgb(72,72,120)\",\n  listHeaderText: \"rgb(255,255,255)\",\n  listHeaderFrameTopAndLeft: \"rgb(108,108,180)\",\n  listHeaderFrameBottomAndRight: \"rgb(36,36,60)\",\n  listHeaderFramePressed: \"rgb(18,18,30)\",\n  listHeaderDeadArea: \"rgb(36,36,60)\",\n  scrollbarOne: \"rgb(36,36,60)\",\n  scrollbarTwo: \"rgb(36,36,60)\",\n  pressedScrollbarOne: \"rgb(121,130,150)\",\n  pressedScrollbarTwo: \"rgb(78,88,110)\",\n  scrollbarDeadArea: \"rgb(36,36,60)\",\n  listTextHighlighted: \"rgb(0,198,255)\",\n  listTextHighlightedBackground: \"rgb(0,198,255)\",\n  listTextSelected: \"rgb(0,198,255)\",\n  listTextSelectedBackground: \"rgb(0,198,255)\",\n};\n\nconst defaultDisplayState = {\n  doubled: false,\n  marqueeStep: 0,\n  disableMarquee: false,\n  loading: true,\n  llama: false,\n  closed: false,\n  working: false,\n  skinImages: DEFAULT_SKIN.images,\n  skinColors: DEFAULT_SKIN.colors,\n  skinCursors: null,\n  skinPlaylistStyle: null,\n  skinRegion: {},\n  visualizerStyle: 0, // Index into VISUALIZER_ORDER\n  dummyVizData: null,\n  playlistScrollPosition: 0,\n  skinGenLetterWidths: null, // TODO: Get the default value for this?\n  skinGenExColors: defaultSkinGenExColors,\n  additionalVisualizers: [],\n  zIndex: 0,\n};\n\nconst display = (\n  state: DisplayState = defaultDisplayState,\n  action: Action\n): DisplayState => {\n  switch (action.type) {\n    case \"LOAD_DEFAULT_SKIN\": {\n      const {\n        skinImages,\n        skinColors,\n        skinCursors,\n        skinPlaylistStyle,\n        skinRegion,\n        skinGenLetterWidths,\n        skinGenExColors,\n      } = defaultDisplayState;\n      return {\n        ...state,\n        skinImages,\n        skinColors,\n        skinCursors,\n        skinPlaylistStyle,\n        skinRegion,\n        skinGenLetterWidths,\n        skinGenExColors,\n      };\n    }\n    case \"TOGGLE_DOUBLESIZE_MODE\":\n      return { ...state, doubled: !state.doubled };\n    case \"TOGGLE_LLAMA_MODE\":\n      return { ...state, llama: !state.llama };\n    case \"STEP_MARQUEE\":\n      return state.disableMarquee\n        ? state\n        : { ...state, marqueeStep: state.marqueeStep + 1 };\n    case \"DISABLE_MARQUEE\":\n      return { ...state, disableMarquee: true };\n    case \"STOP_WORKING\":\n      return { ...state, working: false };\n    case \"START_WORKING\":\n      return { ...state, working: true };\n    case \"CLOSE_WINAMP\":\n      return { ...state, closed: true };\n    case \"OPEN_WINAMP\":\n      return { ...state, closed: false };\n    case \"LOADING\":\n      return { ...state, loading: true };\n    case \"LOADED\":\n      return { ...state, loading: false };\n    case \"SET_SKIN_DATA\":\n      const { data } = action as any;\n      return {\n        ...state,\n        loading: false,\n        skinImages: data.skinImages,\n        skinColors: data.skinColors,\n        skinPlaylistStyle: data.skinPlaylistStyle,\n        skinCursors: data.skinCursors,\n        skinRegion: data.skinRegion,\n        skinGenLetterWidths: data.skinGenLetterWidths,\n        skinGenExColors: data.skinGenExColors || defaultSkinGenExColors,\n      };\n    case \"TOGGLE_VISUALIZER_STYLE\":\n      return {\n        ...state,\n        visualizerStyle: (state.visualizerStyle + 1) % VISUALIZER_ORDER.length,\n      };\n    case \"SET_PLAYLIST_SCROLL_POSITION\":\n      return { ...state, playlistScrollPosition: (action as any).position };\n    case \"SET_Z_INDEX\":\n      return { ...state, zIndex: (action as any).zIndex };\n    case \"SET_DUMMY_VIZ_DATA\":\n      return { ...state, dummyVizData: (action as any).data };\n    case \"LOAD_SERIALIZED_STATE\": {\n      const { skinCursors, ...rest } = (action as any).serializedState.display;\n      const upgrade = (url: string) => ({ type: \"cur\", url } as const);\n      const newSkinCursors =\n        skinCursors == null ? null : Utils.objectMap(skinCursors, upgrade);\n      return { ...state, skinCursors: newSkinCursors, ...rest };\n    }\n    default:\n      return state;\n  }\n};\nexport default display;\n\nexport const getSerializedState = (\n  state: DisplayState\n): DisplaySerializedStateV1 => {\n  // My kingdom for a type-safe `_.pick`.\n  const {\n    visualizerStyle,\n    doubled,\n    llama,\n    marqueeStep,\n    skinImages,\n    skinCursors,\n    skinRegion,\n    skinGenLetterWidths,\n    skinColors,\n    skinPlaylistStyle,\n  } = state;\n\n  let newCursors: { [cursor: string]: string } | null = null;\n  if (skinCursors != null) {\n    // @ts-ignore Typescript does not like that we can have `undefined` as\n    // values here. Since this is going to get serialized to JSON (which will\n    // drop undefined) it's fine.\n    // This code is geting removed soon anyway.\n    newCursors = Utils.objectMap(skinCursors, (cursor) => {\n      return cursor.type === \"cur\" ? cursor.url : undefined;\n    });\n  }\n  return {\n    visualizerStyle,\n    doubled,\n    llama,\n    marqueeStep,\n    skinImages,\n    skinCursors: newCursors,\n    skinRegion,\n    skinGenLetterWidths,\n    skinColors,\n    skinPlaylistStyle,\n  };\n};\n\nexport const getVisualizerStyle = createSelector(\n  (state: DisplayState) => state.visualizerStyle,\n  (visualizationStyle): string => {\n    return VISUALIZER_ORDER[visualizationStyle];\n  }\n);\n","import { Action, Slider } from \"../types\";\n\nexport interface UserInputState {\n  focus: string | null; // TODO: Convert this to an enum?\n  bandFocused: Slider | null;\n  scrubPosition: number;\n  userMessage: string | null;\n}\n\nconst defaultUserInput = {\n  focus: null,\n  bandFocused: null,\n  scrubPosition: 0,\n  userMessage: null,\n};\n\nexport const userInput = (\n  state: UserInputState = defaultUserInput,\n  action: Action\n): UserInputState => {\n  switch (action.type) {\n    case \"SET_FOCUS\":\n      return { ...state, focus: (action as any).input, bandFocused: null };\n    case \"SET_BAND_FOCUS\":\n      return {\n        ...state,\n        focus: (action as any).input,\n        bandFocused: (action as any).bandFocused,\n      };\n    case \"UNSET_FOCUS\":\n      return { ...state, focus: null, bandFocused: null };\n    case \"SET_SCRUB_POSITION\":\n      return { ...state, scrubPosition: (action as any).position };\n    case \"SET_USER_MESSAGE\":\n      return { ...state, userMessage: (action as any).message };\n    case \"UNSET_USER_MESSAGE\":\n      return { ...state, userMessage: null };\n    default:\n      return state;\n  }\n};\n\nexport default userInput;\n","import { Slider, Action } from \"./../types\";\nimport { EqualizerSerializedStateV1 } from \"../serializedStates/v1Types\";\n\nexport interface EqualizerState {\n  on: boolean;\n  auto: boolean;\n  sliders: Record<Slider, number>;\n}\n\nconst defaultState = {\n  on: true,\n  auto: false,\n  sliders: {\n    preamp: 50,\n    60: 50,\n    170: 50,\n    310: 50,\n    600: 50,\n    1000: 50,\n    3000: 50,\n    6000: 50,\n    12000: 50,\n    14000: 50,\n    16000: 50,\n  },\n};\n\nconst equalizer = (\n  state: EqualizerState = defaultState,\n  action: Action\n): EqualizerState => {\n  switch (action.type) {\n    case \"SET_BAND_VALUE\":\n      const newSliders = {\n        ...state.sliders,\n        [(action as any).band]: (action as any).value,\n      };\n      return { ...state, sliders: newSliders };\n    case \"SET_EQ_ON\":\n      return { ...state, on: true };\n    case \"SET_EQ_OFF\":\n      return { ...state, on: false };\n    case \"SET_EQ_AUTO\":\n      return { ...state, auto: (action as any).value };\n    case \"LOAD_SERIALIZED_STATE\":\n      return (action as any).serializedState.equalizer || state;\n    default:\n      return state;\n  }\n};\n\nexport function getSerializedState(\n  state: EqualizerState\n): EqualizerSerializedStateV1 {\n  return state;\n}\n\nexport default equalizer;\n","import { Action, Skin } from \"../types\";\n\nexport interface SettingsState {\n  availableSkins: Array<Skin>;\n}\n\nconst defaultSettingsState = {\n  availableSkins: [],\n};\n\nconst settings = (\n  state: SettingsState = defaultSettingsState,\n  action: Action\n): SettingsState => {\n  switch (action.type) {\n    case \"SET_AVAILABLE_SKINS\":\n      return { ...state, availableSkins: (action as any).skins };\n    default:\n      return state;\n  }\n};\n\nexport default settings;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n  if (process.env.NODE_ENV !== 'production') {\n    if (format === undefined) {\n      throw new Error('invariant requires an error message argument');\n    }\n  }\n\n  if (!condition) {\n    var error;\n    if (format === undefined) {\n      error = new Error(\n        'Minified exception occurred; use the non-minified dev environment ' +\n        'for the full error message and additional helpful warnings.'\n      );\n    } else {\n      var args = [a, b, c, d, e, f];\n      var argIndex = 0;\n      error = new Error(\n        format.replace(/%s/g, function() { return args[argIndex++]; })\n      );\n      error.name = 'Invariant Violation';\n    }\n\n    error.framesToPop = 1; // we don't care about invariant's own frame\n    throw error;\n  }\n};\n\nmodule.exports = invariant;\n","import invariant from \"invariant\";\nimport { IMetadataApi } from \"./types\";\nimport { IAudioMetadata } from \"music-metadata-browser\"; // Import music-metadata type definitions\nimport * as Utils from \"./utils\";\n\ntype MediaDataType = string | ArrayBuffer | Blob;\n\nexport async function genMediaTags(\n  file: MediaDataType,\n  musicMetadata: IMetadataApi\n): Promise<IAudioMetadata> {\n  invariant(\n    file != null,\n    \"Attempted to get the tags of media file without passing a file\"\n  );\n\n  const options = {\n    duration: true,\n    skipPostHeaders: true, // avoid unnecessary data to be read\n  };\n\n  if (typeof file === \"string\") {\n    if (\n      \"parseWebStream\" in musicMetadata &&\n      typeof musicMetadata.parseWebStream === \"function\"\n    ) {\n      const response = await fetch(file);\n      if (!response.ok) {\n        throw new Error(\n          `Failed to fetch URL: ${file}, status: ${response.status}`\n        );\n      }\n\n      // https://github.com/Borewit/music-metadata/issues/2455\n      // There's currently an issue where some URLs will fail to parse id3 tags\n      // when using parseWebStream. This approach can work around it. However,\n      // My current assumption is that this is an issue mostly specific to that\n      // individual file and not a wide spread issue, but if we find it happens\n      // more broadly we can deopt to using parseBlob as below.\n\n      // const blob = await response.blob();\n      // return musicMetadata.parseBlob(blob, options);\n\n      const webStream = response.body;\n      if (webStream == null) {\n        throw new Error(\"Response body is null, cannot parse metadata.\");\n      }\n      return musicMetadata.parseWebStream(webStream, undefined, options);\n    }\n    if (\n      \"fetchFromUrl\" in musicMetadata &&\n      typeof musicMetadata.fetchFromUrl === \"function\"\n    ) {\n      return musicMetadata.fetchFromUrl(file, options);\n    }\n    throw new Error(\"No suitable method available to parse URL\");\n  }\n  // Assume Blob\n  return musicMetadata.parseBlob(file as Blob, options);\n}\n\nexport function genMediaDuration(url: string): Promise<number> {\n  invariant(\n    typeof url === \"string\",\n    \"Attempted to get the duration of media file without passing a url\"\n  );\n  return new Promise((resolve, reject) => {\n    // TODO: Does this actually stop downloading the file once it's\n    // got the duration?\n    const audio = document.createElement(\"audio\");\n    audio.crossOrigin = \"anonymous\";\n\n    const durationChange = () => {\n      resolve(audio.duration);\n      audio.removeEventListener(\"durationchange\", durationChange);\n      audio.removeEventListener(\"error\", errorHandler);\n      audio.src = \"\";\n      // TODO: Not sure if this really gets cleaned up.\n    };\n\n    const errorHandler = (e: Event) => {\n      audio.removeEventListener(\"durationchange\", durationChange);\n      audio.removeEventListener(\"error\", errorHandler);\n      reject(e);\n    };\n\n    audio.addEventListener(\"durationchange\", durationChange);\n    audio.addEventListener(\"error\", errorHandler);\n    audio.src = url;\n  });\n}\n\nexport async function genArrayBufferFromFileReference(\n  fileReference: File\n): Promise<any> {\n  invariant(\n    fileReference != null,\n    \"Attempt to get an ArrayBuffer without assigning a fileReference\"\n  );\n  return new Promise((resolve, reject) => {\n    const reader = new FileReader();\n    reader.onload = () => {\n      resolve(reader.result as ArrayBuffer);\n    };\n    reader.onerror = reject;\n    reader.readAsArrayBuffer(fileReference);\n  });\n}\n\nexport async function genStringFromFileReference(\n  fileReference: File\n): Promise<string> {\n  return new Promise((resolve, reject) => {\n    const reader = new FileReader();\n    reader.onload = () => {\n      resolve(reader.result as string);\n    };\n    reader.onerror = reject;\n    reader.readAsText(fileReference);\n  });\n}\n\ninterface PromptForFileReferenceOptions {\n  accept?: string | null;\n  directory?: boolean;\n}\n\nexport async function promptForFileReferences(\n  { accept, directory = false }: PromptForFileReferenceOptions = {\n    accept: null,\n    directory: false,\n  }\n): Promise<FileList> {\n  return new Promise<FileList>((resolve) => {\n    // Does this represent a memory leak somehow?\n    // Can this fail? Do we ever reject?\n    const fileInput = document.createElement(\"input\");\n    if (accept) fileInput.setAttribute(\"accept\", accept);\n    fileInput.type = \"file\";\n    fileInput.multiple = true;\n    // @ts-ignore Non-standard\n    fileInput.webkitdirectory = directory;\n    // @ts-ignore Non-standard\n    fileInput.directory = directory;\n    // @ts-ignore Non-standard\n    fileInput.mozdirectory = directory;\n    // Not entirely sure why this is needed, since the input\n    // was just created, but somehow this helps prevent change\n    // events from getting swallowed.\n    // https://stackoverflow.com/a/12102992/1263117\n\n    // @ts-ignore Technically you can't set this to null, it has to be a string.\n    // But I don't feel like retesting it, so I'll leave it as null\n    fileInput.value = null;\n    fileInput.addEventListener(\"change\", (e: Event) => {\n      const files = (<HTMLInputElement>e.target).files;\n      resolve(files as FileList);\n    });\n    fileInput.click();\n  });\n}\n\nfunction urlIsBlobUrl(url: string): boolean {\n  return /^blob:/.test(url);\n}\n\nexport function curUrlFromByteArray(arr: Uint8Array) {\n  const base64 = Utils.base64FromDataArray(arr);\n  return `data:image/x-win-bitmap;base64,${base64}`;\n}\n\n// This is not perfect, but... meh: https://stackoverflow.com/a/36756650/1263117\nexport function filenameFromUrl(url: string): string | null {\n  if (urlIsBlobUrl(url)) {\n    return null;\n  }\n\n  const lastSegment = url.split(\"/\").pop();\n  if (lastSegment == null) {\n    return null;\n  }\n  return lastSegment.split(\"#\")[0].split(\"?\")[0];\n}\n","import { PlaylistTrack } from \"./types\";\nimport * as Utils from \"./utils\";\nimport * as FileUtils from \"./fileUtils\";\n\nexport const trackName = Utils.weakMapMemoize(\n  (track: PlaylistTrack): string => {\n    const { artist, title, defaultName, url } = track;\n    if (artist && title) {\n      return `${artist} - ${title}`;\n    } else if (title) {\n      return title;\n    } else if (defaultName) {\n      return defaultName;\n    } else if (url) {\n      const filename = FileUtils.filenameFromUrl(url);\n      if (filename) {\n        return filename;\n      }\n    }\n    return \"???\";\n  }\n);\n\nexport const trackFilename = Utils.weakMapMemoize(\n  (track: PlaylistTrack): string => {\n    if (track.url) {\n      const urlFilename = FileUtils.filenameFromUrl(track.url);\n      if (urlFilename != null) {\n        return urlFilename;\n      }\n    }\n    if (track.defaultName) {\n      return track.defaultName;\n    }\n    return \"???\";\n  }\n);\n","import { PlaylistTrack, Action } from \"../types\";\nimport { MEDIA_TAG_REQUEST_STATUS } from \"../constants\";\nimport * as TrackUtils from \"../trackUtils\";\n\nexport interface TracksState {\n  [id: string]: PlaylistTrack;\n}\n\nconst defaultPlaylistState: TracksState = {};\n\nconst tracks = (\n  state: TracksState = defaultPlaylistState,\n  action: Action\n): TracksState => {\n  switch (action.type) {\n    case \"ADD_TRACK_FROM_URL\":\n      return {\n        ...state,\n        [(action as any).id]: {\n          id: (action as any).id,\n          defaultName: (action as any).defaultName || null,\n          duration: (action as any).duration ?? null,\n          url: (action as any).url,\n          mediaTagsRequestStatus: MEDIA_TAG_REQUEST_STATUS.INITIALIZED,\n        },\n      };\n    case \"SET_MEDIA\": {\n      const newTrack = {\n        ...state[(action as any).id],\n        duration: (action as any).length,\n      };\n      return {\n        ...state,\n        [(action as any).id]: newTrack,\n      };\n    }\n    case \"MEDIA_TAG_REQUEST_INITIALIZED\":\n      return {\n        ...state,\n        [(action as any).id]: {\n          ...state[(action as any).id],\n          mediaTagsRequestStatus: MEDIA_TAG_REQUEST_STATUS.INITIALIZED,\n        },\n      };\n    case \"MEDIA_TAG_REQUEST_FAILED\":\n      return {\n        ...state,\n        [(action as any).id]: {\n          ...state[(action as any).id],\n          mediaTagsRequestStatus: MEDIA_TAG_REQUEST_STATUS.FAILED,\n        },\n      };\n    case \"SET_MEDIA_DURATION\": {\n      return {\n        ...state,\n        [(action as any).id]: {\n          ...state[(action as any).id],\n          duration: (action as any).duration,\n        },\n      };\n    }\n    case \"SET_MEDIA_TAGS\":\n      const track = state[(action as any).id];\n      const {\n        sampleRate,\n        bitrate,\n        numberOfChannels,\n        title,\n        artist,\n        album,\n        albumArtUrl,\n      } = action as any;\n      const { kbps, khz, channels } = track;\n      return {\n        ...state,\n        [(action as any).id]: {\n          ...track,\n          mediaTagsRequestStatus: MEDIA_TAG_REQUEST_STATUS.COMPLETE,\n          title,\n          artist,\n          album,\n          albumArtUrl,\n          kbps: bitrate != null ? String(Math.round(bitrate / 1000)) : kbps,\n          khz: sampleRate != null ? String(Math.round(sampleRate / 1000)) : khz,\n          channels: numberOfChannels != null ? numberOfChannels : channels,\n        },\n      };\n    default:\n      return state;\n  }\n};\n\nexport default tracks;\n\nexport const getTrackDisplayName = (\n  state: TracksState,\n  id: number | null = null\n): string | null => {\n  if (id == null) {\n    return null;\n  }\n  const track = state[id];\n  if (track == null) {\n    return null;\n  }\n\n  return TrackUtils.trackName(track);\n};\n","import type { AnyWebByteStream, IFileInfo } from \"strtok3\";\nimport { PlaylistState } from \"./reducers/playlist\";\nimport { SettingsState } from \"./reducers/settings\";\nimport { UserInputState } from \"./reducers/userInput\";\nimport { MediaState } from \"./reducers/media\";\nimport { ThunkDispatch, ThunkAction } from \"redux-thunk\";\nimport { DisplayState } from \"./reducers/display\";\nimport {\n  WindowsState,\n  WindowPositions as _WindowPositions,\n  WebampWindow as _WebampWindow,\n  WindowInfo as _WindowInfo,\n} from \"./reducers/windows\";\nimport { EqualizerState } from \"./reducers/equalizer\";\nimport { NetworkState } from \"./reducers/network\";\nimport { MilkdropState } from \"./reducers/milkdrop\";\nimport { SerializedStateV1 } from \"./serializedStates/v1Types\";\nimport { TracksState } from \"./reducers/tracks\";\nimport { IAudioMetadata, IOptions } from \"music-metadata-browser\";\nimport { Store as ReduxStore } from \"redux\";\n\n// Avoid warnings from Webpack: https://github.com/webpack/webpack/issues/7378\nexport type WebampWindow = _WebampWindow;\nexport type WindowInfo = _WindowInfo;\nexport type WindowPositions = _WindowPositions;\n\nexport interface Point {\n  x: number;\n  y: number;\n}\n\nexport interface Diff {\n  x?: number;\n  y?: number;\n}\n\nexport interface BoundingBox {\n  width: number;\n  height: number;\n}\n\nexport interface Box extends Point {\n  width: number;\n  height: number;\n}\n\nexport interface FilePicker {\n  contextMenuName: string;\n  filePicker: () => Promise<Track[]>;\n  requiresNetwork: boolean;\n}\n\nexport type Skin = {\n  url: string;\n  name: string;\n};\n\nexport interface MilkdropMessage {\n  text: string;\n  time: number;\n}\n\nexport type Band =\n  | 60\n  | 170\n  | 310\n  | 600\n  | 1000\n  | 3000\n  | 6000\n  | 12000\n  | 14000\n  | 16000;\n\nexport type Slider = Band | \"preamp\";\n\nexport type CursorImage =\n  | {\n      type: \"cur\";\n      url: string;\n    }\n  | {\n      type: \"ani\";\n      aniData: Uint8Array;\n    };\n\n// TODO: Use a type to ensure these keys mirror the CURSORS constant in\n// skinParser.js\nexport type Cursors = { [cursor: string]: CursorImage };\n\nexport type GenLetterWidths = { [letter: string]: number };\n\nexport interface PlaylistStyle {\n  normal: string;\n  current: string;\n  normalbg: string;\n  selectedbg: string;\n  font: string;\n}\n\n// TODO: Type these keys.\nexport type SkinImages = { [sprite: string]: string };\n\n// TODO: type these keys\nexport type SkinRegion = { [windowName: string]: string[] };\n\nexport type DummyVizData = {\n  0: 11.75;\n  8: 11.0625;\n  16: 8.5;\n  24: 7.3125;\n  32: 6.75;\n  40: 6.4375;\n  48: 6.25;\n  56: 5.875;\n  64: 5.625;\n  72: 5.25;\n  80: 5.125;\n  88: 4.875;\n  96: 4.8125;\n  104: 4.375;\n  112: 3.625;\n  120: 1.5625;\n};\n\nexport interface SkinGenExColors {\n  itemBackground: string;\n  itemForeground: string;\n  windowBackground: string;\n  buttonText: string;\n  windowText: string;\n  divider: string;\n  playlistSelection: string;\n  listHeaderBackground: string;\n  listHeaderText: string;\n  listHeaderFrameTopAndLeft: string;\n  listHeaderFrameBottomAndRight: string;\n  listHeaderFramePressed: string;\n  listHeaderDeadArea: string;\n  scrollbarOne: string;\n  scrollbarTwo: string;\n  pressedScrollbarOne: string;\n  pressedScrollbarTwo: string;\n  scrollbarDeadArea: string;\n  listTextHighlighted: string;\n  listTextHighlightedBackground: string;\n  listTextSelected: string;\n  listTextSelectedBackground: string;\n}\n\nexport type WindowId = \"main\" | \"playlist\" | \"equalizer\" | \"milkdrop\";\n\n// TODO: Fill these out once we actually use them.\nexport type SkinData = {\n  skinImages: SkinImages;\n  skinColors: string[];\n  skinPlaylistStyle: PlaylistStyle;\n  skinCursors: Cursors;\n  skinRegion: SkinRegion;\n  skinGenLetterWidths: GenLetterWidths;\n  skinGenExColors: SkinGenExColors | null;\n};\n\n// This is what we actually pass to butterchurn\nexport type ButterchurnPresetJson = {\n  name: string;\n  butterchurnPresetObject: Object;\n};\n\n// A URL that points to a Butterchurn preset\nexport interface ButterchurnPresetUrl {\n  name: string;\n  butterchurnPresetUrl: string;\n}\n\nexport type LazyButterchurnPresetJson = {\n  name: string;\n  getButterchrunPresetObject: () => Promise<Object>;\n};\n\nexport type Preset =\n  | ButterchurnPresetJson\n  | ButterchurnPresetUrl\n  | LazyButterchurnPresetJson;\n\nexport type StatePreset =\n  | { type: \"RESOLVED\"; name: string; preset: Object }\n  | { type: \"UNRESOLVED\"; name: string; getPreset: () => Promise<Object> };\n\nexport interface ButterchurnOptions {\n  getPresets(): Promise<Preset[]>;\n  importButterchurn(): Promise<any>;\n  importConvertPreset?: () => Promise<{\n    convertPreset(file: string, endpoint: string): Promise<Object>;\n  }>;\n  presetConverterEndpoint?: string;\n  butterchurnOpen: boolean;\n}\n\nexport interface EqfPreset {\n  name: string;\n  hz60: number;\n  hz170: number;\n  hz310: number;\n  hz600: number;\n  hz1000: number;\n  hz3000: number;\n  hz12000: number;\n  hz14000: number;\n  hz16000: number;\n  hz6000: number;\n  preamp: number;\n}\n\nexport enum TransitionType {\n  IMMEDIATE,\n  DEFAULT,\n  USER_PRESET,\n}\n\nexport interface Size {\n  width: number;\n  height: number;\n}\n\nexport type Action =\n  | {\n      type: \"@@init\";\n    }\n  | {\n      type: \"NETWORK_CONNECTED\";\n    }\n  | {\n      type: \"NETWORK_DISCONNECTED\";\n    }\n  | {\n      type: \"SET_AVAILABLE_SKINS\";\n      skins: Array<Skin>;\n    }\n  | {\n      type: \"PLAY\";\n    }\n  | {\n      type: \"IS_PLAYING\";\n    }\n  | {\n      type: \"PAUSE\";\n    }\n  | {\n      type: \"STOP\";\n    }\n  | {\n      type: \"IS_STOPPED\";\n    }\n  | {\n      type: \"TOGGLE_TIME_MODE\";\n    }\n  | {\n      type: \"UPDATE_TIME_ELAPSED\";\n      elapsed: number;\n    }\n  | {\n      type: \"ADD_TRACK_FROM_URL\";\n      atIndex: number | null;\n      id: number;\n      defaultName?: string;\n      duration?: number;\n      url: string;\n    }\n  | {\n      type: \"SET_MEDIA\";\n      id: number;\n      length: number;\n      kbps: string;\n      khz: string;\n      channels: number;\n    }\n  | {\n      type: \"SET_VOLUME\";\n      volume: number;\n    }\n  | {\n      type: \"SET_BALANCE\";\n      balance: number;\n    }\n  | {\n      type: \"TOGGLE_REPEAT\";\n    }\n  | {\n      type: \"TOGGLE_SHUFFLE\";\n    }\n  | {\n      type: \"SET_FOCUS\";\n      input: string;\n    }\n  | {\n      type: \"SET_BAND_FOCUS\";\n      input: string;\n      bandFocused: Slider;\n    }\n  | {\n      type: \"UNSET_FOCUS\";\n    }\n  | {\n      type: \"SET_SCRUB_POSITION\";\n      position: number;\n    }\n  | {\n      type: \"SET_USER_MESSAGE\";\n      message: string;\n    }\n  | {\n      type: \"UNSET_USER_MESSAGE\";\n    }\n  | {\n      type: \"TOGGLE_DOUBLESIZE_MODE\";\n    }\n  | {\n      type: \"TOGGLE_LLAMA_MODE\";\n    }\n  | {\n      type: \"STEP_MARQUEE\";\n    }\n  | {\n      type: \"DISABLE_MARQUEE\";\n    }\n  | {\n      type: \"STOP_WORKING\";\n    }\n  | {\n      type: \"START_WORKING\";\n    }\n  | {\n      type: \"CLOSE_WINAMP\";\n    }\n  | {\n      type: \"OPEN_WINAMP\";\n    }\n  | {\n      type: \"LOADING\";\n    }\n  | {\n      type: \"LOADED\";\n    }\n  | {\n      type: \"SET_SKIN_DATA\";\n      data: SkinData;\n    }\n  | {\n      type: \"TOGGLE_VISUALIZER_STYLE\";\n    }\n  | {\n      type: \"SET_PLAYLIST_SCROLL_POSITION\";\n      position: number;\n    }\n  | {\n      type: \"SET_Z_INDEX\";\n      zIndex: number;\n    }\n  | {\n      type: \"SET_DUMMY_VIZ_DATA\";\n      data: DummyVizData;\n    }\n  | {\n      type: \"SET_BAND_VALUE\";\n      band: Slider;\n      value: number;\n    }\n  | {\n      type: \"SET_EQ_ON\";\n    }\n  | {\n      type: \"SET_EQ_OFF\";\n    }\n  | {\n      type: \"SET_EQ_AUTO\";\n      value: boolean;\n    }\n  | {\n      type: \"SET_FOCUSED_WINDOW\";\n      window: WindowId | null;\n    }\n  | {\n      type: \"TOGGLE_WINDOW_SHADE_MODE\";\n      windowId: WindowId;\n    }\n  | {\n      type: \"TOGGLE_WINDOW\";\n      windowId: WindowId;\n    }\n  | {\n      type: \"CLOSE_WINDOW\";\n      windowId: WindowId;\n    }\n  | {\n      type: \"SET_WINDOW_VISIBILITY\";\n      windowId: WindowId;\n      hidden: boolean;\n    }\n  | {\n      type: \"ADD_GEN_WINDOW\";\n      windowId: WindowId;\n      title: string;\n      open: boolean;\n    }\n  | {\n      type: \"WINDOW_SIZE_CHANGED\";\n      windowId: WindowId;\n      size: [number, number];\n    }\n  | {\n      type: \"UPDATE_WINDOW_POSITIONS\";\n      positions: WindowPositions;\n      absolute?: boolean;\n    }\n  | {\n      type: \"CLICKED_TRACK\";\n      index: number;\n    }\n  | {\n      type: \"CTRL_CLICKED_TRACK\";\n      index: number;\n    }\n  | {\n      type: \"SHIFT_CLICKED_TRACK\";\n      index: number;\n    }\n  | {\n      type: \"SELECT_ALL\";\n    }\n  | {\n      type: \"SELECT_ZERO\";\n    }\n  | {\n      type: \"INVERT_SELECTION\";\n    }\n  | {\n      type: \"REMOVE_ALL_TRACKS\";\n    }\n  | {\n      type: \"REMOVE_TRACKS\";\n      ids: number[];\n    }\n  | {\n      type: \"REVERSE_LIST\";\n    }\n  | {\n      type: \"RANDOMIZE_LIST\";\n    }\n  | {\n      type: \"SET_TRACK_ORDER\";\n      trackOrder: number[];\n    }\n  | {\n      type: \"SET_MEDIA_TAGS\";\n      id: number;\n      title: string;\n      artist: string;\n      album?: string;\n      albumArtUrl?: string | null;\n      numberOfChannels?: number;\n      bitrate?: number;\n      sampleRate?: number;\n    }\n  | {\n      type: \"MEDIA_TAG_REQUEST_INITIALIZED\";\n      id: number;\n    }\n  | {\n      type: \"MEDIA_TAG_REQUEST_FAILED\";\n      id: number;\n    }\n  | {\n      type: \"SET_MEDIA_DURATION\";\n      id: number;\n      duration: number;\n    }\n  | {\n      type: \"PLAY_TRACK\";\n      id: number;\n    }\n  | {\n      type: \"BUFFER_TRACK\";\n      id: number;\n    }\n  | {\n      type: \"DRAG_SELECTED\";\n      offset: number;\n    }\n  | {\n      type: \"PLAY\";\n    }\n  | {\n      type: \"PAUSE\";\n    }\n  | {\n      type: \"SEEK_TO_PERCENT_COMPLETE\";\n      percent: number;\n    }\n  | {\n      type: \"MINIMIZE_WINAMP\";\n    }\n  | {\n      type: \"CLOSE_REQUESTED\";\n      cancel: () => void;\n    }\n  | {\n      type: \"LOAD_SERIALIZED_STATE\";\n      serializedState: SerializedStateV1;\n    }\n  | { type: \"RESET_WINDOW_SIZES\" }\n  | { type: \"BROWSER_WINDOW_SIZE_CHANGED\"; height: number; width: number }\n  | { type: \"LOAD_DEFAULT_SKIN\" }\n  | { type: \"ENABLE_MILKDROP\"; open: boolean }\n  | { type: \"SCHEDULE_MILKDROP_MESSAGE\"; message: string }\n  | {\n      type: \"SET_MILKDROP_DESKTOP\";\n      enabled: boolean;\n    }\n  | {\n      type: \"SET_MILKDROP_FULLSCREEN\";\n      enabled: boolean;\n    }\n  | { type: \"PRESET_REQUESTED\"; index: number; addToHistory: boolean }\n  | {\n      type: \"GOT_BUTTERCHURN_PRESETS\";\n      presets: StatePreset[];\n    }\n  | {\n      type: \"GOT_BUTTERCHURN\";\n      butterchurn: any;\n    }\n  | {\n      type: \"TOGGLE_RANDOMIZE_PRESETS\";\n    }\n  | { type: \"TOGGLE_PRESET_CYCLING\" }\n  | {\n      type: \"RESOLVE_PRESET_AT_INDEX\";\n      index: number;\n      json: Object;\n    }\n  | {\n      type: \"SELECT_PRESET_AT_INDEX\";\n      index: number;\n      transitionType: TransitionType;\n    }\n  | { type: \"TOGGLE_PRESET_OVERLAY\" }\n  | { type: \"MAIN_CONTEXT_MENU_OPENED\" }\n  | {\n      type: \"DROPPED_FILES\";\n      count: number;\n      firstFileName: string | null;\n      windowId: WindowId;\n    }\n  | {\n      type: \"OPENED_FILES\";\n      expectedType: \"SKIN\" | \"MEDIA\" | \"EQ\";\n      count: number;\n      firstFileName: string | null;\n    };\n\nexport type MediaTagRequestStatus =\n  | \"INITIALIZED\"\n  | \"FAILED\"\n  | \"COMPLETE\"\n  | \"NOT_REQUESTED\";\n\n/** The status of the current media. */\nexport type MediaStatus = \"PLAYING\" | \"STOPPED\" | \"PAUSED\";\n\n/**\n * The media status of the player. Similar to MediaStatus but can discriminate\n * between different reasons for being stopped.\n */\nexport type PlayerMediaStatus =\n  | \"PLAYING\"\n  | \"STOPPED\"\n  | \"PAUSED\"\n  /** We have reached the end of the playlist. */\n  | \"ENDED\"\n  /** The player is closed. */\n  | \"CLOSED\";\n\nexport type LoadStyle = \"BUFFER\" | \"PLAY\" | \"NONE\";\n\nexport type TimeMode = \"ELAPSED\" | \"REMAINING\";\n\ninterface TrackInfo {\n  /**\n   * Name to be used until ID3 tags can be resolved.\n   *\n   * If the track has a `url`, and this property is not given,\n   * the filename will be used instead.\n   *\n   * Example: `'My Song'`\n   */\n  defaultName?: string;\n\n  /**\n   * Data to be used _instead_ of trying to fetch ID3 tags.\n   *\n   * Example: `{ artist: 'Jordan Eldredge', title: \"Jordan's Song\" }`\n   */\n  metaData?: {\n    artist: string;\n    title: string;\n    album?: string;\n    albumArtUrl?: string;\n  };\n\n  /**\n   * Duration (in seconds) to be used instead of fetching enough of the file to measure its length.\n   *\n   * Example: 95\n   */\n  duration?: number;\n}\n\nexport interface URLTrack extends TrackInfo {\n  /**\n   * Source URL of the track\n   *\n   * Note: This URL must be served the with correct CORs headers.\n   *\n   * Example: `'https://example.com/song.mp3'`\n   */\n  url: string;\n}\n\nexport interface BlobTrack extends TrackInfo {\n  /**\n   * Blob source of the track\n   */\n  blob: Blob;\n}\n\nexport interface LoadedURLTrack {\n  url: string;\n  metaData: {\n    artist: string | null;\n    title: string | null;\n    album: string | null;\n    albumArtUrl: string | null;\n  };\n}\n\nexport interface Options {\n  /**\n   * An object representing the initial skin to use.\n   *\n   * If omitted, the default skin, included in the bundle, will be used.\n   * Note: This URL must be served the with correct CORs headers.\n   *\n   * Example: `{ url: './path/to/skin.wsz' }`\n   */\n  initialSkin?: {\n    url: string;\n  };\n\n  /**\n   * An array of `Track`s to prepopulate the playlist with.\n   */\n  initialTracks?: Track[];\n\n  /**\n   * An array of objects representing available skins.\n   *\n   * These will appear in the \"Options\" menu under \"Skins\".\n   * Note: These URLs must be served with the correct CORs headers.\n   *\n   * Example: `[ { url: \"./green.wsz\", name: \"Green Dimension V2\" } ]`\n   */\n  availableSkins?: { url: string; name: string }[];\n\n  /**\n   * Configure how the Winamp windows should be laid out on initial render.\n   */\n  windowLayout?: WindowLayout;\n\n  /**\n   * Controls if \"double size mode\", where the fixed sized windows are rendered\n   * at 2x, should be enabled\n   *\n   *  **Note:** In keeping with the original Winamp, double size mode does not\n   *  apply to resizable windows like the equalizer or Milkdrop.\n   *\n   * Default: `false`\n   */\n  enableDoubleSizeMode?: boolean;\n\n  /**\n   * Should global hotkeys be enabled?\n   *\n   * Default: `false`\n   */\n  enableHotkeys?: boolean;\n\n  /**\n   * An array of additional file pickers.\n   *\n   * These will appear in the \"Options\" menu under \"Play\".\n   *\n   * For example, this option can be used to provide a \"Dropbox\" file picker.\n   */\n  filePickers?: [\n    {\n      /**\n       * The name that will appear in the context menu.\n       *\n       * Example: `\"My File Picker...\"`\n       */\n      contextMenuName: string;\n\n      /**\n       * A function which returns a Promise that resolves to an array of `Track`s\n       *\n       * Example: `() => Promise.resolve([{ url: './rick_roll.mp3' }])`\n       */\n      filePicker: () => Promise<Track[]>;\n\n      /**\n       * Indicates if this options should be made available when the user is offline.\n       */\n      requiresNetwork: boolean;\n    }\n  ];\n  zIndex?: number;\n  handleTrackDropEvent?: (\n    e: React.DragEvent<HTMLDivElement>\n  ) => Track[] | null | Promise<Track[] | null>;\n  handleAddUrlEvent?: () => Track[] | null | Promise<Track[] | null>;\n  handleLoadListEvent?: () => Track[] | null | Promise<Track[] | null>;\n  handleSaveListEvent?: (tracks: Track[]) => null | Promise<null>;\n\n  /**\n   * Have Webamp attempt to connect to the browser's media session API.\n   *\n   * This allows OS/hardware level media controls like play/pause/next/previous\n   * and lock screen \"current track\" information to work with Webamp.\n   *\n   * https://developer.mozilla.org/en-US/docs/Web/API/Media_Session_API\n   */\n  enableMediaSession?: boolean;\n}\n\n/**\n * Specifies the initial position and size of a the Winamp windows.\n *\n * Positions are specified in pixels from the top left corner of an imaginary\n * box. On initial render, the collection of visible windows will be centered\n * within the HTML element passed to `Webamp.renderWhenReady(element)`. In other\n * words, the positions given here will determine the _relative_ position of the\n * windows. The absolute position will be determined by the HTML element in\n * which Webamp is centered.\n *\n * Enabling \"shade mode\" for a window that supports it, will cause it to be\n * rendered minimized. Be default windows are not in shade mode.\n *\n * Windows which support resizing can have their size specified. If omitted,\n * they default to their small base size.\n *\n * Windows that are omitted will start closed. Enabling \"closed\" for a window\n * that supports it, will cause it to start closed.\n */\nexport type WindowLayout = {\n  main?: {\n    position: WindowPosition;\n    shadeMode?: boolean;\n    closed?: boolean;\n  };\n  equalizer?: {\n    position: WindowPosition;\n    shadeMode?: boolean;\n    closed?: boolean;\n  };\n  playlist?: {\n    position: WindowPosition;\n    shadeMode?: boolean;\n    size?: WindowSize | null;\n    closed?: boolean;\n  };\n  milkdrop?: {\n    position: WindowPosition;\n    size?: WindowSize | null;\n    closed?: boolean;\n  };\n};\n\n/**\n * Offset from the top left corner of an imaginary box.\n */\nexport type WindowPosition = { top: number; left: number };\n\n/**\n * Resizable windows in Winamp have a base size and can be expanded in\n * increments based on the size of the skin sprite.\n *\n * To specify a window being larger than its base size, use `extraHeight` to\n * specify how many sprite increments to expand the window's height by, and\n * `extraWidth` to specify how many sprite increments to expand the window's\n * width by.\n */\nexport type WindowSize = {\n  extraHeight: number;\n  extraWidth: number;\n};\n\n/**\n * Many methods on the webamp instance deal with track.\n *\n * Either `url` or `blob` must be specified\n */\nexport type Track = URLTrack | BlobTrack;\n\nexport interface PlaylistTrack {\n  id: number;\n  artist?: string;\n  title?: string;\n  album?: string;\n  url: string;\n  defaultName: string | null;\n  albumArtUrl?: string | null;\n  mediaTagsRequestStatus: MediaTagRequestStatus;\n  duration: number | null;\n  kbps?: string;\n  khz: string;\n  channels?: number;\n}\n\nexport interface AppState {\n  userInput: UserInputState;\n  windows: WindowsState;\n  display: DisplayState;\n  settings: SettingsState;\n  equalizer: EqualizerState;\n  playlist: PlaylistState;\n  media: MediaState;\n  network: NetworkState;\n  tracks: TracksState;\n  milkdrop: MilkdropState;\n}\n\nexport type PartialState = any;\n\n/**\n * Type definition of the music-metadata-browser module.\n * Ref: https://github.com/Borewit/music-metadata-browser/blob/master/src/index.ts\n */\nexport interface IMusicMetadataBrowserApi {\n  /**\n   * Parse Web API File\n   * @param {Blob} blob\n   * @param {IOptions} options Parsing options\n   * @returns {Promise<IAudioMetadata>}\n   */\n  parseBlob(blob: Blob, options?: IOptions): Promise<IAudioMetadata>;\n\n  /**\n   * Parse fetched file, using the Web Fetch API\n   * @param {string} audioTrackUrl URL to download the audio track from\n   * @param {IOptions} options Parsing options\n   * @returns {Promise<IAudioMetadata>}\n   */\n  fetchFromUrl(\n    audioTrackUrl: string,\n    options?: IOptions\n  ): Promise<IAudioMetadata>;\n}\n\n/**\n * Type definition of the portion of the music-metadata module we use in Webamp.\n */\nexport interface IMusicMetadataApi {\n  /**\n   * Parse audio from Node Stream.Readable\n   * @param stream - Stream to read the audio track from\n   * @param fileInfo - File information object or MIME-type, e.g.: 'audio/mpeg'\n   * @param options - Parsing options\n   * @returns Metadata\n   */\n  parseWebStream(\n    webStream: AnyWebByteStream,\n    fileInfo?: IFileInfo | string,\n    options?: IOptions\n  ): Promise<IAudioMetadata>;\n\n  /**\n   * Parse Web API File\n   * @param {Blob} blob\n   * @param {IOptions} options Parsing options\n   * @returns {Promise<IAudioMetadata>}\n   */\n  parseBlob(blob: Blob, options?: IOptions): Promise<IAudioMetadata>;\n}\n\nexport type IMetadataApi = IMusicMetadataBrowserApi | IMusicMetadataApi;\n\nexport interface Extras {\n  requireJSZip(): Promise<any>;\n  requireMusicMetadata(): Promise<IMetadataApi>;\n  convertPreset: ((file: File) => Promise<Object>) | null;\n  handleTrackDropEvent?: (\n    e: React.DragEvent<HTMLDivElement>\n  ) => Track[] | null | Promise<Track[] | null>;\n  handleAddUrlEvent?: () => Track[] | null | Promise<Track[] | null>;\n  handleLoadListEvent?: () => Track[] | null | Promise<Track[] | null>;\n  handleSaveListEvent?: (tracks: Track[]) => null | Promise<null>;\n}\n\nexport type GetState = () => AppState;\n\nexport type Thunk = ThunkAction<void, AppState, Extras, Action>;\n\nexport type Dispatch = ThunkDispatch<AppState, Extras, Action>;\n\nexport type Reducer = (state: AppState, action: Action) => AppState;\n\nexport type Middleware = (\n  store: MiddlewareStore\n) => (next: Dispatch) => (action: Action) => any;\n\nexport interface Store extends ReduxStore {\n  subscribe(cb: () => void): () => void;\n  dispatch: Dispatch;\n  getState: GetState;\n}\n\nexport interface MiddlewareStore {\n  dispatch: Dispatch;\n  getState: GetState;\n}\n","import { Action, StatePreset, TransitionType, MilkdropMessage } from \"../types\";\nimport * as Utils from \"../utils\";\n\nexport interface MilkdropState {\n  display: \"WINDOW\" | \"DESKTOP\" | \"FULLSCREEN\";\n  overlay: boolean;\n  presetHistory: number[];\n  presets: StatePreset[];\n  currentPresetIndex: number | null;\n  butterchurn: any;\n  transitionType: TransitionType;\n  randomize: boolean;\n  cycling: boolean;\n  // TODO: This could probably be simplified to just a date and we could assume\n  // the song title is the message.\n  message: MilkdropMessage | null;\n}\n\nconst defaultMilkdropState: MilkdropState = {\n  display: \"WINDOW\",\n  overlay: false,\n  presetHistory: [],\n  presets: [],\n  currentPresetIndex: null,\n  butterchurn: null,\n  transitionType: TransitionType.DEFAULT,\n  randomize: true,\n  cycling: true,\n  message: null,\n};\n\nexport const milkdrop = (\n  state: MilkdropState = defaultMilkdropState,\n  action: Action\n): MilkdropState => {\n  switch (action.type) {\n    case \"SET_MILKDROP_DESKTOP\":\n      return {\n        ...state,\n        display: (action as any).enabled ? \"DESKTOP\" : \"WINDOW\",\n      };\n    case \"SET_MILKDROP_FULLSCREEN\":\n      return {\n        ...state,\n        display: (action as any).enabled ? \"FULLSCREEN\" : \"WINDOW\",\n      };\n    case \"GOT_BUTTERCHURN\":\n      return { ...state, butterchurn: (action as any).butterchurn };\n    case \"GOT_BUTTERCHURN_PRESETS\":\n      return {\n        ...state,\n        presets: state.presets.concat((action as any).presets),\n      };\n    case \"PRESET_REQUESTED\":\n      if ((action as any).addToHistory) {\n        return {\n          ...state,\n          presetHistory: [...state.presetHistory, (action as any).index],\n        };\n      }\n      return {\n        ...state,\n        presetHistory: state.presetHistory.slice(0, -1),\n      };\n    case \"RESOLVE_PRESET_AT_INDEX\":\n      const preset = state.presets[(action as any).index];\n      return {\n        ...state,\n        presets: Utils.replaceAtIndex(state.presets, (action as any).index, {\n          type: \"RESOLVED\",\n          name: preset.name,\n          preset: (action as any).json,\n        }),\n      };\n    case \"SELECT_PRESET_AT_INDEX\":\n      return {\n        ...state,\n        currentPresetIndex: (action as any).index,\n        transitionType: (action as any).transitionType,\n      };\n    case \"TOGGLE_PRESET_OVERLAY\":\n      return { ...state, overlay: !state.overlay };\n    case \"TOGGLE_RANDOMIZE_PRESETS\":\n      return { ...state, randomize: !state.randomize };\n    case \"TOGGLE_PRESET_CYCLING\":\n      return { ...state, cycling: !state.cycling };\n    case \"SCHEDULE_MILKDROP_MESSAGE\":\n      return {\n        ...state,\n        message: {\n          text: (action as any).message,\n          time: Date.now(),\n        },\n      };\n    default:\n      return state;\n  }\n};\n\nexport default milkdrop;\n","import { AppState, Action } from \"../types\";\nimport { Reducer, combineReducers } from \"redux\";\n\nimport playlist from \"./playlist\";\nimport windows from \"./windows\";\nimport media from \"./media\";\nimport display from \"./display\";\nimport userInput from \"./userInput\";\nimport equalizer from \"./equalizer\";\nimport network from \"./network\";\nimport settings from \"./settings\";\nimport tracks from \"./tracks\";\nimport milkdrop from \"./milkdrop\";\n\nconst reducer: Reducer<AppState, Action, never> = combineReducers({\n  userInput,\n  windows,\n  display,\n  settings,\n  equalizer,\n  playlist,\n  media,\n  network,\n  tracks,\n  milkdrop,\n});\n\nexport default reducer;\n","import { Action } from \"../types\";\n\nexport interface NetworkState {\n  connected: boolean;\n}\n\nconst network = (\n  state: NetworkState = { connected: true },\n  action: Action\n): NetworkState => {\n  switch (action.type) {\n    case \"NETWORK_CONNECTED\":\n      return { ...state, connected: true };\n    case \"NETWORK_DISCONNECTED\":\n      return { ...state, connected: false };\n    default:\n      return state;\n  }\n};\n\nexport default network;\n","import { createRoot } from \"react-dom/client\";\nimport { flushSync } from \"react-dom\";\n\ninterface Props {\n  averageTrackLength: string;\n  numberOfTracks: number;\n  playlistLengthSeconds: number;\n  playlistLengthMinutes: number;\n  tracks: string[];\n}\n\nexport const getAsDataURI = (text: string): string =>\n  `data:text/html;base64,${window.btoa(text)}`;\n\n// Replaces deprecated \"noshade\" attribute\nconst noshadeStyle = {\n  height: \"2px\",\n  borderWidth: 0,\n  color: \"gray\",\n  backgroundColor: \"gray\",\n};\n\n// We use all kinds of non-standard attributes and tags. So we create these fake\n// components to trick Typescript.\nconst Body = (props: any) => {\n  // @ts-ignore\n  return <body {...props} />;\n};\n\nconst Font = (props: any) => {\n  // @ts-ignore\n  return <font {...props} />;\n};\n\nconst Hr = (props: any) => {\n  // @ts-ignore\n  return <hr {...props} />;\n};\n\nconst Div = (props: any) => {\n  // @ts-ignore\n  return <div {...props} />;\n};\n\nconst Table = (props: any) => {\n  // @ts-ignore\n  return <table {...props} />;\n};\n\n// TODO: Move <html> tag out to the string creation step in order\n// to avoid the warning.\nconst Playlist = (props: Props) => (\n  <>\n    <Div align=\"center\">\n      <Div className=\"para2\" align=\"center\">\n        <p>WINAMP</p>\n      </Div>\n      <Div className=\"para1\" align=\"center\">\n        <p>playlist</p>\n      </Div>\n    </Div>\n    <Hr\n      align=\"left\"\n      width=\"90%\"\n      size=\"1\"\n      color=\"#FFBF00\"\n      style={noshadeStyle}\n    />\n    <Div align=\"right\">\n      <Table border=\"0\" cellSpacing=\"0\" cellPadding=\"0\" width=\"98%\">\n        {/* Added <tbody> tag */}\n        <tbody>\n          <tr>\n            <td>\n              <small>\n                <small>\n                  <Font face=\"Arial\" color=\"#FFBF00\">\n                    {props.numberOfTracks}\n                  </Font>\n                  <Font color=\"#409FFF\" face=\"Arial\">\n                    {\" track in playlist, average track length: \"}\n                  </Font>\n                  <Font face=\"Arial\" color=\"#FFBF00\">\n                    {props.averageTrackLength}\n                  </Font>\n                </small>\n              </small>\n              <br />\n              <small>\n                <small>\n                  <Font color=\"#409FFF\" face=\"Arial\">\n                    {\"Playlist length: \"}\n                  </Font>\n                  <Font face=\"Arial\" color=\"#FFBF00\">\n                    {props.playlistLengthMinutes}\n                  </Font>\n                  <Font color=\"#409FFF\" face=\"Arial\">\n                    {\" minutes \"}\n                  </Font>\n                  <Font face=\"Arial\" color=\"#FFBF00\">\n                    {props.playlistLengthSeconds}\n                  </Font>\n                  <Font color=\"#409FFF\" face=\"Arial\">\n                    {\" second \"}\n                  </Font>\n                  <br />\n                  <Font color=\"#409FFF\" face=\"Arial\">\n                    Right-click <a href=\"./\">here</a> to save this HTML file.\n                  </Font>\n                </small>\n              </small>\n            </td>\n          </tr>\n        </tbody>\n      </Table>\n    </Div>\n    <blockquote>\n      <p>\n        <Font color=\"#FFBF00\" face=\"Arial\">\n          <big>Playlist files:</big>\n        </Font>\n        {/* Added closing tag here */}\n      </p>\n      <ul>\n        <Font face=\"Arial\" color=\"#FFFFFF\">\n          <small>\n            {props.tracks.map((track) => (\n              <span key={track}>\n                {track}\n                <br />\n              </span>\n            ))}\n            {/* Added closing tag here */}\n          </small>\n        </Font>\n      </ul>\n    </blockquote>\n    <Hr\n      align=\"left\"\n      width=\"90%\"\n      size=\"1\"\n      color=\"#FFBF00\"\n      style={noshadeStyle}\n    />\n  </>\n);\n\nconst createPlaylistHTML = (props: Props): string => {\n  const node = document.createElement(\"div\");\n  const root = createRoot(node);\n  flushSync(() => {\n    root.render(<Playlist {...props} />);\n  });\n  return `\n  <html>\n      <head>\n      <link rel=\"stylesheet\" href=\"null\" />\n      <style type=\"text/css\">\n        body { background: #000040; }\n        .para1 { margin-top: -42px; margin-left: 145px; margin-right: 10px; font-family: \"font2, Arial\"; font-size: 30px; line-height: 35px; text-align: left; color: #E1E1E1; }\n        .para2 { margin-top: 15px; margin-left: 15px; margin-right: 50px; font-family: \"font1, Arial Black\"; font-size: 50px; line-height: 40px; text-align: left; color: #004080; }\n      </style>\n      <title>Winamp Generated PlayList</title>\n    </head>\n     <body bgcolor=\"#000080\" topmargin=\"0\" leftmargin=\"0\" text=\"#FFFFFF\">\n    ${node.innerHTML}\n    </body\n  </html>`;\n};\n\nexport const createPlaylistURL = (props: Props): string =>\n  getAsDataURI(createPlaylistHTML(props));\n","import {\n  AppState,\n  PlaylistTrack,\n  WebampWindow,\n  WindowId,\n  WindowInfo,\n  LoadedURLTrack,\n  WindowPositions,\n  PlaylistStyle,\n  TransitionType,\n  TimeMode,\n  SkinImages,\n  Cursors,\n  SkinRegion,\n  GenLetterWidths,\n  MilkdropMessage,\n  DummyVizData,\n  PlayerMediaStatus,\n  MediaStatus,\n} from \"./types\";\nimport { createSelector, defaultMemoize } from \"reselect\";\nimport * as Utils from \"./utils\";\nimport {\n  BANDS,\n  TRACK_HEIGHT,\n  WINDOW_RESIZE_SEGMENT_WIDTH,\n  WINDOW_RESIZE_SEGMENT_HEIGHT,\n  WINDOW_WIDTH,\n  MEDIA_STATUS,\n  MEDIA_TAG_REQUEST_STATUS,\n  WINDOWS,\n  VISUALIZERS,\n  PLAYER_MEDIA_STATUS,\n} from \"./constants\";\nimport { createPlaylistURL } from \"./playlistHtml\";\nimport * as fromTracks from \"./reducers/tracks\";\nimport * as fromDisplay from \"./reducers/display\";\nimport * as fromEqualizer from \"./reducers/equalizer\";\nimport * as fromMedia from \"./reducers/media\";\nimport * as fromWindows from \"./reducers/windows\";\nimport * as MarqueeUtils from \"./marqueeUtils\";\nimport { generateGraph } from \"./resizeUtils\";\nimport { SerializedStateV1 } from \"./serializedStates/v1Types\";\n\nexport const getSliders = (state: AppState) => state.equalizer.sliders;\n\nexport const getEqfData = createSelector(getSliders, (sliders) => {\n  const preset = {\n    name: \"Entry1\",\n    preamp: Utils.denormalizeEqBand(sliders.preamp),\n    hz60: Utils.denormalizeEqBand(sliders[60]),\n    hz170: Utils.denormalizeEqBand(sliders[170]),\n    hz310: Utils.denormalizeEqBand(sliders[310]),\n    hz600: Utils.denormalizeEqBand(sliders[600]),\n    hz1000: Utils.denormalizeEqBand(sliders[1000]),\n    hz3000: Utils.denormalizeEqBand(sliders[3000]),\n    hz6000: Utils.denormalizeEqBand(sliders[6000]),\n    hz12000: Utils.denormalizeEqBand(sliders[12000]),\n    hz14000: Utils.denormalizeEqBand(sliders[14000]),\n    hz16000: Utils.denormalizeEqBand(sliders[16000]),\n  };\n  const eqfData = {\n    presets: [preset],\n    type: \"Winamp EQ library file v1.1\",\n  };\n  return eqfData;\n});\n\nexport const getTracks = (state: AppState) => state.tracks;\nexport const getTrackUrl = (state: AppState) => {\n  return (id: number): string | null => {\n    return state.tracks[id]?.url;\n  };\n};\nexport const getTrackOrder = (state: AppState) => state.playlist.trackOrder;\n\nexport const getTrackCount = createSelector(\n  getTrackOrder,\n  (trackOrder) => trackOrder.length\n);\n\nexport const getOrderedTracks = createSelector(\n  getTracks,\n  getTrackOrder,\n  (tracks, trackOrder) => trackOrder.filter((id) => tracks[id])\n);\n\nexport const getPlaylistTracks = createSelector(\n  getTracks,\n  getTrackOrder,\n  (tracks, trackOrder) => trackOrder.map((id) => tracks[id]).filter(Boolean)\n);\n\nexport const getUserTracks = createSelector(\n  getTracks,\n  getTrackOrder,\n  (tracks, trackOrder) =>\n    trackOrder.map((id) => {\n      const track = tracks[id];\n\n      return {\n        url: track.url,\n        metaData: {\n          artist: track.artist || \"\",\n          title: track.title || \"\",\n          album: track.album,\n          albumArtUrl: track.albumArtUrl || \"\",\n        },\n      };\n    })\n);\n\nconst getOrderedTrackObjects = createSelector(\n  getTracks,\n  getOrderedTracks,\n  (tracks, trackOrder): PlaylistTrack[] => trackOrder.map((id) => tracks[id])\n);\n\nexport const getSelectedTrackIds = (state: AppState): Array<number> => {\n  return state.playlist.selectedTracks;\n};\n\nexport const getSelectedTrackIdsSet = createSelector(\n  getSelectedTrackIds,\n  (selectedTrackArray): Set<number> => {\n    return new Set(selectedTrackArray);\n  }\n);\n\nexport const getSelectedTrackObjects = createSelector(\n  getOrderedTrackObjects,\n  getSelectedTrackIdsSet,\n  (tracks, selectedIds) => tracks.filter((track) => selectedIds.has(track.id))\n);\n\n// If a duration is `null`, it counts as zero, which seems fine enough.\nconst runningTimeFromTracks = (tracks: PlaylistTrack[]) =>\n  tracks.reduce((time, track) => time + Number(track.duration), 0);\n\nconst getTotalRunningTime = createSelector(\n  getOrderedTrackObjects,\n  runningTimeFromTracks\n);\n\nconst getSelectedRunningTime = createSelector(\n  getSelectedTrackObjects,\n  runningTimeFromTracks\n);\n\n// Note: We should append \"+\" to these values if some of the tracks are of unknown time.\nexport const getRunningTimeMessage = createSelector(\n  getTotalRunningTime,\n  getSelectedRunningTime,\n  (totalRunningTime, selectedRunningTime) =>\n    `${Utils.getTimeStr(selectedRunningTime)}/${Utils.getTimeStr(\n      totalRunningTime\n    )}`\n);\n\n// TODO: use selectors to get memoization\nexport const getCurrentTrackIndex = (state: AppState): number => {\n  const { playlist } = state;\n  if (playlist.currentTrack == null) {\n    return -1;\n  }\n  return playlist.trackOrder.indexOf(playlist.currentTrack);\n};\n\nexport const getCurrentTrackNumber = createSelector(\n  getCurrentTrackIndex,\n  (currentTrackIndex) => currentTrackIndex + 1\n);\n\nexport const getCurrentTrackId = (state: AppState) =>\n  state.playlist.currentTrack;\n\n// TODO: Sigh... Technically, we should detect if we are looping only repeat if we are.\n// I think this would require pre-computing the \"random\" order of a playlist.\nexport const getRandomTrackId = (state: AppState): number | null => {\n  const {\n    playlist: { trackOrder, currentTrack },\n  } = state;\n  if (trackOrder.length === 0) {\n    return null;\n  }\n  let nextId;\n  do {\n    nextId = trackOrder[Math.floor(trackOrder.length * Math.random())];\n  } while (nextId === currentTrack && trackOrder.length > 1);\n  return nextId;\n};\n\nexport const getNextTrackId = (state: AppState, n = 1) => {\n  const {\n    playlist: { trackOrder },\n    media: { repeat, shuffle },\n  } = state;\n  if (shuffle) {\n    return getRandomTrackId(state);\n  }\n  const trackCount = getTrackCount(state);\n  if (trackCount === 0) {\n    return null;\n  }\n\n  const currentIndex = getCurrentTrackIndex(state);\n\n  let nextIndex = currentIndex + n;\n  if (repeat) {\n    nextIndex = nextIndex % trackCount;\n    if (nextIndex < 0) {\n      // Handle wrapping around backwards\n      nextIndex += trackCount;\n    }\n    return trackOrder[nextIndex];\n  }\n\n  if (currentIndex === trackCount - 1 && n > 0) {\n    return null;\n  } else if (currentIndex === 0 && n < 0) {\n    return null;\n  }\n\n  nextIndex = Utils.clamp(nextIndex, 0, trackCount - 1);\n  return trackOrder[nextIndex];\n};\n\nexport const getGenWindows = (\n  state: AppState\n): { [name: string]: WebampWindow } => {\n  return state.windows.genWindows;\n};\n\nexport const getWindowOpen = createSelector(getGenWindows, (genWindows) => {\n  return (windowId: WindowId) => genWindows[windowId].open;\n});\n\nexport const getWindowHidden = createSelector(\n  getMilkdropWindowEnabled,\n  (milkdropWindowEnabled) => {\n    return (windowId: WindowId) => {\n      return windowId === WINDOWS.MILKDROP && !milkdropWindowEnabled;\n    };\n  }\n);\n\nexport const getWindowShade = createSelector(getGenWindows, (genWindows) => {\n  return (windowId: WindowId) => genWindows[windowId].shade;\n});\n\nexport const getWindowSize = createSelector(getGenWindows, (genWindows) => {\n  return (windowId: WindowId) => genWindows[windowId].size;\n});\n\nexport const getWindowPositions = createSelector(\n  getGenWindows,\n  (windows): WindowPositions => Utils.objectMap(windows, (w) => w.position)\n);\n\nconst BASE_WINDOW_HEIGHT = 58;\nexport const getNumberOfVisibleTracks = createSelector(\n  getWindowSize,\n  (getWindowSize_) => {\n    const playlistSize = getWindowSize_(\"playlist\");\n    return Math.floor(\n      (BASE_WINDOW_HEIGHT + WINDOW_RESIZE_SEGMENT_HEIGHT * playlistSize[1]) /\n        TRACK_HEIGHT\n    );\n  }\n);\n\nexport const getOverflowTrackCount = createSelector(\n  getTrackCount,\n  getNumberOfVisibleTracks,\n  (trackCount, numberOfVisibleTracks) =>\n    Math.max(0, trackCount - numberOfVisibleTracks)\n);\n\nconst _getPlaylistScrollPosition = (state: AppState) =>\n  state.display.playlistScrollPosition;\n\nexport const getPlaylistScrollPosition = createSelector(\n  getOverflowTrackCount,\n  _getPlaylistScrollPosition,\n  (overflowTrackCount, playlistScrollPosition) => {\n    if (overflowTrackCount === 0) {\n      return 0;\n    }\n    return Math.round(\n      (Math.round((overflowTrackCount * playlistScrollPosition) / 100) /\n        overflowTrackCount) *\n        100\n    );\n  }\n);\n\nexport const getScrollOffset = createSelector(\n  _getPlaylistScrollPosition,\n  getTrackCount,\n  getNumberOfVisibleTracks,\n  (playlistScrollPosition, trackCount, numberOfVisibleTracks) => {\n    const overflow = Math.max(0, trackCount - numberOfVisibleTracks);\n    return Utils.percentToIndex(playlistScrollPosition / 100, overflow + 1);\n  }\n);\n\nexport const getVisibleTrackIds = createSelector(\n  getScrollOffset,\n  getTrackOrder,\n  getNumberOfVisibleTracks,\n  (offset, trackOrder, numberOfVisibleTracks) =>\n    trackOrder.slice(offset, offset + numberOfVisibleTracks)\n);\n\nexport function getAllTracksAreVisible(state: AppState): boolean {\n  return getVisibleTrackIds(state).length === state.playlist.trackOrder.length;\n}\n\nexport const getTrackIsVisibleFunction = createSelector(\n  getVisibleTrackIds,\n  (visibleTrackIds) => {\n    return (id: number) => visibleTrackIds.includes(id);\n  }\n);\n\nexport const getVisibleTracks = createSelector(\n  getVisibleTrackIds,\n  getTracks,\n  (visibleTrackIds, tracks) => visibleTrackIds.map((id) => tracks[id])\n);\n\nexport const getPlaylist = (state: AppState) => state.playlist;\n\nexport const getDuration = (state: AppState): number | null => {\n  const { playlist, tracks } = state;\n  if (playlist.currentTrack == null) {\n    return null;\n  }\n  const currentTrack = tracks[playlist.currentTrack];\n  return currentTrack && currentTrack.duration;\n};\n\nexport const getTrackDisplayName = createSelector(getTracks, (tracks) => {\n  return defaultMemoize((trackId: number | null) =>\n    fromTracks.getTrackDisplayName(tracks, trackId)\n  );\n});\n\nexport const getCurrentTrackDisplayName = createSelector(\n  getCurrentTrackId,\n  getTrackDisplayName,\n  (id, getName) => {\n    return getName(id);\n  }\n);\nexport const getPlayerMediaStatus = (state: AppState): PlayerMediaStatus => {\n  return state.media.status;\n};\n\nexport const getMediaStatus = createSelector(\n  getPlayerMediaStatus,\n  (status: PlayerMediaStatus): MediaStatus => {\n    switch (status) {\n      case \"PLAYING\":\n      case \"PAUSED\":\n        return status;\n      case \"STOPPED\":\n      case \"ENDED\":\n      case \"CLOSED\":\n        return \"STOPPED\";\n      default:\n        const s: never = status;\n        throw new Error(`Unknown media status: ${s}`);\n    }\n  }\n);\n\nexport const getMediaIsPlaying = (state: AppState) =>\n  state.media.status === MEDIA_STATUS.PLAYING;\n\nexport const getCurrentTrack = createSelector(\n  getCurrentTrackId,\n  getTracks,\n  (trackId, tracks): PlaylistTrack | null => {\n    return trackId == null ? null : tracks[trackId];\n  }\n);\nexport const getCurrentlyPlayingTrackIdIfLoaded = createSelector(\n  getMediaIsPlaying,\n  getCurrentTrack,\n  (mediaIsPlaying, currentTrack) => {\n    if (\n      !mediaIsPlaying ||\n      !currentTrack ||\n      currentTrack.mediaTagsRequestStatus ===\n        MEDIA_TAG_REQUEST_STATUS.INITIALIZED\n    ) {\n      return null;\n    }\n    return currentTrack.id;\n  }\n);\n\nexport const getCurrentTrackInfo = createSelector(\n  getCurrentTrack,\n  (track: PlaylistTrack | null): LoadedURLTrack | null => {\n    if (track == null) {\n      return null;\n    }\n    return {\n      url: track.url,\n      metaData: {\n        title: track.title || null,\n        artist: track.artist || null,\n        album: track.album || null,\n        albumArtUrl: track.albumArtUrl || null,\n      },\n    };\n  }\n);\n\nexport const getMinimalMediaText = createSelector(\n  getCurrentTrackNumber,\n  getCurrentTrackDisplayName,\n  (trackNumber, name) => (name == null ? null : `${trackNumber}. ${name}`)\n);\n\nexport const getMediaText = createSelector(\n  getMinimalMediaText,\n  getDuration,\n  (minimalMediaText, duration) =>\n    minimalMediaText == null\n      ? null\n      : `${minimalMediaText} (${Utils.getTimeStr(duration)})`\n);\n\nexport const getNumberOfTracks = (state: AppState) =>\n  getTrackOrder(state).length;\nconst getPlaylistDuration = createSelector(getTracks, (tracks) =>\n  Object.values(tracks).reduce(\n    (total, track) => total + (track.duration || 0),\n    0\n  )\n);\n\nexport const getPlaylistURL = createSelector(\n  getNumberOfTracks,\n  getPlaylistDuration,\n  getTrackOrder,\n  getTracks,\n  getTrackDisplayName,\n  (numberOfTracks, playlistDuration, trackOrder, tracks, getDisplayName) =>\n    createPlaylistURL({\n      numberOfTracks,\n      averageTrackLength: Utils.getTimeStr(playlistDuration / numberOfTracks),\n      // TODO: Handle hours\n      playlistLengthMinutes: Math.floor(playlistDuration / 60),\n      playlistLengthSeconds: Math.floor(playlistDuration % 60),\n      tracks: trackOrder.map(\n        (id, i) =>\n          `${i + 1}. ${getDisplayName(id)} (${Utils.getTimeStr(\n            tracks[id].duration\n          )})`\n      ),\n    })\n);\n\nconst WINDOW_HEIGHT = 116;\nconst SHADE_WINDOW_HEIGHT = 14;\n\nfunction getWPixelSize(w: WebampWindow, doubled: boolean) {\n  const [width, height] = w.size;\n  const doubledMultiplier = doubled && w.canDouble ? 2 : 1;\n  const pix = {\n    height: WINDOW_HEIGHT + height * WINDOW_RESIZE_SEGMENT_HEIGHT,\n    width: WINDOW_WIDTH + width * WINDOW_RESIZE_SEGMENT_WIDTH,\n  };\n  return {\n    height: (w.shade ? SHADE_WINDOW_HEIGHT : pix.height) * doubledMultiplier,\n    width: pix.width * doubledMultiplier,\n  };\n}\n\nexport function getFocusedWindow(state: AppState): WindowId | null {\n  return state.windows.focused;\n}\n\nexport function getWindowPosition(state: AppState) {\n  return (windowId: WindowId) => state.windows.genWindows[windowId].position;\n}\n\nexport function getPositionsAreRelative(state: AppState) {\n  return state.windows.positionsAreRelative;\n}\n\nexport function getDoubled(state: AppState) {\n  return state.display.doubled;\n}\n\nexport function getLlamaMode(state: AppState) {\n  return state.display.llama;\n}\n\nexport function getZIndex(state: AppState): number {\n  return state.display.zIndex;\n}\n\n// TODO: This is poorly memoized. It invalidates when a window moves.\nexport const getWindowSizes = createSelector(\n  getGenWindows,\n  getDoubled,\n  (windows, doubled) => {\n    return Utils.objectMap(windows, (w) => getWPixelSize(w, doubled));\n  }\n);\n\nexport const getWindowPixelSize = createSelector(getWindowSizes, (sizes) => {\n  return (windowId: WindowId) => sizes[windowId];\n});\n\nconst getWindowOrder = (state: AppState): WindowId[] =>\n  state.windows.windowOrder;\n\nexport const getNormalizedWindowOrder = createSelector(\n  getWindowOrder,\n  getGenWindows,\n  (windowOrder, genWindows): WindowId[] => {\n    return [\n      WINDOWS.MAIN,\n      ...windowOrder.filter(\n        (windowId) => windowId !== WINDOWS.MAIN && genWindows[windowId] != null\n      ),\n    ];\n  }\n);\n\n// TODO: Now that both size and position are stored on genWindows this seems a bit silly.\nexport const getWindowsInfo = createSelector(\n  getWindowSizes,\n  getWindowPositions,\n  getNormalizedWindowOrder,\n  (sizes, positions, windowOrder): WindowInfo[] => {\n    return windowOrder.map((key) => ({\n      key,\n      ...sizes[key],\n      ...positions[key],\n    }));\n  }\n);\n\nexport const getWindowGraph = createSelector(getWindowsInfo, generateGraph);\n\nconst defaultPlaylistStyle = {\n  normal: \"#00FF00\",\n  current: \"#FFFFFF\",\n  normalbg: \"#000000\",\n  selectedbg: \"#0000C6\",\n  font: \"Arial\",\n};\n\nexport function getSkinColors(state: AppState): string[] {\n  return state.display.skinColors;\n}\n\nexport const getSkinPlaylistStyle = (state: AppState): PlaylistStyle => {\n  return state.display.skinPlaylistStyle || defaultPlaylistStyle;\n};\n\nexport const getVisualizerStyle = (state: AppState): string => {\n  const milkdrop = state.windows.genWindows[WINDOWS.MILKDROP];\n  if (milkdrop != null && milkdrop.open) {\n    return VISUALIZERS.MILKDROP;\n  }\n  return fromDisplay.getVisualizerStyle(state.display);\n};\n\nexport const getVolume = (state: AppState) => state.media.volume;\nexport const getBalance = (state: AppState) => state.media.balance;\nexport const getShuffle = (state: AppState) => state.media.shuffle;\nexport const getRepeat = (state: AppState) => state.media.repeat;\n\nexport const getChannels = createSelector(\n  getCurrentTrack,\n  (track: PlaylistTrack | null): number | null => {\n    return track != null ? track.channels || null : null;\n  }\n);\n\nexport const getTimeElapsed = (state: AppState): number => {\n  return state.media.timeElapsed;\n};\n\nexport function getSerlializedState(state: AppState): SerializedStateV1 {\n  return {\n    version: 1,\n    media: fromMedia.getSerializedState(state.media),\n    equalizer: fromEqualizer.getSerializedState(state.equalizer),\n    display: fromDisplay.getSerializedState(state.display),\n    windows: fromWindows.getSerializedState(state.windows),\n  };\n}\n\nexport function getEqualizerEnabled(state: AppState): boolean {\n  return state.equalizer.on;\n}\n\nexport function getEqualizerAuto(state: AppState): boolean {\n  return state.equalizer.auto;\n}\n\nexport function getBrowserWindowSize(state: AppState): {\n  height: number;\n  width: number;\n} {\n  return state.windows.browserWindowSize;\n}\n\nexport const getOpenWindows = createSelector(getGenWindows, (genWindows) =>\n  Utils.objectFilter(genWindows, (w) => w.open)\n);\n\nexport const getStackedLayoutPositions = createSelector(\n  getOpenWindows,\n  getDoubled,\n  (openWindows, doubled): WindowPositions => {\n    let offset = 0;\n    return Utils.objectMap(openWindows, (w) => {\n      const position = { x: 0, y: offset };\n      offset += getWPixelSize(w, doubled).height;\n      return position;\n    });\n  }\n);\n\nexport const getUserInputFocus = (state: AppState): string | null => {\n  return state.userInput.focus;\n};\n\nexport const getUserInputScrubPosition = (state: AppState): number => {\n  return state.userInput.scrubPosition;\n};\n// TODO: Make this a reselect selector\nexport const getMarqueeText = (state: AppState): string => {\n  const defaultText = \"Winamp 2.91\";\n  if (state.userInput.userMessage != null) {\n    return state.userInput.userMessage;\n  }\n  switch (getUserInputFocus(state)) {\n    case \"balance\":\n      return MarqueeUtils.getBalanceText(state.media.balance);\n    case \"volume\":\n      return MarqueeUtils.getVolumeText(state.media.volume);\n    case \"position\":\n      const duration = getDuration(state);\n      if (duration == null) {\n        // This probably can't ever happen.\n        return defaultText;\n      }\n      return MarqueeUtils.getPositionText(\n        duration,\n        getUserInputScrubPosition(state)\n      );\n    case \"double\":\n      return MarqueeUtils.getDoubleSizeModeText(state.display.doubled);\n    case \"eq\":\n      const band = state.userInput.bandFocused;\n      if (band == null) {\n        // This probably can't ever happen.\n        return defaultText;\n      }\n      return MarqueeUtils.getEqText(band, state.equalizer.sliders[band]);\n    default:\n      break;\n  }\n  if (state.playlist.currentTrack != null) {\n    const mediaText = getMediaText(state);\n    if (mediaText == null) {\n      // This probably can't ever happen.\n      return defaultText;\n    }\n    return mediaText;\n  }\n  return defaultText;\n};\n\nexport const getKbps = createSelector(\n  getCurrentTrack,\n  (track: PlaylistTrack | null): string | null => {\n    return track != null ? track.kbps || null : null;\n  }\n);\n\nexport const getKhz = createSelector(\n  getCurrentTrack,\n  (track: PlaylistTrack | null): string | null => {\n    return track != null ? track.khz || null : null;\n  }\n);\n\nexport function getMilkdropMessage(state: AppState): MilkdropMessage | null {\n  return state.milkdrop.message;\n}\n\n// Has Butterchurn been injected?\nexport function getMilkdropEnabled(state: AppState): boolean {\n  return state.windows.milkdropEnabled;\n}\n\nexport function getMilkdropWindowEnabled(state: AppState): boolean {\n  return state.milkdrop.display === \"WINDOW\";\n}\n\nexport function getMilkdropDesktopEnabled(state: AppState): boolean {\n  return state.milkdrop.display === \"DESKTOP\";\n}\n\nexport function getMilkdropFullscreenEnabled(state: AppState): boolean {\n  return state.milkdrop.display === \"FULLSCREEN\";\n}\n\nexport function getPresets(state: AppState): any {\n  return state.milkdrop.presets;\n}\n\nexport function getButterchurn(state: AppState): any {\n  return state.milkdrop.butterchurn;\n}\n\nexport function getPresetTransitionType(state: AppState): TransitionType {\n  return state.milkdrop.transitionType;\n}\n\nexport function getCurrentPresetIndex(state: AppState): number | null {\n  return state.milkdrop.currentPresetIndex;\n}\nexport function getCurrentPreset(state: AppState): any | null {\n  const index = getCurrentPresetIndex(state);\n  if (index == null) {\n    return null;\n  }\n  const preset = state.milkdrop.presets[index];\n  if (preset == null || preset.type === \"UNRESOLVED\") {\n    return null;\n  }\n  return preset.preset;\n}\n\nexport function getPresetNames(state: AppState): string[] {\n  return state.milkdrop.presets.map((preset) => preset.name);\n}\n\nexport function getPresetOverlayOpen(state: AppState): boolean {\n  return state.milkdrop.overlay;\n}\n\nexport function getPresetsAreCycling(state: AppState): boolean {\n  return state.milkdrop.cycling;\n}\n\nexport function getRandomizePresets(state: AppState): boolean {\n  return state.milkdrop.randomize;\n}\n\nexport function getClosed(state: AppState): boolean {\n  return state.display.closed;\n}\n\nexport function getSkinImages(state: AppState): SkinImages {\n  return state.display.skinImages;\n}\n\nexport function getSkinCursors(state: AppState): Cursors | null {\n  return state.display.skinCursors;\n}\n\nexport function getSkinRegion(state: AppState): SkinRegion {\n  return state.display.skinRegion;\n}\n\nexport function getSkinLetterWidths(state: AppState): GenLetterWidths | null {\n  return state.display.skinGenLetterWidths;\n}\n\nexport function getPreampLineUrl(state: AppState): string | null {\n  return state.display.skinImages.EQ_PREAMP_LINE;\n}\n\nexport function getLineColorsUrl(state: AppState): string | null {\n  return state.display.skinImages.EQ_GRAPH_LINE_COLORS;\n}\n\nexport const getPreampLineImage = createSelector(\n  getPreampLineUrl,\n  async (url): Promise<HTMLImageElement | null> => {\n    if (url == null) {\n      return null;\n    }\n    return Utils.imgFromUrl(url);\n  }\n);\n\nexport const getLineColorsImage = createSelector(\n  getLineColorsUrl,\n  async (url): Promise<HTMLImageElement | null> => {\n    if (url == null) {\n      return null;\n    }\n    return Utils.imgFromUrl(url);\n  }\n);\n\nexport function getDummyVizData(state: AppState): DummyVizData | null {\n  return state.display.dummyVizData;\n}\n\nexport function getMarqueeStep(state: AppState): number {\n  return state.display.marqueeStep;\n}\n\nexport function getNetworkConnected(state: AppState): boolean {\n  return state.network.connected;\n}\n\nexport function getTimeMode(state: AppState): TimeMode {\n  return state.media.timeMode;\n}\n\nexport function getLoading(state: AppState): boolean {\n  return state.display.loading;\n}\n\nexport function getWorking(state: AppState): boolean {\n  return state.display.working;\n}\n\nexport function getAvaliableSkins(state: AppState) {\n  return state.settings.availableSkins;\n}\n","import { WindowInfo, WindowId } from \"./types\";\n\ninterface NewGraph {\n  [key: string]: {\n    above: string[];\n    left: string[];\n  };\n}\n\ninterface PositionDiff {\n  [key: string]: {\n    x: number;\n    y: number;\n  };\n}\n\nexport interface SizeDiff {\n  [key: string]: {\n    width: number;\n    height: number;\n  };\n}\n\nexport function getPositionDiff(\n  graph: Graph,\n  sizeDiff: SizeDiff\n): PositionDiff {\n  const newGraph: NewGraph = {};\n  const positionDiff: PositionDiff = {};\n  for (const key of Object.keys(graph)) {\n    newGraph[key] = { above: [], left: [] };\n    positionDiff[key] = { x: 0, y: 0 };\n  }\n\n  // Construct an inverted graph\n  for (const [key, neighbors] of Object.entries(graph)) {\n    const { below, right } = neighbors;\n    if (right != null) {\n      newGraph[right].left.push(key);\n    }\n    if (below != null) {\n      newGraph[below].above.push(key);\n    }\n  }\n\n  function walkRight(key: string) {\n    const node = newGraph[key];\n    const nodeSizeDiff = sizeDiff[key];\n    node.left.forEach((left) => {\n      positionDiff[left].x += nodeSizeDiff.width + positionDiff[key].x;\n      walkRight(left);\n    });\n  }\n\n  function walkDown(key: string) {\n    const node = newGraph[key];\n    const nodeSizeDiff = sizeDiff[key];\n    node.above.forEach((above) => {\n      positionDiff[above].y += nodeSizeDiff.height + positionDiff[key].y;\n      walkDown(above);\n    });\n  }\n\n  // Find disconnected nodes, and walk\n  for (const [key, neighbors] of Object.entries(graph)) {\n    if (neighbors.below == null) {\n      walkDown(key);\n    }\n    if (neighbors.right == null) {\n      walkRight(key);\n    }\n  }\n\n  return positionDiff;\n}\n\ninterface Edges {\n  below?: string;\n  right?: string;\n}\n\nexport interface Graph {\n  // TODO: Ensure this is a WindowId\n  [id: string]: Edges;\n}\n\nexport function generateGraph(windows: WindowInfo[]): Graph {\n  const bottoms: { [offset: number]: WindowInfo[] } = {};\n  const rights: { [offset: number]: WindowInfo[] } = {};\n  for (const w of windows) {\n    const bottom = w.y + w.height;\n    if (bottoms[bottom]) {\n      bottoms[bottom].push(w);\n    } else {\n      bottoms[bottom] = [w];\n    }\n\n    const right = w.x + w.width;\n    if (rights[right]) {\n      rights[right].push(w);\n    } else {\n      rights[right] = [w];\n    }\n  }\n\n  const graph: Graph = {};\n  for (const w of windows) {\n    const edges: Edges = {};\n    const top = w.y;\n    const left = w.x;\n\n    const tops = bottoms[top];\n    const lefts = rights[left];\n    if (tops) {\n      for (const below of tops) {\n        const isToTheLeft = below.x + below.width < w.x;\n        const isToTheRight = below.x > w.x + w.width;\n\n        const overlapsInX = !(isToTheLeft || isToTheRight);\n        if (overlapsInX) {\n          edges.below = below.key;\n          break;\n        }\n      }\n    }\n    if (lefts) {\n      for (const right of lefts) {\n        const isAbove = right.y + right.height < w.y;\n        const isBelow = right.y > w.y + w.height;\n        const overlapsInY = !(isAbove || isBelow);\n        if (overlapsInY) {\n          edges.right = right.key;\n          break;\n        }\n      }\n    }\n\n    graph[w.key] = edges;\n  }\n  return graph;\n}\n","import { Slider } from \"./types\";\n\nimport * as Utils from \"./utils\";\n\nexport const getBalanceText = (balance: number): string => {\n  if (balance === 0) {\n    return \"Balance: Center\";\n  }\n  const direction = balance > 0 ? \"Right\" : \"Left\";\n  return `Balance: ${Math.abs(balance)}% ${direction}`;\n};\n\nexport const getVolumeText = (volume: number): string => `Volume: ${volume}%`;\n\nexport const getPositionText = (\n  duration: number,\n  seekToPercent: number\n): string => {\n  const newElapsedStr = Utils.getTimeStr(\n    (duration * seekToPercent) / 100,\n    false\n  );\n  const durationStr = Utils.getTimeStr(duration, false);\n  return `Seek to: ${newElapsedStr}/${durationStr} (${seekToPercent}%)`;\n};\n\nexport const getDoubleSizeModeText = (enabled: boolean): string =>\n  `${enabled ? \"Disable\" : \"Enable\"} doublesize mode`;\n\nconst formatHz = (hz: number): string =>\n  hz < 1000 ? `${hz}HZ` : `${hz / 1000}KHZ`;\n\n// Format a number as a string, ensuring it has a + or - sign\nconst ensureSign = (num: number): string =>\n  num > 0 ? `+${num}` : num.toString();\n\n// Round to 1 and exactly 1 decimal point\nconst roundToTenths = (num: number): string =>\n  (Math.round(num * 10) / 10).toFixed(1);\n\nexport const getEqText = (band: Slider, level: number): string => {\n  const db = roundToTenths(((level - 50) / 50) * 12);\n  const label = band === \"preamp\" ? \"Preamp\" : formatHz(band);\n  return `EQ: ${label} ${ensureSign(Number(db))} DB`;\n};\n","import { Box, Point, Diff, BoundingBox } from \"./types\";\n\nexport const SNAP_DISTANCE = 15;\n\nexport const top = (box: Box) => box.y;\nexport const bottom = (box: Box) => box.y + box.height;\nexport const left = (box: Box) => box.x;\nexport const right = (box: Box) => box.x + box.width;\n\nexport const near = (a: number, b: number) => Math.abs(a - b) < SNAP_DISTANCE;\n\n// http://stackoverflow.com/a/3269471/1263117\nexport const overlapX = (a: Box, b: Box) =>\n  left(a) <= right(b) + SNAP_DISTANCE && left(b) <= right(a) + SNAP_DISTANCE;\nexport const overlapY = (a: Box, b: Box) =>\n  top(a) <= bottom(b) + SNAP_DISTANCE && top(b) <= bottom(a) + SNAP_DISTANCE;\n\n// Give a new position for `boxA` that snaps it to `boxB` if neede.\nexport const snap = (boxA: Box, boxB: Box) => {\n  let x, y;\n\n  // TODO: Refactor/simplify this code\n  if (overlapY(boxA, boxB)) {\n    if (near(left(boxA), right(boxB))) {\n      x = right(boxB);\n    } else if (near(right(boxA), left(boxB))) {\n      x = left(boxB) - boxA.width;\n    } else if (near(left(boxA), left(boxB))) {\n      x = left(boxB);\n    } else if (near(right(boxA), right(boxB))) {\n      x = right(boxB) - boxA.width;\n    }\n  }\n\n  if (overlapX(boxA, boxB)) {\n    if (near(top(boxA), bottom(boxB))) {\n      y = bottom(boxB);\n    } else if (near(bottom(boxA), top(boxB))) {\n      y = top(boxB) - boxA.height;\n    } else if (near(top(boxA), top(boxB))) {\n      y = top(boxB);\n    } else if (near(bottom(boxA), bottom(boxB))) {\n      y = bottom(boxB) - boxA.height;\n    }\n  }\n  return { x, y };\n};\n\nexport const snapDiff = (a: Box, b: Box): Point => {\n  const newPos = snap(a, b);\n  return {\n    x: newPos.x === undefined ? 0 : newPos.x - a.x,\n    y: newPos.y === undefined ? 0 : newPos.y - a.y,\n  };\n};\n\n// TODO: Use the first x and y combo\nexport const snapDiffManyToMany = (as: Box[], bs: Box[]): Point => {\n  let x: number | undefined = 0;\n  let y: number | undefined = 0;\n  for (const a of as) {\n    for (const b of bs) {\n      const diff = snapDiff(a, b);\n      x = x || diff.x;\n      y = y || diff.y;\n      if (x !== undefined && x > 0 && y !== undefined && y > 0) {\n        break;\n      }\n    }\n  }\n  return { x, y };\n};\n\nexport const snapToMany = (boxA: Box, otherBoxes: Box[]): Diff => {\n  let x: number | undefined;\n  let y: number | undefined;\n\n  otherBoxes.forEach((boxB) => {\n    const newPos = snap(boxA, boxB);\n    x = newPos.x || x;\n    y = newPos.y || y;\n  });\n\n  return { x, y };\n};\n\nexport const snapWithin = (boxA: Box, boundingBox: BoundingBox): Diff => {\n  let x, y;\n\n  if (boxA.x - SNAP_DISTANCE < 0) {\n    x = 0;\n  } else if (boxA.x + boxA.width + SNAP_DISTANCE > boundingBox.width) {\n    x = boundingBox.width - boxA.width;\n  }\n\n  if (boxA.y - SNAP_DISTANCE < 0) {\n    y = 0;\n  } else if (boxA.y + boxA.height + SNAP_DISTANCE > boundingBox.height) {\n    y = boundingBox.height - boxA.height;\n  }\n\n  return { x, y };\n};\n\nexport const snapWithinDiff = (a: Box, b: BoundingBox) => {\n  const newPos = snapWithin(a, b);\n  return {\n    x: newPos.x === undefined ? 0 : newPos.x - a.x,\n    y: newPos.y === undefined ? 0 : newPos.y - a.y,\n  };\n};\n\nexport const applySnap = (original: Point, ...snaps: Diff[]) =>\n  snaps.reduce(\n    (previous, snapped) => ({\n      ...previous,\n      x: typeof snapped.x !== \"undefined\" ? snapped.x : previous.x,\n      y: typeof snapped.y !== \"undefined\" ? snapped.y : previous.y,\n    }),\n    original\n  );\n\nexport const boundingBox = (nodes: Box[]): Box => {\n  const boxes = nodes.slice();\n  const firstNode = boxes.pop();\n  if (firstNode == null) {\n    throw new Error(\"boundingBox must be called with at least one node\");\n  }\n  const bounding = {\n    top: top(firstNode),\n    right: right(firstNode),\n    bottom: bottom(firstNode),\n    left: left(firstNode),\n  };\n\n  boxes.forEach((node) => {\n    bounding.top = Math.min(bounding.top, top(node));\n    bounding.right = Math.max(bounding.right, right(node));\n    bounding.bottom = Math.max(bounding.bottom, bottom(node));\n    bounding.left = Math.min(bounding.left, left(node));\n  });\n\n  return {\n    x: bounding.left,\n    y: bounding.top,\n    width: bounding.right - bounding.left,\n    height: bounding.bottom - bounding.top,\n  };\n};\n\nexport function traceConnection<B extends Box>(\n  areConnected: (candidate: Box, n: Box) => boolean\n) {\n  return (candidates: B[], node: B): Set<B> => {\n    const connected = new Set<B>();\n    const checkNode = (n: B) => {\n      for (const candidate of candidates) {\n        if (!connected.has(candidate) && areConnected(candidate, n)) {\n          connected.add(candidate);\n          checkNode(candidate);\n        }\n      }\n    };\n    checkNode(node);\n    return connected;\n  };\n}\n\nexport const applyDiff = (a: Point, b: Point) => ({\n  x: a.x + b.x,\n  y: a.y + b.y,\n});\n\n// TODO: This should not\nexport const applyMultipleDiffs = (initial: Point, ...diffs: Point[]) => {\n  const metaDiff = diffs.reduce((m, diff) => ({\n    // Use the smallest non-zero diff for each axis.\n    // TODO: Min should be the absolute value\n    x: m.x === 0 || diff.x === 0 ? m.x + diff.x : Math.min(m.x, diff.x),\n    y: m.y === 0 || diff.y === 0 ? m.y + diff.y : Math.min(m.y, diff.y),\n  }));\n  return applyDiff(initial, metaDiff);\n};\n","import * as Selectors from \"../selectors\";\n\nimport * as Utils from \"../utils\";\n\nimport { getPositionDiff, SizeDiff } from \"../resizeUtils\";\nimport { applyDiff } from \"../snapUtils\";\nimport {\n  Action,\n  Thunk,\n  WindowId,\n  WindowPositions,\n  Dispatch,\n  WindowLayout,\n} from \"../types\";\n\n// Dispatch an action and, if needed rearrange the windows to preserve\n// the existing edge relationship.\n//\n// Works by checking the edges before the action is dispatched. Then,\n// after dispatching, calculating what position change would be required\n// to restore those relationships.\nfunction withWindowGraphIntegrity(action: Action): Thunk {\n  return (dispatch, getState) => {\n    const state = getState();\n    const graph = Selectors.getWindowGraph(state);\n    const originalSizes = Selectors.getWindowSizes(state);\n\n    dispatch(action);\n\n    const newSizes = Selectors.getWindowSizes(getState());\n    const sizeDiff: SizeDiff = {};\n    for (const window of Object.keys(newSizes)) {\n      const original = originalSizes[window];\n      const current = newSizes[window];\n      sizeDiff[window] = {\n        height: current.height - original.height,\n        width: current.width - original.width,\n      };\n    }\n\n    const positionDiff = getPositionDiff(graph, sizeDiff);\n    const windowPositions = Selectors.getWindowPositions(state);\n\n    const newPositions = Utils.objectMap(windowPositions, (position, key) =>\n      applyDiff(position, positionDiff[key])\n    );\n\n    dispatch(updateWindowPositions(newPositions));\n  };\n}\n\nexport function toggleDoubleSizeMode(): Thunk {\n  return withWindowGraphIntegrity({ type: \"TOGGLE_DOUBLESIZE_MODE\" });\n}\n\nexport function toggleLlamaMode(): Action {\n  return { type: \"TOGGLE_LLAMA_MODE\" };\n}\n\nexport function toggleEqualizerShadeMode(): Thunk {\n  return withWindowGraphIntegrity({\n    type: \"TOGGLE_WINDOW_SHADE_MODE\",\n    windowId: \"equalizer\",\n  });\n}\n\nexport function toggleMainWindowShadeMode(): Thunk {\n  return withWindowGraphIntegrity({\n    type: \"TOGGLE_WINDOW_SHADE_MODE\",\n    windowId: \"main\",\n  });\n}\n\nexport function togglePlaylistShadeMode(): Thunk {\n  return withWindowGraphIntegrity({\n    type: \"TOGGLE_WINDOW_SHADE_MODE\",\n    windowId: \"playlist\",\n  });\n}\n\nexport function closeWindow(windowId: WindowId): Action {\n  return { type: \"CLOSE_WINDOW\", windowId };\n}\n\nexport function setFocusedWindow(window: WindowId | null): Action {\n  return { type: \"SET_FOCUSED_WINDOW\", window };\n}\n\nexport function setWindowSize(\n  windowId: WindowId,\n  size: [number, number]\n): Action {\n  return { type: \"WINDOW_SIZE_CHANGED\", windowId, size };\n}\n\nexport function toggleWindow(windowId: WindowId): Action {\n  return { type: \"TOGGLE_WINDOW\", windowId };\n}\n\nexport function updateWindowPositions(\n  positions: WindowPositions,\n  absolute?: boolean\n): Action {\n  return { type: \"UPDATE_WINDOW_POSITIONS\", positions, absolute };\n}\n\nexport function centerWindowsInContainer(container: HTMLElement): Thunk {\n  return (dispatch, getState) => {\n    if (!Selectors.getPositionsAreRelative(getState())) {\n      return;\n    }\n    const { left, top } = container.getBoundingClientRect();\n    const { scrollWidth: width, scrollHeight: height } = container;\n    dispatch(centerWindows({ left, top, width, height }));\n  };\n}\n\nexport function centerWindowsInView(): Thunk {\n  const height = window.innerHeight;\n  const width = window.innerWidth;\n  return centerWindows({ left: 0, top: 0, width, height });\n}\n\ntype Box = {\n  left: number;\n  top: number;\n  width: number;\n  height: number;\n};\n\nexport function centerWindows({ left, top, width, height }: Box): Thunk {\n  return (dispatch, getState) => {\n    const state = getState();\n    const windowsInfo = Selectors.getWindowsInfo(state);\n    const getOpen = Selectors.getWindowOpen(state);\n\n    const offsetLeft = left + window.scrollX;\n    const offsetTop = top + window.scrollY;\n\n    // A layout has been supplied. We will compute the bounding box and\n    // center the given layout.\n    const bounding = Utils.calculateBoundingBox(\n      windowsInfo.filter((w) => getOpen(w.key))\n    );\n\n    if (bounding == null) {\n      // There are no windows to center\n      return;\n    }\n\n    const boxHeight = bounding.bottom - bounding.top;\n    const boxWidth = bounding.right - bounding.left;\n\n    const move = {\n      x: Math.ceil(offsetLeft - bounding.left + (width - boxWidth) / 2),\n      y: Math.ceil(offsetTop - bounding.top + (height - boxHeight) / 2),\n    };\n\n    const newPositions = windowsInfo.reduce(\n      (pos, w) => ({\n        ...pos,\n        [w.key]: { x: move.x + w.x, y: move.y + w.y },\n      }),\n      {}\n    );\n\n    dispatch(updateWindowPositions(newPositions, true));\n  };\n}\n\nexport function browserWindowSizeChanged(size: {\n  height: number;\n  width: number;\n}): Thunk {\n  return (dispatch: Dispatch) => {\n    dispatch({ type: \"BROWSER_WINDOW_SIZE_CHANGED\", ...size });\n    dispatch(ensureWindowsAreOnScreen());\n  };\n}\n\nexport function resetWindowSizes(): Action {\n  return { type: \"RESET_WINDOW_SIZES\" };\n}\n\nexport function stackWindows(): Thunk {\n  return (dispatch, getState) => {\n    dispatch(\n      updateWindowPositions(Selectors.getStackedLayoutPositions(getState()))\n    );\n  };\n}\n\nexport function setWindowLayout(layout?: WindowLayout): Thunk {\n  return (dispatch) => {\n    if (layout == null) {\n      dispatch(stackWindows());\n      return;\n    }\n    for (const id of [\"playlist\", \"milkdrop\"] as const) {\n      const w = layout[id];\n      if (w != null && w.size != null) {\n        const { extraHeight: plusHeight, extraWidth: plusWidth } = w.size;\n        dispatch(setWindowSize(id, [plusWidth, plusHeight]));\n      }\n    }\n    for (const id of [\"main\", \"playlist\", \"equalizer\", \"milkdrop\"] as const) {\n      const w = layout[id];\n      if (w == null || w.closed) {\n        dispatch(closeWindow(id));\n      }\n    }\n    for (const id of [\"main\", \"playlist\", \"equalizer\"] as const) {\n      if (layout[id]?.shadeMode) {\n        dispatch({\n          type: \"TOGGLE_WINDOW_SHADE_MODE\",\n          windowId: id,\n        });\n      }\n    }\n    dispatch(\n      updateWindowPositions(\n        Utils.objectMap(layout, (w) => {\n          // For some reason TypeScript cli thinks this\n          // is nullable, but in VSCode it does not...\n          if (w == null) throw new Error(\"w is null\");\n          return {\n            x: w.position.left,\n            y: w.position.top,\n          };\n        }),\n        false\n      )\n    );\n  };\n}\n\nexport function ensureWindowsAreOnScreen(): Thunk {\n  return (dispatch, getState) => {\n    const state = getState();\n\n    const windowsInfo = Selectors.getWindowsInfo(state);\n    const getOpen = Selectors.getWindowOpen(state);\n    const { height, width } = Utils.getWindowSize();\n    const bounding = Utils.calculateBoundingBox(\n      windowsInfo.filter((w) => getOpen(w.key))\n    );\n    if (bounding == null) {\n      // There are no windows visible, so there's no work to do.\n      return;\n    }\n    const positions = Selectors.getWindowPositions(state);\n\n    // Are we good?\n    if (\n      bounding.left >= 0 &&\n      bounding.top >= 0 &&\n      bounding.right <= width &&\n      bounding.bottom <= height\n    ) {\n      // My work here is done.\n      return;\n    }\n\n    const boundingHeight = bounding.bottom - bounding.top;\n    const boundingWidth = bounding.right - bounding.left;\n\n    // Could we simply shift all the windows by a constant offset?\n    if (boundingWidth <= width && boundingHeight <= height) {\n      let moveY = 0;\n      let moveX = 0;\n      if (bounding.top <= 0) {\n        moveY = bounding.top;\n      } else if (bounding.bottom > height) {\n        moveY = bounding.bottom - height;\n      }\n\n      if (bounding.left <= 0) {\n        moveX = bounding.left;\n      } else if (bounding.right > width) {\n        moveX = bounding.right - width;\n      }\n\n      const newPositions = Utils.objectMap(positions, (position) => ({\n        x: position.x - moveX,\n        y: position.y - moveY,\n      }));\n\n      dispatch(updateWindowPositions(newPositions));\n      return;\n    }\n\n    // TODO: Try moving the individual groups to try to fit them in\n\n    // I give up. Just reset everything.\n    dispatch(resetWindowSizes());\n    dispatch(stackWindows());\n    dispatch(centerWindowsInView());\n  };\n}\n","export const PRESET_VALUES = [\n    \"hz60\",\n    \"hz170\",\n    \"hz310\",\n    \"hz600\",\n    \"hz1000\",\n    \"hz3000\",\n    \"hz6000\",\n    \"hz12000\",\n    \"hz14000\",\n    \"hz16000\",\n    \"preamp\",\n];\nexport const HEADER = \"Winamp EQ library file v1.1\";\n","import { UTF8_ELLIPSIS } from \"./constants\";\n\nexport type SpriteName = string;\n\nexport interface Sprite {\n  name: SpriteName;\n  x: number;\n  y: number;\n  width: number;\n  height: number;\n}\n\n/* TODO: There are too many \" \" and \"_\" characters */\nexport const FONT_LOOKUP: { [letter: string]: [number, number] } = {\n  a: [0, 0],\n  b: [0, 1],\n  c: [0, 2],\n  d: [0, 3],\n  e: [0, 4],\n  f: [0, 5],\n  g: [0, 6],\n  h: [0, 7],\n  i: [0, 8],\n  j: [0, 9],\n  k: [0, 10],\n  l: [0, 11],\n  m: [0, 12],\n  n: [0, 13],\n  o: [0, 14],\n  p: [0, 15],\n  q: [0, 16],\n  r: [0, 17],\n  s: [0, 18],\n  t: [0, 19],\n  u: [0, 20],\n  v: [0, 21],\n  w: [0, 22],\n  x: [0, 23],\n  y: [0, 24],\n  z: [0, 25],\n  '\"': [0, 26],\n  \"@\": [0, 27],\n  \" \": [0, 30],\n  \"0\": [1, 0],\n  \"1\": [1, 1],\n  \"2\": [1, 2],\n  \"3\": [1, 3],\n  \"4\": [1, 4],\n  \"5\": [1, 5],\n  \"6\": [1, 6],\n  \"7\": [1, 7],\n  \"8\": [1, 8],\n  \"9\": [1, 9],\n  [UTF8_ELLIPSIS]: [1, 10],\n  \".\": [1, 11],\n  \":\": [1, 12],\n  \"(\": [1, 13],\n  \")\": [1, 14],\n  \"-\": [1, 15],\n  \"'\": [1, 16],\n  \"!\": [1, 17],\n  _: [1, 18],\n  \"+\": [1, 19],\n  \"\\\\\": [1, 20],\n  \"/\": [1, 21],\n  \"[\": [1, 22],\n  \"]\": [1, 23],\n  \"^\": [1, 24],\n  \"&\": [1, 25],\n  \"%\": [1, 26],\n  \",\": [1, 27],\n  \"=\": [1, 28],\n  $: [1, 29],\n  \"#\": [1, 30],\n  Å: [2, 0],\n  Ö: [2, 1],\n  Ä: [2, 2],\n  \"?\": [2, 3],\n  \"*\": [2, 4],\n  \"<\": [1, 22],\n  \">\": [1, 23],\n  \"{\": [1, 22],\n  \"}\": [1, 23],\n};\n\nexport const imageConstFromChar = (char: string) =>\n  `CHARACTER_${char.charCodeAt(0)}`;\n\nconst CHAR_X = 5;\nconst CHAR_Y = 6;\n\nconst characterSprites = [];\nfor (const key in FONT_LOOKUP) {\n  if (FONT_LOOKUP.hasOwnProperty(key)) {\n    const position = FONT_LOOKUP[key];\n    characterSprites.push({\n      name: imageConstFromChar(key),\n      y: position[0] * CHAR_Y,\n      x: position[1] * CHAR_X,\n      width: CHAR_X,\n      height: CHAR_Y,\n    });\n  }\n}\n\ninterface SpriteMap {\n  [sheet: string]: Sprite[];\n}\n\nconst sprites: SpriteMap = {\n  BALANCE: [\n    { name: \"MAIN_BALANCE_BACKGROUND\", x: 9, y: 0, width: 38, height: 420 },\n    { name: \"MAIN_BALANCE_THUMB\", x: 15, y: 422, width: 14, height: 11 },\n    { name: \"MAIN_BALANCE_THUMB_ACTIVE\", x: 0, y: 422, width: 14, height: 11 },\n  ],\n  CBUTTONS: [\n    { name: \"MAIN_PREVIOUS_BUTTON\", x: 0, y: 0, width: 23, height: 18 },\n    {\n      name: \"MAIN_PREVIOUS_BUTTON_ACTIVE\",\n      x: 0,\n      y: 18,\n      width: 23,\n      height: 18,\n    },\n    { name: \"MAIN_PLAY_BUTTON\", x: 23, y: 0, width: 23, height: 18 },\n    { name: \"MAIN_PLAY_BUTTON_ACTIVE\", x: 23, y: 18, width: 23, height: 18 },\n    { name: \"MAIN_PAUSE_BUTTON\", x: 46, y: 0, width: 23, height: 18 },\n    { name: \"MAIN_PAUSE_BUTTON_ACTIVE\", x: 46, y: 18, width: 23, height: 18 },\n    { name: \"MAIN_STOP_BUTTON\", x: 69, y: 0, width: 23, height: 18 },\n    { name: \"MAIN_STOP_BUTTON_ACTIVE\", x: 69, y: 18, width: 23, height: 18 },\n    { name: \"MAIN_NEXT_BUTTON\", x: 92, y: 0, width: 23, height: 18 },\n    { name: \"MAIN_NEXT_BUTTON_ACTIVE\", x: 92, y: 18, width: 22, height: 18 },\n    { name: \"MAIN_EJECT_BUTTON\", x: 114, y: 0, width: 22, height: 16 },\n    { name: \"MAIN_EJECT_BUTTON_ACTIVE\", x: 114, y: 16, width: 22, height: 16 },\n  ],\n  MAIN: [\n    { name: \"MAIN_WINDOW_BACKGROUND\", x: 0, y: 0, width: 275, height: 116 },\n  ],\n  MONOSTER: [\n    { name: \"MAIN_STEREO\", x: 0, y: 12, width: 29, height: 12 },\n    { name: \"MAIN_STEREO_SELECTED\", x: 0, y: 0, width: 29, height: 12 },\n    { name: \"MAIN_MONO\", x: 29, y: 12, width: 27, height: 12 },\n    { name: \"MAIN_MONO_SELECTED\", x: 29, y: 0, width: 27, height: 12 },\n  ],\n  NUMBERS: [\n    { name: \"NO_MINUS_SIGN\", x: 9, y: 6, width: 5, height: 1 },\n    { name: \"MINUS_SIGN\", x: 20, y: 6, width: 5, height: 1 },\n    { name: \"DIGIT_0\", x: 0, y: 0, width: 9, height: 13 },\n    { name: \"DIGIT_1\", x: 9, y: 0, width: 9, height: 13 },\n    { name: \"DIGIT_2\", x: 18, y: 0, width: 9, height: 13 },\n    { name: \"DIGIT_3\", x: 27, y: 0, width: 9, height: 13 },\n    { name: \"DIGIT_4\", x: 36, y: 0, width: 9, height: 13 },\n    { name: \"DIGIT_5\", x: 45, y: 0, width: 9, height: 13 },\n    { name: \"DIGIT_6\", x: 54, y: 0, width: 9, height: 13 },\n    { name: \"DIGIT_7\", x: 63, y: 0, width: 9, height: 13 },\n    { name: \"DIGIT_8\", x: 72, y: 0, width: 9, height: 13 },\n    { name: \"DIGIT_9\", x: 81, y: 0, width: 9, height: 13 },\n  ],\n  NUMS_EX: [\n    { name: \"NO_MINUS_SIGN_EX\", x: 90, y: 0, width: 9, height: 13 },\n    { name: \"MINUS_SIGN_EX\", x: 99, y: 0, width: 9, height: 13 },\n    { name: \"DIGIT_0_EX\", x: 0, y: 0, width: 9, height: 13 },\n    { name: \"DIGIT_1_EX\", x: 9, y: 0, width: 9, height: 13 },\n    { name: \"DIGIT_2_EX\", x: 18, y: 0, width: 9, height: 13 },\n    { name: \"DIGIT_3_EX\", x: 27, y: 0, width: 9, height: 13 },\n    { name: \"DIGIT_4_EX\", x: 36, y: 0, width: 9, height: 13 },\n    { name: \"DIGIT_5_EX\", x: 45, y: 0, width: 9, height: 13 },\n    { name: \"DIGIT_6_EX\", x: 54, y: 0, width: 9, height: 13 },\n    { name: \"DIGIT_7_EX\", x: 63, y: 0, width: 9, height: 13 },\n    { name: \"DIGIT_8_EX\", x: 72, y: 0, width: 9, height: 13 },\n    { name: \"DIGIT_9_EX\", x: 81, y: 0, width: 9, height: 13 },\n  ],\n  PLAYPAUS: [\n    { name: \"MAIN_PLAYING_INDICATOR\", x: 0, y: 0, width: 9, height: 9 },\n    { name: \"MAIN_PAUSED_INDICATOR\", x: 9, y: 0, width: 9, height: 9 },\n    { name: \"MAIN_STOPPED_INDICATOR\", x: 18, y: 0, width: 9, height: 9 },\n    { name: \"MAIN_NOT_WORKING_INDICATOR\", x: 36, y: 0, width: 9, height: 9 },\n    { name: \"MAIN_WORKING_INDICATOR\", x: 39, y: 0, width: 9, height: 9 },\n  ],\n  PLEDIT: [\n    { name: \"PLAYLIST_TOP_TILE\", x: 127, y: 21, width: 25, height: 20 },\n    { name: \"PLAYLIST_TOP_LEFT_CORNER\", x: 0, y: 21, width: 25, height: 20 },\n    { name: \"PLAYLIST_TITLE_BAR\", x: 26, y: 21, width: 100, height: 20 },\n    {\n      name: \"PLAYLIST_TOP_RIGHT_CORNER\",\n      x: 153,\n      y: 21,\n      width: 25,\n      height: 20,\n    },\n    {\n      name: \"PLAYLIST_TOP_TILE_SELECTED\",\n      x: 127,\n      y: 0,\n      width: 25,\n      height: 20,\n    },\n    { name: \"PLAYLIST_TOP_LEFT_SELECTED\", x: 0, y: 0, width: 25, height: 20 },\n    {\n      name: \"PLAYLIST_TITLE_BAR_SELECTED\",\n      x: 26,\n      y: 0,\n      width: 100,\n      height: 20,\n    },\n    {\n      name: \"PLAYLIST_TOP_RIGHT_CORNER_SELECTED\",\n      x: 153,\n      y: 0,\n      width: 25,\n      height: 20,\n    },\n    { name: \"PLAYLIST_LEFT_TILE\", x: 0, y: 42, width: 12, height: 29 },\n    { name: \"PLAYLIST_RIGHT_TILE\", x: 31, y: 42, width: 20, height: 29 },\n    { name: \"PLAYLIST_BOTTOM_TILE\", x: 179, y: 0, width: 25, height: 38 },\n    {\n      name: \"PLAYLIST_BOTTOM_LEFT_CORNER\",\n      x: 0,\n      y: 72,\n      width: 125,\n      height: 38,\n    },\n    {\n      name: \"PLAYLIST_BOTTOM_RIGHT_CORNER\",\n      x: 126,\n      y: 72,\n      width: 150,\n      height: 38,\n    },\n    {\n      name: \"PLAYLIST_VISUALIZER_BACKGROUND\",\n      x: 205,\n      y: 0,\n      width: 75,\n      height: 38,\n    },\n    { name: \"PLAYLIST_SHADE_BACKGROUND\", x: 72, y: 57, width: 25, height: 14 },\n    {\n      name: \"PLAYLIST_SHADE_BACKGROUND_LEFT\",\n      x: 72,\n      y: 42,\n      width: 25,\n      height: 14,\n    },\n    {\n      name: \"PLAYLIST_SHADE_BACKGROUND_RIGHT\",\n      x: 99,\n      y: 57,\n      width: 50,\n      height: 14,\n    },\n    {\n      name: \"PLAYLIST_SHADE_BACKGROUND_RIGHT_SELECTED\",\n      x: 99,\n      y: 42,\n      width: 50,\n      height: 14,\n    },\n    {\n      name: \"PLAYLIST_SCROLL_HANDLE_SELECTED\",\n      x: 61,\n      y: 53,\n      width: 8,\n      height: 18,\n    },\n    { name: \"PLAYLIST_SCROLL_HANDLE\", x: 52, y: 53, width: 8, height: 18 },\n    { name: \"PLAYLIST_ADD_URL\", x: 0, y: 111, width: 22, height: 18 },\n    { name: \"PLAYLIST_ADD_URL_SELECTED\", x: 23, y: 111, width: 22, height: 18 },\n    { name: \"PLAYLIST_ADD_DIR\", x: 0, y: 130, width: 22, height: 18 },\n    { name: \"PLAYLIST_ADD_DIR_SELECTED\", x: 23, y: 130, width: 22, height: 18 },\n    { name: \"PLAYLIST_ADD_FILE\", x: 0, y: 149, width: 22, height: 18 },\n    {\n      name: \"PLAYLIST_ADD_FILE_SELECTED\",\n      x: 23,\n      y: 149,\n      width: 22,\n      height: 18,\n    },\n    { name: \"PLAYLIST_REMOVE_ALL\", x: 54, y: 111, width: 22, height: 18 },\n    {\n      name: \"PLAYLIST_REMOVE_ALL_SELECTED\",\n      x: 77,\n      y: 111,\n      width: 22,\n      height: 18,\n    },\n    { name: \"PLAYLIST_CROP\", x: 54, y: 130, width: 22, height: 18 },\n    { name: \"PLAYLIST_CROP_SELECTED\", x: 77, y: 130, width: 22, height: 18 },\n    { name: \"PLAYLIST_REMOVE_SELECTED\", x: 54, y: 149, width: 22, height: 18 },\n    {\n      name: \"PLAYLIST_REMOVE_SELECTED_SELECTED\",\n      x: 77,\n      y: 149,\n      width: 22,\n      height: 18,\n    },\n    { name: \"PLAYLIST_REMOVE_MISC\", x: 54, y: 168, width: 22, height: 18 },\n    {\n      name: \"PLAYLIST_REMOVE_MISC_SELECTED\",\n      x: 77,\n      y: 168,\n      width: 22,\n      height: 18,\n    },\n    {\n      name: \"PLAYLIST_INVERT_SELECTION\",\n      x: 104,\n      y: 111,\n      width: 22,\n      height: 18,\n    },\n    {\n      name: \"PLAYLIST_INVERT_SELECTION_SELECTED\",\n      x: 127,\n      y: 111,\n      width: 22,\n      height: 18,\n    },\n    { name: \"PLAYLIST_SELECT_ZERO\", x: 104, y: 130, width: 22, height: 18 },\n    {\n      name: \"PLAYLIST_SELECT_ZERO_SELECTED\",\n      x: 127,\n      y: 130,\n      width: 22,\n      height: 18,\n    },\n    { name: \"PLAYLIST_SELECT_ALL\", x: 104, y: 149, width: 22, height: 18 },\n    {\n      name: \"PLAYLIST_SELECT_ALL_SELECTED\",\n      x: 127,\n      y: 149,\n      width: 22,\n      height: 18,\n    },\n    { name: \"PLAYLIST_SORT_LIST\", x: 154, y: 111, width: 22, height: 18 },\n    {\n      name: \"PLAYLIST_SORT_LIST_SELECTED\",\n      x: 177,\n      y: 111,\n      width: 22,\n      height: 18,\n    },\n    { name: \"PLAYLIST_FILE_INFO\", x: 154, y: 130, width: 22, height: 18 },\n    {\n      name: \"PLAYLIST_FILE_INFO_SELECTED\",\n      x: 177,\n      y: 130,\n      width: 22,\n      height: 18,\n    },\n    { name: \"PLAYLIST_MISC_OPTIONS\", x: 154, y: 149, width: 22, height: 18 },\n    {\n      name: \"PLAYLIST_MISC_OPTIONS_SELECTED\",\n      x: 177,\n      y: 149,\n      width: 22,\n      height: 18,\n    },\n    { name: \"PLAYLIST_NEW_LIST\", x: 204, y: 111, width: 22, height: 18 },\n    {\n      name: \"PLAYLIST_NEW_LIST_SELECTED\",\n      x: 227,\n      y: 111,\n      width: 22,\n      height: 18,\n    },\n    { name: \"PLAYLIST_SAVE_LIST\", x: 204, y: 130, width: 22, height: 18 },\n    {\n      name: \"PLAYLIST_SAVE_LIST_SELECTED\",\n      x: 227,\n      y: 130,\n      width: 22,\n      height: 18,\n    },\n    { name: \"PLAYLIST_LOAD_LIST\", x: 204, y: 149, width: 22, height: 18 },\n    {\n      name: \"PLAYLIST_LOAD_LIST_SELECTED\",\n      x: 227,\n      y: 149,\n      width: 22,\n      height: 18,\n    },\n    { name: \"PLAYLIST_ADD_MENU_BAR\", x: 48, y: 111, width: 3, height: 54 },\n    { name: \"PLAYLIST_REMOVE_MENU_BAR\", x: 100, y: 111, width: 3, height: 72 },\n    { name: \"PLAYLIST_SELECT_MENU_BAR\", x: 150, y: 111, width: 3, height: 54 },\n    { name: \"PLAYLIST_MISC_MENU_BAR\", x: 200, y: 111, width: 3, height: 54 },\n    { name: \"PLAYLIST_LIST_BAR\", x: 250, y: 111, width: 3, height: 54 },\n    { name: \"PLAYLIST_CLOSE_SELECTED\", x: 52, y: 42, width: 9, height: 9 },\n    { name: \"PLAYLIST_COLLAPSE_SELECTED\", x: 62, y: 42, width: 9, height: 9 },\n    { name: \"PLAYLIST_EXPAND_SELECTED\", x: 150, y: 42, width: 9, height: 9 },\n  ],\n  EQ_EX: [\n    {\n      name: \"EQ_SHADE_BACKGROUND_SELECTED\",\n      x: 0,\n      y: 0,\n      width: 275,\n      height: 14,\n    },\n    { name: \"EQ_SHADE_BACKGROUND\", x: 0, y: 15, width: 275, height: 14 },\n    { name: \"EQ_SHADE_VOLUME_SLIDER_LEFT\", x: 1, y: 30, width: 3, height: 7 },\n    { name: \"EQ_SHADE_VOLUME_SLIDER_CENTER\", x: 4, y: 30, width: 3, height: 7 },\n    { name: \"EQ_SHADE_VOLUME_SLIDER_RIGHT\", x: 7, y: 30, width: 3, height: 7 },\n    { name: \"EQ_SHADE_BALANCE_SLIDER_LEFT\", x: 11, y: 30, width: 3, height: 7 },\n    {\n      name: \"EQ_SHADE_BALANCE_SLIDER_CENTER\",\n      x: 14,\n      y: 30,\n      width: 3,\n      height: 7,\n    },\n    {\n      name: \"EQ_SHADE_BALANCE_SLIDER_RIGHT\",\n      x: 17,\n      y: 30,\n      width: 3,\n      height: 7,\n    },\n    { name: \"EQ_MAXIMIZE_BUTTON_ACTIVE\", x: 1, y: 38, width: 9, height: 9 },\n    { name: \"EQ_MINIMIZE_BUTTON_ACTIVE\", x: 1, y: 47, width: 9, height: 9 },\n    { name: \"EQ_SHADE_CLOSE_BUTTON\", x: 11, y: 38, width: 9, height: 9 },\n    { name: \"EQ_SHADE_CLOSE_BUTTON_ACTIVE\", x: 11, y: 47, width: 9, height: 9 },\n  ],\n  EQMAIN: [\n    { name: \"EQ_WINDOW_BACKGROUND\", x: 0, y: 0, width: 275, height: 116 },\n    { name: \"EQ_TITLE_BAR\", x: 0, y: 149, width: 275, height: 14 },\n    { name: \"EQ_TITLE_BAR_SELECTED\", x: 0, y: 134, width: 275, height: 14 },\n    { name: \"EQ_SLIDER_BACKGROUND\", x: 13, y: 164, width: 209, height: 129 },\n    { name: \"EQ_SLIDER_THUMB\", x: 0, y: 164, width: 11, height: 11 },\n    { name: \"EQ_SLIDER_THUMB_SELECTED\", x: 0, y: 176, width: 11, height: 11 },\n    { name: \"EQ_CLOSE_BUTTON\", x: 0, y: 116, width: 9, height: 9 },\n    { name: \"EQ_CLOSE_BUTTON_ACTIVE\", x: 0, y: 125, width: 9, height: 9 },\n    // This is technically not a sprite, it's just part of the background.\n    // However, we extract it to use it as a fallback for\n    // `EQ_MAXIMIZE_BUTTON_ACTIVE`. Without this, skins that don't implement\n    // `eq_ex.bmp` would show the default skin's `EQ_MAXIMIZE_BUTTON_ACTIVE`\n    // instead of showing no sprite aka, just showing through to this portion of\n    // the title bar image.\n    {\n      name: \"EQ_MAXIMIZE_BUTTON_ACTIVE_FALLBACK\",\n      x: 254,\n      y: 152,\n      width: 9,\n      height: 9,\n    },\n    { name: \"EQ_ON_BUTTON\", x: 10, y: 119, width: 26, height: 12 },\n    { name: \"EQ_ON_BUTTON_DEPRESSED\", x: 128, y: 119, width: 26, height: 12 },\n    { name: \"EQ_ON_BUTTON_SELECTED\", x: 69, y: 119, width: 26, height: 12 },\n    {\n      name: \"EQ_ON_BUTTON_SELECTED_DEPRESSED\",\n      x: 187,\n      y: 119,\n      width: 26,\n      height: 12,\n    },\n    { name: \"EQ_AUTO_BUTTON\", x: 36, y: 119, width: 32, height: 12 },\n    {\n      name: \"EQ_AUTO_BUTTON_DEPRESSED\",\n      x: 154,\n      y: 119,\n      width: 32,\n      height: 12,\n    },\n    { name: \"EQ_AUTO_BUTTON_SELECTED\", x: 95, y: 119, width: 32, height: 12 },\n    {\n      name: \"EQ_AUTO_BUTTON_SELECTED_DEPRESSED\",\n      x: 213,\n      y: 119,\n      width: 32,\n      height: 12,\n    },\n    { name: \"EQ_GRAPH_BACKGROUND\", x: 0, y: 294, width: 113, height: 19 },\n    { name: \"EQ_GRAPH_LINE_COLORS\", x: 115, y: 294, width: 1, height: 19 },\n    { name: \"EQ_PRESETS_BUTTON\", x: 224, y: 164, width: 44, height: 12 },\n    {\n      name: \"EQ_PRESETS_BUTTON_SELECTED\",\n      x: 224,\n      y: 176,\n      width: 44,\n      height: 12,\n    },\n    { name: \"EQ_PREAMP_LINE\", x: 0, y: 314, width: 113, height: 1 },\n  ],\n  POSBAR: [\n    {\n      name: \"MAIN_POSITION_SLIDER_BACKGROUND\",\n      x: 0,\n      y: 0,\n      width: 248,\n      height: 10,\n    },\n    {\n      name: \"MAIN_POSITION_SLIDER_THUMB\",\n      x: 248,\n      y: 0,\n      width: 29,\n      height: 10,\n    },\n    {\n      name: \"MAIN_POSITION_SLIDER_THUMB_SELECTED\",\n      x: 278,\n      y: 0,\n      width: 29,\n      height: 10,\n    },\n  ],\n  SHUFREP: [\n    { name: \"MAIN_SHUFFLE_BUTTON\", x: 28, y: 0, width: 47, height: 15 },\n    {\n      name: \"MAIN_SHUFFLE_BUTTON_DEPRESSED\",\n      x: 28,\n      y: 15,\n      width: 47,\n      height: 15,\n    },\n    {\n      name: \"MAIN_SHUFFLE_BUTTON_SELECTED\",\n      x: 28,\n      y: 30,\n      width: 47,\n      height: 15,\n    },\n    {\n      name: \"MAIN_SHUFFLE_BUTTON_SELECTED_DEPRESSED\",\n      x: 28,\n      y: 45,\n      width: 47,\n      height: 15,\n    },\n    { name: \"MAIN_REPEAT_BUTTON\", x: 0, y: 0, width: 28, height: 15 },\n    {\n      name: \"MAIN_REPEAT_BUTTON_DEPRESSED\",\n      x: 0,\n      y: 15,\n      width: 28,\n      height: 15,\n    },\n    {\n      name: \"MAIN_REPEAT_BUTTON_SELECTED\",\n      x: 0,\n      y: 30,\n      width: 28,\n      height: 15,\n    },\n    {\n      name: \"MAIN_REPEAT_BUTTON_SELECTED_DEPRESSED\",\n      x: 0,\n      y: 45,\n      width: 28,\n      height: 15,\n    },\n    { name: \"MAIN_EQ_BUTTON\", x: 0, y: 61, width: 23, height: 12 },\n    { name: \"MAIN_EQ_BUTTON_SELECTED\", x: 0, y: 73, width: 23, height: 12 },\n    { name: \"MAIN_EQ_BUTTON_DEPRESSED\", x: 46, y: 61, width: 23, height: 12 },\n    {\n      name: \"MAIN_EQ_BUTTON_DEPRESSED_SELECTED\",\n      x: 46,\n      y: 73,\n      width: 23,\n      height: 12,\n    },\n    { name: \"MAIN_PLAYLIST_BUTTON\", x: 23, y: 61, width: 23, height: 12 },\n    {\n      name: \"MAIN_PLAYLIST_BUTTON_SELECTED\",\n      x: 23,\n      y: 73,\n      width: 23,\n      height: 12,\n    },\n    {\n      name: \"MAIN_PLAYLIST_BUTTON_DEPRESSED\",\n      x: 69,\n      y: 61,\n      width: 23,\n      height: 12,\n    },\n    {\n      name: \"MAIN_PLAYLIST_BUTTON_DEPRESSED_SELECTED\",\n      x: 69,\n      y: 73,\n      width: 23,\n      height: 12,\n    },\n  ],\n  TEXT: characterSprites,\n  TITLEBAR: [\n    { name: \"MAIN_TITLE_BAR\", x: 27, y: 15, width: 275, height: 14 },\n    { name: \"MAIN_TITLE_BAR_SELECTED\", x: 27, y: 0, width: 275, height: 14 },\n    {\n      name: \"MAIN_EASTER_EGG_TITLE_BAR\",\n      x: 27,\n      y: 72,\n      width: 275,\n      height: 14,\n    },\n    {\n      name: \"MAIN_EASTER_EGG_TITLE_BAR_SELECTED\",\n      x: 27,\n      y: 57,\n      width: 275,\n      height: 14,\n    },\n    { name: \"MAIN_OPTIONS_BUTTON\", x: 0, y: 0, width: 9, height: 9 },\n    {\n      name: \"MAIN_OPTIONS_BUTTON_DEPRESSED\",\n      x: 0,\n      y: 9,\n      width: 9,\n      height: 9,\n    },\n    { name: \"MAIN_MINIMIZE_BUTTON\", x: 9, y: 0, width: 9, height: 9 },\n    {\n      name: \"MAIN_MINIMIZE_BUTTON_DEPRESSED\",\n      x: 9,\n      y: 9,\n      width: 9,\n      height: 9,\n    },\n    { name: \"MAIN_SHADE_BUTTON\", x: 0, y: 18, width: 9, height: 9 },\n    { name: \"MAIN_SHADE_BUTTON_DEPRESSED\", x: 9, y: 18, width: 9, height: 9 },\n    { name: \"MAIN_CLOSE_BUTTON\", x: 18, y: 0, width: 9, height: 9 },\n    { name: \"MAIN_CLOSE_BUTTON_DEPRESSED\", x: 18, y: 9, width: 9, height: 9 },\n    {\n      name: \"MAIN_CLUTTER_BAR_BACKGROUND\",\n      x: 304,\n      y: 0,\n      width: 8,\n      height: 43,\n    },\n    {\n      name: \"MAIN_CLUTTER_BAR_BACKGROUND_DISABLED\",\n      x: 312,\n      y: 0,\n      width: 8,\n      height: 43,\n    },\n    {\n      name: \"MAIN_CLUTTER_BAR_BUTTON_O_SELECTED\",\n      x: 304,\n      y: 47,\n      width: 8,\n      height: 8,\n    },\n    {\n      name: \"MAIN_CLUTTER_BAR_BUTTON_A_SELECTED\",\n      x: 312,\n      y: 55,\n      width: 8,\n      height: 7,\n    },\n    {\n      name: \"MAIN_CLUTTER_BAR_BUTTON_I_SELECTED\",\n      x: 320,\n      y: 62,\n      width: 8,\n      height: 7,\n    },\n    {\n      name: \"MAIN_CLUTTER_BAR_BUTTON_D_SELECTED\",\n      x: 328,\n      y: 69,\n      width: 8,\n      height: 8,\n    },\n    {\n      name: \"MAIN_CLUTTER_BAR_BUTTON_V_SELECTED\",\n      x: 336,\n      y: 77,\n      width: 8,\n      height: 7,\n    },\n    { name: \"MAIN_SHADE_BACKGROUND\", x: 27, y: 42, width: 275, height: 14 },\n    {\n      name: \"MAIN_SHADE_BACKGROUND_SELECTED\",\n      x: 27,\n      y: 29,\n      width: 275,\n      height: 14,\n    },\n    { name: \"MAIN_SHADE_BUTTON_SELECTED\", x: 0, y: 27, width: 9, height: 9 },\n    {\n      name: \"MAIN_SHADE_BUTTON_SELECTED_DEPRESSED\",\n      x: 9,\n      y: 27,\n      width: 9,\n      height: 9,\n    },\n    {\n      name: \"MAIN_SHADE_POSITION_BACKGROUND\",\n      x: 0,\n      y: 36,\n      width: 17,\n      height: 7,\n    },\n    { name: \"MAIN_SHADE_POSITION_THUMB\", x: 20, y: 36, width: 3, height: 7 },\n    {\n      name: \"MAIN_SHADE_POSITION_THUMB_LEFT\",\n      x: 17,\n      y: 36,\n      width: 3,\n      height: 7,\n    },\n    {\n      name: \"MAIN_SHADE_POSITION_THUMB_RIGHT\",\n      x: 23,\n      y: 36,\n      width: 3,\n      height: 7,\n    },\n  ],\n  VOLUME: [\n    { name: \"MAIN_VOLUME_BACKGROUND\", x: 0, y: 0, width: 68, height: 420 },\n    { name: \"MAIN_VOLUME_THUMB\", x: 15, y: 422, width: 14, height: 11 },\n    {\n      name: \"MAIN_VOLUME_THUMB_SELECTED\",\n      x: 0,\n      y: 422,\n      width: 14,\n      height: 11,\n    },\n  ],\n  GEN: [\n    { name: \"GEN_TOP_LEFT_SELECTED\", x: 0, y: 0, width: 25, height: 20 },\n    { name: \"GEN_TOP_LEFT_END_SELECTED\", x: 26, y: 0, width: 25, height: 20 },\n    {\n      name: \"GEN_TOP_CENTER_FILL_SELECTED\",\n      x: 52,\n      y: 0,\n      width: 25,\n      height: 20,\n    },\n    { name: \"GEN_TOP_RIGHT_END_SELECTED\", x: 78, y: 0, width: 25, height: 20 },\n    {\n      name: \"GEN_TOP_LEFT_RIGHT_FILL_SELECTED\",\n      x: 104,\n      y: 0,\n      width: 25,\n      height: 20,\n    },\n    { name: \"GEN_TOP_RIGHT_SELECTED\", x: 130, y: 0, width: 25, height: 20 },\n\n    { name: \"GEN_TOP_LEFT\", x: 0, y: 21, width: 25, height: 20 },\n    { name: \"GEN_TOP_LEFT_END\", x: 26, y: 21, width: 25, height: 20 },\n    { name: \"GEN_TOP_CENTER_FILL\", x: 52, y: 21, width: 25, height: 20 },\n    { name: \"GEN_TOP_RIGHT_END\", x: 78, y: 21, width: 25, height: 20 },\n    { name: \"GEN_TOP_LEFT_RIGHT_FILL\", x: 104, y: 21, width: 25, height: 20 },\n    { name: \"GEN_TOP_RIGHT\", x: 130, y: 21, width: 25, height: 20 },\n    { name: \"GEN_BOTTOM_LEFT\", x: 0, y: 42, width: 125, height: 14 },\n    { name: \"GEN_BOTTOM_RIGHT\", x: 0, y: 57, width: 125, height: 14 },\n    { name: \"GEN_BOTTOM_FILL\", x: 127, y: 72, width: 25, height: 14 },\n    { name: \"GEN_MIDDLE_LEFT\", x: 127, y: 42, width: 11, height: 29 },\n    { name: \"GEN_MIDDLE_LEFT_BOTTOM\", x: 158, y: 42, width: 11, height: 24 },\n    { name: \"GEN_MIDDLE_RIGHT\", x: 139, y: 42, width: 8, height: 29 },\n    { name: \"GEN_MIDDLE_RIGHT_BOTTOM\", x: 170, y: 42, width: 8, height: 24 },\n    { name: \"GEN_CLOSE_SELECTED\", x: 148, y: 42, width: 9, height: 9 },\n  ],\n  /*\n\n  We don't currently support the Media Library, so there are disabled\n  GENEX: [\n    {\n      name: \"GENEX_BUTTON_BACKGROUND_LEFT_UNPRESSED\",\n      x: 0,\n      y: 0,\n      height: 15,\n      width: 4,\n    },\n    {\n      name: \"GENEX_BUTTON_BACKGROUND_CENTER_UNPRESSED\",\n      x: 4,\n      y: 0,\n      height: 15,\n      width: 39,\n    },\n    {\n      name: \"GENEX_BUTTON_BACKGROUND_RIGHT_UNPRESSED\",\n      x: 43,\n      y: 0,\n      height: 15,\n      width: 4,\n    },\n    {\n      name: \"GENEX_BUTTON_BACKGROUND_PRESSED\",\n      x: 0,\n      y: 1,\n      height: 15,\n      width: 47,\n    },\n    { name: \"GENEX_SCROLL_UP_UNPRESSED\", x: 0, y: 31, height: 14, width: 14 },\n    {\n      name: \"GENEX_SCROLL_DOWN_UNPRESSED\",\n      x: 14,\n      y: 31,\n      height: 14,\n      width: 14,\n    },\n    { name: \"GENEX_SCROLL_UP_PRESSED\", x: 28, y: 31, height: 14, width: 14 },\n    { name: \"GENEX_SCROLL_DOWN_PRESSED\", x: 42, y: 31, height: 14, width: 14 },\n    { name: \"GENEX_SCROLL_LEFT_UNPRESSED\", x: 0, y: 45, height: 14, width: 14 },\n    {\n      name: \"GENEX_SCROLL_RIGHT_UNPRESSED\",\n      x: 14,\n      y: 45,\n      height: 14,\n      width: 14,\n    },\n    { name: \"GENEX_SCROLL_LEFT_PRESSED\", x: 28, y: 45, height: 14, width: 14 },\n    { name: \"GENEX_SCROLL_RIGHT_PRESSED\", x: 42, y: 45, height: 14, width: 14 },\n    {\n      name: \"GENEX_VERTICAL_SCROLL_HANDLE_UNPRESSED\",\n      x: 56,\n      y: 31,\n      height: 28,\n      width: 14,\n    },\n    {\n      name: \"GENEX_VERTICAL_SCROLL_HANDLE_PRESSED\",\n      x: 70,\n      y: 31,\n      height: 28,\n      width: 14,\n    },\n    {\n      name: \"GENEX_HORIZONTAL_SCROLL_HANDLE_UNPRESSED\",\n      x: 84,\n      y: 31,\n      height: 14,\n      width: 28,\n    },\n    {\n      name: \"GENEX_HORIZONTAL_SCROLL_HANDLE_PRESSED\",\n      x: 84,\n      y: 45,\n      height: 14,\n      width: 28,\n    },\n  ],\n  */\n};\n\nexport default sprites;\n","import JSZip from \"jszip\";\nimport { PlaylistStyle, SkinGenExColors, CursorImage } from \"./types\";\nimport SKIN_SPRITES, { Sprite } from \"./skinSprites\";\nimport { DEFAULT_SKIN } from \"./constants\";\nimport * as Utils from \"./utils\";\nimport * as FileUtils from \"./fileUtils\";\n\nexport const getFileExtension = (fileName: string): string | null => {\n  const matches = /\\.([a-z]{3,4})$/i.exec(fileName);\n  return matches ? matches[1].toLowerCase() : null;\n};\n\nfunction getFilenameRegex(base: string, ext: string): RegExp {\n  // Note: The four slashes: \\\\\\\\ ultimately represent a single escaped slash in\n  // the regex (\"\\\\\"), however each itself needs to be escaped so that\n  // JavaScript does not interperate it as an escape character in the string\n  // literal. Wonderful.\n  return new RegExp(`^(.*[/\\\\\\\\])?${base}.(${ext})$`, \"i\");\n}\n\nexport async function getFileFromZip(\n  zip: JSZip,\n  fileName: string,\n  ext: string,\n  mode: \"blob\" | \"text\" | \"base64\" | \"uint8array\"\n) {\n  const files = zip.file(getFilenameRegex(fileName, ext));\n  if (!files.length) {\n    return null;\n  }\n\n  // Windows file system is case insensitve, but zip files are not.\n  // This means that it's possible for a zip to contain both `main.bmp` _and_\n  // `main.BMP` but in Winamp only one will be materialized onto disk when\n  // decompressing. I suspect that in this case later files in the archive\n  // overwrite earlier ones. To mimic that behavior we use the last matching\n  // file.\n  //\n  // This works because `JSZip.file` filters the files by iterating the\n  // underlying `files` object under the hood:\n  // https://github.com/Stuk/jszip/blob/25d401e104926fef8528d670ecfe53f14e77a297/lib/object.js#L182\n  // Since JavaScript objects are iterable in the order that the keys were\n  // added this _should_ mean that by taking the last file here we will get\n  // the last file that JSZip extracted.\n  const lastFile = files[files.length - 1];\n\n  try {\n    const contents = await lastFile.async(mode);\n    return { contents, name: lastFile.name };\n  } catch (e) {\n    console.warn(\n      `Failed to extract \"${fileName}.${ext}\" from the skin archive.`\n    );\n    return null;\n  }\n}\n\nfunction fallbackGetImgFromBlob(blob: Blob): Promise<HTMLImageElement> {\n  return Utils.imgFromUrl(URL.createObjectURL(blob));\n}\n\nexport async function getImgFromBlob(\n  blob: Blob\n): Promise<ImageBitmap | HTMLImageElement | null> {\n  try {\n    // Use this faster native browser API if available.\n    // NOTE: In some browsers `window.createImageBitmap` may not exist so this will throw.\n    return await window.createImageBitmap(blob);\n  } catch (e) {\n    try {\n      return await fallbackGetImgFromBlob(blob);\n    } catch (ee) {\n      // Like Winamp we will silently fail on images that don't parse.\n      return null;\n    }\n  }\n}\n\nexport function getSpriteUrisFromImg(\n  img: HTMLImageElement | ImageBitmap,\n  sprites: Sprite[]\n): { [spriteName: string]: string } {\n  const canvas = document.createElement(\"canvas\");\n  const context = canvas.getContext(\"2d\", { willReadFrequently: true });\n  if (context == null) {\n    throw new Error(\"Failed to get canvas context\");\n  }\n  const images: { [spriteName: string]: string } = {};\n  sprites.forEach((sprite) => {\n    canvas.height = sprite.height;\n    canvas.width = sprite.width;\n\n    context.drawImage(img, -sprite.x, -sprite.y);\n    const image = canvas.toDataURL();\n    images[sprite.name] = image;\n  });\n  return images;\n}\n\nexport async function getImgFromFilename(\n  zip: JSZip,\n  fileName: string\n): Promise<HTMLImageElement | ImageBitmap | null> {\n  // Winamp only supports .bmp images, but WACUP set a precidence of supporting\n  // .png as well to reduce size. Since we care about size as well, we follow\n  // suit. Our default skin uses .png to save 14kb.\n  const file = await getFileFromZip(zip, fileName, \"(png|bmp)\", \"blob\");\n  if (!file) {\n    return null;\n  }\n\n  const mimeType = `image/${getFileExtension(file.name) || \"*\"}`;\n  // The spec for createImageBitmap() says the browser should try to sniff the\n  // mime type, but it looks like Firefox does not. So we specify it here\n  // explicitly.\n  const typedBlob = new Blob([file.contents], { type: mimeType });\n  return getImgFromBlob(typedBlob);\n}\n\nexport async function getSpriteUrisFromFilename(\n  zip: JSZip,\n  fileName: string\n): Promise<{ [spriteName: string]: string }> {\n  const img = await getImgFromFilename(zip, fileName);\n  if (img == null) {\n    return {};\n  }\n  return getSpriteUrisFromImg(img, SKIN_SPRITES[fileName]);\n}\n\n// https://docs.microsoft.com/en-us/windows/win32/xaudio2/resource-interchange-file-format--riff-\nconst RIFF_MAGIC = \"RIFF\".split(\"\").map((c) => c.charCodeAt(0));\n\nfunction arrayStartsWith(arr: Uint8Array, matcher: number[]): boolean {\n  return matcher.every((item, i) => arr[i] === item);\n}\n\nexport async function getCursorFromFilename(\n  zip: JSZip,\n  fileName: string\n): Promise<CursorImage | null> {\n  const file = await getFileFromZip(zip, fileName, \"CUR\", \"uint8array\");\n  if (file == null) {\n    return null;\n  }\n  const contents = file.contents as Uint8Array;\n  if (arrayStartsWith(contents, RIFF_MAGIC)) {\n    return { type: \"ani\", aniData: contents };\n  }\n\n  return { type: \"cur\", url: FileUtils.curUrlFromByteArray(contents) };\n}\n\nexport async function getPlaylistStyle(zip: JSZip): Promise<PlaylistStyle> {\n  const files = zip.file(getFilenameRegex(\"PLEDIT\", \"txt\"));\n  const file = files[0];\n  if (file == null) {\n    return DEFAULT_SKIN.playlistStyle;\n  }\n  const ini = await file.async(\"text\");\n  if (ini == null) {\n    return DEFAULT_SKIN.playlistStyle;\n  }\n  const data = ini && Utils.parseIni(ini).text;\n  if (!data) {\n    // Corrupt or missing PLEDIT.txt file.\n    return DEFAULT_SKIN.playlistStyle;\n  }\n\n  // Winamp seems to permit colors that contain too many characters.\n  // For compatibility with existing skins, we normalize them here.\n  [\"normal\", \"current\", \"normalbg\", \"selectedbg\", \"mbFG\", \"mbBG\"].forEach(\n    (colorKey) => {\n      let color = data[colorKey];\n      if (!color) {\n        return;\n      }\n      if (color[0] !== \"#\") {\n        color = `#${color}`;\n      }\n      data[colorKey] = color.slice(0, 7);\n    }\n  );\n\n  return { ...DEFAULT_SKIN.playlistStyle, ...data };\n}\n\nexport async function getGenExColors(\n  zip: JSZip\n): Promise<null | SkinGenExColors> {\n  const img = await getImgFromFilename(zip, \"GENEX\");\n  if (img == null) {\n    return null;\n  }\n\n  const canvas = document.createElement(\"canvas\");\n  const context = canvas.getContext(\"2d\", { willReadFrequently: true });\n  if (context == null) {\n    return null;\n  }\n  canvas.width = img.width;\n  canvas.height = img.height;\n  context.drawImage(img, 0, 0);\n\n  const getColorAt = (x: number): string =>\n    `rgb(${context\n      .getImageData(x, 0, 1, 1)\n      // Discard the alpha channel\n      .data.slice(0, 3)\n      .join(\",\")})`;\n\n  // Ideally we would just have a map from key to the x value and map over\n  // that with getColorAt, but I don't know a great way to make that type\n  // safe. So, we'll just do this for now, where we explicitly call getColorAt\n  // for each key.\n  return {\n    // (1) x=48: item background (background to edits, listviews, etc.)\n    itemBackground: getColorAt(48),\n    // (2) x=50: item foreground (text colour of edits, listviews, etc.)\n    itemForeground: getColorAt(50),\n    // (3) x=52: window background (used to set the bg color for the dialog)\n    windowBackground: getColorAt(52),\n    // (4) x=54: button text colour\n    buttonText: getColorAt(54),\n    // (5) x=56: window text colour\n    windowText: getColorAt(56),\n    // (6) x=58: colour of dividers and sunken borders\n    divider: getColorAt(58),\n    // (7) x=60: selection colour for entries inside playlists (nothing else yet)\n    playlistSelection: getColorAt(60),\n    // (8) x=62: listview header background colour\n    listHeaderBackground: getColorAt(62),\n    // (9) x=64: listview header text colour\n    listHeaderText: getColorAt(64),\n    // (10) x=66: listview header frame top and left colour\n    listHeaderFrameTopAndLeft: getColorAt(66),\n    // (11) x=68: listview header frame bottom and right colour\n    listHeaderFrameBottomAndRight: getColorAt(68),\n    // (12) x=70: listview header frame colour, when pressed\n    listHeaderFramePressed: getColorAt(70),\n    // (13) x=72: listview header dead area colour\n    listHeaderDeadArea: getColorAt(72),\n    // (14) x=74: scrollbar colour #1\n    scrollbarOne: getColorAt(74),\n    // (15) x=76: scrollbar colour #2\n    scrollbarTwo: getColorAt(76),\n    // (16) x=78: pressed scrollbar colour #1\n    pressedScrollbarOne: getColorAt(78),\n    // (17) x=80: pressed scrollbar colour #2\n    pressedScrollbarTwo: getColorAt(80),\n    // (18) x=82: scrollbar dead area colour\n    scrollbarDeadArea: getColorAt(82),\n    // (19) x=84 List view text colour highlighted\n    listTextHighlighted: getColorAt(84),\n    // (20) x=86 List view background colour highlighted\n    listTextHighlightedBackground: getColorAt(86),\n    // (21) x=88 List view text colour selected\n    listTextSelected: getColorAt(88),\n    // (22) x=90 List view background colour selected\n    listTextSelectedBackground: getColorAt(90),\n  };\n}\n","import SKIN_SPRITES from \"./skinSprites\";\nimport regionParser from \"./regionParser\";\nimport { LETTERS, DEFAULT_SKIN } from \"./constants\";\nimport { parseViscolors } from \"./utils\";\nimport * as SkinParserUtils from \"./skinParserUtils\";\n\nconst shallowMerge = (objs) =>\n  objs.reduce((prev, img) => Object.assign(prev, img), {});\n\nconst CURSORS = [\n  \"CLOSE\",\n  \"EQCLOSE\",\n  \"EQNORMAL\",\n  \"EQSLID\",\n  \"EQTITLE\",\n  \"MAINMENU\",\n  \"MMENU\",\n  \"MIN\",\n  \"NORMAL\",\n  \"PCLOSE\",\n  \"PNORMAL\",\n  \"POSBAR\",\n  \"PSIZE\",\n  \"PTBAR\",\n  \"PVSCROLL\",\n  \"PWINBUT\",\n  \"PWSNORM\",\n  \"PWSSIZE\",\n  \"SONGNAME\",\n  \"TITLEBAR\",\n  \"VOLBAL\",\n  \"WINBUT\",\n  \"WSNORMAL\",\n  \"WSPOSBAR\",\n  /*\n   * > There are usually 4 more cursors in the skins: volbar.cur, wsclose.cur,\n   * > wswinbut.cur, wsmin.cur, but they are never used, at least in the last\n   * > versions of winamp, so there's no need of including them. The cursors\n   * > shown when the mouse is over the app-buttons are the same in normal and\n   * > winshade mode, except for the main menu button. You can make animated\n   * > cursors, but you have to name them with the extension .cur (animated\n   * > cursors are usually .ani files).\n   *\n   * -- Skinners Atlas\n   *\n   * \"VOLBAR\",\n   * \"WSCLOSE\",\n   * \"WSWINBUT\",\n   * \"WSMIN\",\n   *\n   */\n];\n\nasync function genVizColors(zip) {\n  const viscolor = await SkinParserUtils.getFileFromZip(\n    zip,\n    \"VISCOLOR\",\n    \"txt\",\n    \"text\"\n  );\n  return viscolor ? parseViscolors(viscolor.contents) : DEFAULT_SKIN.colors;\n}\n\nasync function genImages(zip) {\n  const imageObjs = await Promise.all(\n    Object.keys(SKIN_SPRITES).map((fileName) =>\n      SkinParserUtils.getSpriteUrisFromFilename(zip, fileName)\n    )\n  );\n  // Merge all the objects into a single object. Tests assert that sprite keys are unique.\n  return shallowMerge(imageObjs);\n}\nasync function genCursors(zip) {\n  const cursorObjs = await Promise.all(\n    CURSORS.map(async (cursorName) => ({\n      [cursorName]: await SkinParserUtils.getCursorFromFilename(\n        zip,\n        cursorName\n      ),\n    }))\n  );\n  return shallowMerge(cursorObjs);\n}\n\nasync function genRegion(zip) {\n  const region = await SkinParserUtils.getFileFromZip(\n    zip,\n    \"REGION\",\n    \"txt\",\n    \"text\"\n  );\n  return region ? regionParser(region.contents) : {};\n}\n\nasync function genGenTextSprites(zip) {\n  const img = await SkinParserUtils.getImgFromFilename(zip, \"GEN\");\n  if (img == null) {\n    return null;\n  }\n\n  const canvas = document.createElement(\"canvas\");\n  const context = canvas.getContext(\"2d\", { willReadFrequently: true });\n  canvas.width = img.width;\n  canvas.height = img.height;\n  context.drawImage(img, 0, 0);\n\n  const getLetters = (y, prefix) => {\n    const getColorAt = (x) => context.getImageData(x, y, 1, 1).data.join(\",\");\n\n    let x = 1;\n    const backgroundColor = getColorAt(0);\n\n    const height = 7;\n    return LETTERS.map((letter) => {\n      let nextBackground = x;\n      while (\n        getColorAt(nextBackground) !== backgroundColor &&\n        nextBackground < canvas.width\n      ) {\n        nextBackground++;\n      }\n      const width = nextBackground - x;\n      const name = `${prefix}_${letter}`;\n      const sprite = { x, y, height, width, name };\n      x = nextBackground + 1;\n      return sprite;\n    });\n  };\n\n  const letterWidths = {};\n  const sprites = [\n    ...getLetters(88, \"GEN_TEXT_SELECTED\"),\n    ...getLetters(96, \"GEN_TEXT\"),\n  ];\n  sprites.forEach((sprite) => {\n    letterWidths[sprite.name] = sprite.width;\n  });\n  return [letterWidths, SkinParserUtils.getSpriteUrisFromImg(img, sprites)];\n}\n\n// A promise that, given an array buffer returns a skin style object\nasync function skinParser(zipFileBuffer, JSZip) {\n  const zip = await JSZip.loadAsync(zipFileBuffer);\n\n  const [\n    colors,\n    playlistStyle,\n    images,\n    cursors,\n    region,\n    genTextSprites,\n    genExColors,\n  ] = await Promise.all([\n    genVizColors(zip),\n    SkinParserUtils.getPlaylistStyle(zip),\n    genImages(zip),\n    genCursors(zip),\n    genRegion(zip),\n    genGenTextSprites(zip),\n    SkinParserUtils.getGenExColors(zip),\n  ]);\n\n  const [genLetterWidths, genTextImages] = genTextSprites || [null, {}];\n\n  return {\n    colors,\n    playlistStyle,\n    images: { ...images, ...genTextImages },\n    genLetterWidths,\n    cursors,\n    region,\n    genExColors,\n  };\n}\n\nexport default skinParser;\n","import { parseIni } from \"./utils\";\n\nexport function pointPairs(arr: string[]) {\n  const pairedValues = [];\n  for (let i = 0; i < arr.length; i += 2) {\n    pairedValues.push(`${arr[i]},${arr[i + 1]}`);\n  }\n  return pairedValues;\n}\n\ntype RegionData = { [section: string]: string[] };\n\nexport default function regionParser(regionStr: string): RegionData {\n  const iniData = parseIni(regionStr);\n  const data: RegionData = {};\n  Object.keys(iniData).forEach((section) => {\n    const { numpoints, pointlist } = iniData[section];\n    if (!numpoints || !pointlist) {\n      return;\n    }\n    const pointCounts = numpoints.split(/\\s*,\\s*/).filter((val) => val !== \"\");\n    const points = pointPairs(\n      // points can be separated by spaces, or by commas\n      pointlist.split(/\\s*[, ]\\s*/).filter((val) => val !== \"\")\n    );\n    let pointIndex = 0;\n    const polygons = pointCounts.map((numStr) => {\n      const num = Number(numStr);\n      if (num < 3) {\n        // What use is a polygon with less than three sides?\n        pointIndex += num;\n        return null;\n      }\n      const polygon = points.slice(pointIndex, pointIndex + num).join(\" \");\n      if (!polygon.length) {\n        // It's possible that the skin author specified more polygons than provided points.\n        return null;\n      }\n      pointIndex += num;\n      return polygon;\n    });\n    const validPolygons = polygons.filter(\n      (polygon) => polygon != null\n    ) as string[];\n    if (validPolygons.length) {\n      data[section] = validPolygons;\n    }\n  });\n\n  return data;\n}\n","'use strict';\n\nmodule.exports = TinyQueue;\nmodule.exports.default = TinyQueue;\n\nfunction TinyQueue(data, compare) {\n    if (!(this instanceof TinyQueue)) return new TinyQueue(data, compare);\n\n    this.data = data || [];\n    this.length = this.data.length;\n    this.compare = compare || defaultCompare;\n\n    if (this.length > 0) {\n        for (var i = (this.length >> 1) - 1; i >= 0; i--) this._down(i);\n    }\n}\n\nfunction defaultCompare(a, b) {\n    return a < b ? -1 : a > b ? 1 : 0;\n}\n\nTinyQueue.prototype = {\n\n    push: function (item) {\n        this.data.push(item);\n        this.length++;\n        this._up(this.length - 1);\n    },\n\n    pop: function () {\n        if (this.length === 0) return undefined;\n\n        var top = this.data[0];\n        this.length--;\n\n        if (this.length > 0) {\n            this.data[0] = this.data[this.length];\n            this._down(0);\n        }\n        this.data.pop();\n\n        return top;\n    },\n\n    peek: function () {\n        return this.data[0];\n    },\n\n    _up: function (pos) {\n        var data = this.data;\n        var compare = this.compare;\n        var item = data[pos];\n\n        while (pos > 0) {\n            var parent = (pos - 1) >> 1;\n            var current = data[parent];\n            if (compare(item, current) >= 0) break;\n            data[pos] = current;\n            pos = parent;\n        }\n\n        data[pos] = item;\n    },\n\n    _down: function (pos) {\n        var data = this.data;\n        var compare = this.compare;\n        var halfLength = this.length >> 1;\n        var item = data[pos];\n\n        while (pos < halfLength) {\n            var left = (pos << 1) + 1;\n            var right = left + 1;\n            var best = data[left];\n\n            if (right < this.length && compare(data[right], best) < 0) {\n                left = right;\n                best = data[right];\n            }\n            if (compare(best, item) >= 0) break;\n\n            data[pos] = best;\n            pos = left;\n        }\n\n        data[pos] = item;\n    }\n};\n","import { TRACK_HEIGHT } from \"../constants\";\nimport * as Selectors from \"../selectors\";\n\nimport { clamp, sort, findLastIndex } from \"../utils\";\nimport { Thunk, Action } from \"../types\";\n\nexport function cropPlaylist(): Thunk {\n  return (dispatch, getState) => {\n    const state = getState();\n    if (Selectors.getSelectedTrackObjects(state).length === 0) {\n      return;\n    }\n    const selectedTrackIds = Selectors.getSelectedTrackIds(state);\n    const {\n      playlist: { trackOrder },\n    } = state;\n    dispatch({\n      type: \"REMOVE_TRACKS\",\n      // @ts-ignore The keys are numbers, but TypeScript does not trust us.\n      // https://github.com/Microsoft/TypeScript/pull/12253#issuecomment-263132208\n      ids: trackOrder.filter((id) => !selectedTrackIds.has(id)),\n    });\n  };\n}\n\nexport function removeSelectedTracks(): Thunk {\n  return (dispatch, getState) => {\n    dispatch({\n      type: \"REMOVE_TRACKS\",\n      // @ts-ignore The keys are numbers, but TypeScript does not trust us.\n      // https://github.com/Microsoft/TypeScript/pull/12253#issuecomment-263132208\n      ids: Array.from(Selectors.getSelectedTrackIds(getState())),\n    });\n  };\n}\n\nexport function removeAllTracks(): Thunk {\n  return (dispatch) => {\n    // It's a bit funky that we need to do both of these.\n    dispatch({ type: \"STOP\" });\n    dispatch({ type: \"REMOVE_ALL_TRACKS\" });\n  };\n}\n\nexport function reverseList(): Action {\n  return { type: \"REVERSE_LIST\" };\n}\n\nexport function randomizeList(): Action {\n  return { type: \"RANDOMIZE_LIST\" };\n}\n\nexport function sortListByTitle(): Thunk {\n  return (dispatch, getState) => {\n    const state = getState();\n    const tracks = Selectors.getTracks(state);\n    const trackOrder = sort(Selectors.getTrackOrder(state), (i) =>\n      `${tracks[i].title}`.toLowerCase()\n    );\n    return dispatch({ type: \"SET_TRACK_ORDER\", trackOrder });\n  };\n}\n\nexport function setPlaylistScrollPosition(position: number): Action {\n  return { type: \"SET_PLAYLIST_SCROLL_POSITION\", position };\n}\n\nexport function scrollNTracks(n: number): Thunk {\n  return (dispatch, getState) => {\n    const state = getState();\n    const overflow = Selectors.getOverflowTrackCount(state);\n    const currentOffset = Selectors.getScrollOffset(state);\n    const position = overflow ? clamp((currentOffset + n) / overflow, 0, 1) : 0;\n    return dispatch({\n      type: \"SET_PLAYLIST_SCROLL_POSITION\",\n      position: position * 100,\n    });\n  };\n}\n\nexport function scrollPlaylistByDelta(e: WheelEvent): Thunk {\n  e.preventDefault();\n  return (dispatch, getState) => {\n    const state = getState();\n    if (Selectors.getOverflowTrackCount(state)) {\n      e.stopPropagation();\n    }\n    const totalPixelHeight = state.playlist.trackOrder.length * TRACK_HEIGHT;\n    const percentDelta = (e.deltaY / totalPixelHeight) * 100;\n    dispatch({\n      type: \"SET_PLAYLIST_SCROLL_POSITION\",\n      position: clamp(\n        state.display.playlistScrollPosition + percentDelta,\n        0,\n        100\n      ),\n    });\n  };\n}\n\nexport function scrollUpFourTracks(): Thunk {\n  return scrollNTracks(-4);\n}\n\nexport function scrollDownFourTracks(): Thunk {\n  return scrollNTracks(4);\n}\n\nexport function dragSelected(offset: number): Thunk {\n  return (dispatch, getState) => {\n    const state = getState();\n    const tracks = Selectors.getTracks(state);\n    const trackOrder = Selectors.getTrackOrder(state);\n    const selectedIds = Selectors.getSelectedTrackIdsSet(state);\n    const firstSelected = trackOrder.findIndex(\n      (trackId) => tracks[trackId] && selectedIds.has(trackId)\n    );\n    if (firstSelected === -1) {\n      return;\n    }\n    const lastSelected = findLastIndex(\n      trackOrder,\n      (trackId) => tracks[trackId] && selectedIds.has(trackId)\n    );\n    if (lastSelected === -1) {\n      throw new Error(\"We found a first selected, but not a last selected.\");\n    }\n    // Ensure we don't try to drag off either end.\n    const min = -firstSelected;\n    const max = trackOrder.length - 1 - lastSelected;\n    const normalizedOffset = clamp(offset, min, max);\n    if (normalizedOffset !== 0) {\n      dispatch({ type: \"DRAG_SELECTED\", offset: normalizedOffset });\n    }\n  };\n}\n\nexport function invertSelection(): Action {\n  return { type: \"INVERT_SELECTION\" };\n}\nexport function selectZero(): Action {\n  return { type: \"SELECT_ZERO\" };\n}\n\nexport function selectAll(): Action {\n  return { type: \"SELECT_ALL\" };\n}\n","import { BANDS } from \"../constants\";\nimport { Band, Thunk, Action } from \"../types\";\n\nconst BAND_SNAP_DISTANCE = 5;\nconst BAND_MID_POINT_VALUE = 50;\n\nfunction _snapBandValue(value: number): number {\n  if (\n    value < BAND_MID_POINT_VALUE + BAND_SNAP_DISTANCE &&\n    value > BAND_MID_POINT_VALUE - BAND_SNAP_DISTANCE\n  ) {\n    return BAND_MID_POINT_VALUE;\n  }\n  return value;\n}\n\nexport function setEqBand(band: Band, value: number): Action {\n  return { type: \"SET_BAND_VALUE\", band, value: _snapBandValue(value) };\n}\n\nfunction _setEqTo(value: number): Thunk {\n  return (dispatch) => {\n    Object.values(BANDS).forEach((band) => {\n      dispatch({\n        type: \"SET_BAND_VALUE\",\n        value,\n        band: band,\n      });\n    });\n  };\n}\n\nexport function setEqToMax(): Thunk {\n  return _setEqTo(100);\n}\n\nexport function setEqToMid(): Thunk {\n  return _setEqTo(50);\n}\n\nexport function setEqToMin(): Thunk {\n  return _setEqTo(0);\n}\n\nexport function setPreamp(value: number): Action {\n  return {\n    type: \"SET_BAND_VALUE\",\n    band: \"preamp\",\n    value: _snapBandValue(value),\n  };\n}\n\nexport function toggleEq(): Thunk {\n  return (dispatch, getState) => {\n    if (getState().equalizer.on) {\n      dispatch({ type: \"SET_EQ_OFF\" });\n    } else {\n      dispatch({ type: \"SET_EQ_ON\" });\n    }\n  };\n}\n\nexport function toggleEqAuto(): Thunk {\n  return (dispatch) => {\n    // We don't actually support this feature yet so don't let the user ever turn it on.\n    // dispatch({ type: SET_EQ_AUTO, value: !getState().equalizer.auto });\n    dispatch({ type: \"SET_EQ_AUTO\", value: false });\n  };\n}\n","import { parser, creator } from \"winamp-eqf\";\nimport { BANDS, LOAD_STYLE } from \"../constants\";\n\nimport * as Utils from \"../utils\";\n\nimport {\n  promptForFileReferences,\n  genArrayBufferFromFileReference,\n  genMediaDuration,\n  genMediaTags,\n} from \"../fileUtils\";\nimport skinParser from \"../skinParser\";\nimport {\n  getTracks,\n  getUserTracks,\n  getTrackIsVisibleFunction,\n  getEqfData,\n  getPlaylistURL,\n} from \"../selectors\";\n\nimport LoadQueue from \"../loadQueue\";\n\nimport { removeAllTracks } from \"./playlist\";\nimport { setPreamp, setEqBand } from \"./equalizer\";\nimport {\n  LoadStyle,\n  Thunk,\n  Track,\n  EqfPreset,\n  SkinData,\n  WindowId,\n} from \"../types\";\n\n// Lower is better\nconst DURATION_VISIBLE_PRIORITY = 5;\nconst META_DATA_VISIBLE_PRIORITY = 10;\nconst DURATION_PRIORITY = 15;\nconst META_DATA_PRIORITY = 20;\n\nconst loadQueue = new LoadQueue({ threads: 4 });\n\nexport function addTracksFromReferences(\n  fileReferences: FileList,\n  loadStyle: LoadStyle,\n  atIndex: number | undefined\n): Thunk {\n  const tracks: Track[] = Array.from(fileReferences).map((file) => ({\n    blob: file,\n    defaultName: file.name,\n  }));\n  return loadMediaFiles(tracks, loadStyle, atIndex);\n}\n\nconst SKIN_FILENAME_MATCHER = new RegExp(\"(wsz|zip)$\", \"i\");\nconst EQF_FILENAME_MATCHER = new RegExp(\"eqf$\", \"i\");\nexport function loadFilesFromReferences(\n  fileReferences: FileList,\n  loadStyle: LoadStyle = LOAD_STYLE.PLAY,\n  atIndex: number | undefined = undefined\n): Thunk {\n  return (dispatch) => {\n    if (fileReferences.length < 1) {\n      return;\n    } else if (fileReferences.length === 1) {\n      const fileReference = fileReferences[0];\n      if (SKIN_FILENAME_MATCHER.test(fileReference.name)) {\n        dispatch(setSkinFromBlob(fileReference));\n        return;\n      } else if (EQF_FILENAME_MATCHER.test(fileReference.name)) {\n        dispatch(setEqFromFileReference(fileReference));\n        return;\n      }\n    }\n    dispatch(addTracksFromReferences(fileReferences, loadStyle, atIndex));\n  };\n}\n\nexport function setSkinFromBlob(blob: Blob | Promise<Blob>): Thunk {\n  return async (dispatch, getState, { requireJSZip }) => {\n    if (!requireJSZip) {\n      alert(\"Webamp has not been configured to support custom skins.\");\n      return;\n    }\n    dispatch({ type: \"LOADING\" });\n    let JSZip;\n    try {\n      JSZip = await requireJSZip();\n    } catch (e) {\n      console.error(e);\n      dispatch({ type: \"LOADED\" });\n      alert(\"Failed to load the skin parser.\");\n      return;\n    }\n    try {\n      const skinData = await skinParser(blob, JSZip);\n      dispatch({\n        type: \"SET_SKIN_DATA\",\n        data: {\n          skinImages: skinData.images,\n          skinColors: skinData.colors,\n          skinPlaylistStyle: skinData.playlistStyle,\n          skinCursors: skinData.cursors,\n          skinRegion: skinData.region,\n          skinGenLetterWidths: skinData.genLetterWidths,\n          skinGenExColors: skinData.genExColors,\n        } as SkinData,\n      });\n    } catch (e) {\n      console.error(e);\n      dispatch({ type: \"LOADED\" });\n      alert(`Failed to parse skin`);\n    }\n  };\n}\n\nexport function setSkinFromUrl(url: string): Thunk {\n  return async (dispatch) => {\n    dispatch({ type: \"LOADING\" });\n    try {\n      const response = await fetch(url);\n      if (!response.ok) {\n        throw new Error(response.statusText);\n      }\n      dispatch(setSkinFromBlob(response.blob()));\n    } catch (e) {\n      console.error(e);\n      dispatch({ type: \"LOADED\" });\n      alert(`Failed to download skin from ${url}`);\n    }\n  };\n}\n\n// This function is private, since Winamp consumers can provide means for\n// opening files via other methods. Only use the file type specific\n// versions below, since they can defer to the user-defined behavior.\nfunction _openFileDialog(\n  accept: string | null,\n  expectedType: \"SKIN\" | \"MEDIA\" | \"EQ\"\n): Thunk {\n  return async (dispatch) => {\n    const fileReferences = await promptForFileReferences({ accept });\n    dispatch({\n      type: \"OPENED_FILES\",\n      expectedType,\n      count: fileReferences.length,\n      firstFileName: fileReferences[0]?.name,\n    });\n    dispatch(loadFilesFromReferences(fileReferences));\n  };\n}\n\nexport function openEqfFileDialog(): Thunk {\n  return _openFileDialog(\".eqf\", \"EQ\");\n}\n\nexport function openMediaFileDialog(): Thunk {\n  return _openFileDialog(null, \"MEDIA\");\n}\n\nexport function openSkinFileDialog() {\n  return _openFileDialog(\".zip, .wsz\", \"SKIN\");\n}\n\nexport function fetchMediaDuration(url: string, id: number): Thunk {\n  return (dispatch, getState) => {\n    loadQueue.push(\n      async () => {\n        try {\n          const duration = await genMediaDuration(url);\n          dispatch({ type: \"SET_MEDIA_DURATION\", duration, id });\n        } catch (e) {\n          // TODO: Should we update the state to indicate that we don't know the length?\n        }\n      },\n\n      () => {\n        const trackIsVisible = getTrackIsVisibleFunction(getState());\n        return trackIsVisible(id)\n          ? DURATION_VISIBLE_PRIORITY\n          : DURATION_PRIORITY;\n      }\n    );\n  };\n}\n\nexport function loadMedia(\n  e: React.DragEvent<HTMLDivElement>,\n  loadStyle: LoadStyle = LOAD_STYLE.NONE,\n  atIndex = 0\n): Thunk {\n  const { files } = e.dataTransfer;\n  return async (dispatch, getState, { handleTrackDropEvent }) => {\n    if (handleTrackDropEvent) {\n      const tracks = await handleTrackDropEvent(e);\n\n      if (tracks != null) {\n        dispatch(loadMediaFiles(tracks, loadStyle, atIndex));\n        return;\n      }\n    }\n    dispatch(loadFilesFromReferences(files, loadStyle, atIndex));\n  };\n}\n\nexport function loadMediaFiles(\n  tracks: Track[],\n  loadStyle: LoadStyle = LOAD_STYLE.NONE,\n  atIndex = 0\n): Thunk {\n  return (dispatch) => {\n    if (loadStyle === LOAD_STYLE.PLAY) {\n      // I'm the worst. It just so happens that in every case that we autoPlay,\n      // we should also clear all tracks.\n      dispatch(removeAllTracks());\n    }\n    tracks.forEach((track, i) => {\n      const priority = i === 0 ? loadStyle : LOAD_STYLE.NONE;\n      dispatch(loadMediaFile(track, priority, atIndex + i));\n    });\n  };\n}\n\nexport function loadMediaFile(\n  track: Track,\n  priority: LoadStyle = LOAD_STYLE.NONE,\n  atIndex = 0\n): Thunk {\n  return (dispatch) => {\n    const id = Utils.uniqueId();\n    const { defaultName, metaData, duration } = track;\n    let canonicalUrl: string;\n    if (\"url\" in track) {\n      canonicalUrl = track.url.toString();\n    } else if (\"blob\" in track) {\n      canonicalUrl = URL.createObjectURL(track.blob);\n    } else {\n      throw new Error(\"Expected track to have either a blob or a url\");\n    }\n\n    dispatch({\n      type: \"ADD_TRACK_FROM_URL\",\n      url: canonicalUrl,\n      duration: track.duration,\n      defaultName,\n      id,\n      atIndex,\n    });\n    switch (priority) {\n      case LOAD_STYLE.BUFFER:\n        dispatch({ type: \"BUFFER_TRACK\", id });\n        break;\n      case LOAD_STYLE.PLAY:\n        dispatch({ type: \"PLAY_TRACK\", id });\n        break;\n      case LOAD_STYLE.NONE:\n      default:\n        // If we're not going to load this right away,\n        // we should set duration on our own\n        if (duration != null) {\n          dispatch({ type: \"SET_MEDIA_DURATION\", duration, id });\n        } else {\n          dispatch(fetchMediaDuration(canonicalUrl, id));\n        }\n    }\n\n    if (metaData != null) {\n      const { artist, title, album } = metaData;\n      dispatch({\n        type: \"SET_MEDIA_TAGS\",\n        artist,\n        title,\n        album,\n        // For now, we lie about these next three things.\n        // TODO: Ideally we would leave these as null and force a media data\n        // fetch when the user starts playing.\n        sampleRate: 44000,\n        bitrate: 192000,\n        numberOfChannels: 2,\n        id,\n      });\n    } else if (\"blob\" in track) {\n      // Blobs can be loaded quickly\n      dispatch(fetchMediaTags(track.blob, id));\n    } else {\n      dispatch(queueFetchingMediaTags(id));\n    }\n  };\n}\n\nfunction queueFetchingMediaTags(id: number): Thunk {\n  return (dispatch, getState) => {\n    const track = getTracks(getState())[id];\n    loadQueue.push(\n      () => dispatch(fetchMediaTags(track.url, id)),\n      () => {\n        const trackIsVisible = getTrackIsVisibleFunction(getState());\n        return trackIsVisible(id)\n          ? META_DATA_VISIBLE_PRIORITY\n          : META_DATA_PRIORITY;\n      }\n    );\n  };\n}\n\nexport function fetchMediaTags(file: string | Blob, id: number): Thunk {\n  return async (dispatch, getState, { requireMusicMetadata }) => {\n    dispatch({ type: \"MEDIA_TAG_REQUEST_INITIALIZED\", id });\n\n    try {\n      const metadata = await genMediaTags(file, await requireMusicMetadata());\n      // There's more data here, but we don't have a use for it yet:\n      const { artist, title, album, picture } = metadata.common;\n      const { numberOfChannels, bitrate, sampleRate } = metadata.format;\n      let albumArtUrl = null;\n      if (picture && picture.length >= 1) {\n        const byteArray = new Uint8Array(picture[0].data);\n        const blob = new Blob([byteArray], { type: picture[0].format });\n        albumArtUrl = URL.createObjectURL(blob);\n      }\n      dispatch({\n        type: \"SET_MEDIA_TAGS\",\n        artist: artist ? artist : \"\",\n        title: title ? title : \"\",\n        album,\n        albumArtUrl,\n        numberOfChannels,\n        bitrate,\n        sampleRate,\n        id,\n      });\n    } catch (e) {\n      dispatch({ type: \"MEDIA_TAG_REQUEST_FAILED\", id });\n    }\n  };\n}\n\nexport function setEqFromFileReference(fileReference: File): Thunk {\n  return async (dispatch) => {\n    const arrayBuffer = await genArrayBufferFromFileReference(fileReference);\n    const eqf = parser(arrayBuffer);\n    const preset: EqfPreset = eqf.presets[0];\n    dispatch(setEqFromObject(preset));\n  };\n}\n\nexport function setEqFromObject(preset: EqfPreset): Thunk {\n  return (dispatch) => {\n    dispatch(setPreamp(Utils.normalizeEqBand(preset.preamp)));\n    BANDS.forEach((band) => {\n      // @ts-ignore band and EqfPreset align\n      dispatch(setEqBand(band, Utils.normalizeEqBand(preset[`hz${band}`])));\n    });\n  };\n}\n\nexport function downloadPreset(): Thunk {\n  return (dispatch, getState) => {\n    const state = getState();\n    const data = getEqfData(state);\n    const arrayBuffer = creator(data);\n    const base64 = Utils.base64FromArrayBuffer(arrayBuffer);\n    const dataURI = `data:application/zip;base64,${base64}`;\n    Utils.downloadURI(dataURI, \"entry.eqf\");\n  };\n}\n\nexport function downloadHtmlPlaylist(): Thunk {\n  return (dispatch, getState) => {\n    const uri = getPlaylistURL(getState());\n    Utils.downloadURI(uri, \"Winamp Playlist.html\");\n  };\n}\n\nlet el: HTMLInputElement | null = document.createElement(\"input\");\nel.type = \"file\";\n// @ts-ingore\nconst DIR_SUPPORT =\n  // @ts-ignore\n  typeof el.webkitdirectory !== \"undefined\" ||\n  // @ts-ignore\n  typeof el.mozdirectory !== \"undefined\" ||\n  // @ts-ignore\n  typeof el.directory !== \"undefined\";\n// Release our reference\nel = null;\n\nexport function addFilesAtIndex(nextIndex: number): Thunk {\n  return async (dispatch) => {\n    const fileReferences = await promptForFileReferences();\n    dispatch(\n      addTracksFromReferences(fileReferences, LOAD_STYLE.NONE, nextIndex)\n    );\n  };\n}\n\nexport function addDirAtIndex(nextIndex: number): Thunk {\n  return async (dispatch) => {\n    if (!DIR_SUPPORT) {\n      alert(\"Not supported in your browser\");\n      return;\n    }\n    const fileReferences = await promptForFileReferences({ directory: true });\n    dispatch(\n      addTracksFromReferences(fileReferences, LOAD_STYLE.NONE, nextIndex)\n    );\n  };\n}\n\nexport function addFilesFromUrl(atIndex = 0): Thunk {\n  return async (dispatch, getState, { handleAddUrlEvent }) => {\n    if (handleAddUrlEvent) {\n      const tracks = await handleAddUrlEvent();\n\n      if (tracks != null) {\n        dispatch(loadMediaFiles(tracks, LOAD_STYLE.NONE, atIndex));\n        return;\n      }\n    } else {\n      alert(\"Not supported in Webamp\");\n    }\n  };\n}\n\nexport function addFilesFromList(): Thunk {\n  return async (dispatch, getState, { handleLoadListEvent }) => {\n    if (handleLoadListEvent) {\n      const tracks = await handleLoadListEvent();\n\n      if (tracks != null) {\n        dispatch(removeAllTracks());\n\n        dispatch(loadMediaFiles(tracks, LOAD_STYLE.NONE, 0));\n        return;\n      }\n    } else {\n      alert(\"Not supported in Webamp\");\n    }\n  };\n}\n\nexport function saveFilesToList(): Thunk {\n  return (dispatch, getState, { handleSaveListEvent }) => {\n    if (handleSaveListEvent) {\n      handleSaveListEvent(getUserTracks(getState()));\n    } else {\n      alert(\"Not supported in Webamp\");\n    }\n  };\n}\n\nexport function droppedFiles(e: React.DragEvent, windowId: WindowId): Thunk {\n  return (dispatch) =>\n    dispatch({\n      type: \"DROPPED_FILES\",\n      count: e.dataTransfer.files.length,\n      firstFileName: e.dataTransfer.files[0]?.name,\n      windowId,\n    });\n}\n","import invariant from \"invariant\";\nimport TinyQueue from \"tinyqueue\";\n\n// Push promises onto a queue with a priority.\n// Run a given number of jobs in parallel\n// Useful for prioritizing network requests\nexport default class LoadQueue {\n  constructor({ threads }) {\n    // TODO: Consider not running items with zero priority\n    // Priority is a function so that items can change their priority between\n    // when their priority is evaluated.\n    // For example, we might add a track to the playlist and then scroll to/away\n    // from it before it gets processed.\n    this._queue = new TinyQueue([], (a, b) => a.priority() - b.priority());\n    this._availableThreads = threads;\n  }\n\n  push(task, priority) {\n    const t = { task, priority };\n    this._queue.push(t);\n    // Wait until the next event loop to pick a task to run. This way, we can\n    // enqueue multiple items in an event loop, and be sure they will be run in\n    // priority order.\n    setTimeout(() => {\n      this._run();\n    }, 0);\n    return () => {\n      // TODO: Could return a boolean representing if the task has already been\n      // kicked off.\n      this._queue = this._queue.filter((t1) => t1 !== t);\n    };\n  }\n\n  _run() {\n    while (this._availableThreads > 0) {\n      if (this._queue.length === 0) {\n        return;\n      }\n      this._availableThreads--;\n      const t = this._queue.pop();\n      const promise = t.task();\n      invariant(\n        typeof promise.then === \"function\",\n        `LoadQueue only supports loading Promises. Got ${promise}`\n      );\n      promise.then(() => {\n        this._availableThreads++;\n        this._run();\n      });\n    }\n  }\n}\n","import { HEADER, PRESET_VALUES } from \"./constants.js\";\nexport function parser(arrayBuffer) {\n    const data = {\n        type: \"\",\n        presets: [],\n    };\n    let i = 0;\n    const arr = new Int8Array(arrayBuffer);\n    // Parse header\n    data.type = String.fromCharCode.apply(null, Array.from(arr.slice(i, HEADER.length)));\n    if (data.type !== HEADER) {\n        throw new Error(\"Invalid .eqf file.\");\n    }\n    i += HEADER.length;\n    // Skip \"<ctrl-z>!--\"\n    i += 4;\n    // Get the presets\n    while (i < arr.length) {\n        const preset = {};\n        // Get the name\n        const nameStart = i;\n        const nameEnd = nameStart + 257; // Str is fixed length\n        // Str is null terminated\n        while (arr[i] !== 0 && i <= nameEnd) {\n            i++;\n        }\n        preset.name = String.fromCharCode.apply(null, Array.from(arr.slice(nameStart, i)));\n        i = nameEnd; // Skip over any unused bytes\n        // Get the levels\n        PRESET_VALUES.forEach((valueName) => {\n            preset[valueName] = 64 - arr[i++]; // Adjust for inverse values\n        });\n        data.presets.push(preset);\n    }\n    return data;\n}\n","import { HEADER, PRESET_VALUES } from \"./constants.js\";\nconst PRESET_LENGTH = 257;\nexport function creator(data) {\n    const buffer = [];\n    // Add header\n    for (let i = 0; i < HEADER.length; i++) {\n        buffer.push(HEADER.charCodeAt(i));\n    }\n    // Add control character and ending\n    buffer.push(26); // <ctrl-z>\n    const ending = \"!--\";\n    for (let i = 0; i < ending.length; i++) {\n        buffer.push(ending.charCodeAt(i));\n    }\n    if (!data.presets) {\n        throw new Error(\"Eqf data is missing presets\");\n    }\n    data.presets.forEach((preset) => {\n        // Add preset name\n        let k = 0;\n        for (; k < preset.name.length; k++) {\n            buffer.push(preset.name.charCodeAt(k));\n        }\n        // Pad name to fixed length\n        for (; k < PRESET_LENGTH; k++) {\n            buffer.push(0);\n        }\n        // Add preset values\n        PRESET_VALUES.forEach((valueName) => {\n            buffer.push(64 - preset[valueName]); // Adjust for inverse values\n        });\n    });\n    return new Uint8Array(buffer).buffer;\n}\n","import { clamp } from \"../utils\";\n\nimport { MEDIA_STATUS } from \"../constants\";\nimport { openMediaFileDialog } from \"./files\";\nimport { GetState, Dispatch, Thunk, Action } from \"../types\";\nimport * as Selectors from \"../selectors\";\n\nexport function playTrack(id: number): Thunk {\n  return (dispatch, getState) => {\n    const state = getState();\n    const isStopped = Selectors.getMediaStatus(state) === MEDIA_STATUS.STOPPED;\n    if (isStopped) {\n      dispatch({ type: \"BUFFER_TRACK\", id });\n    } else {\n      dispatch({ type: \"PLAY_TRACK\", id });\n    }\n  };\n}\n\nexport function playTrackNow(id: number): Action {\n  return { type: \"PLAY_TRACK\", id };\n}\n\nexport function play(): Thunk {\n  return (dispatch: Dispatch, getState: GetState) => {\n    const state = getState();\n    if (\n      state.media.status === MEDIA_STATUS.STOPPED &&\n      state.playlist.currentTrack == null &&\n      state.playlist.trackOrder.length === 0\n    ) {\n      dispatch(openMediaFileDialog());\n    } else {\n      dispatch({ type: \"PLAY\" });\n    }\n  };\n}\n\nexport function pause(): Thunk {\n  return (dispatch, getState) => {\n    const { status } = getState().media;\n    if (status === MEDIA_STATUS.PLAYING) {\n      dispatch({ type: \"PAUSE\" });\n    } else {\n      dispatch({ type: \"PLAY\" });\n    }\n  };\n}\n\nexport function stop(): Action {\n  return { type: \"STOP\" };\n}\n\nexport function nextN(n: number): Thunk {\n  return (dispatch, getState) => {\n    const nextTrackId = Selectors.getNextTrackId(getState(), n);\n    if (nextTrackId == null) {\n      dispatch({ type: \"IS_STOPPED\" });\n      return;\n    }\n    dispatch(playTrack(nextTrackId));\n  };\n}\n\nexport function next(): Thunk {\n  return nextN(1);\n}\n\nexport function previous(): Thunk {\n  return nextN(-1);\n}\n\nexport function seekToTime(seconds: number): Thunk {\n  return function (dispatch, getState) {\n    const state = getState();\n    const duration = Selectors.getDuration(state);\n    if (duration == null) {\n      return;\n    }\n    dispatch({\n      type: \"SEEK_TO_PERCENT_COMPLETE\",\n      percent: (seconds / duration) * 100,\n    });\n  };\n}\nexport function seekForward(seconds: number): Thunk {\n  return function (dispatch, getState) {\n    const timeElapsed = Selectors.getTimeElapsed(getState());\n    dispatch(seekToTime(timeElapsed + seconds));\n  };\n}\n\nexport function seekBackward(seconds: number): Thunk {\n  return seekForward(-seconds);\n}\n\nexport function setVolume(volume: number): Action {\n  return {\n    type: \"SET_VOLUME\",\n    volume: clamp(volume, 0, 100),\n  };\n}\n\nexport function adjustVolume(volumeDiff: number): Thunk {\n  return (dispatch, getState) => {\n    const currentVolume = getState().media.volume;\n    return dispatch(setVolume(currentVolume + volumeDiff));\n  };\n}\n\nexport function scrollVolume(e: WheelEvent): Thunk {\n  e.preventDefault();\n  return (dispatch, getState) => {\n    const currentVolume = getState().media.volume;\n    // Using pixels as percentage difference here is a bit arbitrary, but... oh well.\n    return dispatch(setVolume(currentVolume + e.deltaY));\n  };\n}\n\nexport function setBalance(balance: number): Action {\n  balance = clamp(balance, -100, 100);\n  // The balance clips to the center\n  if (Math.abs(balance) < 25) {\n    balance = 0;\n  }\n  return {\n    type: \"SET_BALANCE\",\n    balance,\n  };\n}\n\nexport function toggleRepeat(): Action {\n  return { type: \"TOGGLE_REPEAT\" };\n}\n\nexport function toggleShuffle(): Action {\n  return { type: \"TOGGLE_SHUFFLE\" };\n}\n\nexport function toggleTimeMode(): Action {\n  return { type: \"TOGGLE_TIME_MODE\" };\n}\n","import * as Selectors from \"../selectors\";\nimport {\n  TransitionType,\n  Preset,\n  ButterchurnOptions,\n  StatePreset,\n  Thunk,\n  Action,\n} from \"../types\";\nimport * as FileUtils from \"../fileUtils\";\n\nfunction normalizePresetTypes(preset: Preset): StatePreset {\n  const { name } = preset;\n  if (\"butterchurnPresetObject\" in preset) {\n    return {\n      type: \"RESOLVED\",\n      name,\n      preset: preset.butterchurnPresetObject,\n    };\n  } else if (\"getButterchrunPresetObject\" in preset) {\n    return {\n      type: \"UNRESOLVED\",\n      name,\n      getPreset: preset.getButterchrunPresetObject,\n    };\n  } else if (\"butterchurnPresetUrl\" in preset) {\n    return {\n      type: \"UNRESOLVED\",\n      name,\n      getPreset: async () => {\n        const resp = await fetch(preset.butterchurnPresetUrl);\n        return resp.json();\n      },\n    };\n  }\n  throw new Error(\"Invalid preset object\");\n}\n\nexport function initializePresets(presetOptions: ButterchurnOptions): Thunk {\n  return async (dispatch) => {\n    const { getPresets, importButterchurn } = presetOptions;\n    importButterchurn().then((butterchurnModule) => {\n      const butterchurn = butterchurnModule.default ?? butterchurnModule;\n      dispatch({ type: \"GOT_BUTTERCHURN\", butterchurn });\n    });\n\n    const presets = await getPresets();\n    const normalizePresets = presets.map(normalizePresetTypes);\n    dispatch(loadPresets(normalizePresets));\n  };\n}\n\nexport function loadPresets(presets: StatePreset[]): Thunk {\n  return (dispatch, getState) => {\n    const state = getState();\n    const presetsLength = state.milkdrop.presets.length;\n    dispatch({ type: \"GOT_BUTTERCHURN_PRESETS\", presets });\n    if (presetsLength === 0 && Selectors.getRandomizePresets(state)) {\n      dispatch(selectRandomPreset());\n    } else {\n      dispatch(\n        requestPresetAtIndex(presetsLength, TransitionType.IMMEDIATE, true)\n      );\n    }\n  };\n}\n\nexport function appendPresetFileList(fileList: FileList): Thunk {\n  return async (dispatch, getState, { convertPreset }) => {\n    const presets: StatePreset[] = Array.from(fileList)\n      .map((file) => {\n        const JSON_EXT = \".json\";\n        const MILK_EXT = \".milk\";\n        const filename = file.name.toLowerCase();\n        if (filename.endsWith(MILK_EXT)) {\n          if (convertPreset == null) {\n            throw new Error(\"Invalid type\");\n          }\n          return {\n            type: \"UNRESOLVED\",\n            name: file.name.slice(0, file.name.length - MILK_EXT.length),\n            getPreset: () => convertPreset(file),\n          } as StatePreset;\n        } else if (filename.endsWith(JSON_EXT)) {\n          return {\n            type: \"UNRESOLVED\",\n            name: file.name.slice(0, file.name.length - JSON_EXT.length),\n            getPreset: async () => {\n              const str = await FileUtils.genStringFromFileReference(file);\n              // TODO: How should we handle the case where json parsing fails?\n              return JSON.parse(str);\n            },\n          } as StatePreset;\n        }\n        console.error(\"Invalid type preset when loading directory\");\n\n        return null as never;\n      })\n      .filter(Boolean);\n    dispatch(loadPresets(presets));\n  };\n}\n\nexport function selectNextPreset(\n  transitionType: TransitionType = TransitionType.DEFAULT\n): Thunk {\n  return (dispatch, getState) => {\n    const state = getState();\n    if (Selectors.getRandomizePresets(state)) {\n      return dispatch(selectRandomPreset(transitionType));\n    }\n    const currentPresetIndex = Selectors.getCurrentPresetIndex(state);\n    if (currentPresetIndex == null) {\n      return;\n    }\n    const nextPresetIndex = currentPresetIndex + 1;\n    dispatch(requestPresetAtIndex(nextPresetIndex, transitionType, true));\n  };\n}\n\nexport function selectPreviousPreset(\n  transitionType: TransitionType = TransitionType.DEFAULT\n): Thunk {\n  return (dispatch, getState) => {\n    const state = getState();\n    const { presetHistory } = state.milkdrop;\n    if (presetHistory.length < 1) {\n      return;\n    }\n    // Awkward. We do -2 becuase the the last track is the current track.\n    const lastPresetIndex = presetHistory[presetHistory.length - 2];\n\n    dispatch(requestPresetAtIndex(lastPresetIndex, transitionType, false));\n  };\n}\n\nexport function selectRandomPreset(\n  transitionType: TransitionType = TransitionType.DEFAULT\n): Thunk {\n  return (dispatch, getState) => {\n    const state = getState();\n    // TODO: Make this a selector.\n    const randomIndex = Math.floor(\n      Math.random() * state.milkdrop.presets.length\n    );\n    dispatch(requestPresetAtIndex(randomIndex, transitionType, true));\n  };\n}\n\n// TODO: Technically there's a race here. If you request two presets in a row, the\n// first one may resolve before the second.\nexport function requestPresetAtIndex(\n  index: number,\n  transitionType: TransitionType,\n  addToHistory: boolean\n): Thunk {\n  return async (dispatch, getState) => {\n    const state = getState();\n    const preset = state.milkdrop.presets[index];\n    if (preset == null) {\n      // Index might be out of range.\n      return;\n    }\n    dispatch({ type: \"PRESET_REQUESTED\", index, addToHistory });\n    switch (preset.type) {\n      case \"RESOLVED\":\n        dispatch({ type: \"SELECT_PRESET_AT_INDEX\", index, transitionType });\n        return;\n      case \"UNRESOLVED\":\n        const json = await preset.getPreset();\n        // TODO: Ensure that this works correctly even if requests resolve out of order\n        dispatch({ type: \"RESOLVE_PRESET_AT_INDEX\", index, json });\n        dispatch({ type: \"SELECT_PRESET_AT_INDEX\", index, transitionType });\n        return;\n    }\n  };\n}\n\nexport function handlePresetDrop(e: React.DragEvent): Thunk {\n  return appendPresetFileList(e.dataTransfer.files);\n}\n\nexport function toggleRandomizePresets(): Action {\n  return { type: \"TOGGLE_RANDOMIZE_PRESETS\" };\n}\n\nexport function togglePresetCycling(): Action {\n  return { type: \"TOGGLE_PRESET_CYCLING\" };\n}\n\nexport function scheduleMilkdropMessage(message: string): Action {\n  return { type: \"SCHEDULE_MILKDROP_MESSAGE\", message };\n}\n","import { WINDOWS } from \"../constants\";\nimport { Thunk, Action, Slider } from \"../types\";\nimport { SerializedStateV1 } from \"../serializedStates/v1Types\";\nimport * as Selectors from \"../selectors\";\nimport { ensureWindowsAreOnScreen, setFocusedWindow } from \"./windows\";\n\nexport {\n  toggleDoubleSizeMode,\n  toggleEqualizerShadeMode,\n  togglePlaylistShadeMode,\n  closeWindow,\n  setWindowSize,\n  toggleWindow,\n  updateWindowPositions,\n  toggleMainWindowShadeMode,\n  centerWindowsInContainer,\n  centerWindowsInView,\n  resetWindowSizes,\n  browserWindowSizeChanged,\n  ensureWindowsAreOnScreen,\n  stackWindows,\n  toggleLlamaMode,\n  setFocusedWindow,\n  setWindowLayout,\n} from \"./windows\";\nexport {\n  play,\n  pause,\n  stop,\n  nextN,\n  next,\n  previous,\n  seekToTime,\n  seekForward,\n  seekBackward,\n  setVolume,\n  playTrack,\n  playTrackNow,\n  adjustVolume,\n  scrollVolume,\n  setBalance,\n  toggleRepeat,\n  toggleShuffle,\n  toggleTimeMode,\n} from \"./media\";\nexport {\n  setEqBand,\n  setEqToMax,\n  setEqToMid,\n  setEqToMin,\n  setPreamp,\n  toggleEq,\n  toggleEqAuto,\n} from \"./equalizer\";\nexport {\n  addTracksFromReferences,\n  loadFilesFromReferences,\n  setSkinFromUrl,\n  openEqfFileDialog,\n  openMediaFileDialog,\n  openSkinFileDialog,\n  fetchMediaDuration,\n  loadMedia,\n  loadMediaFiles,\n  loadMediaFile,\n  fetchMediaTags,\n  setEqFromFileReference,\n  downloadPreset,\n  setEqFromObject,\n  downloadHtmlPlaylist,\n  addDirAtIndex,\n  addFilesAtIndex,\n  addFilesFromUrl,\n  addFilesFromList,\n  saveFilesToList,\n  droppedFiles,\n} from \"./files\";\nexport {\n  cropPlaylist,\n  removeSelectedTracks,\n  removeAllTracks,\n  reverseList,\n  randomizeList,\n  sortListByTitle,\n  setPlaylistScrollPosition,\n  scrollNTracks,\n  scrollPlaylistByDelta,\n  scrollUpFourTracks,\n  scrollDownFourTracks,\n  dragSelected,\n  selectAll,\n  selectZero,\n  invertSelection,\n} from \"./playlist\";\nexport {\n  initializePresets,\n  requestPresetAtIndex,\n  selectRandomPreset,\n  selectNextPreset,\n  selectPreviousPreset,\n  appendPresetFileList,\n  handlePresetDrop,\n  loadPresets,\n  toggleRandomizePresets,\n  togglePresetCycling,\n  scheduleMilkdropMessage,\n} from \"./milkdrop\";\n\nexport function close(): Thunk {\n  return (dispatch) => {\n    // TODO: This could probably be improved by adding a \"PREVENT_CLOSE\" action\n    // or something, but this works okay for now.\n    let defaultPrevented = false;\n    const cancel = () => {\n      defaultPrevented = true;\n    };\n    dispatch({ type: \"CLOSE_REQUESTED\", cancel });\n    if (!defaultPrevented) {\n      dispatch({ type: \"STOP\" });\n      dispatch({ type: \"CLOSE_WINAMP\" });\n    }\n  };\n}\n\nexport function open(): Action {\n  return { type: \"OPEN_WINAMP\" };\n}\n\nexport function toggleVisualizerStyle(): Action {\n  return { type: \"TOGGLE_VISUALIZER_STYLE\" };\n}\n\nexport function minimize(): Action {\n  return { type: \"MINIMIZE_WINAMP\" };\n}\n\nexport function setFocus(input: string): Action {\n  return { type: \"SET_FOCUS\", input };\n}\n\nexport function unsetFocus(): Action {\n  return { type: \"UNSET_FOCUS\" };\n}\n\nexport function focusBand(band: Slider): Action {\n  return { type: \"SET_BAND_FOCUS\", input: \"eq\", bandFocused: band };\n}\n\nexport function loadSerializedState(\n  // In the future this type should be the union of all versioned types.\n  serializedState: SerializedStateV1\n): Thunk {\n  return (dispatch) => {\n    dispatch({ type: \"LOAD_SERIALIZED_STATE\", serializedState });\n    dispatch(ensureWindowsAreOnScreen());\n  };\n}\n\nexport function loadDefaultSkin(): Action {\n  return { type: \"LOAD_DEFAULT_SKIN\" };\n}\n\nexport function toggleMilkdropDesktop(): Thunk {\n  return (dispatch, getState) => {\n    if (Selectors.getMilkdropDesktopEnabled(getState())) {\n      dispatch({ type: \"SET_MILKDROP_DESKTOP\", enabled: false });\n    } else {\n      dispatch({ type: \"SET_MILKDROP_DESKTOP\", enabled: true });\n    }\n  };\n}\n\nexport function setMilkdropFullscreen(enabled: boolean): Action {\n  return { type: \"SET_MILKDROP_FULLSCREEN\", enabled };\n}\nexport function toggleMilkdropFullscreen(): Thunk {\n  return (dispatch, getState) => {\n    dispatch(\n      setMilkdropFullscreen(!Selectors.getMilkdropFullscreenEnabled(getState()))\n    );\n  };\n}\n\nexport function togglePresetOverlay(): Thunk {\n  return (dispatch, getState) => {\n    if (Selectors.getPresetOverlayOpen(getState())) {\n      dispatch(setFocusedWindow(WINDOWS.MILKDROP));\n    }\n\n    dispatch({ type: \"TOGGLE_PRESET_OVERLAY\" });\n  };\n}\n\nexport function stepMarquee(): Action {\n  return { type: \"STEP_MARQUEE\" };\n}\n","import { IMedia } from \"./media\";\nimport { next as nextTrack } from \"./actionCreators\";\nimport * as Selectors from \"./selectors\";\nimport { MiddlewareStore, Action, Dispatch } from \"./types\";\nimport { objectForEach } from \"./utils\";\n\nexport default (media: IMedia) => (store: MiddlewareStore) => {\n  const {\n    media: { volume, balance },\n    equalizer: { sliders },\n  } = store.getState();\n\n  // Ensure the default state is the canonical value.\n  media.setVolume(volume);\n  media.setBalance(balance);\n  media.setPreamp(sliders.preamp);\n  // TODO: Ensure other values like bands are in sync\n\n  media.on(\"timeupdate\", () => {\n    store.dispatch({\n      type: \"UPDATE_TIME_ELAPSED\",\n      elapsed: media.timeElapsed(),\n    });\n  });\n\n  media.on(\"ended\", () => {\n    store.dispatch(nextTrack());\n  });\n\n  media.on(\"playing\", () => {\n    store.dispatch({ type: \"IS_PLAYING\" });\n  });\n\n  media.on(\"waiting\", () => {\n    store.dispatch({ type: \"START_WORKING\" });\n  });\n\n  media.on(\"stopWaiting\", () => {\n    store.dispatch({ type: \"STOP_WORKING\" });\n  });\n\n  media.on(\"fileLoaded\", () => {\n    const id = Selectors.getCurrentTrackId(store.getState());\n    if (id == null) {\n      // Attempted to set the metadata for a track that was already removed.\n      // Really, the media should have been stopped when the track was removed.\n      return;\n    }\n    store.dispatch({\n      id,\n      type: \"SET_MEDIA\",\n      kbps: \"128\",\n      khz: \"44\",\n      channels: 2,\n      length: media.duration(),\n    });\n  });\n\n  return (next: Dispatch) => (action: Action) => {\n    const returnValue = next(action);\n    const state = store.getState();\n    switch (action.type) {\n      case \"PLAY\":\n        media.play();\n        break;\n      case \"PAUSE\":\n        media.pause();\n        break;\n      case \"STOP\":\n        media.stop();\n        break;\n      case \"SET_VOLUME\":\n        media.setVolume(Selectors.getVolume(state));\n        break;\n      case \"SET_BALANCE\":\n        media.setBalance(Selectors.getBalance(state));\n        break;\n      case \"SEEK_TO_PERCENT_COMPLETE\":\n        media.seekToPercentComplete((action as any).percent);\n        break;\n      case \"PLAY_TRACK\": {\n        const url = Selectors.getTrackUrl(store.getState())((action as any).id);\n        if (url != null) {\n          media.loadFromUrl(url, true);\n        }\n        break;\n      }\n      case \"BUFFER_TRACK\": {\n        const url = Selectors.getTrackUrl(store.getState())((action as any).id);\n        if (url != null) {\n          media.loadFromUrl(url, false);\n        }\n        break;\n      }\n      case \"SET_BAND_VALUE\":\n        if ((action as any).band === \"preamp\") {\n          media.setPreamp((action as any).value);\n        } else {\n          media.setEqBand((action as any).band, (action as any).value);\n        }\n        break;\n      case \"SET_EQ_OFF\":\n        media.disableEq();\n        break;\n      case \"SET_EQ_ON\":\n        media.enableEq();\n        break;\n      case \"LOAD_SERIALIZED_STATE\": {\n        // Set ALL THE THINGS!\n        if (Selectors.getEqualizerEnabled(state)) {\n          media.enableEq();\n        } else {\n          media.disableEq();\n        }\n        media.setVolume(Selectors.getVolume(state));\n        media.setBalance(Selectors.getBalance(state));\n        objectForEach(state.equalizer.sliders, (value, slider) => {\n          if (slider === \"preamp\") {\n            media.setPreamp(value);\n          } else {\n            // @ts-ignore I don't know how to teach TypeScript about objects\n            // that use Slider as keys\n            media.setEqBand(slider, value);\n          }\n        });\n        break;\n      }\n    }\n    return returnValue;\n  };\n};\n","import {\n  legacy_createStore as createStore,\n  applyMiddleware,\n  Middleware as ReduxMiddleware,\n} from \"redux\";\nimport thunk from \"redux-thunk\";\nimport { composeWithDevTools } from \"@redux-devtools/extension\";\nimport reducer from \"./reducers\";\nimport mediaMiddleware from \"./mediaMiddleware\";\nimport { merge } from \"./utils\";\nimport { IMedia } from \"./media\";\nimport Emitter from \"./emitter\";\nimport {\n  Extras,\n  Dispatch,\n  Action,\n  PartialState,\n  Middleware,\n  Store,\n} from \"./types\";\n\nconst compose = composeWithDevTools({\n  actionsDenylist: [\"UPDATE_TIME_ELAPSED\", \"STEP_MARQUEE\"],\n});\n\nexport default function createWebampStore(\n  media: IMedia,\n  actionEmitter: Emitter,\n  customMiddlewares: Middleware[] = [],\n  stateOverrides: PartialState | undefined,\n  extras: Extras\n): Store {\n  let initialState;\n  if (stateOverrides) {\n    initialState = merge(\n      reducer(undefined, { type: \"@@init\" }),\n      stateOverrides\n    );\n  }\n\n  const emitterMiddleware = () => (next: Dispatch) => (action: Action) => {\n    actionEmitter.trigger(action.type, action);\n    return next(action);\n  };\n\n  const middlewares: Middleware[] = [\n    thunk.withExtraArgument(extras),\n    mediaMiddleware(media),\n    emitterMiddleware,\n    ...customMiddlewares,\n  ];\n\n  // @ts-expect-error Typing of these is too hard to get right, so we cheat\n  const coercedMiddlewares: ReduxMiddleware[] = middlewares;\n\n  const enhancer = compose(applyMiddleware(...coercedMiddlewares));\n\n  return createStore(reducer, initialState, enhancer);\n}\n","var key = {\r\n    fullscreenEnabled: 0,\r\n    fullscreenElement: 1,\r\n    requestFullscreen: 2,\r\n    exitFullscreen: 3,\r\n    fullscreenchange: 4,\r\n    fullscreenerror: 5,\r\n    fullscreen: 6\r\n};\r\nvar webkit = [\r\n    'webkitFullscreenEnabled',\r\n    'webkitFullscreenElement',\r\n    'webkitRequestFullscreen',\r\n    'webkitExitFullscreen',\r\n    'webkitfullscreenchange',\r\n    'webkitfullscreenerror',\r\n    '-webkit-full-screen',\r\n];\r\nvar moz = [\r\n    'mozFullScreenEnabled',\r\n    'mozFullScreenElement',\r\n    'mozRequestFullScreen',\r\n    'mozCancelFullScreen',\r\n    'mozfullscreenchange',\r\n    'mozfullscreenerror',\r\n    '-moz-full-screen',\r\n];\r\nvar ms = [\r\n    'msFullscreenEnabled',\r\n    'msFullscreenElement',\r\n    'msRequestFullscreen',\r\n    'msExitFullscreen',\r\n    'MSFullscreenChange',\r\n    'MSFullscreenError',\r\n    '-ms-fullscreen',\r\n];\r\n// so it doesn't throw if no window or document\r\nvar document = typeof window !== 'undefined' && typeof window.document !== 'undefined' ? window.document : {};\r\nvar vendor = (('fullscreenEnabled' in document && Object.keys(key)) ||\r\n    (webkit[0] in document && webkit) ||\r\n    (moz[0] in document && moz) ||\r\n    (ms[0] in document && ms) ||\r\n    []);\r\nvar fscreen = {\r\n    requestFullscreen: function (element) { return element[vendor[key.requestFullscreen]](); },\r\n    requestFullscreenFunction: function (element) { return element[vendor[key.requestFullscreen]]; },\r\n    get exitFullscreen() { return document[vendor[key.exitFullscreen]].bind(document); },\r\n    get fullscreenPseudoClass() { return \":\" + vendor[key.fullscreen]; },\r\n    addEventListener: function (type, handler, options) { return document.addEventListener(vendor[key[type]], handler, options); },\r\n    removeEventListener: function (type, handler, options) { return document.removeEventListener(vendor[key[type]], handler, options); },\r\n    get fullscreenEnabled() { return Boolean(document[vendor[key.fullscreenEnabled]]); },\r\n    set fullscreenEnabled(val) { },\r\n    get fullscreenElement() { return document[vendor[key.fullscreenElement]]; },\r\n    set fullscreenElement(val) { },\r\n    get onfullscreenchange() { return document[(\"on\" + vendor[key.fullscreenchange]).toLowerCase()]; },\r\n    set onfullscreenchange(handler) { return document[(\"on\" + vendor[key.fullscreenchange]).toLowerCase()] = handler; },\r\n    get onfullscreenerror() { return document[(\"on\" + vendor[key.fullscreenerror]).toLowerCase()]; },\r\n    set onfullscreenerror(handler) { return document[(\"on\" + vendor[key.fullscreenerror]).toLowerCase()] = handler; },\r\n};\n\nexport default fscreen;\n//# sourceMappingURL=fscreen.esm.js.map\n","// Adapted from https://github.com/snakesilk/react-fullscreen\nimport { ReactNode, useRef, useLayoutEffect, useEffect } from \"react\";\nimport fscreen from \"fscreen\";\n\ninterface Props {\n  enabled: boolean;\n  children: ReactNode;\n  onChange(fullscreen: boolean): void;\n}\n\nfunction leaveFullScreen() {\n  if (fscreen.fullscreenEnabled) {\n    fscreen.exitFullscreen();\n  }\n}\n\nfunction enterFullScreen(node: HTMLDivElement) {\n  if (fscreen.fullscreenEnabled) {\n    fscreen.requestFullscreen(node);\n  }\n}\n\nfunction FullScreen(props: Props) {\n  const { onChange, enabled } = props;\n  const ref = useRef<HTMLDivElement | null>(null);\n\n  useEffect(() => {\n    function detectFullScreen() {\n      if (onChange) {\n        onChange(fscreen.fullscreenElement === ref.current);\n      }\n    }\n    fscreen.addEventListener(\"fullscreenchange\", detectFullScreen);\n    return () => {\n      fscreen.removeEventListener(\"fullscreenchange\", detectFullScreen);\n    };\n  }, [onChange]);\n\n  // This must run in response to a click event, so we'll use useLayoutEffect just in case.\n  useLayoutEffect(() => {\n    const isEnabled = fscreen.fullscreenElement === ref.current;\n    if (isEnabled && !enabled) {\n      leaveFullScreen();\n    } else if (!isEnabled && enabled && ref.current != null) {\n      enterFullScreen(ref.current);\n    }\n  }, [enabled]);\n\n  return (\n    <div\n      ref={ref}\n      style={props.enabled ? { height: \"100%\", width: \"100%\" } : undefined}\n    >\n      {props.children}\n    </div>\n  );\n}\n\nexport default FullScreen;\n","import {\n  useState,\n  useEffect,\n  useCallback,\n  useLayoutEffect,\n  useRef,\n} from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport * as Utils from \"./utils\";\nimport { Action, Thunk, AppState } from \"./types\";\n\ninterface Size {\n  width: number;\n  height: number;\n}\n\nexport function useUnmountedRef(): { current: boolean } {\n  const unmountedRef = useRef(false);\n  useEffect(() => {\n    return () => {\n      unmountedRef.current = true;\n    };\n  }, []);\n  return unmountedRef;\n}\n\nexport function usePromiseValueOrNull<T>(propValue: Promise<T>): T | null {\n  const [value, setValue] = useState<T | null>(null);\n  useEffect(() => {\n    let disposed = false;\n    propValue.then((resolvedValue) => {\n      if (disposed) {\n        return;\n      }\n      setValue(resolvedValue);\n    });\n\n    return () => {\n      disposed = true;\n    };\n  }, [propValue]);\n\n  return value;\n}\n\nexport function useScreenSize() {\n  const [size] = useState<Size>(Utils.getScreenSize());\n  // TODO: We could subscribe to screen size changes.\n  return size;\n}\n\nexport function useWindowSize() {\n  const [size, setSize] = useState<Size>(Utils.getWindowSize());\n  const handler = useCallback(() => {\n    Utils.throttle(() => {\n      setSize(Utils.getWindowSize());\n    }, 100) as () => void;\n  }, []);\n  useEffect(() => {\n    window.addEventListener(\"resize\", handler);\n    return () => {\n      window.removeEventListener(\"resize\", handler);\n    };\n  }, [handler]);\n  return size;\n}\n\nconst cursorPositionRef = { current: { pageX: 0, pageY: 0 } };\nlet listenerRefCount = 0;\n\n// Global mousemove listener - managed with reference counting\nconst globalMouseMoveHandler = ({ pageX, pageY }: MouseEvent) => {\n  cursorPositionRef.current = { pageX, pageY };\n};\n\n// Add a reference to the global mouse listener\nfunction addGlobalMouseListener() {\n  if (listenerRefCount === 0) {\n    window.document.addEventListener(\"mousemove\", globalMouseMoveHandler);\n  }\n  listenerRefCount++;\n}\n\n// Remove a reference to the global mouse listener\nfunction removeGlobalMouseListener() {\n  listenerRefCount--;\n  if (listenerRefCount === 0) {\n    window.document.removeEventListener(\"mousemove\", globalMouseMoveHandler);\n  }\n}\n\n// We use a single global event listener with reference counting because there is no way to get the\n// mouse position aside from an event. The listener is only active when at least one component needs it.\nfunction useCursorPositionRef() {\n  useEffect(() => {\n    addGlobalMouseListener();\n    return () => {\n      removeGlobalMouseListener();\n    };\n  }, []);\n\n  return cursorPositionRef;\n}\n\n// CSS hover state is not respected if the cursor is already over the node when\n// it is added to the DOM. This hook allows your component to know its hover\n// state on mount without waiting for the mouse to move.\n// https://stackoverflow.com/a/13259049/1263117\nexport function useIsHovered() {\n  const cursorRef = useCursorPositionRef();\n  const [hover, setHover] = useState(false);\n  const [node, setNode] = useState<HTMLElement | null>(null);\n\n  useLayoutEffect(() => {\n    if (node == null) {\n      setHover(false);\n      return;\n    }\n    const domRect = node.getBoundingClientRect();\n    const { pageX, pageY } = cursorRef.current;\n    setHover(\n      pageX >= domRect.left &&\n        pageX <= domRect.right &&\n        pageY >= domRect.top &&\n        pageY <= domRect.bottom\n    );\n\n    const enter = () => setHover(true);\n    const leave = () => setHover(false);\n    node.addEventListener(\"mouseenter\", enter);\n    node.addEventListener(\"mouseleave\", leave);\n\n    return () => {\n      node.removeEventListener(\"mouseenter\", enter);\n      node.removeEventListener(\"mouseleave\", leave);\n    };\n  }, [node, cursorRef]);\n\n  return { ref: setNode, hover };\n}\n\nexport function useOnClickAway(\n  ref: Element | null,\n  callback: null | (() => void)\n) {\n  useEffect(() => {\n    if (ref == null || callback == null) {\n      return;\n    }\n\n    const handleClickOut = (ee: MouseEvent) => {\n      const clickOutTarget = ee.target;\n      if (!(clickOutTarget instanceof Element)) {\n        // TypeScript doesn't realize this will always be true\n        return;\n      }\n      if (ref.contains(clickOutTarget)) {\n        return;\n      }\n      // If the click is _not_ inside the menu.\n      callback();\n      window.document.removeEventListener(\"click\", handleClickOut, {\n        capture: true,\n      });\n    };\n\n    window.document.addEventListener(\"click\", handleClickOut, {\n      capture: true,\n    });\n\n    return () => {\n      window.document.removeEventListener(\"click\", handleClickOut, {\n        capture: true,\n      });\n    };\n  }, [ref, callback]);\n}\n\n// TODO: Return useSelector directly and apply the type without wrapping\nexport function useTypedSelector<T>(selector: (state: AppState) => T): T {\n  return useSelector(selector);\n}\n\nexport function useActionCreator<T extends (...args: any[]) => Action | Thunk>(\n  actionCreator: T\n): (...funcArgs: Parameters<T>) => void {\n  const dispatch = useTypedDispatch();\n  return useCallback(\n    (...args) => dispatch(actionCreator(...args)),\n    [dispatch, actionCreator]\n  );\n}\n\nexport function useTypedDispatch(): (action: Action | Thunk) => void {\n  // useDispatch does not know about thunks. In theory this should be solvable, but I haven't bothered to figure it out:\n  // https://redux.js.org/usage/usage-with-typescript#type-checking-redux-thunks\n  // @ts-ignore\n  return useDispatch();\n}\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import { useState, useEffect, memo } from \"react\";\nimport {\n  WINDOW_RESIZE_SEGMENT_WIDTH,\n  WINDOW_RESIZE_SEGMENT_HEIGHT,\n} from \"../constants\";\nimport * as Utils from \"../utils\";\n\ntype Size = [number, number];\n\ninterface Props {\n  currentSize: Size;\n  setWindowSize(size: Size): void;\n  widthOnly?: boolean;\n  id?: string;\n}\n\nfunction ResizeTarget(props: Props) {\n  const { currentSize, setWindowSize, widthOnly, ...passThroughProps } = props;\n  const [mouseDown, setMouseDown] = useState(false);\n  const [mouseStart, setMouseStart] = useState<null | { x: number; y: number }>(\n    null\n  );\n  useEffect(() => {\n    if (mouseDown === false || mouseStart == null) {\n      return;\n    }\n    const [width, height] = currentSize;\n    const handleMove = (ee: MouseEvent | TouchEvent) => {\n      const x = Utils.getX(ee) - mouseStart.x;\n      const y = Utils.getY(ee) - mouseStart.y;\n\n      const newWidth = Math.max(\n        0,\n        width + Math.round(x / WINDOW_RESIZE_SEGMENT_WIDTH)\n      );\n\n      const newHeight = widthOnly\n        ? width\n        : Math.max(0, height + Math.round(y / WINDOW_RESIZE_SEGMENT_HEIGHT));\n\n      const newSize: Size = [newWidth, newHeight];\n\n      props.setWindowSize(newSize);\n    };\n\n    window.addEventListener(\"mousemove\", handleMove);\n    window.addEventListener(\"touchmove\", handleMove);\n\n    const handleMouseUp = () => setMouseDown(false);\n    window.addEventListener(\"mouseup\", handleMouseUp);\n    window.addEventListener(\"touchend\", handleMouseUp);\n\n    return () => {\n      window.removeEventListener(\"mousemove\", handleMove);\n      window.removeEventListener(\"touchmove\", handleMove);\n      window.removeEventListener(\"mouseup\", handleMouseUp);\n      window.removeEventListener(\"touchend\", handleMouseUp);\n    };\n    // We pruposefully close over the props from when the mouse went down\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [mouseStart, mouseDown]);\n\n  const handleMouseDown = (\n    e: React.MouseEvent<HTMLDivElement> | React.TouchEvent<HTMLDivElement>\n  ) => {\n    setMouseStart({\n      x: Utils.getX(e),\n      y: Utils.getY(e),\n    });\n    setMouseDown(true);\n  };\n\n  return (\n    <div\n      onMouseDown={handleMouseDown}\n      onTouchStart={handleMouseDown}\n      {...passThroughProps}\n    />\n  );\n}\nexport default memo(ResizeTarget);\n","import { useCallback, useState, useEffect } from \"react\";\nimport { WindowId } from \"../types\";\nimport * as Actions from \"../actionCreators\";\nimport * as Selectors from \"../selectors\";\nimport { useActionCreator, useTypedSelector } from \"../hooks\";\n\ninterface Props {\n  onKeyDown?(e: KeyboardEvent): void;\n  windowId: WindowId;\n  children: React.ReactNode;\n}\n\nfunction FocusTarget({ onKeyDown, windowId, children }: Props) {\n  const focusedWindowId = useTypedSelector(Selectors.getFocusedWindow);\n  const setFocus = useActionCreator(Actions.setFocusedWindow);\n\n  const focusHandler = useCallback(() => {\n    if (windowId !== focusedWindowId) {\n      setFocus(windowId);\n    }\n  }, [windowId, focusedWindowId, setFocus]);\n\n  const [ref, setRef] = useState<HTMLDivElement | null>(null);\n\n  useEffect(() => {\n    if (ref == null || onKeyDown == null) {\n      return;\n    }\n    ref.addEventListener(\"keydown\", onKeyDown);\n    return () => ref.removeEventListener(\"keydown\", onKeyDown);\n  }, [onKeyDown, windowId, focusedWindowId, ref]);\n\n  // It's possible for a child component to gain focus and then become\n  // unmounted. In that case, the browser will return focus to the `<body>`.\n  // In the following hook, use a `MutationObserver` to watch for that behavior\n  // and refocus the containing FocusTarget when it happens.\n  //\n  // I tried a number of other approaches using `focus/blur/focusin/focusout` on\n  // various DOM nodes, and was unable to find a solution which would trigger in\n  // this senario in Firefox. Therefore we use this `MutationObserver` approach.\n  useEffect(() => {\n    // Only create the `MutationObserver` within the currently focused target.\n    if (ref == null || windowId !== focusedWindowId) {\n      return;\n    }\n\n    const observer = new MutationObserver((mutations) => {\n      // In the common case we won't have focused the body, so we can do this\n      // inexpensive check first to avoid calling the more expensive `O(n)`\n      // check of the individual mutations.\n      if (document.activeElement !== document.body) {\n        return;\n      }\n      if (mutations.some((mutation) => mutation.removedNodes.length > 0)) {\n        ref.focus();\n      }\n    });\n\n    observer.observe(ref, {\n      subtree: true,\n      attributes: false,\n      childList: true,\n    });\n\n    return () => observer.disconnect();\n  }, [windowId, focusedWindowId, ref]);\n\n  return (\n    <div\n      ref={setRef}\n      onPointerDown={focusHandler}\n      onFocus={focusHandler}\n      tabIndex={-1}\n      style={{ height: \"100%\", width: \"100%\" }}\n    >\n      {children}\n    </div>\n  );\n}\n\nexport default FocusTarget;\n","import classnames from \"classnames\";\nimport {\n  useCallback,\n  DetailedHTMLProps,\n  HTMLAttributes,\n  useState,\n  PointerEvent as ReactPointerEvent,\n} from \"react\";\n\nconst ACTIVE_CLASSNAME = \"winamp-active\";\nconst LEFT_MOUSE_NUMBER = 0;\n\ninterface DetailedHTMLPropsAndMore\n  extends DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement> {\n  requireClicksOriginateLocally?: boolean;\n}\n\ntype Props = DetailedHTMLPropsAndMore;\n\n/**\n * Renders a `div` with an `.winamp-active` class if the element is being clicked/tapped.\n *\n * For now this mimicks the behavior of `:active`, but in the future we will use\n * this component to mimic Winamp's behavior, which is quite different than\n * `:active`.\n *\n * https://html.spec.whatwg.org/multipage/semantics-other.html#selector-active\n *\n * > An element is said to be being actively pointed at while the user indicates\n * > the element using a pointing device while that pointing device is in the\n * > \"down\" state (e.g. for a mouse, between the time the mouse button is pressed\n * > and the time it is depressed; for a finger in a multitouch environment, while\n * > the finger is touching the display surface).\n */\nexport default function WinampButton({\n  requireClicksOriginateLocally = true,\n  onPointerDown: originalOnPointerDown,\n  className,\n  ...htmlProps\n}: Props): JSX.Element {\n  const [active, setActive] = useState(false);\n\n  const onPointerDown = useCallback(\n    (e: ReactPointerEvent<HTMLDivElement>) => {\n      if (originalOnPointerDown != null) {\n        originalOnPointerDown(e);\n      }\n      // Release the pointer capture\n      // https://w3c.github.io/pointerevents/#implicit-pointer-capture\n      // https://w3c.github.io/pointerevents/#pointer-capture\n      if (!requireClicksOriginateLocally) {\n        // @ts-ignore\n        e.target.releasePointerCapture(e.pointerId);\n      }\n      // We only care about left mouse.\n      // -1 button comes on onPointerEnter so we allow that.\n      if (\n        e.nativeEvent.button !== -1 &&\n        e.nativeEvent.button !== LEFT_MOUSE_NUMBER\n      ) {\n        return;\n      }\n      setActive(true);\n\n      function onRelease(ee: PointerEvent) {\n        setActive(false);\n        document.removeEventListener(\"pointerup\", onRelease);\n      }\n      document.addEventListener(\"pointerup\", onRelease);\n    },\n    [originalOnPointerDown, requireClicksOriginateLocally]\n  );\n\n  // We watch for events onPointerEnter only when requireClicksOriginateLocally === false\n  // If the pointer enters the WinampButton area, and the pointer button is already down, trigger a PointerDown\n  const onPointerEnter = (e: React.PointerEvent<HTMLDivElement>) => {\n    if (e.buttons === 1) {\n      // Emit a CustomEvent pointerup to get the other buttons to release.\n      // Add a special -42 detail value so we can identify this event elsewhere and ignore if needed.\n      document.dispatchEvent(\n        new CustomEvent(\"pointerup\", {\n          detail: -42,\n        })\n      );\n      // Simulate a pointerdown on the current button\n      onPointerDown(e);\n    }\n  };\n\n  return (\n    <div\n      {...htmlProps}\n      className={classnames(className, { [ACTIVE_CLASSNAME]: active })}\n      onPointerDown={onPointerDown}\n      onPointerEnter={\n        requireClicksOriginateLocally ? undefined : onPointerEnter\n      }\n    />\n  );\n}\n","import * as React from \"react\";\nimport classnames from \"classnames\";\n\nimport * as Actions from \"../../actionCreators\";\nimport * as Selectors from \"../../selectors\";\nimport ResizeTarget from \"../ResizeTarget\";\nimport { WindowId } from \"../../types\";\nimport FocusTarget from \"../FocusTarget\";\nimport { useActionCreator, useTypedSelector } from \"../../hooks\";\nimport WinampButton from \"../WinampButton\";\n\ninterface TextProps {\n  children: string;\n}\n\nconst Text = ({ children }: TextProps) => {\n  const letters = children.split(\"\");\n  return (\n    <React.Fragment>\n      {letters.map((letter, i) => (\n        <div\n          key={i}\n          className={`draggable gen-text-letter gen-text-${\n            letter === \" \" ? \"space\" : letter.toLowerCase()\n          }`}\n        />\n      ))}\n    </React.Fragment>\n  );\n};\n\nconst CHROME_WIDTH = 19;\nconst CHROME_HEIGHT = 34;\n\ninterface WindowSize {\n  width: number;\n  height: number;\n}\n\ninterface Props {\n  windowId: WindowId;\n  children: (windowSize: WindowSize) => React.ReactNode;\n  title: string;\n  onKeyDown?(e: KeyboardEvent): void;\n}\n\n// Named export for testing\nexport const GenWindow = ({ children, title, windowId, onKeyDown }: Props) => {\n  const setWindowSize = useActionCreator(Actions.setWindowSize);\n  const closeWindow = useActionCreator(Actions.closeWindow);\n  const getWindowPixelSize = useTypedSelector(Selectors.getWindowPixelSize);\n  const focusedWindow = useTypedSelector(Selectors.getFocusedWindow);\n  const getWindowSize = useTypedSelector(Selectors.getWindowSize);\n  const windowSize = getWindowSize(windowId);\n  const selected = focusedWindow === windowId;\n  const { width, height } = getWindowPixelSize(windowId);\n  return (\n    <FocusTarget windowId={windowId} onKeyDown={onKeyDown}>\n      <div\n        className={classnames(\"gen-window\", \"window\", { selected })}\n        style={{ width, height }}\n      >\n        <div className=\"gen-top draggable\">\n          <div className=\"gen-top-left draggable\" />\n          <div className=\"gen-top-left-fill draggable\" />\n          <div className=\"gen-top-left-end draggable\" />\n          <div className=\"gen-top-title draggable\">\n            <Text>{title}</Text>\n          </div>\n          <div className=\"gen-top-right-end draggable\" />\n          <div className=\"gen-top-right-fill draggable\" />\n          <div className=\"gen-top-right draggable\">\n            <WinampButton\n              className=\"gen-close selected\"\n              onClick={() => closeWindow(windowId)}\n            />\n          </div>\n        </div>\n        <div className=\"gen-middle\">\n          <div className=\"gen-middle-left draggable\">\n            <div className=\"gen-middle-left-bottom draggable\" />\n          </div>\n          <div className=\"gen-middle-center\">\n            {children({\n              width: width - CHROME_WIDTH,\n              height: height - CHROME_HEIGHT,\n            })}\n          </div>\n          <div className=\"gen-middle-right draggable\">\n            <div className=\"gen-middle-right-bottom draggable\" />\n          </div>\n        </div>\n        <div className=\"gen-bottom draggable\">\n          <div className=\"gen-bottom-left draggable\" />\n          <div className=\"gen-bottom-right draggable\">\n            <ResizeTarget\n              currentSize={windowSize}\n              setWindowSize={(size) => setWindowSize(windowId, size)}\n              id={\"gen-resize-target\"}\n            />\n          </div>\n        </div>\n      </div>\n    </FocusTarget>\n  );\n};\n\nexport default GenWindow;\n","import { useEffect, useState, useRef } from \"react\";\nimport { VISUALIZERS } from \"../../constants\";\nimport * as Selectors from \"../../selectors\";\nimport { TransitionType } from \"../../types\";\nimport { useTypedSelector } from \"../../hooks\";\n\ntype ButterchurnVisualizer = {\n  setRendererSize(width: number, height: number): void;\n  loadPreset(preset: Object, transitionTime: number): void;\n  launchSongTitleAnim(title: string): void;\n  render(): void;\n};\n\ninterface Props {\n  analyser: AnalyserNode;\n  height: number;\n  width: number;\n}\n\nconst TRANSITION_TYPE_DURATIONS = {\n  [TransitionType.DEFAULT]: 2.7,\n  [TransitionType.IMMEDIATE]: 0,\n  [TransitionType.USER_PRESET]: 5.7,\n};\n\nfunction Visualizer({ analyser, width, height }: Props) {\n  const visualizerStyle = useTypedSelector(Selectors.getVisualizerStyle);\n  const playing = useTypedSelector(Selectors.getMediaIsPlaying);\n  const butterchurn = useTypedSelector(Selectors.getButterchurn);\n  const trackTitle = useTypedSelector(Selectors.getCurrentTrackDisplayName);\n  const currentPreset = useTypedSelector(Selectors.getCurrentPreset);\n  const transitionType = useTypedSelector(Selectors.getPresetTransitionType);\n  const message = useTypedSelector(Selectors.getMilkdropMessage);\n\n  const isEnabledVisualizer = visualizerStyle === VISUALIZERS.MILKDROP;\n\n  const canvasRef = useRef(null);\n  const [visualizer, setVisualizer] = useState<ButterchurnVisualizer | null>(\n    null\n  );\n\n  // Initialize the visualizer\n  useEffect(() => {\n    if (canvasRef.current == null || butterchurn == null) {\n      return;\n    }\n    if (visualizer != null) {\n      // Note: The visualizer does not offer anyway to clean itself up. So, we\n      // don't offer any way to recreate it. So, if you swap out the analyser\n      // node, or the canvas, that change won't be respected.\n      return;\n    }\n    const _visualizer = butterchurn.createVisualizer(\n      analyser.context,\n      canvasRef.current,\n      {\n        width,\n        height,\n        meshWidth: 32,\n        meshHeight: 24,\n        pixelRatio: window.devicePixelRatio || 1,\n        // Webamp may support rendering Milkdrop presets from untrusted sources.\n        // By using `onlyUseWASM` here we instruct Butterchurn not to `eval`\n        // JavaScript code included in older Butterchurn preset `.json` files.\n        // https://jordaneldredge.com/blog/speeding-up-winamps-music-visualizer-with-webassembly/#security\n        onlyUseWASM: true,\n      }\n    );\n    _visualizer.connectAudio(analyser);\n    setVisualizer(_visualizer);\n  }, [butterchurn, analyser, height, width, visualizer]);\n\n  // Ensure render size stays up to date\n  useEffect(() => {\n    if (visualizer == null) {\n      return;\n    }\n    visualizer.setRendererSize(width, height);\n  }, [visualizer, width, height]);\n\n  // Load presets when they change\n  const hasLoadedPreset = useRef<boolean>(false);\n  useEffect(() => {\n    if (visualizer == null || currentPreset == null) {\n      return;\n    }\n    if (hasLoadedPreset.current) {\n      visualizer.loadPreset(\n        currentPreset,\n        TRANSITION_TYPE_DURATIONS[transitionType]\n      );\n    } else {\n      visualizer.loadPreset(\n        currentPreset,\n        TRANSITION_TYPE_DURATIONS[TransitionType.IMMEDIATE]\n      );\n      hasLoadedPreset.current = true;\n    }\n    // We don't want to trigger the transition if the transition type changes.\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [visualizer, currentPreset]);\n\n  // Handle title animations\n  useEffect(() => {\n    if (visualizer == null || !trackTitle) {\n      return;\n    }\n    visualizer.launchSongTitleAnim(trackTitle);\n  }, [visualizer, trackTitle]);\n\n  const lastShownMessage = useRef<null | number>(null);\n\n  useEffect(() => {\n    if (visualizer == null || message == null) {\n      return;\n    }\n    if (\n      lastShownMessage.current == null ||\n      message.time > lastShownMessage.current\n    ) {\n      lastShownMessage.current = Date.now();\n      visualizer.launchSongTitleAnim(message.text);\n    }\n  }, [visualizer, message]);\n\n  const shouldAnimate = playing && isEnabledVisualizer;\n\n  // Kick off the animation loop\n  useEffect(() => {\n    if (!shouldAnimate || visualizer == null) {\n      return;\n    }\n    let animationFrameRequest: number | null = null;\n    const loop = () => {\n      visualizer.render();\n      animationFrameRequest = window.requestAnimationFrame(loop);\n    };\n    loop();\n    return () => {\n      if (animationFrameRequest != null) {\n        window.cancelAnimationFrame(animationFrameRequest);\n      }\n    };\n  }, [visualizer, shouldAnimate]);\n\n  return (\n    <canvas\n      height={height}\n      width={width}\n      style={{\n        height: \"100%\",\n        width: \"100%\",\n        display: isEnabledVisualizer ? \"block\" : \"none\",\n      }}\n      ref={canvasRef}\n    />\n  );\n}\n\nexport default Visualizer;\n","import * as React from \"react\";\n\ninterface Props {\n  innerRef?: (node: HTMLDivElement) => void;\n  children: React.ReactNode;\n}\n\nconst Background = (props: Props) => {\n  const { innerRef } = props;\n  return (\n    <div\n      ref={innerRef}\n      className=\"draggable\"\n      style={{\n        // This color will be used until Butterchurn is loaded\n        backgroundColor: \"#000\",\n        position: \"absolute\",\n        top: 0,\n        bottom: 0,\n        left: 0,\n        right: 0,\n        height: \"100%\",\n        width: \"100%\",\n      }}\n      tabIndex={0}\n    >\n      {props.children}\n    </div>\n  );\n};\n\nexport default Background;\n","import { useState, useCallback } from \"react\";\nimport { promptForFileReferences } from \"../../fileUtils\";\nimport * as Selectors from \"../../selectors\";\nimport * as Actions from \"../../actionCreators\";\nimport { clamp } from \"../../utils\";\nimport { TransitionType } from \"../../types\";\nimport {\n  useUnmountedRef,\n  useActionCreator,\n  useTypedSelector,\n} from \"../../hooks\";\n\nconst ENTRY_HEIGHT = 14;\nconst HEIGHT_PADDING = 15;\nconst WIDTH_PADDING = 20;\n\nconst LOADING_STYLE: React.CSSProperties = {\n  position: \"absolute\",\n  top: 0,\n  left: 0,\n  color: \"white\",\n  background: \"rgba(0.33, 0.33, 0.33, 0.33)\",\n};\n\nconst OUTER_WRAPPER_STYLE: React.CSSProperties = {\n  position: \"absolute\",\n  top: 0,\n  left: 0,\n  padding: \"15px 10px 0 10px\",\n};\n\nconst INNER_WRAPPER_STYLE: React.CSSProperties = {\n  display: \"inline-block\",\n  whiteSpace: \"nowrap\",\n  overflow: \"hidden\",\n  background: \"rgba(0, 0, 0, 0.815)\",\n  fontSize: \"12px\",\n};\n\ninterface Props {\n  height: number;\n  width: number;\n}\n\nfunction presetIndexFromListIndex(listIndex: number) {\n  return listIndex - 1;\n}\n\nfunction listIndexFromPresetIndex(listIndex: number) {\n  return listIndex + 1;\n}\n\nfunction PresetOverlay({ height, width }: Props) {\n  const presetKeys = useTypedSelector(Selectors.getPresetNames);\n  const currentPresetIndex = useTypedSelector(Selectors.getCurrentPresetIndex);\n  const requestPresetAtIndex = useActionCreator(Actions.requestPresetAtIndex);\n  const togglePresetOverlay = useActionCreator(Actions.togglePresetOverlay);\n  const appendPresetFileList = useActionCreator(Actions.appendPresetFileList);\n\n  const unmountedRef = useUnmountedRef();\n  const [selectedListIndex, setSelectedListIndex] = useState(() => {\n    if (currentPresetIndex != null) {\n      return listIndexFromPresetIndex(currentPresetIndex);\n    }\n    return 0;\n  });\n\n  // Number of presets, plus one for the \"Load Local Directory\" option, minus\n  // one to convert a length to an index.\n  const maxListIndex = presetKeys.length; // - 1 + 1;\n\n  const renderList = useCallback(() => {\n    const maxVisibleRows = Math.floor((height - HEIGHT_PADDING) / ENTRY_HEIGHT);\n    const rowsToShow = Math.floor(maxVisibleRows * 0.75); // Only fill 3/4 of the screen.\n    const [startIndex, endIndex] = getRangeCenteredOnIndex(\n      maxListIndex + 1, // Add one to convert an index to a length\n      rowsToShow,\n      selectedListIndex\n    );\n\n    const presetElms = [];\n    for (let i = startIndex; i <= endIndex; i++) {\n      const presetIndex = presetIndexFromListIndex(i);\n      const isSelected = i === selectedListIndex;\n      const isCurrent = presetIndex === currentPresetIndex;\n      let color: string;\n      if (isSelected) {\n        color = isCurrent ? \"#FFCC22\" : \"#FF5050\";\n      } else {\n        color = isCurrent ? \"#CCFF03\" : \"#CCCCCC\";\n      }\n      presetElms.push(\n        <li key={i} style={{ color, lineHeight: `${ENTRY_HEIGHT}px` }}>\n          {i === 0 ? \"Load Local Directory\" : presetKeys[presetIndex]}\n        </li>\n      );\n    }\n\n    return presetElms;\n  }, [currentPresetIndex, height, maxListIndex, presetKeys, selectedListIndex]);\n\n  const loadLocalDir = useCallback(async () => {\n    const fileReferences = await promptForFileReferences({ directory: true });\n    if (unmountedRef.current) {\n      return;\n    }\n    appendPresetFileList(fileReferences);\n  }, [appendPresetFileList, unmountedRef]);\n\n  const handleFocusedKeyboardInput = useCallback(\n    (e: React.KeyboardEvent<HTMLDivElement>) => {\n      switch (e.keyCode) {\n        case 38: // up arrow\n          setSelectedListIndex((value) => Math.max(value - 1, 0));\n          e.stopPropagation();\n          break;\n        case 40: // down arrow\n          setSelectedListIndex((value) => Math.min(value + 1, maxListIndex));\n          e.stopPropagation();\n          break;\n        case 13: // enter\n          if (selectedListIndex === 0) {\n            loadLocalDir();\n          } else {\n            requestPresetAtIndex(\n              presetIndexFromListIndex(selectedListIndex),\n              TransitionType.DEFAULT,\n              true\n            );\n          }\n          e.stopPropagation();\n          break;\n        case 27: // escape\n          togglePresetOverlay();\n          e.stopPropagation();\n          break;\n      }\n    },\n    [\n      loadLocalDir,\n      maxListIndex,\n      requestPresetAtIndex,\n      selectedListIndex,\n      togglePresetOverlay,\n    ]\n  );\n\n  const handleNode = useCallback((node: HTMLDivElement | null) => {\n    if (node != null && document.activeElement !== node) {\n      node.focus();\n    }\n  }, []);\n\n  if (presetKeys == null) {\n    return (\n      <div style={LOADING_STYLE}>\n        <span>Loading presets</span>\n      </div>\n    );\n  }\n  return (\n    <div\n      ref={handleNode}\n      tabIndex={-1}\n      style={OUTER_WRAPPER_STYLE}\n      onKeyDown={handleFocusedKeyboardInput}\n    >\n      <div\n        style={{\n          ...INNER_WRAPPER_STYLE,\n          width: width - 20 - WIDTH_PADDING,\n          maxHeight: height - HEIGHT_PADDING,\n        }}\n      >\n        <ul style={{ listStyleType: \"none\", padding: 0, margin: 0 }}>\n          {renderList()}\n        </ul>\n      </div>\n    </div>\n  );\n}\n\n// Find a tuple `[startIndex, endIndex]` representing start/end indexes into an\n// array of length `length`, that descripe a range of size up to `rangeSize`\n// where a best effort is made to center `indexToCenter`.\nexport function getRangeCenteredOnIndex(\n  length: number,\n  maxRangeSize: number,\n  indexToCenter: number\n): [number, number] {\n  const rangeSize = Math.min(length, maxRangeSize);\n  const halfRangeSize = Math.floor(rangeSize / 2);\n  const idealStartIndex = indexToCenter - halfRangeSize;\n  const startIndex = clamp(idealStartIndex, 0, length - rangeSize);\n  const endIndex = startIndex + rangeSize - 1;\n  return [startIndex, endIndex];\n}\nexport default PresetOverlay;\n","import { useCallback, useEffect, useRef } from \"react\";\nimport { useActionCreator } from \"../hooks\";\nimport * as Actions from \"../actionCreators\";\nimport { WindowId } from \"../types\";\n\ninterface Coord {\n  x: number;\n  y: number;\n}\n\ninterface Props extends React.HTMLAttributes<HTMLDivElement> {\n  handleDrop(e: React.DragEvent<HTMLDivElement>, coord: Coord): void;\n  windowId: WindowId;\n  onWheelActive?: (e: WheelEvent) => void;\n}\n\nfunction suppress(e: React.DragEvent<HTMLDivElement>) {\n  e.stopPropagation();\n  e.preventDefault();\n  e.dataTransfer.dropEffect = \"link\";\n  e.dataTransfer.effectAllowed = \"link\";\n}\n\nexport default function DropTarget(props: Props) {\n  const {\n    // eslint-disable-next-line no-shadow, no-unused-vars\n    handleDrop,\n    windowId,\n    onWheelActive,\n    ...passThroughProps\n  } = props;\n\n  const divRef = useRef<HTMLDivElement>(null);\n  const droppedFiles = useActionCreator(Actions.droppedFiles);\n\n  // Register onWheelActive as a non-passive event handler\n  useEffect(() => {\n    const element = divRef.current;\n    if (!element || !onWheelActive) {\n      return;\n    }\n\n    const handleWheel = (e: WheelEvent) => {\n      // Convert native WheelEvent to React.WheelEvent\n      onWheelActive(e);\n    };\n\n    element.addEventListener(\"wheel\", handleWheel, { passive: false });\n\n    return () => {\n      element.removeEventListener(\"wheel\", handleWheel);\n    };\n  }, [onWheelActive]);\n\n  const onDrop = useCallback(\n    (e: React.DragEvent<HTMLDivElement>) => {\n      suppress(e);\n      droppedFiles(e, windowId);\n      // TODO: We could probably move this coordinate logic into the playlist.\n      // I think that's the only place it gets used.\n      const { currentTarget } = e;\n      if (!(currentTarget instanceof Element)) {\n        return;\n      }\n\n      const { left: x, top: y } = currentTarget.getBoundingClientRect();\n      handleDrop(e, { x, y });\n    },\n    [handleDrop, droppedFiles, windowId]\n  );\n  return (\n    <div\n      ref={divRef}\n      {...passThroughProps}\n      onDragStart={suppress}\n      onDragEnter={suppress}\n      onDragOver={suppress}\n      onDrop={onDrop}\n    />\n  );\n}\n","import { useMemo, useEffect } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport classnames from \"classnames\";\n\nimport { useTypedSelector } from \"../hooks\";\nimport * as Selectors from \"../selectors\";\n\ninterface PortalProps {\n  zIndex: number;\n  top: number;\n  left: number;\n  children: JSX.Element[] | JSX.Element;\n}\n\nconst Portal = (props: PortalProps) => {\n  const node: HTMLDivElement = useMemo(() => {\n    const div = document.createElement(\"div\");\n    div.id = \"webamp-context-menu\";\n    div.style.position = \"absolute\";\n    div.style.top = \"0\";\n    div.style.left = \"0\";\n    div.style.zIndex = String(props.zIndex + 1);\n    return div;\n  }, [props.zIndex]);\n\n  useEffect(() => {\n    document.body.appendChild(node);\n    return () => {\n      document.body.removeChild(node);\n    };\n  }, [node]);\n\n  const style: React.CSSProperties = {\n    top: props.top,\n    left: props.left,\n    position: \"absolute\",\n  };\n  return createPortal(<div style={style}>{props.children}</div>, node);\n};\n\nexport const Hr = () => (\n  <li className=\"hr\">\n    <hr />\n  </li>\n);\n\ninterface ParentProps {\n  label: string;\n  children: React.ReactNode;\n}\n\nexport const Parent = ({ children, label }: ParentProps) => (\n  <li className=\"parent\">\n    <ul>{children}</ul>\n    {label}\n  </li>\n);\n\ninterface LinkNodeProps {\n  label: string;\n  href: string;\n  target?: string;\n}\n\nexport const LinkNode = (props: LinkNodeProps) => (\n  <li>\n    <a {...props}>{props.label}</a>\n  </li>\n);\n\ninterface NodeProps {\n  label: string;\n  checked?: boolean;\n  hotkey?: string;\n  className?: string;\n  // TODO: Figure out how to do passthrough props\n  onClick?: () => void;\n}\n\nexport const Node = (props: NodeProps) => {\n  const { label, checked, className = \"\", ...passThroughProps } = props;\n  return (\n    <li className={classnames(className, { checked })} {...passThroughProps}>\n      {label}\n    </li>\n  );\n};\n\ninterface ContextMenuProps {\n  children: React.ReactNode;\n  offsetTop: number;\n  offsetLeft: number;\n  top?: boolean;\n  bottom?: boolean;\n  // TODO: Remove this. Just conditionally render in the parent.\n  selected: boolean;\n}\n\nexport default function ContextMenu({\n  children,\n  offsetTop,\n  offsetLeft,\n  top,\n  bottom,\n  selected,\n}: ContextMenuProps) {\n  const zIndex = useTypedSelector(Selectors.getZIndex);\n  if (!selected) {\n    return null;\n  }\n  return (\n    <Portal top={offsetTop} left={offsetLeft} zIndex={zIndex}>\n      <ul className={classnames(\"context-menu\", { top, bottom })}>\n        {children}\n      </ul>\n    </Portal>\n  );\n}\n","import { ReactNode, useState, useEffect, useCallback } from \"react\";\nimport ContextMenu from \"./ContextMenu\";\n\ninterface Props {\n  renderContents(): ReactNode;\n  children: ReactNode;\n}\n\n// Trigger a context menu at the user's cursor position when the user right\n// clicks within this component.\n// For a component that triggers relative to a given component when the user\n// left-clicks see `<ContextMenuTarget />`.\n\n// TODO: Consider using nested contexts to ensure we don't ever have multiple\n// non-nested context menus open at a time.\nexport default function ContextMenuWraper({\n  children,\n  renderContents,\n  ...passThroughProps\n}: Props) {\n  const [openPosition, setOpenPosition] = useState<{\n    x: number;\n    y: number;\n  } | null>(null);\n\n  const closeMenu = useCallback(() => {\n    setOpenPosition(null);\n  }, []);\n\n  const handleGlobalClick = useCallback(\n    (e: MouseEvent) => {\n      if (e.button !== 2) {\n        closeMenu();\n      }\n    },\n    [closeMenu]\n  );\n\n  const handleRightClick = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      const { pageX, pageY } = e;\n      // TODO: We could do an initial render to see if the menu fits here\n      // and do a second render if it does not.\n      setOpenPosition({ x: pageX, y: pageY });\n      e.preventDefault();\n      e.stopPropagation();\n    },\n    []\n  );\n\n  // Add click-away listeners when window is open\n  useEffect(() => {\n    if (openPosition == null) {\n      return;\n    }\n    document.addEventListener(\"click\", handleGlobalClick);\n    document.body.addEventListener(\"contextmenu\", closeMenu);\n\n    return () => {\n      document.removeEventListener(\"click\", handleGlobalClick);\n      document.body.removeEventListener(\"contextmenu\", closeMenu);\n    };\n  }, [openPosition, closeMenu, handleGlobalClick]);\n\n  return (\n    <div\n      onContextMenu={handleRightClick}\n      style={{ width: \"100%\", height: \"100%\" }}\n      {...passThroughProps}\n    >\n      <ContextMenu\n        selected={openPosition != null}\n        offsetTop={openPosition?.y ?? 0}\n        offsetLeft={openPosition?.x ?? 0}\n      >\n        {renderContents()}\n      </ContextMenu>\n      {children}\n    </div>\n  );\n}\n","import { ReactNode } from \"react\";\nimport { Hr, Node } from \"../ContextMenu\";\nimport { WINDOWS } from \"../../constants\";\nimport * as Selectors from \"../../selectors\";\nimport * as Actions from \"../../actionCreators\";\nimport ContextMenuWrapper from \"../ContextMenuWrapper\";\nimport { useTypedSelector, useActionCreator } from \"../../hooks\";\nimport fscreen from \"fscreen\";\n\ninterface Props {\n  children: ReactNode;\n}\n\nconst MilkdropContextMenu = (props: Props) => {\n  const desktop = useTypedSelector(Selectors.getMilkdropDesktopEnabled);\n\n  const closeWindow = useActionCreator(Actions.closeWindow);\n  const toggleDesktop = useActionCreator(Actions.toggleMilkdropDesktop);\n  const toggleFullscreen = useActionCreator(Actions.toggleMilkdropFullscreen);\n\n  return (\n    <ContextMenuWrapper\n      renderContents={() => {\n        return (\n          <>\n            {fscreen.fullscreenEnabled && (\n              <Node\n                onClick={toggleFullscreen}\n                label=\"Fullscreen\"\n                hotkey=\"Alt+Enter\"\n              />\n            )}\n            <Node\n              onClick={toggleDesktop}\n              checked={desktop}\n              label=\"Desktop Mode\"\n              hotkey=\"Alt+D\"\n            />\n            <Hr />\n            <Node onClick={() => closeWindow(WINDOWS.MILKDROP)} label=\"Quit\" />\n          </>\n        );\n      }}\n    >\n      {props.children}\n    </ContextMenuWrapper>\n  );\n};\n\nexport default MilkdropContextMenu;\n","import * as React from \"react\";\nimport { ReactNode } from \"react\";\nimport ReactDOM from \"react-dom\";\n\ninterface Props {\n  children: ReactNode;\n}\n\nconst Desktop = React.memo(({ children }: Props) => {\n  const [desktopNode] = React.useState(() => document.createElement(\"div\"));\n\n  React.useEffect(() => {\n    desktopNode.classList.add(\"webamp-desktop\");\n    document.body.appendChild(desktopNode);\n    return () => {\n      document.body.removeChild(desktopNode);\n    };\n  }, [desktopNode]);\n\n  return ReactDOM.createPortal(children, desktopNode);\n});\n\nexport default Desktop;\n","import { useEffect, useCallback } from \"react\";\nimport Fullscreen from \"../Fullscreen\";\nimport {\n  useWindowSize,\n  useScreenSize,\n  useTypedSelector,\n  useActionCreator,\n} from \"../../hooks\";\nimport GenWindow from \"../GenWindow\";\nimport { WINDOWS } from \"../../constants\";\nimport * as Selectors from \"../../selectors\";\nimport * as Actions from \"../../actionCreators\";\nimport { TransitionType } from \"../../types\";\nimport Visualizer from \"./Visualizer\";\n\nimport Background from \"./Background\";\nimport PresetOverlay from \"./PresetOverlay\";\nimport DropTarget from \"../DropTarget\";\nimport MilkdropContextMenu from \"./MilkdropContextMenu\";\nimport Desktop from \"./Desktop\";\nimport fscreen from \"fscreen\";\n\nconst MILLISECONDS_BETWEEN_PRESET_TRANSITIONS = 15000;\n\ninterface Props {\n  analyser: AnalyserNode;\n}\n\nfunction useKeyHandler() {\n  const trackTitle = useTypedSelector(Selectors.getCurrentTrackDisplayName);\n\n  const selectNextPreset = useActionCreator(Actions.selectNextPreset);\n  const selectPreviousPreset = useActionCreator(Actions.selectPreviousPreset);\n  const toggleRandomize = useActionCreator(Actions.toggleRandomizePresets);\n  const togglePresetOverlay = useActionCreator(Actions.togglePresetOverlay);\n  const scheduleMilkdropMessage = useActionCreator(\n    Actions.scheduleMilkdropMessage\n  );\n  const toggleCycling = useActionCreator(Actions.togglePresetCycling);\n\n  // Handle keyboard events\n  return useCallback(\n    (e: KeyboardEvent) => {\n      switch (e.keyCode) {\n        case 32: // spacebar\n          selectNextPreset();\n          break;\n        case 8: // backspace\n          selectPreviousPreset(TransitionType.IMMEDIATE);\n          break;\n        case 72: // H\n          selectNextPreset(TransitionType.IMMEDIATE);\n          break;\n        case 82: // R\n          toggleRandomize();\n          break;\n        case 76: // L\n          togglePresetOverlay();\n          e.stopPropagation();\n          break;\n        case 84: // T\n          if (trackTitle != null) {\n            scheduleMilkdropMessage(trackTitle);\n          }\n          e.stopPropagation();\n          break;\n        case 145: // scroll lock\n        case 125: // F14 (scroll lock for OS X)\n          toggleCycling();\n          break;\n      }\n    },\n    [\n      scheduleMilkdropMessage,\n      selectNextPreset,\n      selectPreviousPreset,\n      toggleCycling,\n      togglePresetOverlay,\n      toggleRandomize,\n      trackTitle,\n    ]\n  );\n}\n\nfunction Milkdrop({ analyser }: Props) {\n  const desktop = useTypedSelector(Selectors.getMilkdropDesktopEnabled);\n  const fullscreen = useTypedSelector(Selectors.getMilkdropFullscreenEnabled);\n  const overlay = useTypedSelector(Selectors.getPresetOverlayOpen);\n  const presetsAreCycling = useTypedSelector(Selectors.getPresetsAreCycling);\n  const currentPresetIndex = useTypedSelector(Selectors.getCurrentPresetIndex);\n  const mediaIsPlaying = useTypedSelector(Selectors.getMediaIsPlaying);\n\n  const toggleFullscreen = useActionCreator(Actions.toggleMilkdropFullscreen);\n  const selectNextPreset = useActionCreator(Actions.selectNextPreset);\n  const handlePresetDrop = useActionCreator(Actions.handlePresetDrop);\n  const setFullscreen = useActionCreator(Actions.setMilkdropFullscreen);\n\n  const handleKeyDown = useKeyHandler();\n\n  // Cycle presets\n  useEffect(() => {\n    if (!presetsAreCycling || !mediaIsPlaying) {\n      return;\n    }\n    const intervalId = setInterval(\n      selectNextPreset,\n      MILLISECONDS_BETWEEN_PRESET_TRANSITIONS\n    );\n    return () => clearInterval(intervalId);\n  }, [presetsAreCycling, currentPresetIndex, mediaIsPlaying, selectNextPreset]);\n\n  const screenSize = useScreenSize();\n  const windowSize = useWindowSize();\n\n  const toggleFullScreenIfEnabled = useCallback(() => {\n    if (fscreen.fullscreenEnabled) {\n      toggleFullscreen();\n    }\n  }, [toggleFullscreen]);\n\n  if (desktop) {\n    return (\n      <Desktop>\n        <MilkdropContextMenu>\n          <Visualizer {...windowSize} analyser={analyser} />\n        </MilkdropContextMenu>\n      </Desktop>\n    );\n  }\n\n  return (\n    <GenWindow\n      title={\"Milkdrop\"}\n      windowId={WINDOWS.MILKDROP}\n      onKeyDown={handleKeyDown}\n    >\n      {(genWindowSize: { width: number; height: number }) => {\n        const size = fullscreen ? screenSize : genWindowSize;\n        return (\n          <MilkdropContextMenu>\n            <Background>\n              <DropTarget\n                windowId={WINDOWS.MILKDROP}\n                handleDrop={handlePresetDrop}\n              >\n                {overlay && <PresetOverlay {...size} />}\n                <Fullscreen enabled={fullscreen} onChange={setFullscreen}>\n                  <div onDoubleClick={toggleFullScreenIfEnabled}>\n                    <Visualizer {...size} analyser={analyser} />\n                  </div>\n                </Fullscreen>\n              </DropTarget>\n            </Background>\n          </MilkdropContextMenu>\n        );\n      }}\n    </GenWindow>\n  );\n}\nexport default Milkdrop;\n","import { Fragment } from \"react\";\nimport * as Actions from \"../actionCreators\";\nimport { Hr, Node } from \"./ContextMenu\";\nimport { useActionCreator } from \"../hooks\";\n\nconst PlaybackContextMenu = () => {\n  const previous = useActionCreator(Actions.previous);\n  const play = useActionCreator(Actions.play);\n  const pause = useActionCreator(Actions.pause);\n  const stop = useActionCreator(Actions.stop);\n  const next = useActionCreator(Actions.next);\n  const seekForward = useActionCreator(Actions.seekForward);\n  const seekBackward = useActionCreator(Actions.seekBackward);\n  const nextN = useActionCreator(Actions.nextN);\n  return (\n    <Fragment>\n      <Node label=\"Previous\" hotkey=\"Z\" onClick={previous} />\n      <Node label=\"Play\" hotkey=\"X\" onClick={play} />\n      <Node label=\"Pause\" hotkey=\"C\" onClick={pause} />\n      <Node label=\"Stop\" hotkey=\"V\" onClick={stop} />\n      <Node label=\"Next\" hotkey=\"B\" onClick={next} />\n      <Hr />\n      {/*\n    <Node label=\"Stop w/ fadeout\" hotkey=\"Shift+V\" />\n    <Node label=\"Stop after current\" hotkey=\"Ctrl+V\" />\n    */}\n      <Node\n        label=\"Back 5 seconds\"\n        hotkey=\"Left\"\n        onClick={() => seekBackward(5)}\n      />\n      <Node\n        label=\"Fwd 5 seconds\"\n        hotkey=\"Right\"\n        onClick={() => seekForward(5)}\n      />\n      {/*\n    <Node label=\"Start of list\" hotkey=\"Ctrl+Z\" />\n    */}\n      <Node label=\"10 tracks back\" hotkey=\"Num. 1\" onClick={() => nextN(-10)} />\n      <Node label=\"10 tracks fwd\" hotkey=\"Num. 3\" onClick={() => nextN(10)} />\n      {/*\n    <Hr />\n    <Node label=\"Jump to time\" hotkey=\"Ctrl+J\" />\n    <Node label=\"Jump to file\" hotkey=\"J\" />\n    */}\n    </Fragment>\n  );\n};\n\nexport default PlaybackContextMenu;\n","import * as Actions from \"../actionCreators\";\nimport * as Selectors from \"../selectors\";\nimport { Hr, Node, Parent } from \"./ContextMenu\";\nimport { useActionCreator, useTypedSelector } from \"../hooks\";\n\nconst SkinContextMenu = () => {\n  const loadDefaultSkin = useActionCreator(Actions.loadDefaultSkin);\n  const openSkinFileDialog = useActionCreator(Actions.openSkinFileDialog);\n  const setSkin = useActionCreator(Actions.setSkinFromUrl);\n\n  const availableSkins = useTypedSelector(Selectors.getAvaliableSkins);\n  return (\n    <Parent label=\"Skins\">\n      <Node onClick={openSkinFileDialog} label=\"Load Skin...\" />\n      <Hr />\n      <Node onClick={loadDefaultSkin} label={\"<Base Skin>\"} />\n      {availableSkins.map((skin) => (\n        <Node\n          key={skin.url}\n          onClick={() => setSkin(skin.url)}\n          label={skin.name}\n        />\n      ))}\n    </Parent>\n  );\n};\nexport default SkinContextMenu;\n","import { Hr, Node } from \"./ContextMenu\";\nimport SkinsContextMenu from \"./SkinsContextMenu\";\nimport * as Actions from \"../actionCreators\";\nimport * as Selectors from \"../selectors\";\nimport { TIME_MODE } from \"../constants\";\nimport { useActionCreator, useTypedSelector } from \"../hooks\";\n\nconst OptionsContextMenu = () => {\n  const toggleTimeMode = useActionCreator(Actions.toggleTimeMode);\n  const toggleDoubleSizeMode = useActionCreator(Actions.toggleDoubleSizeMode);\n  const toggleRepeat = useActionCreator(Actions.toggleRepeat);\n  const toggleShuffle = useActionCreator(Actions.toggleShuffle);\n\n  const doubled = useTypedSelector(Selectors.getDoubled);\n  const timeMode = useTypedSelector(Selectors.getTimeMode);\n  const repeat = useTypedSelector(Selectors.getRepeat);\n  const shuffle = useTypedSelector(Selectors.getShuffle);\n  return (\n    <>\n      {/* <Node label=\"Preferences...\" /> */}\n      <SkinsContextMenu />\n      <Hr />\n      <Node\n        label=\"Time elapsed\"\n        hotkey=\"(Ctrl+T toggles)\"\n        onClick={toggleTimeMode}\n        checked={timeMode === TIME_MODE.ELAPSED}\n      />\n      <Node\n        label=\"Time remaining\"\n        hotkey=\"(Ctrl+T toggles)\"\n        onClick={toggleTimeMode}\n        checked={timeMode === TIME_MODE.REMAINING}\n      />\n      {/* <Node label=\"Always On Top\" hotkey=\"Ctrl+A\" /> */}\n      <Node\n        label=\"Double Size\"\n        hotkey=\"Ctrl+D\"\n        onClick={toggleDoubleSizeMode}\n        checked={doubled}\n      />\n      {/* <Node label=\"EasyMove\" hotkey=\"Ctrl+E\" /> */}\n      <Hr />\n      <Node label=\"Repeat\" hotkey=\"R\" onClick={toggleRepeat} checked={repeat} />\n      <Node\n        label=\"Shuffle\"\n        hotkey=\"S\"\n        onClick={toggleShuffle}\n        checked={shuffle}\n      />\n    </>\n  );\n};\nexport default OptionsContextMenu;\n","import { memo, Fragment, useEffect } from \"react\";\nimport * as Actions from \"../../actionCreators\";\nimport * as Selectors from \"../../selectors\";\nimport { LOAD_STYLE, WINDOWS } from \"../../constants\";\nimport { Hr, Node, Parent, LinkNode } from \"../ContextMenu\";\nimport PlaybackContextMenu from \"../PlaybackContextMenu\";\nimport OptionsContextMenu from \"../OptionsContextMenu\";\nimport SkinsContextMenu from \"../SkinsContextMenu\";\nimport { FilePicker, WindowId } from \"../../types\";\nimport { useTypedSelector, useActionCreator } from \"../../hooks\";\n\ninterface Props {\n  filePickers: FilePicker[];\n}\n\nconst MainContextMenu = memo(({ filePickers }: Props) => {\n  const networkConnected = useTypedSelector(Selectors.getNetworkConnected);\n  const genWindows = useTypedSelector(Selectors.getGenWindows);\n\n  const close = useActionCreator(Actions.close);\n  const openMediaFileDialog = useActionCreator(Actions.openMediaFileDialog);\n  const loadMediaFiles = useActionCreator(Actions.loadMediaFiles);\n  const toggleWindow = useActionCreator(Actions.toggleWindow);\n  const menuOpened = useActionCreator(() => ({\n    type: \"MAIN_CONTEXT_MENU_OPENED\",\n  }));\n  const isMilkdropEnabled = useTypedSelector(Selectors.getMilkdropEnabled);\n\n  useEffect(() => {\n    menuOpened();\n  }, [menuOpened]);\n\n  return (\n    <Fragment>\n      <LinkNode\n        href=\"https://webamp.org/about\"\n        target=\"_blank\"\n        label=\"Webamp...\"\n      />\n      <Hr />\n      <Parent label=\"Play\">\n        <Node onClick={openMediaFileDialog} label=\"File...\" hotkey=\"L\" />\n        {filePickers != null &&\n          filePickers.map(\n            (picker, i) =>\n              (networkConnected || !picker.requiresNetwork) && (\n                <Node\n                  key={i}\n                  onClick={async () => {\n                    let files;\n                    try {\n                      files = await picker.filePicker();\n                    } catch (e) {\n                      console.error(\"Error loading from file picker\", e);\n                    }\n                    loadMediaFiles(files || [], LOAD_STYLE.PLAY);\n                  }}\n                  label={picker.contextMenuName}\n                />\n              )\n          )}\n      </Parent>\n      <Hr />\n      {Object.keys(genWindows).map((i) => {\n        if (i === WINDOWS.MILKDROP && !isMilkdropEnabled) {\n          return null;\n        }\n        return (\n          <Node\n            key={i}\n            label={genWindows[i].title}\n            checked={genWindows[i].open}\n            onClick={() => toggleWindow(i as WindowId)}\n            hotkey={genWindows[i].hotkey}\n          />\n        );\n      })}\n      <Hr />\n      <SkinsContextMenu />\n      <Hr />\n      <Parent label=\"Options\">\n        <OptionsContextMenu />\n      </Parent>\n      <Parent label=\"Playback\">\n        <PlaybackContextMenu />\n      </Parent>\n      <Hr />\n      <Node onClick={close} label=\"Exit\" />\n    </Fragment>\n  );\n});\n\nexport default MainContextMenu;\n","import { ReactNode, useCallback, useEffect, useState } from \"react\";\n\nimport * as SnapUtils from \"../snapUtils\";\nimport * as Selectors from \"../selectors\";\nimport * as Actions from \"../actionCreators\";\nimport { WindowInfo, WindowId, Box, Point } from \"../types\";\nimport { useTypedSelector, useActionCreator } from \"../hooks\";\nimport * as Utils from \"../utils\";\n\nconst abuts = (a: Box, b: Box) => {\n  // TODO: This is kinda a hack. They should really be touching, not just within snapping distance.\n  // Also, overlapping should not count.\n  const wouldMoveTo = SnapUtils.snap(a, b);\n  return wouldMoveTo.x !== undefined || wouldMoveTo.y !== undefined;\n};\n\ninterface Props {\n  windows: { [windowId: string]: ReactNode };\n}\n\ntype DraggingState = {\n  moving: WindowInfo[];\n  stationary: WindowInfo[];\n  boundingBox: Box;\n  mouseStart: Point;\n};\n\nfunction useHandleMouseDown(propsWindows: {\n  [windowId: string]: ReactNode;\n}): (\n  key: WindowId,\n  e: React.MouseEvent<HTMLDivElement> | React.TouchEvent<HTMLDivElement>\n) => void {\n  const windowsInfo = useTypedSelector(Selectors.getWindowsInfo);\n  const getWindowHidden = useTypedSelector(Selectors.getWindowHidden);\n  const browserWindowSize = useTypedSelector(Selectors.getBrowserWindowSize);\n  const updateWindowPositions = useActionCreator(Actions.updateWindowPositions);\n\n  const [draggingState, setDraggingState] = useState<DraggingState | null>(\n    null\n  );\n\n  // When the mouse is down, attach a listener to track mouse move events.\n  useEffect(() => {\n    if (draggingState == null) {\n      return;\n    }\n    const { boundingBox, moving, stationary, mouseStart } = draggingState;\n    const handleMouseMove = (ee: MouseEvent | TouchEvent) => {\n      const proposedDiff = {\n        x: Utils.getX(ee) - mouseStart.x,\n        y: Utils.getY(ee) - mouseStart.y,\n      };\n\n      const proposedWindows = moving.map((node) => ({\n        ...node,\n        ...SnapUtils.applyDiff(node, proposedDiff),\n      }));\n\n      const proposedBox = {\n        ...boundingBox,\n        ...SnapUtils.applyDiff(boundingBox, proposedDiff),\n      };\n\n      const snapDiff = SnapUtils.snapDiffManyToMany(\n        proposedWindows,\n        stationary\n      );\n\n      const withinDiff = SnapUtils.snapWithinDiff(\n        proposedBox,\n        browserWindowSize\n      );\n\n      const finalDiff = SnapUtils.applyMultipleDiffs(\n        proposedDiff,\n        snapDiff,\n        withinDiff\n      );\n\n      const windowPositionDiff: { [windowId: string]: Point } = {};\n      moving.forEach((w) => {\n        windowPositionDiff[w.key] = SnapUtils.applyDiff(w, finalDiff);\n      });\n\n      updateWindowPositions(windowPositionDiff, false);\n    };\n\n    function handleMouseUp() {\n      setDraggingState(null);\n    }\n\n    window.addEventListener(\"mouseup\", handleMouseUp);\n    window.addEventListener(\"touchend\", handleMouseUp);\n\n    window.addEventListener(\"mousemove\", handleMouseMove, { passive: false });\n    window.addEventListener(\"touchmove\", handleMouseMove, { passive: false });\n\n    return () => {\n      window.removeEventListener(\"mousemove\", handleMouseMove);\n      window.removeEventListener(\"touchmove\", handleMouseMove);\n      window.removeEventListener(\"mouseup\", handleMouseUp);\n      window.removeEventListener(\"touchend\", handleMouseUp);\n    };\n  }, [browserWindowSize, draggingState, updateWindowPositions]);\n\n  // Mouse down handler\n  return useCallback(\n    (\n      key: WindowId,\n      e: React.MouseEvent<HTMLDivElement> | React.TouchEvent<HTMLDivElement>\n    ) => {\n      if (!(e.target as HTMLElement).classList.contains(\"draggable\")) {\n        return;\n      }\n\n      const x = Utils.getX(e);\n      const y = Utils.getY(e);\n\n      if (getWindowHidden(key)) {\n        // The user may be clicking on full screen Milkdrop.\n        return;\n      }\n\n      const windows = windowsInfo.filter(\n        (w) => propsWindows[w.key] != null && !getWindowHidden(w.key)\n      );\n      const targetNode = windows.find((node) => node.key === key);\n      if (targetNode == null) {\n        throw new Error(`Tried to move a node that does not exist: ${key}`);\n      }\n\n      let movingSet = new Set([targetNode]);\n      // Only the main window brings other windows along.\n      if (key === \"main\") {\n        const findAllConnected = SnapUtils.traceConnection<WindowInfo>(abuts);\n        movingSet = findAllConnected(windows, targetNode);\n      }\n\n      const stationary = windows.filter((w) => !movingSet.has(w));\n      const moving = Array.from(movingSet);\n\n      const mouseStart = { x, y };\n\n      const boundingBox = SnapUtils.boundingBox(moving);\n      setDraggingState({ boundingBox, moving, stationary, mouseStart });\n    },\n    [getWindowHidden, propsWindows, windowsInfo]\n  );\n}\n\nexport default function WindowManager({ windows: propsWindows }: Props) {\n  const windowsInfo = useTypedSelector(Selectors.getWindowsInfo);\n  const setFocusedWindow = useActionCreator(Actions.setFocusedWindow);\n  const handleMouseDown = useHandleMouseDown(propsWindows);\n\n  const windows = windowsInfo.filter((w) => propsWindows[w.key]);\n\n  const onBlur = useCallback(\n    // I give up on trying to type things with `relatedTarget`.\n    (e: any) => {\n      const { currentTarget, relatedTarget } = e;\n      if (\n        currentTarget === relatedTarget ||\n        currentTarget.contains(relatedTarget)\n      ) {\n        return;\n      }\n      setFocusedWindow(null);\n    },\n    [setFocusedWindow]\n  );\n\n  return (\n    <>\n      {windows.map((w) => (\n        <div\n          key={w.key}\n          onBlur={onBlur}\n          onMouseDown={(e: React.MouseEvent<HTMLDivElement>) => {\n            handleMouseDown(w.key, e);\n          }}\n          onTouchStart={(e: React.TouchEvent<HTMLDivElement>) => {\n            handleMouseDown(w.key, e);\n          }}\n          style={{\n            position: \"absolute\",\n            top: 0,\n            left: 0,\n            transform: `translate(${w.x}px, ${w.y}px)`,\n            touchAction: \"none\",\n          }}\n        >\n          {propsWindows[w.key]}\n        </div>\n      ))}\n    </>\n  );\n}\n","/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n  return function(key) {\n    return object == null ? undefined : object[key];\n  };\n}\n\nmodule.exports = basePropertyOf;\n","var basePropertyOf = require('./_basePropertyOf');\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar deburredLetters = {\n  // Latin-1 Supplement block.\n  '\\xc0': 'A',  '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n  '\\xe0': 'a',  '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n  '\\xc7': 'C',  '\\xe7': 'c',\n  '\\xd0': 'D',  '\\xf0': 'd',\n  '\\xc8': 'E',  '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n  '\\xe8': 'e',  '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n  '\\xcc': 'I',  '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n  '\\xec': 'i',  '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n  '\\xd1': 'N',  '\\xf1': 'n',\n  '\\xd2': 'O',  '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n  '\\xf2': 'o',  '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n  '\\xd9': 'U',  '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n  '\\xf9': 'u',  '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n  '\\xdd': 'Y',  '\\xfd': 'y', '\\xff': 'y',\n  '\\xc6': 'Ae', '\\xe6': 'ae',\n  '\\xde': 'Th', '\\xfe': 'th',\n  '\\xdf': 'ss',\n  // Latin Extended-A block.\n  '\\u0100': 'A',  '\\u0102': 'A', '\\u0104': 'A',\n  '\\u0101': 'a',  '\\u0103': 'a', '\\u0105': 'a',\n  '\\u0106': 'C',  '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n  '\\u0107': 'c',  '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n  '\\u010e': 'D',  '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n  '\\u0112': 'E',  '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n  '\\u0113': 'e',  '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n  '\\u011c': 'G',  '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n  '\\u011d': 'g',  '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n  '\\u0124': 'H',  '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n  '\\u0128': 'I',  '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n  '\\u0129': 'i',  '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n  '\\u0134': 'J',  '\\u0135': 'j',\n  '\\u0136': 'K',  '\\u0137': 'k', '\\u0138': 'k',\n  '\\u0139': 'L',  '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n  '\\u013a': 'l',  '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n  '\\u0143': 'N',  '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n  '\\u0144': 'n',  '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n  '\\u014c': 'O',  '\\u014e': 'O', '\\u0150': 'O',\n  '\\u014d': 'o',  '\\u014f': 'o', '\\u0151': 'o',\n  '\\u0154': 'R',  '\\u0156': 'R', '\\u0158': 'R',\n  '\\u0155': 'r',  '\\u0157': 'r', '\\u0159': 'r',\n  '\\u015a': 'S',  '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n  '\\u015b': 's',  '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n  '\\u0162': 'T',  '\\u0164': 'T', '\\u0166': 'T',\n  '\\u0163': 't',  '\\u0165': 't', '\\u0167': 't',\n  '\\u0168': 'U',  '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n  '\\u0169': 'u',  '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n  '\\u0174': 'W',  '\\u0175': 'w',\n  '\\u0176': 'Y',  '\\u0177': 'y', '\\u0178': 'Y',\n  '\\u0179': 'Z',  '\\u017b': 'Z', '\\u017d': 'Z',\n  '\\u017a': 'z',  '\\u017c': 'z', '\\u017e': 'z',\n  '\\u0132': 'IJ', '\\u0133': 'ij',\n  '\\u0152': 'Oe', '\\u0153': 'oe',\n  '\\u0149': \"'n\", '\\u017f': 's'\n};\n\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\nmodule.exports = deburrLetter;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var Symbol = require('./_Symbol'),\n    getRawTag = require('./_getRawTag'),\n    objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var Symbol = require('./_Symbol'),\n    arrayMap = require('./_arrayMap'),\n    isArray = require('./isArray'),\n    isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n  // Exit early for strings to avoid a performance hit in some environments.\n  if (typeof value == 'string') {\n    return value;\n  }\n  if (isArray(value)) {\n    // Recursively convert values (susceptible to call stack limits).\n    return arrayMap(value, baseToString) + '';\n  }\n  if (isSymbol(value)) {\n    return symbolToString ? symbolToString.call(value) : '';\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      result = Array(length);\n\n  while (++index < length) {\n    result[index] = iteratee(array[index], index, array);\n  }\n  return result;\n}\n\nmodule.exports = arrayMap;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n  return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var deburrLetter = require('./_deburrLetter'),\n    toString = require('./toString');\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;\n\n/** Used to compose unicode capture groups. */\nvar rsCombo = '[' + rsComboRange + ']';\n\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\nvar reComboMark = RegExp(rsCombo, 'g');\n\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\nfunction deburr(string) {\n  string = toString(string);\n  return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\nmodule.exports = deburr;\n","import * as React from \"react\";\nimport deburr from \"lodash/deburr\";\n\ninterface Props extends React.HTMLAttributes<HTMLSpanElement> {\n  children: string | number;\n  className?: string;\n}\n\nexport const characterClassName = (char: string | number) =>\n  `character-${deburr(char.toString()).toLowerCase().charCodeAt(0)}`;\n\nconst Character = React.memo(\n  ({ children: char, className, ...passThrough }: Props) => {\n    return (\n      <span\n        {...passThrough}\n        className={`${className || \"\"} character ${characterClassName(char)}`}\n      >\n        {char}\n      </span>\n    );\n  }\n);\n\nexport default Character;\n","import { Fragment } from \"react\";\nimport classnames from \"classnames\";\nimport { getTimeObj } from \"../utils\";\nimport { TIME_MODE, MEDIA_STATUS } from \"../constants\";\nimport * as Actions from \"../actionCreators\";\nimport Character from \"./Character\";\nimport * as Selectors from \"../selectors\";\n\nimport { useTypedSelector, useActionCreator } from \"../hooks\";\n\n// Sigh. When the display is blinking (say when it's paused) we need to\n// alternate between the actual character and the space character. Not\n// Possible to do that in pure CSS with the background being dynamically generated.\n// All \"space\" characters is also how Winamp renders no content.\nconst Background = () => (\n  <Fragment>\n    {[1, 7, 12, 20, 25].map((left, i) => (\n      <Character\n        style={{ left }}\n        key={i}\n        className=\"background-character\"\n        children=\" \"\n      />\n    ))}\n  </Fragment>\n);\n\nconst MiniTime = () => {\n  const status = useTypedSelector(Selectors.getMediaStatus);\n  const duration = useTypedSelector(Selectors.getDuration);\n  const timeElapsed = useTypedSelector(Selectors.getTimeElapsed);\n  const timeMode = useTypedSelector(Selectors.getTimeMode);\n\n  const toggle = useActionCreator(Actions.toggleTimeMode);\n  let seconds = null;\n  // TODO: Clean this up: If stopped, just render the background, rather than\n  // rendering spaces twice.\n  if (status !== MEDIA_STATUS.STOPPED && duration != null) {\n    seconds =\n      timeMode === TIME_MODE.ELAPSED ? timeElapsed : duration - timeElapsed;\n  }\n\n  const timeObj = getTimeObj(seconds);\n  const showMinus =\n    timeMode === TIME_MODE.REMAINING && status !== MEDIA_STATUS.STOPPED;\n  return (\n    <div\n      onClick={toggle}\n      className={classnames(\"mini-time\", \"countdown\", {\n        blinking: status === MEDIA_STATUS.PAUSED,\n      })}\n    >\n      <Background />\n      <Character style={{ left: 1 }}>{showMinus ? \"-\" : \" \"}</Character>\n      <Character style={{ left: 7 }}>{timeObj.minutesFirstDigit}</Character>\n      <Character style={{ left: 12 }}>{timeObj.minutesSecondDigit}</Character>\n      <Character style={{ left: 20 }}>{timeObj.secondsFirstDigit}</Character>\n      <Character style={{ left: 25 }}>{timeObj.secondsSecondDigit}</Character>\n    </div>\n  );\n};\n\nexport default MiniTime;\n","import { useState } from \"react\";\nimport classnames from \"classnames\";\nimport WinampButton from \"./WinampButton\";\n\ninterface Props extends React.HTMLAttributes<HTMLDivElement> {\n  className?: string;\n  onPointerDown?: (e: React.PointerEvent<HTMLDivElement>) => void;\n}\n\n// Winamp has a strange behavior for the buttons at the top of the main window.\n// It shows through to the main background sprite until the first time that it's\n// clicked, and then it shows the dedicated undepressed sprite thereafter.\n// This component is an abstraction that tracks if a div has ever been clicked.\n// Look in `skinSelectors` for CSS selectors that look like `#some-id.clicked`\n// for examples of this functionality in use.\nfunction ClickedDiv(props: Props) {\n  const [clicked, setClicked] = useState(false);\n  function handlePointerDown(e: React.PointerEvent<HTMLDivElement>) {\n    setClicked(true);\n    if (props.onPointerDown) {\n      props.onPointerDown(e);\n    }\n  }\n  return (\n    <WinampButton\n      {...props}\n      className={classnames(props.className, { clicked })}\n      onPointerDown={handlePointerDown}\n    />\n  );\n}\n\nexport default ClickedDiv;\n","import { useState, useRef, useEffect, useMemo } from \"react\";\nimport ContextMenu from \"./ContextMenu\";\n\ninterface Props extends React.HTMLAttributes<HTMLDivElement> {\n  renderMenu: () => React.ReactNode;\n  top?: boolean;\n  bottom?: boolean;\n}\n\nfunction getNodeOffset(node: HTMLDivElement | null) {\n  if (node == null) {\n    return { top: 0, left: 0 };\n  }\n\n  const rect = node.getBoundingClientRect();\n  const scrollLeft = window.pageXOffset || document.documentElement!.scrollLeft;\n  const scrollTop = window.pageYOffset || document.documentElement!.scrollTop;\n  return { top: rect.top + scrollTop, left: rect.left + scrollLeft };\n}\n\n// Trigger a context menu relative to the child element when the user\n// left-clicks on the child.\n//\n// For a component that triggers relative to the user's cursor on right-click\n// see `<ContextMenuWrapper />`.\nfunction ContextMenuTarget(props: Props) {\n  const handleNode = useRef<HTMLDivElement>(null);\n  const [selected, setSelected] = useState(false);\n  useEffect(() => {\n    if (!selected) {\n      return;\n    }\n    function handleGlobalClick(e: MouseEvent) {\n      if (\n        selected &&\n        // Typescript does not believe that these click events are always fired on DOM nodes.\n        e.target instanceof Element &&\n        selected &&\n        // Not sure how, but it's possible for this to get called when handleNode is null/undefined.\n        // https://sentry.io/share/issue/2066cd79f21e4f279791319f4d2ea35d/\n        handleNode.current &&\n        !handleNode.current.contains(e.target!)\n      ) {\n        setSelected(false);\n      }\n    }\n    document.addEventListener(\"click\", handleGlobalClick);\n    return () => {\n      document.removeEventListener(\"click\", handleGlobalClick);\n    };\n  }, [selected]);\n\n  const offset = useMemo(() => {\n    return selected\n      ? getNodeOffset(handleNode.current)\n      : // Kinda awkward. This is a nonsense return value since we only use\n        //this value when we are selected.\n        { top: 0, left: 0 };\n  }, [selected]);\n\n  const { renderMenu, children, top, bottom, ...passThroughProps } = props;\n  return (\n    <div {...passThroughProps}>\n      <div\n        className=\"handle\"\n        style={{ width: \"100%\", height: \"100%\" }}\n        ref={handleNode}\n        onClick={() => setSelected(!selected)}\n      >\n        {children}\n      </div>\n      <ContextMenu\n        selected={selected}\n        offsetTop={offset.top}\n        offsetLeft={offset.left}\n        top={top}\n        bottom={bottom}\n      >\n        {renderMenu()}\n      </ContextMenu>\n    </div>\n  );\n}\n\nexport default ContextMenuTarget;\n","// The Web Audio API's FFT is bad, so this exists now!\n// Taken from https://github.com/WACUP/vis_classic/tree/master/FFTNullsoft\n\nexport class FFT {\n  private bitrevtable: number[];\n  private envelope: Float32Array;\n  private equalize: Float32Array;\n  private temp1: Float32Array;\n  private temp2: Float32Array;\n  private cossintable: Float32Array[];\n\n  // Constants\n  private static readonly TWO_PI = 6.2831853; // 2 * Math.PI\n  private static readonly HALF_PI = 1.5707963268; // Math.PI / 2\n\n  constructor() {\n    // Assuming these are your hardcoded values:\n    const samplesIn = 1024; // hardcoded value\n    const samplesOut = 512; // hardcoded value\n    const bEqualize = true; // hardcoded value\n    const envelopePower = 1.0; // hardcoded value\n    const mode = false; // hardcoded value\n\n    const NFREQ = samplesOut * 2;\n\n    // Initialize the tables and arrays with hardcoded values\n    this.bitrevtable = this.initBitRevTable(NFREQ);\n    this.cossintable = this.initCosSinTable(NFREQ);\n\n    this.envelope = this.initEnvelopeTable(samplesIn, envelopePower);\n    this.equalize = this.initEqualizeTable(NFREQ, mode);\n\n    this.temp1 = new Float32Array(NFREQ);\n    this.temp2 = new Float32Array(NFREQ);\n  }\n\n  private initEqualizeTable(NFREQ: number, mode: boolean): Float32Array {\n    const equalize = new Float32Array(NFREQ / 2);\n    let bias = 0.04; // FFT.INITIAL_BIAS\n\n    for (let i = 0; i < NFREQ / 2; i++) {\n      const invHalfNfreq = (9.0 - bias) / (NFREQ / 2);\n      equalize[i] = Math.log10(1.0 + bias + (i + 1) * invHalfNfreq);\n      bias /= 1.0025; // FFT.BIAS_DECAY_RATE\n    }\n\n    return equalize;\n  }\n\n  private initEnvelopeTable(samplesIn: number, power: number): Float32Array {\n    const mult = (1.0 / samplesIn) * FFT.TWO_PI;\n    const envelope = new Float32Array(samplesIn);\n\n    for (let i = 0; i < samplesIn; i++) {\n      envelope[i] = Math.pow(\n        0.5 + 0.5 * Math.sin(i * mult - FFT.HALF_PI),\n        power\n      );\n    }\n\n    return envelope;\n  }\n\n  private initBitRevTable(NFREQ: number): number[] {\n    const bitrevtable = new Array(NFREQ);\n\n    for (let i = 0; i < NFREQ; i++) {\n      bitrevtable[i] = i;\n    }\n\n    for (let i = 0, j = 0; i < NFREQ; i++) {\n      if (j > i) {\n        const temp = bitrevtable[i];\n        bitrevtable[i] = bitrevtable[j];\n        bitrevtable[j] = temp;\n      }\n\n      let m = NFREQ >> 1;\n      while (m >= 1 && j >= m) {\n        j -= m;\n        m >>= 1;\n      }\n\n      j += m;\n    }\n\n    return bitrevtable;\n  }\n\n  private initCosSinTable(NFREQ: number): Float32Array[] {\n    const cossintable: Float32Array[] = [];\n    let dftsize = 2;\n\n    while (dftsize <= NFREQ) {\n      const theta = (-2.0 * Math.PI) / dftsize;\n      cossintable.push(new Float32Array([Math.cos(theta), Math.sin(theta)]));\n      dftsize <<= 1;\n    }\n\n    return cossintable;\n  }\n\n  public timeToFrequencyDomain(\n    inWavedata: Float32Array,\n    outSpectraldata: Float32Array\n  ): void {\n    if (!this.temp1 || !this.temp2 || !this.cossintable) return;\n    // Converts time-domain samples from inWavedata[]\n    //   into frequency-domain samples in outSpectraldata[].\n    // The array lengths are the two parameters to Init().\n\n    // The last sample of the output data will represent the frequency\n    //   that is 1/4th of the input sampling rate.  For example,\n    //   if the input wave data is sampled at 44,100 Hz, then the last\n    //   sample of the spectral data output will represent the frequency\n    //   11,025 Hz.  The first sample will be 0 Hz; the frequencies of\n    //   the rest of the samples vary linearly in between.\n    // Note that since human hearing is limited to the range 200 - 20,000\n    //   Hz.  200 is a low bass hum; 20,000 is an ear-piercing high shriek.\n    // Each time the frequency doubles, that sounds like going up an octave.\n    //   That means that the difference between 200 and 300 Hz is FAR more\n    //   than the difference between 5000 and 5100, for example!\n    // So, when trying to analyze bass, you'll want to look at (probably)\n    //   the 200-800 Hz range; whereas for treble, you'll want the 1,400 -\n    //   11,025 Hz range.\n    // If you want to get 3 bands, try it this way:\n    //   a) 11,025 / 200 = 55.125\n    //   b) to get the number of octaves between 200 and 11,025 Hz, solve for n:\n    //          2^n = 55.125\n    //          n = log 55.125 / log 2\n    //          n = 5.785\n    //   c) so each band should represent 5.785/3 = 1.928 octaves; the ranges are:\n    //          1) 200 - 200*2^1.928                    or  200  - 761   Hz\n    //          2) 200*2^1.928 - 200*2^(1.928*2)        or  761  - 2897  Hz\n    //          3) 200*2^(1.928*2) - 200*2^(1.928*3)    or  2897 - 11025 Hz\n\n    // A simple sine-wave-based envelope is convolved with the waveform\n    //   data before doing the FFT, to emeliorate the bad frequency response\n    //   of a square (i.e. nonexistent) filter.\n\n    // You might want to slightly damp (blur) the input if your signal isn't\n    //   of a very high quality, to reduce high-frequency noise that would\n    //   otherwise show up in the output.\n\n    // code should be smart enough to call Init before this function\n    //if (!bitrevtable) return;\n    //if (!temp1) return;\n    //if (!temp2) return;\n    //if (!cossintable) return;\n\n    // 1. set up input to the fft\n    for (let i = 0; i < this.temp1.length; i++) {\n      const idx = this.bitrevtable[i];\n      if (idx < inWavedata.length) {\n        this.temp1[i] =\n          inWavedata[idx] * (this.envelope ? this.envelope[idx] : 1);\n      } else {\n        this.temp1[i] = 0;\n      }\n    }\n    this.temp2.fill(0);\n\n    // 2. Perform FFT\n    const real = this.temp1;\n    const imag = this.temp2;\n    let dftsize = 2;\n    let t = 0;\n\n    while (dftsize <= this.temp1.length) {\n      const wpr = this.cossintable[t][0];\n      const wpi = this.cossintable[t][1];\n      let wr = 1.0;\n      let wi = 0.0;\n      const hdftsize = dftsize >> 1;\n\n      for (let m = 0; m < hdftsize; m += 1) {\n        for (let i = m; i < this.temp1.length; i += dftsize) {\n          const j = i + hdftsize;\n          const tempr = wr * real[j] - wi * imag[j];\n          const tempi = wr * imag[j] + wi * real[j];\n          real[j] = real[i] - tempr;\n          imag[j] = imag[i] - tempi;\n          real[i] += tempr;\n          imag[i] += tempi;\n        }\n\n        const wtemp = wr;\n        wr = wr * wpr - wi * wpi;\n        wi = wi * wpr + wtemp * wpi;\n      }\n\n      dftsize <<= 1;\n      ++t;\n    }\n\n    // 3. take the magnitude & equalize it (on a log10 scale) for output\n    for (let i = 0; i < outSpectraldata.length; i++) {\n      outSpectraldata[i] =\n        Math.sqrt(real[i] * real[i] + imag[i] * imag[i]) *\n        (this.equalize ? this.equalize[i] : 1);\n    }\n  }\n}\n","import { FFT } from \"./FFTNullsoft\";\n\nexport interface Vis {\n  canvas: HTMLCanvasElement;\n  colors: string[];\n  analyser?: AnalyserNode;\n  oscStyle?: \"dots\" | \"solid\" | \"lines\";\n  bandwidth?: \"wide\" | \"thin\";\n  coloring?: \"fire\" | \"line\" | \"normal\";\n  peaks?: boolean;\n  saFalloff?: \"slower\" | \"slow\" | \"moderate\" | \"fast\" | \"faster\";\n  saPeakFalloff?: \"slower\" | \"slow\" | \"moderate\" | \"fast\" | \"faster\";\n  sa?: \"analyzer\" | \"oscilloscope\" | \"none\";\n  renderHeight: number;\n  smallVis?: boolean;\n  pixelDensity?: number;\n  doubled?: boolean;\n  isMWOpen?: boolean;\n}\n\n/**\n * Base class of Visualizer (animation frame renderer engine)\n */\nabstract class VisPaintHandler {\n  _vis: Vis;\n  _ctx: CanvasRenderingContext2D | null;\n\n  constructor(vis: Vis) {\n    this._vis = vis;\n    this._ctx = vis.canvas!.getContext(\"2d\");\n  }\n\n  /**\n   * Attempt to build cached bitmaps for later use while rendering a frame.\n   * Purpose: fast rendering in animation loop\n   */\n  prepare() {}\n\n  /**\n   * Called once per frame rendering\n   */\n  paintFrame() {}\n\n  /**\n   * Attempt to cleanup cached bitmaps\n   */\n  dispose() {}\n}\n\n/**\n * Feeds audio data to the FFT.\n * @param analyser The AnalyserNode used to get the audio data.\n * @param fft The FFTNullsoft instance from the PaintHandler.\n */\nfunction processFFT(\n  analyser: AnalyserNode,\n  fft: FFT,\n  inWaveData: Float32Array,\n  outSpectralData: Float32Array\n): void {\n  const dataArray = new Uint8Array(1024);\n\n  analyser.getByteTimeDomainData(dataArray);\n  for (let i = 0; i < dataArray.length; i++) {\n    inWaveData[i] = (dataArray[i] - 128) / 24;\n  }\n  fft.timeToFrequencyDomain(inWaveData, outSpectralData);\n}\n\n//? =============================== BAR PAINTER ===============================\ntype PaintFrameFunction = () => void;\ntype PaintBarFunction = (\n  ctx: CanvasRenderingContext2D,\n  x1: number,\n  x2: number,\n  barHeight: number,\n  peakHeight: number\n) => void;\n\nexport class BarPaintHandler extends VisPaintHandler {\n  private saPeaks: Int16Array;\n  private saData2: Float32Array;\n  private saData: Int16Array;\n  private saFalloff: Float32Array;\n  private sample: Float32Array;\n  private barPeak: Int16Array;\n  private chunk: number;\n  private uVar12: number;\n  private falloff: number;\n  private peakFalloff: number;\n  private pushDown: number;\n\n  private inWaveData = new Float32Array(1024);\n  private outSpectralData = new Float32Array(512);\n\n  _analyser: AnalyserNode;\n  _fft: FFT;\n  _color: string = \"rgb(255,255,255)\";\n  _colorPeak: string = \"rgb(255,255,255)\";\n  // Off-screen canvas for pre-rendering a single bar gradient\n  _bar: HTMLCanvasElement = document.createElement(\"canvas\");\n  _peak: HTMLCanvasElement = document.createElement(\"canvas\");\n  _16h: HTMLCanvasElement = document.createElement(\"canvas\"); // non-stretched\n  _bufferLength: number;\n  _dataArray: Uint8Array;\n  colorssmall: string[];\n  colorssmall2: string[];\n  _renderHeight: number;\n  _smallVis: boolean;\n  _pixelDensity: number;\n  _doubled: boolean;\n  _isMWOpen: boolean;\n  paintBar: PaintBarFunction;\n  paintFrame: PaintFrameFunction;\n\n  constructor(vis: Vis) {\n    super(vis);\n    this._analyser = this._vis.analyser!;\n    this._fft = new FFT();\n    this._bufferLength = this._analyser.frequencyBinCount;\n    this._dataArray = new Uint8Array(this._bufferLength);\n\n    this._renderHeight = vis.renderHeight!;\n    this._smallVis = vis.smallVis!;\n    this._pixelDensity = vis.pixelDensity!;\n    this._doubled = vis.doubled!;\n    this._isMWOpen = vis.isMWOpen!;\n\n    this.colorssmall = [\n      vis.colors[17],\n      vis.colors[14],\n      vis.colors[11],\n      vis.colors[8],\n      vis.colors[4],\n    ];\n    this.colorssmall2 = [\n      vis.colors[17],\n      vis.colors[16],\n      vis.colors[14],\n      vis.colors[13],\n      vis.colors[11],\n      vis.colors[10],\n      vis.colors[8],\n      vis.colors[7],\n      vis.colors[5],\n      vis.colors[4],\n    ];\n\n    this._16h.width = 1;\n    this._16h.height = 16;\n    this._16h.setAttribute(\"width\", \"75\");\n    this._16h.setAttribute(\"height\", \"16\");\n\n    // draws the analyzer and handles changing the bandwidth correctly\n    this.paintFrame = this.paintAnalyzer.bind(this);\n\n    this.saPeaks = new Int16Array(76).fill(0);\n    this.saData2 = new Float32Array(76).fill(0);\n    this.saData = new Int16Array(76).fill(0);\n    this.saFalloff = new Float32Array(76).fill(0);\n    this.sample = new Float32Array(76).fill(0);\n    this.barPeak = new Int16Array(76).fill(0); // Needs to be specified as Int16 else the peaks don't behave as they should\n    this.chunk = 0;\n    this.uVar12 = 0;\n    this.pushDown = 0;\n\n    switch (this._vis.coloring) {\n      case \"fire\":\n        this.paintBar = this.paintBarFire.bind(this);\n        break;\n      case \"line\":\n        this.paintBar = this.paintBarLine.bind(this);\n        break;\n      default:\n        this.paintBar = this.paintBarNormal.bind(this);\n        break;\n    }\n\n    switch (this._vis.saFalloff) {\n      case \"slower\":\n        this.falloff = 3;\n        break;\n      case \"slow\":\n        this.falloff = 6;\n        break;\n      case \"moderate\":\n        this.falloff = 12;\n        break;\n      case \"fast\":\n        this.falloff = 16;\n        break;\n      case \"faster\":\n        this.falloff = 32;\n        break;\n      default:\n        this.falloff = 12;\n        break;\n    }\n\n    switch (this._vis.saPeakFalloff) {\n      case \"slower\":\n        this.peakFalloff = 1.05;\n        break;\n      case \"slow\":\n        this.peakFalloff = 1.1;\n        break;\n      case \"moderate\":\n        this.peakFalloff = 1.2;\n        break;\n      case \"fast\":\n        this.peakFalloff = 1.4;\n        break;\n      case \"faster\":\n        this.peakFalloff = 1.6;\n        break;\n      default:\n        this.peakFalloff = 1.1;\n        break;\n    }\n  }\n\n  prepare() {\n    const vis = this._vis;\n\n    //? paint peak\n    this._peak.height = 1;\n    this._peak.width = 1;\n    let ctx = this._peak.getContext(\"2d\")!;\n    ctx.fillStyle = vis.colors[23];\n    ctx.fillRect(0, 0, 1, 1);\n\n    if (this._vis.smallVis) {\n      this.pushDown = 0;\n    } else if (this._vis.doubled && !this._vis.isMWOpen) {\n      this.pushDown = 2;\n    } else if (this._vis.doubled) {\n      this.pushDown = 0;\n    } else {\n      this.pushDown = 2;\n    }\n\n    //? paint bar\n    this._bar.height = 16;\n    this._bar.width = 1;\n    this._bar.setAttribute(\"width\", \"1\");\n    this._bar.setAttribute(\"height\", \"16\");\n    ctx = this._bar.getContext(\"2d\")!;\n    for (let y = 0; y < 16; y++) {\n      if (this._vis.pixelDensity === 2 && this._vis.smallVis) {\n        ctx.fillStyle = this.colorssmall2[-y + 9];\n      } else {\n        ctx.fillStyle = this._vis.smallVis\n          ? this.colorssmall[-y + 4]\n          : vis.colors[2 - this.pushDown - -y];\n      }\n      ctx.fillRect(0, y, 1, y + 1);\n    }\n  }\n\n  /**\n   * ⬜⬜⬜ ⬜⬜⬜\n   * 🟧🟧🟧\n   * 🟫🟫🟫 🟧🟧🟧\n   * 🟫🟫🟫 🟫🟫🟫\n   * 🟫🟫🟫 🟫🟫🟫 ⬜⬜⬜\n   * 🟫🟫🟫 🟫🟫🟫 🟧🟧🟧\n   * 🟫🟫🟫 🟫🟫🟫 🟫🟫🟫\n   * 1 bar = multiple pixels\n   */\n  /**\n   * ⬜⬜\n   * 🟧\n   * 🟫🟧\n   * 🟫🟫⬜⬜\n   * 🟫🟫🟧\n   * 🟫🟫🟫🟧⬜\n   * 🟫🟫🟫🟫🟧\n   * drawing 1pixel width bars\n   */\n  paintAnalyzer() {\n    if (!this._ctx) return;\n    const ctx = this._ctx;\n    const w = ctx.canvas.width;\n    const h = ctx.canvas.height;\n    ctx.fillStyle = this._color;\n\n    const maxFreqIndex = 512;\n    const logMaxFreqIndex = Math.log10(maxFreqIndex);\n    const logMinFreqIndex = 0;\n\n    let targetSize: number;\n    let maxHeight: number;\n    let maxWidth: number;\n    if (this._vis.pixelDensity === 2) {\n      targetSize = 75;\n      maxHeight = 10;\n    } else {\n      targetSize = this._vis.smallVis ? 40 : 75;\n      maxHeight = this._vis.smallVis ? 5 : 15;\n    }\n\n    processFFT(\n      this._analyser,\n      this._fft,\n      this.inWaveData,\n      this.outSpectralData\n    );\n\n    if (this._vis.smallVis) {\n      if (this._vis.pixelDensity === 2) {\n        maxWidth = 75; // this is not 37*2, but if this was 74, we'd be missing a pixel\n        // someone here at Nullsoft screwed up...? or thought 74 didn't look good, I don't know.\n      } else {\n        maxWidth = 37;\n      }\n    } else {\n      maxWidth = 75;\n    }\n\n    // This is to roughly emulate the Analyzer in more modern versions of Winamp.\n    // 2.x and early 5.x versions had a completely linear(?) FFT, if so desired the\n    // scale variable can be set to 0.0\n\n    // This factor controls the scaling from linear to logarithmic.\n    // scale = 0.0 -> fully linear scaling\n    // scale = 1.0 -> fully logarithmic scaling\n    const scale = 0.91; // Adjust this value between 0.0 and 1.0\n    for (let x = 0; x < targetSize; x++) {\n      // Linear interpolation between linear and log scaling\n      const linearIndex = (x / (targetSize - 1)) * (maxFreqIndex - 1);\n      const logScaledIndex =\n        logMinFreqIndex +\n        ((logMaxFreqIndex - logMinFreqIndex) * x) / (targetSize - 1);\n      const logIndex = Math.pow(10, logScaledIndex);\n\n      // Interpolating between linear and logarithmic scaling\n      const scaledIndex = (1.0 - scale) * linearIndex + scale * logIndex;\n\n      let index1 = Math.floor(scaledIndex);\n      let index2 = Math.ceil(scaledIndex);\n\n      if (index1 >= maxFreqIndex) {\n        index1 = maxFreqIndex - 1;\n      }\n      if (index2 >= maxFreqIndex) {\n        index2 = maxFreqIndex - 1;\n      }\n\n      if (index1 === index2) {\n        this.sample[x] = this.outSpectralData[index1];\n      } else {\n        const frac2 = scaledIndex - index1;\n        const frac1 = 1.0 - frac2;\n        this.sample[x] =\n          frac1 * this.outSpectralData[index1] +\n          frac2 * this.outSpectralData[index2];\n      }\n    }\n\n    for (let x = 0; x < maxWidth; x++) {\n      // Based on research of looking at Winamp 5.666 and 2.63 executables\n\n      // if our bandwidth is \"wide\", chunk every 5 instances of the bars,\n      // add them together and display them\n      if (this._vis.bandwidth === \"wide\") {\n        this.chunk = this.chunk = x & 0xfffffffc;\n        this.uVar12 =\n          (this.sample[this.chunk + 3] +\n            this.sample[this.chunk + 2] +\n            this.sample[this.chunk + 1] +\n            this.sample[this.chunk]) /\n          4;\n        this.saData[x] = this.uVar12;\n      } else {\n        this.chunk = 0;\n        this.saData[x] = this.sample[x];\n      }\n\n      if (this.saData[x] >= maxHeight) {\n        this.saData[x] = maxHeight;\n      }\n\n      // prevents saPeaks going out of bounds when switching to windowShade mode\n      if (this.saPeaks[x] >= maxHeight * 256) {\n        this.saPeaks[x] = maxHeight * 256;\n      }\n\n      this.saFalloff[x] -= this.falloff / 16.0;\n      // Possible bar fall off values are\n      // 3, 6, 12, 16, 32\n      // Should there ever be some form of config options,\n      // these should be used\n      // 12 is the default of a fresh new Winamp installation\n\n      if (this.saFalloff[x] <= this.saData[x]) {\n        this.saFalloff[x] = this.saData[x];\n      }\n\n      if (this.saPeaks[x] <= Math.round(this.saFalloff[x] * 256)) {\n        this.saPeaks[x] = this.saFalloff[x] * 256;\n        this.saData2[x] = 3.0;\n      }\n\n      this.barPeak[x] = this.saPeaks[x] / 256;\n\n      this.saPeaks[x] -= Math.round(this.saData2[x]);\n      this.saData2[x] *= this.peakFalloff;\n      // Possible peak fall off values are\n      // 1.05f, 1.1f, 1.2f, 1.4f, 1.6f\n      // 1.1f is the default of a fresh new Winamp installation\n      if (this.saPeaks[x] <= 0) {\n        this.saPeaks[x] = 0;\n      }\n\n      if (this._vis.smallVis) {\n        // SORRY NOTHING\n        // ironically enough the peaks do appear at the bottom here\n      } else if (Math.round(this.barPeak[x]) < 1) {\n        this.barPeak[x] = -3; // Push peaks outside the viewable area, this isn't a Modern Skin!\n      }\n\n      // skip rendering if x is 4\n      if (!(x === this.chunk + 3 && this._vis.bandwidth === \"wide\")) {\n        this.paintBar(\n          ctx,\n          x,\n          x,\n          Math.round(this.saFalloff[x]) - this.pushDown,\n          this.barPeak[x] + 1 - this.pushDown\n        );\n      }\n    }\n  }\n\n  /**\n   * 🟥\n   * 🟧🟧\n   * 🟨🟨🟨\n   * 🟩🟩🟩🟩\n   */\n  paintBarNormal(\n    ctx: CanvasRenderingContext2D,\n    x: number,\n    x2: number,\n    barHeight: number,\n    peakHeight: number\n  ) {\n    const h = ctx.canvas.height;\n    const y = h - barHeight;\n\n    ctx.drawImage(this._bar, 0, y, 1, h - y, x, y, x2 - x + 1, h - y);\n\n    if (this._vis.peaks) {\n      const peakY = h - peakHeight;\n      ctx.drawImage(this._peak, 0, 0, 1, 1, x, peakY, x2 - x + 1, 1);\n    }\n  }\n\n  /**\n   * 🟥\n   * 🟧🟥\n   * 🟨🟧🟥\n   * 🟩🟨🟧🟥\n   */\n  paintBarFire(\n    ctx: CanvasRenderingContext2D,\n    x: number,\n    x2: number,\n    barHeight: number,\n    peakHeight: number\n  ) {\n    const h = ctx.canvas.height;\n    const y = h - barHeight;\n\n    ctx.drawImage(\n      this._bar,\n      0,\n      0,\n      this._bar.width,\n      h - y,\n      x,\n      y,\n      x2 - x + 1,\n      h - y\n    );\n\n    if (this._vis.peaks) {\n      const peakY = h - peakHeight;\n      ctx.drawImage(this._peak, 0, 0, 1, 1, x, peakY, x2 - x + 1, 1);\n    }\n  }\n\n  /**\n   * 🟥\n   * 🟥🟧\n   * 🟥🟧🟨\n   * 🟥🟧🟨🟩\n   */\n  paintBarLine(\n    ctx: CanvasRenderingContext2D,\n    x: number,\n    x2: number,\n    barHeight: number,\n    peakHeight: number\n  ) {\n    const h = ctx.canvas.height;\n    const y = h - barHeight;\n    // FIXME: Line drawing is currently Fire mode!\n\n    ctx.drawImage(\n      this._bar,\n      0, // sx\n      0, // sy\n      this._bar.width, // sw\n      h - y, // sh\n      x,\n      y, //  dx,dy\n      x2 - x + 1, //dw\n      h - y //dh\n    );\n\n    if (this._vis.peaks) {\n      const peakY = h - peakHeight;\n      ctx.drawImage(this._peak, 0, 0, 1, 1, x, peakY, x2 - x + 1, 1);\n    }\n  }\n}\n\n//? =============================== OSCILLOSCOPE PAINTER ===============================\n\ntype PaintWavFunction = (x: number, y: number) => void;\n\nfunction slice1st(\n  dataArray: Uint8Array,\n  sliceWidth: number,\n  sliceNumber: number\n): number {\n  const start = sliceWidth * sliceNumber;\n  return dataArray[start];\n}\n\nexport class WavePaintHandler extends VisPaintHandler {\n  private pushDown: number;\n\n  _analyser: AnalyserNode;\n  _bufferLength: number;\n  _lastX: number = 0;\n  _lastY: number = 0;\n  _dataArray: Uint8Array;\n  _pixelRatio: number; // 1 or 2\n  // Off-screen canvas for drawing perfect pixel (no blurred lines)\n  _bar: HTMLCanvasElement = document.createElement(\"canvas\");\n  _16h: HTMLCanvasElement = document.createElement(\"canvas\"); // non-stretched\n  paintWav: PaintWavFunction;\n\n  constructor(vis: Vis) {\n    super(vis);\n    this._analyser = this._vis.analyser!;\n    this._bufferLength = this._analyser.fftSize;\n    this._dataArray = new Uint8Array(this._bufferLength);\n\n    this._16h.width = 1;\n    this._16h.height = 16;\n    this._16h.setAttribute(\"width\", \"75\");\n    this._16h.setAttribute(\"height\", \"16\");\n\n    //* see https://developer.mozilla.org/en-US/docs/Web/API/Window/devicePixelRatio#monitoring_screen_resolution_or_zoom_level_changes\n    this._pixelRatio = window.devicePixelRatio || 1;\n\n    // draws the oscilloscope and handles overly complex operations\n    // in relation to oscilloscope style and main window states\n    this.paintWav = this.paintOscilloscope.bind(this);\n    this.pushDown = 0;\n  }\n\n  prepare() {\n    const vis = this._vis;\n\n    //? paint bar\n    this._bar.width = 1;\n    this._bar.height = 5;\n    this._bar.setAttribute(\"width\", \"1\");\n    this._bar.setAttribute(\"height\", \"5\");\n    const ctx = this._bar.getContext(\"2d\");\n    if (ctx) {\n      for (let y = 0; y < 5; y++) {\n        ctx.fillStyle = vis.colors[18 + y];\n        ctx.fillRect(0, y, 1, y + 1);\n      }\n    }\n\n    // @ts-ignore\n    this._ctx.imageSmoothingEnabled = false;\n    // @ts-ignore\n    this._ctx.mozImageSmoothingEnabled = false;\n    // @ts-ignore\n    this._ctx.webkitImageSmoothingEnabled = false;\n    // @ts-ignore\n    this._ctx.msImageSmoothingEnabled = false;\n  }\n\n  paintFrame() {\n    if (!this._ctx) return;\n    this._analyser.getByteTimeDomainData(this._dataArray);\n    this._dataArray = this._dataArray.slice(0, 576);\n    const bandwidth = this._dataArray.length;\n\n    const width = this._ctx!.canvas.width;\n    const height = this._ctx!.canvas.height;\n\n    // width would technically be correct, but if the main window is\n    // in windowshade mode, it is set to 150, making sliceWidth look\n    // wrong in that mode, concerning the oscilloscope\n    const sliceWidth = Math.floor(bandwidth / 75);\n\n    // Iterate over the width of the canvas in fixed 75 pixels.\n    for (let j = 0; j <= 75; j++) {\n      const amplitude = slice1st(this._dataArray, sliceWidth, j);\n      this.paintWav(j, amplitude);\n    }\n  }\n\n  /**\n   *\n   * @param y 0..5\n   * @returns value in use for coloring stuff in\n   */\n  colorIndex(y: number): number {\n    if (this._vis.smallVis) {\n      return 0;\n    }\n    if (y >= 14) return 4;\n    if (y >= 12) return 3;\n    if (y >= 10) return 2;\n    if (y >= 8) return 1;\n    if (y >= 6) return 0;\n    if (y >= 4) return 1;\n    if (y >= 2) return 2;\n    if (y >= 0) return 3;\n    return 3;\n  }\n\n  paintOscilloscope(x: number, y: number) {\n    // we skip rendering of the oscilloscope if we are in windowShade mode\n    // previously the renderWidth variable in Vis.tsx scaled down the width\n    // of the canvas, but i didn't really like the idea since we squished\n    // down the result of y to fit within 35/75 pixels, winamp doesn't\n    // squish it's audio data down in the x axis, resulting in only\n    // getting a small portion of what we hear, they did it, so do we\n    if (this._vis.smallVis && this._vis.doubled) {\n      if (x >= 75) {\n        // SORRY NOTHING\n        return;\n      }\n    } else if (x >= (this._vis.smallVis ? 38 : 75)) {\n      // SORRY NOTHING\n      return;\n    }\n    // pushes vis down if not double size, winamp does this\n    if (this._vis.smallVis) {\n      this.pushDown = 0;\n    } else if (this._vis.doubled && !this._vis.isMWOpen) {\n      this.pushDown = 2;\n    } else if (this._vis.doubled) {\n      this.pushDown = 0;\n    } else {\n      this.pushDown = 2;\n    }\n\n    // rounds y down to the nearest int\n    // before that even happens, y is scaled down and then doubled again (could've done * 8\n    // but i feel this makes more sense to me)\n    // y is then adjusted downward to be in the center of the scope\n    y = Math.round((y / 16) * 2) - 9;\n\n    // adjusts the center point of y if we are in windowShade mode, and if pixelDensity is 2\n    // where it's adjusted further to give you the fullest view possible in that small window\n    // else we leave y as is\n    let yadjust: number;\n    if (this._vis.pixelDensity === 2) yadjust = 3;\n    else yadjust = 5;\n    y = this._vis.smallVis ? y - yadjust : y;\n\n    // scales down the already scaled down result of y to 0..10 or 0..5, depending on\n    // if pixelDensity returns 2, this serves the purpose of avoiding full sending\n    // y to that really tiny space we have there\n    if (this._vis.smallVis && this._vis.pixelDensity === 2) {\n      y = Math.round(((y + 11) / 16) * 10) - 5;\n    } else if (this._vis.smallVis) {\n      y = Math.round(((y + 11) / 16) * 5) - 2;\n    }\n\n    // clamp y to be within a certain range, here it would be 0..10 if both windowShade and pixelDensity apply\n    // else we clamp y to 0..15 or 0..3, depending on renderHeight\n    if (this._vis.smallVis && this._vis.pixelDensity === 2) {\n      y = y < 0 ? 0 : y > 10 - 1 ? 10 - 1 : y;\n    } else {\n      y =\n        y < 0\n          ? 0\n          : y > this._vis.renderHeight - 1\n          ? this._vis.renderHeight - 1\n          : y;\n    }\n    const v = y;\n    if (x === 0) this._lastY = y;\n\n    let top = y;\n    let bottom = this._lastY;\n    this._lastY = y;\n\n    if (this._vis.oscStyle === \"solid\") {\n      if (this._vis.pixelDensity === 2) {\n        if (y >= (this._vis.smallVis ? 5 : 8)) {\n          top = this._vis.smallVis ? 5 : 8;\n          bottom = y;\n        } else {\n          top = y;\n          bottom = this._vis.smallVis ? 5 : 7;\n        }\n        if (x === 0 && this._vis.smallVis) {\n          // why? i dont know!!\n          top = y;\n          bottom = y;\n        }\n      } else {\n        if (y >= (this._vis.smallVis ? 2 : 8)) {\n          top = this._vis.smallVis ? 2 : 8;\n          bottom = y;\n        } else {\n          top = y;\n          bottom = this._vis.smallVis ? 2 : 7;\n        }\n        if (x === 0 && this._vis.smallVis) {\n          // why? i dont know!!\n          top = y;\n          bottom = y;\n        }\n      }\n    } else if (this._vis.oscStyle === \"dots\") {\n      top = y;\n      bottom = y;\n    } else if (bottom < top) {\n      [bottom, top] = [top, bottom];\n      if (this._vis.smallVis) {\n        // SORRY NOTHING\n        // really just removes the smoother line descending thing that's present in the Main Window\n      } else {\n        top++; //top++, that emulates Winamp's/WACUP's OSC behavior correctly\n      }\n    }\n\n    for (y = top; y <= bottom; y++) {\n      this._ctx!.drawImage(\n        this._bar,\n        0,\n        this.colorIndex(v), // sx,sy\n        1,\n        1, // sw,sh\n        x,\n        y + this.pushDown,\n        1,\n        1 //dw,dh\n      );\n    }\n  }\n}\n\nexport class NoVisualizerHandler extends VisPaintHandler {\n  cleared: boolean = false;\n  prepare() {\n    this.cleared = false;\n  }\n\n  paintFrame() {\n    if (!this._ctx) return;\n    const ctx = this._ctx;\n    this.cleared = true;\n  }\n}\n","import React, { useMemo, useState, useLayoutEffect, useEffect } from \"react\";\n\nimport * as Actions from \"../actionCreators\";\nimport * as Selectors from \"../selectors\";\nimport { useTypedSelector, useActionCreator } from \"../hooks\";\nimport { VISUALIZERS, MEDIA_STATUS } from \"../constants\";\n\nimport {\n  Vis as IVis,\n  BarPaintHandler,\n  WavePaintHandler,\n  NoVisualizerHandler,\n} from \"./VisPainter\";\n\ntype Props = {\n  analyser: AnalyserNode;\n};\n\n// Pre-render the background grid\nfunction preRenderBg(options: {\n  width: number;\n  height: number;\n  bgColor: string;\n  fgColor: string;\n  windowShade: boolean;\n  pixelDensity: number;\n}): HTMLCanvasElement {\n  const { width, height, bgColor, fgColor, windowShade, pixelDensity } =\n    options;\n  // Off-screen canvas for pre-rendering the background\n  const bgCanvas = document.createElement(\"canvas\");\n  bgCanvas.width = width;\n  bgCanvas.height = height;\n  const distance = 2 * pixelDensity;\n\n  const bgCanvasCtx = bgCanvas.getContext(\"2d\");\n  if (bgCanvasCtx == null) {\n    throw new Error(\"Could not construct canvas context\");\n  }\n  bgCanvasCtx.fillStyle = bgColor;\n  bgCanvasCtx.fillRect(0, 0, width, height);\n  if (!windowShade) {\n    bgCanvasCtx.fillStyle = fgColor;\n    for (let x = 0; x < width; x += distance) {\n      for (let y = pixelDensity; y < height; y += distance) {\n        bgCanvasCtx.fillRect(x, y, pixelDensity, pixelDensity);\n      }\n    }\n  }\n  return bgCanvas;\n}\n\nexport default function Vis({ analyser }: Props) {\n  useLayoutEffect(() => {\n    analyser.fftSize = 1024;\n  }, [analyser, analyser.fftSize]);\n\n  const colors = useTypedSelector(Selectors.getSkinColors);\n  const mode = useTypedSelector(Selectors.getVisualizerStyle);\n  const audioStatus = useTypedSelector(Selectors.getMediaStatus);\n  const getWindowShade = useTypedSelector(Selectors.getWindowShade);\n  const getWindowOpen = useTypedSelector(Selectors.getWindowOpen);\n  const isMWOpen = getWindowOpen(\"main\");\n  const doubled = useTypedSelector(Selectors.getDoubled);\n  const toggleVisualizerStyle = useActionCreator(Actions.toggleVisualizerStyle);\n  const windowShade = getWindowShade(\"main\");\n\n  const smallVis = windowShade && isMWOpen;\n  const renderHeight = smallVis ? 5 : 16;\n  const renderWidth = 76;\n  const pixelDensity = doubled && smallVis ? 2 : 1;\n\n  let renderWidthBG: number;\n  if (!isMWOpen) {\n    renderWidthBG = renderWidth;\n  } else if (windowShade) {\n    renderWidthBG = doubled ? renderWidth : 38;\n  } else {\n    renderWidthBG = renderWidth * pixelDensity;\n  }\n\n  const width = renderWidth * pixelDensity;\n  const height = renderHeight * pixelDensity;\n\n  const bgCanvas = useMemo(() => {\n    return preRenderBg({\n      width: renderWidthBG,\n      height,\n      bgColor: colors[0],\n      fgColor: colors[1],\n      windowShade: Boolean(windowShade),\n      pixelDensity,\n    });\n  }, [colors, height, renderWidthBG, windowShade, pixelDensity]);\n\n  const [canvas, setCanvas] = useState<HTMLCanvasElement | null>(null);\n\n  //? painter administration\n  const painter = useMemo(() => {\n    if (!canvas) return null;\n\n    const vis: IVis = {\n      canvas,\n      colors,\n      analyser,\n      oscStyle: \"lines\",\n      bandwidth: \"wide\",\n      coloring: \"normal\",\n      peaks: true,\n      saFalloff: \"moderate\",\n      saPeakFalloff: \"slow\",\n      sa: \"analyzer\", // unused, but hopefully will be used in the future for providing config options\n      renderHeight,\n      smallVis,\n      pixelDensity,\n      doubled,\n      isMWOpen,\n    };\n\n    switch (mode) {\n      case VISUALIZERS.OSCILLOSCOPE:\n        return new WavePaintHandler(vis);\n      case VISUALIZERS.BAR:\n        return new BarPaintHandler(vis);\n      case VISUALIZERS.NONE:\n        return new NoVisualizerHandler(vis);\n      default:\n        return new NoVisualizerHandler(vis);\n    }\n  }, [\n    analyser,\n    canvas,\n    mode,\n    colors,\n    renderHeight,\n    smallVis,\n    pixelDensity,\n    doubled,\n    isMWOpen,\n  ]);\n\n  // reacts to changes in doublesize mode\n  useEffect(() => {\n    if (canvas && painter) {\n      const canvasCtx = canvas.getContext(\"2d\");\n      if (canvasCtx) {\n        painter.prepare();\n        // wipes the canvas clean if playback is paused and doubled is changing\n        if (audioStatus === MEDIA_STATUS.PAUSED) {\n          canvasCtx.clearRect(0, 0, canvas.width, canvas.height);\n        }\n      }\n    }\n    // TODO: Double check expected behavior when pause state changes.\n    // Here we ignore the audioStatus dependency because we don't\n    // want to clear the canvas when the audio is paused.\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [doubled, canvas, painter]);\n\n  useEffect(() => {\n    if (canvas == null || painter == null) {\n      return;\n    }\n\n    const canvasCtx = canvas.getContext(\"2d\");\n    if (canvasCtx == null) {\n      return;\n    }\n    canvasCtx.imageSmoothingEnabled = false;\n\n    let animationRequest: number | null = null;\n\n    const loop = () => {\n      canvasCtx.drawImage(bgCanvas, 0, 0);\n      painter.paintFrame();\n      animationRequest = window.requestAnimationFrame(loop);\n    };\n\n    if (audioStatus === MEDIA_STATUS.PLAYING) {\n      if (mode === VISUALIZERS.NONE) {\n        canvasCtx.clearRect(0, 0, renderWidthBG, height);\n      } else {\n        loop();\n      }\n    }\n\n    return () => {\n      if (animationRequest !== null) {\n        window.cancelAnimationFrame(animationRequest);\n      }\n    };\n  }, [audioStatus, canvas, painter, bgCanvas, renderWidthBG, height, mode]);\n\n  if (audioStatus === MEDIA_STATUS.STOPPED) {\n    return null;\n  }\n\n  return (\n    <canvas\n      id=\"visualizer\"\n      ref={setCanvas}\n      style={{ width: renderWidth, height: renderHeight }}\n      width={width}\n      height={height}\n      onClick={toggleVisualizerStyle}\n    />\n  );\n}\n","import { memo } from \"react\";\nimport * as Actions from \"../../actionCreators\";\nimport { useActionCreator } from \"../../hooks\";\nimport WinampButton from \"../WinampButton\";\n\nconst ActionButtons = memo(() => {\n  const previous = useActionCreator(Actions.previous);\n  const play = useActionCreator(Actions.play);\n  const pause = useActionCreator(Actions.pause);\n  const next = useActionCreator(Actions.next);\n  const stop = useActionCreator(Actions.stop);\n  return (\n    <div className=\"actions\">\n      <WinampButton id=\"previous\" onClick={previous} title=\"Previous Track\" />\n      <WinampButton id=\"play\" onClick={play} title=\"Play\" />\n      <WinampButton id=\"pause\" onClick={pause} title=\"Pause\" />\n      <WinampButton id=\"stop\" onClick={stop} title=\"Stop\" />\n      <WinampButton id=\"next\" onClick={next} title=\"Next Track\" />\n    </div>\n  );\n});\n\nexport default ActionButtons;\n","import * as React from \"react\";\n\nimport * as Actions from \"../actionCreators\";\nimport * as Selectors from \"../selectors\";\nimport { useTypedSelector, useActionCreator } from \"../hooks\";\n\ninterface Props {\n  id?: string;\n  style?: React.CSSProperties;\n  className?: string;\n}\n\nexport default function Balance({ style, className, id }: Props) {\n  const balance = useTypedSelector(Selectors.getBalance);\n  const setBalance = useActionCreator(Actions.setBalance);\n  const setFocus = useActionCreator(Actions.setFocus);\n  const unsetFocus = useActionCreator(Actions.unsetFocus);\n  return (\n    <input\n      id={id}\n      className={className}\n      type=\"range\"\n      min=\"-100\"\n      max=\"100\"\n      step=\"1\"\n      value={balance}\n      style={{ ...style, touchAction: \"none\" }}\n      onChange={(e) => setBalance(Number(e.target.value))}\n      onPointerDown={() => setFocus(\"balance\")}\n      onPointerUp={unsetFocus}\n      title=\"Balance\"\n    />\n  );\n}\n","import { memo } from \"react\";\n\nimport Balance from \"../Balance\";\nimport * as Selectors from \"../../selectors\";\nimport { useTypedSelector } from \"../../hooks\";\n\nexport const offsetFromBalance = (balance: number): number => {\n  const percent = Math.abs(balance) / 100;\n  const sprite = Math.floor(percent * 27);\n  const offset = sprite * 15;\n  return offset;\n};\n\nconst MainBalance = memo(() => {\n  const balance = useTypedSelector(Selectors.getBalance);\n  return (\n    <Balance\n      id=\"balance\"\n      style={{ backgroundPosition: `0 -${offsetFromBalance(balance)}px` }}\n    />\n  );\n});\n\nexport default MainBalance;\n","import { memo } from \"react\";\nimport ClickedDiv from \"../ClickedDiv\";\nimport { useActionCreator } from \"../../hooks\";\n\nimport * as Actions from \"../../actionCreators\";\n\nconst Close = memo(() => {\n  const close = useActionCreator(Actions.close);\n  return <ClickedDiv id=\"close\" onClick={close} title=\"Close\" />;\n});\n\nexport default Close;\n","import { memo } from \"react\";\nimport classnames from \"classnames\";\n\nimport * as Actions from \"../../actionCreators\";\nimport { Action, Thunk } from \"../../types\";\nimport OptionsContextMenu from \"../OptionsContextMenu\";\nimport ContextMenuTarget from \"../ContextMenuTarget\";\nimport { useActionCreator, useTypedSelector } from \"../../hooks\";\nimport * as Selectors from \"../../selectors\";\n\nfunction setFocusDouble(): Action {\n  return Actions.setFocus(\"double\");\n}\n\nfunction mouseUp(): Thunk {\n  return (dispatch) => {\n    dispatch(Actions.toggleDoubleSizeMode());\n    dispatch(Actions.unsetFocus());\n  };\n}\n\nconst ClutterBar = memo(() => {\n  const handleMouseDown = useActionCreator(setFocusDouble);\n  const handleMouseUp = useActionCreator(mouseUp);\n  const doubled = useTypedSelector(Selectors.getDoubled);\n  return (\n    <div id=\"clutter-bar\">\n      <ContextMenuTarget bottom renderMenu={() => <OptionsContextMenu />}>\n        <div id=\"button-o\" />\n      </ContextMenuTarget>\n      <div id=\"button-a\" />\n      <div id=\"button-i\" />\n      <div\n        title={\"Toggle Doublesize Mode\"}\n        id=\"button-d\"\n        className={classnames({ selected: doubled })}\n        onPointerUp={handleMouseUp}\n        onPointerDown={(e) => {\n          e.preventDefault();\n          handleMouseDown();\n        }}\n      />\n      <div id=\"button-v\" />\n    </div>\n  );\n});\n\nexport default ClutterBar;\n","import { memo } from \"react\";\n\nimport * as Actions from \"../../actionCreators\";\nimport { useActionCreator } from \"../../hooks\";\nimport WinampButton from \"../WinampButton\";\n\nconst Eject = memo(() => {\n  const openMediaFileDialog = useActionCreator(Actions.openMediaFileDialog);\n  return (\n    <WinampButton\n      id=\"eject\"\n      onClick={openMediaFileDialog}\n      title=\"Open File(s)\"\n    />\n  );\n});\n\nexport default Eject;\n","import { memo } from \"react\";\nimport classnames from \"classnames\";\n\nimport * as Selectors from \"../../selectors\";\nimport * as Actions from \"../../actionCreators\";\nimport { useActionCreator, useTypedSelector } from \"../../hooks\";\nimport WinampButton from \"../WinampButton\";\n\nfunction toggleEqualizer() {\n  return Actions.toggleWindow(\"equalizer\");\n}\n\nconst EqToggleButton = memo(() => {\n  const handleClick = useActionCreator(toggleEqualizer);\n  const windowOpen = useTypedSelector(Selectors.getWindowOpen)(\"equalizer\");\n  return (\n    <WinampButton\n      id=\"equalizer-button\"\n      className={classnames({ selected: windowOpen })}\n      onClick={handleClick}\n      title=\"Toggle Graphical Equalizer\"\n    />\n  );\n});\n\nexport default EqToggleButton;\n","import { memo } from \"react\";\nimport classnames from \"classnames\";\n\nimport * as Selectors from \"../../selectors\";\nimport * as Actions from \"../../actionCreators\";\nimport { useTypedSelector, useActionCreator } from \"../../hooks\";\nimport WinampButton from \"../WinampButton\";\n\nfunction togglePlaylist() {\n  return Actions.toggleWindow(\"playlist\");\n}\n\nconst PlaylistToggleButton = memo(() => {\n  const selected = useTypedSelector(Selectors.getWindowOpen)(\"playlist\");\n  const handleClick = useActionCreator(togglePlaylist);\n  return (\n    <WinampButton\n      id=\"playlist-button\"\n      className={classnames({ selected })}\n      onClick={handleClick}\n      title=\"Toggle Playlist Editor\"\n    />\n  );\n});\n\nexport default PlaylistToggleButton;\n","import { memo, Fragment } from \"react\";\nimport Character from \"./Character\";\n\ninterface Props {\n  children: string;\n}\n\nconst CharacterString = memo((props: Props) => {\n  const text = `${props.children}` || \"\";\n  const chars = text.split(\"\");\n  return (\n    <Fragment>\n      {chars.map((character, index) => (\n        <Character key={index + character}>{character}</Character>\n      ))}\n    </Fragment>\n  );\n});\n\nexport default CharacterString;\n","import { memo } from \"react\";\n\nimport CharacterString from \"../CharacterString\";\nimport * as Selectors from \"../../selectors\";\nimport { useTypedSelector } from \"../../hooks\";\n\nconst Kbps = memo(() => {\n  const kbps = useTypedSelector(Selectors.getKbps);\n  return (\n    <div id=\"kbps\">\n      <CharacterString>{kbps || \"\"}</CharacterString>\n    </div>\n  );\n});\n\nexport default Kbps;\n","import { memo } from \"react\";\n\nimport CharacterString from \"../CharacterString\";\nimport * as Selectors from \"../../selectors\";\nimport { useTypedSelector } from \"../../hooks\";\n\nconst Khz = memo(() => {\n  const khz = useTypedSelector(Selectors.getKhz);\n  return (\n    <div id=\"khz\">\n      <CharacterString>{khz || \"\"}</CharacterString>\n    </div>\n  );\n});\n\nexport default Khz;\n","// Single line text display that can animate and hold multiple registers\n// Knows how to display various modes like tracking, volume, balance, etc.\nimport * as React from \"react\";\nimport CharacterString from \"../CharacterString\";\nimport * as Actions from \"../../actionCreators\";\nimport * as Selectors from \"../../selectors\";\nimport { useTypedSelector, useActionCreator } from \"../../hooks\";\nimport * as Utils from \"../../utils\";\n\nconst SEPARATOR = \"  ***  \";\n\nconst CHAR_WIDTH = 5;\nconst MARQUEE_MAX_LENGTH = 31;\n\n// Always positive modulus\nexport const mod = (n: number, m: number): number => ((n % m) + m) % m;\n\nconst isLong = (text: string): boolean => text.length >= MARQUEE_MAX_LENGTH;\n\n// Given text and step, how many pixels should it be shifted?\nexport const stepOffset = (\n  text: string,\n  step: number,\n  pixels: number\n): number => {\n  if (!isLong(text)) {\n    return 0;\n  }\n\n  const stepOffsetWidth = step * CHAR_WIDTH; // Steps move one char at a time\n  const offset = stepOffsetWidth + pixels;\n  const stringLength = (text.length + SEPARATOR.length) * CHAR_WIDTH;\n\n  return mod(offset, stringLength);\n};\n\n// Format an int as pixels\nexport const pixelUnits = (pixels: number): string => `${pixels}px`;\n\n// If text is wider than the marquee, it needs to loop\nexport const loopText = (text: string): string =>\n  isLong(text)\n    ? `${text}${SEPARATOR}${text}`\n    : text.padEnd(MARQUEE_MAX_LENGTH, \" \");\n\ninterface UseStepperArgs {\n  step: () => void;\n  dragging: boolean;\n}\n\n// Call `step` every second, except when dragging. Resume stepping 1 second after dragging ceases.\nfunction useStepper({ step, dragging }: UseStepperArgs): void {\n  const [stepping, setStepping] = React.useState(true);\n  React.useEffect(() => {\n    if (stepping === false) {\n      return;\n    }\n    const stepHandle = setInterval(step, 220);\n    return () => clearInterval(stepHandle);\n  }, [step, stepping]);\n\n  React.useEffect(() => {\n    if (dragging) {\n      setStepping(false);\n      return;\n    }\n    const steppingTimeout = window.setTimeout(() => {\n      setStepping(true);\n    }, 1000);\n    return () => {\n      window.clearTimeout(steppingTimeout);\n    };\n  }, [dragging]);\n}\n\n// When user calls `handleMouseDown`, and moves the mouse, `dragOffset` will update as they drag.\nfunction useDragX() {\n  const [mouseDownX, setMouseDownX] = React.useState<number | null>(null);\n  const [dragOffset, setDragOffset] = React.useState(0);\n\n  React.useEffect(() => {\n    if (mouseDownX == null) {\n      return;\n    }\n    const xStart = mouseDownX;\n    const handleMouseMove = (ee: MouseEvent | TouchEvent) => {\n      const diff = Utils.getX(ee) - xStart;\n      setDragOffset(-diff);\n    };\n\n    // TODO: Use `once` or something instead of this flag nonsense\n    let cleanedUp = false;\n    const handleMouseUp = () => {\n      if (cleanedUp) {\n        return;\n      }\n      document.removeEventListener(\"mousemove\", handleMouseMove);\n      document.removeEventListener(\"touchmove\", handleMouseMove);\n      document.removeEventListener(\"mouseup\", handleMouseUp);\n      document.removeEventListener(\"touchend\", handleMouseUp);\n      setMouseDownX(null);\n      cleanedUp = true;\n    };\n\n    document.addEventListener(\"mousemove\", handleMouseMove);\n    document.addEventListener(\"touchmove\", handleMouseMove);\n    document.addEventListener(\"touseup\", handleMouseUp);\n    document.addEventListener(\"touchend\", handleMouseUp);\n\n    return handleMouseUp;\n  }, [mouseDownX]);\n\n  const handleMouseDown = React.useCallback(\n    (\n      e: React.MouseEvent<HTMLDivElement> | React.TouchEvent<HTMLDivElement>\n    ): void => {\n      setMouseDownX(Utils.getX(e));\n    },\n    []\n  );\n\n  return { handleMouseDown, dragOffset, dragging: mouseDownX != null };\n}\n\nconst Marquee = React.memo(() => {\n  const text = useTypedSelector(Selectors.getMarqueeText);\n  const doubled = useTypedSelector(Selectors.getDoubled);\n  const marqueeStep = useTypedSelector(Selectors.getMarqueeStep);\n  const stepMarquee = useActionCreator(Actions.stepMarquee);\n  const { handleMouseDown, dragOffset, dragging } = useDragX();\n  const offset = stepOffset(text, marqueeStep, dragOffset);\n  const offsetPixels = pixelUnits(-offset);\n\n  useStepper({ step: stepMarquee, dragging });\n\n  return (\n    <div\n      id=\"marquee\"\n      className=\"text\"\n      onPointerDown={handleMouseDown}\n      title=\"Song Title\"\n    >\n      <div\n        style={{\n          whiteSpace: \"nowrap\",\n          willChange: \"transform\",\n          transform: `translateX(${offsetPixels})`,\n        }}\n        // Force the DOM node to be recreated when the doubled size changes.\n        // This works around a Chrome browser bug where the `will-change: transform;`\n        // on this node seems to cause a change to the `image-rendering:\n        // pixelated;` which we inherit from `#webamp` not to be respected.\n        key={doubled ? \"doubled\" : \"not-doubled\"}\n      >\n        <CharacterString>{loopText(text)}</CharacterString>\n      </div>\n    </div>\n  );\n});\n\nexport default Marquee;\n","import { memo } from \"react\";\nimport classnames from \"classnames\";\nimport * as Selectors from \"../../selectors\";\nimport { useTypedSelector } from \"../../hooks\";\n\nconst MonoStereo = memo(() => {\n  const channels = useTypedSelector(Selectors.getChannels);\n  return (\n    <div className=\"mono-stereo\">\n      <div id=\"stereo\" className={classnames({ selected: channels === 2 })} />\n      <div id=\"mono\" className={classnames({ selected: channels === 1 })} />\n    </div>\n  );\n});\n\nexport default MonoStereo;\n","import { FormEvent, memo, useCallback } from \"react\";\nimport * as Selectors from \"../../selectors\";\nimport { useTypedSelector, useTypedDispatch } from \"../../hooks\";\n\nfunction usePosition() {\n  const duration = useTypedSelector(Selectors.getDuration);\n  const timeElapsed = useTypedSelector(Selectors.getTimeElapsed);\n  const position = duration ? (Math.floor(timeElapsed) / duration) * 100 : 0;\n  const scrubPosition = useTypedSelector(Selectors.getUserInputScrubPosition);\n  const userInputFocus = useTypedSelector(Selectors.getUserInputFocus);\n\n  const displayedPosition =\n    userInputFocus === \"position\" ? scrubPosition : position;\n\n  return [position, displayedPosition];\n}\n\nconst Position = memo(() => {\n  const [position, displayedPosition] = usePosition();\n  const dispatch = useTypedDispatch();\n\n  const seekToPercentComplete = useCallback(\n    (e: FormEvent) => {\n      dispatch({\n        type: \"SEEK_TO_PERCENT_COMPLETE\",\n        percent: Number((e.target as HTMLInputElement).value),\n      });\n      dispatch({ type: \"UNSET_FOCUS\" });\n    },\n    [dispatch]\n  );\n\n  const setPosition = useCallback(\n    (e: FormEvent) => {\n      dispatch({ type: \"SET_FOCUS\", input: \"position\" });\n      dispatch({\n        type: \"SET_SCRUB_POSITION\",\n        position: Number((e.target as HTMLInputElement).value),\n      });\n    },\n    [dispatch]\n  );\n\n  // In shade mode, the position slider shows up differently depending on if\n  // it's near the start, middle or end of its progress\n  let className = \"\";\n  if (position <= 33) {\n    className = \"left\";\n  } else if (position >= 66) {\n    className = \"right\";\n  }\n\n  return (\n    <input\n      id=\"position\"\n      className={className}\n      type=\"range\"\n      min=\"0\"\n      max=\"100\"\n      step=\"1\"\n      style={{ touchAction: \"none\" }}\n      value={displayedPosition}\n      onInput={setPosition}\n      onChange={\n        () => {} /* React complains without this, can probably rename onInput to onChange */\n      }\n      onPointerUp={seekToPercentComplete}\n      onPointerDown={setPosition}\n      title=\"Seeking Bar\"\n    />\n  );\n});\n\nexport default Position;\n","import { memo } from \"react\";\nimport classnames from \"classnames\";\nimport * as Actions from \"../../actionCreators\";\nimport * as Selectors from \"../../selectors\";\nimport ContextMenuWraper from \"../ContextMenuWrapper\";\nimport { Node } from \"../ContextMenu\";\nimport { useTypedSelector, useActionCreator } from \"../../hooks\";\nimport WinampButton from \"../WinampButton\";\n\nconst Repeat = memo(() => {\n  const repeat = useTypedSelector(Selectors.getRepeat);\n  const handleClick = useActionCreator(Actions.toggleRepeat);\n  return (\n    <ContextMenuWraper\n      renderContents={() => (\n        <Node\n          checked={repeat}\n          label=\"Repeat\"\n          onClick={handleClick}\n          hotkey=\"(R)\"\n        />\n      )}\n    >\n      <WinampButton\n        id=\"repeat\"\n        className={classnames({ selected: repeat })}\n        onClick={handleClick}\n        title=\"Toggle Repeat\"\n      />\n    </ContextMenuWraper>\n  );\n});\n\nexport default Repeat;\n","import { memo } from \"react\";\nimport ClickedDiv from \"../ClickedDiv\";\n\nimport * as Actions from \"../../actionCreators\";\nimport { useActionCreator } from \"../../hooks\";\n\nconst Shade = memo(() => {\n  const handleClick = useActionCreator(Actions.toggleMainWindowShadeMode);\n  return (\n    <ClickedDiv\n      id=\"shade\"\n      onPointerDown={handleClick}\n      onDoubleClick={(e) => e.stopPropagation()}\n      title=\"Toggle Windowshade Mode\"\n    />\n  );\n});\n\nexport default Shade;\n","import { memo } from \"react\";\nimport ClickedDiv from \"../ClickedDiv\";\nimport * as Actions from \"../../actionCreators\";\nimport { useActionCreator } from \"../../hooks\";\n\nconst Minimize = memo(() => {\n  const minimize = useActionCreator(Actions.minimize);\n  return <ClickedDiv id=\"minimize\" title=\"Minimize\" onClick={minimize} />;\n});\n\nexport default Minimize;\n","import { memo } from \"react\";\nimport classnames from \"classnames\";\nimport * as Actions from \"../../actionCreators\";\nimport * as Selectors from \"../../selectors\";\nimport ContextMenuWraper from \"../ContextMenuWrapper\";\nimport { Node } from \"../ContextMenu\";\nimport { useTypedSelector, useActionCreator } from \"../../hooks\";\nimport WinampButton from \"../WinampButton\";\n\nconst Shuffle = memo(() => {\n  const shuffle = useTypedSelector(Selectors.getShuffle);\n  const handleClick = useActionCreator(Actions.toggleShuffle);\n  return (\n    <ContextMenuWraper\n      renderContents={() => (\n        <Node\n          checked={shuffle}\n          label=\"Shuffle\"\n          onClick={handleClick}\n          hotkey=\"(S)\"\n        />\n      )}\n    >\n      <WinampButton\n        id=\"shuffle\"\n        className={classnames({ selected: shuffle })}\n        onClick={handleClick}\n        title=\"Toggle Shuffle\"\n      />\n    </ContextMenuWraper>\n  );\n});\n\nexport default Shuffle;\n","import { memo } from \"react\";\nimport * as Utils from \"../../utils\";\n\nimport * as Actions from \"../../actionCreators\";\nimport * as Selectors from \"../../selectors\";\nimport { TIME_MODE } from \"../../constants\";\nimport { useActionCreator, useTypedSelector } from \"../../hooks\";\n\nconst Time = memo(() => {\n  const toggleTimeMode = useActionCreator(Actions.toggleTimeMode);\n  const timeElapsed = useTypedSelector(Selectors.getTimeElapsed);\n  const duration = useTypedSelector(Selectors.getDuration) || 0;\n  const timeMode = useTypedSelector(Selectors.getTimeMode);\n  const seconds =\n    timeMode === TIME_MODE.ELAPSED ? timeElapsed : duration - timeElapsed;\n\n  const timeObj = Utils.getTimeObj(seconds);\n  return (\n    <div id=\"time\" onClick={toggleTimeMode} className=\"countdown\">\n      {timeMode === TIME_MODE.REMAINING && <div id=\"minus-sign\" />}\n      <div\n        id=\"minute-first-digit\"\n        className={`digit digit-${timeObj.minutesFirstDigit}`}\n      />\n      <div\n        id=\"minute-second-digit\"\n        className={`digit digit-${timeObj.minutesSecondDigit}`}\n      />\n      <div\n        id=\"second-first-digit\"\n        className={`digit digit-${timeObj.secondsFirstDigit}`}\n      />\n      <div\n        id=\"second-second-digit\"\n        className={`digit digit-${timeObj.secondsSecondDigit}`}\n      />\n    </div>\n  );\n});\n\nexport default Time;\n","import * as React from \"react\";\nimport * as Actions from \"../actionCreators\";\nimport * as Selectors from \"../selectors\";\nimport { useTypedSelector, useActionCreator } from \"../hooks\";\n\ninterface Props {\n  id?: string;\n  style?: React.CSSProperties;\n  className?: string;\n}\n\nexport default function Volume({ id, style, className }: Props) {\n  const volume = useTypedSelector(Selectors.getVolume);\n  const setFocus = useActionCreator(Actions.setFocus);\n  const unsetFocus = useActionCreator(Actions.unsetFocus);\n  const setVolume = useActionCreator(Actions.setVolume);\n\n  return (\n    <input\n      id={id}\n      type=\"range\"\n      min=\"0\"\n      max=\"100\"\n      step=\"1\"\n      value={volume}\n      style={{ ...style, touchAction: \"none\" }}\n      className={className}\n      onChange={(e) => setVolume(Number(e.target.value))}\n      onPointerDown={() => setFocus(\"volume\")}\n      onPointerUp={unsetFocus}\n      title=\"Volume Bar\"\n    />\n  );\n}\n","import { memo } from \"react\";\nimport * as Selectors from \"../../selectors\";\n\nimport Volume from \"../Volume\";\nimport { useTypedSelector } from \"../../hooks\";\n\nconst MainVolume = memo(() => {\n  const volume = useTypedSelector(Selectors.getVolume);\n  const percent = volume / 100;\n  const sprite = Math.round(percent * 28);\n  const offset = (sprite - 1) * 15;\n\n  const style = {\n    backgroundPosition: `0 -${offset}px`,\n  };\n  return (\n    <div id=\"volume\" style={style}>\n      <Volume />\n    </div>\n  );\n});\n\nexport default MainVolume;\n","import * as React from \"react\";\nimport classnames from \"classnames\";\nimport { WINDOWS, MEDIA_STATUS, LOAD_STYLE } from \"../../constants\";\nimport * as Actions from \"../../actionCreators\";\n\nimport DropTarget from \"../DropTarget\";\nimport MiniTime from \"../MiniTime\";\n\nimport ClickedDiv from \"../ClickedDiv\";\nimport ContextMenuTarget from \"../ContextMenuTarget\";\nimport Vis from \"../Vis\";\nimport ActionButtons from \"./ActionButtons\";\nimport MainBalance from \"./MainBalance\";\nimport Close from \"./Close\";\nimport ClutterBar from \"./ClutterBar\";\nimport MainContextMenu from \"./MainContextMenu\";\nimport Eject from \"./Eject\";\nimport EqToggleButton from \"./EqToggleButton\";\nimport PlaylistToggleButton from \"./PlaylistToggleButton\";\nimport Kbps from \"./Kbps\";\nimport Khz from \"./Khz\";\nimport Marquee from \"./Marquee\";\nimport MonoStereo from \"./MonoStereo\";\nimport Position from \"./Position\";\nimport Repeat from \"./Repeat\";\nimport Shade from \"./Shade\";\nimport Minimize from \"./Minimize\";\nimport Shuffle from \"./Shuffle\";\nimport Time from \"./Time\";\nimport MainVolume from \"./MainVolume\";\nimport * as Selectors from \"../../selectors\";\n\nimport { FilePicker } from \"../../types\";\nimport FocusTarget from \"../FocusTarget\";\nimport { useActionCreator, useTypedSelector } from \"../../hooks\";\n\ninterface Props {\n  analyser: AnalyserNode;\n  filePickers: FilePicker[];\n}\n\nfunction loadMediaAndPlay(e: React.DragEvent<HTMLDivElement>) {\n  return Actions.loadMedia(e, LOAD_STYLE.PLAY);\n}\n\nconst MainWindow = React.memo(({ analyser, filePickers }: Props) => {\n  const mainShade = useTypedSelector(Selectors.getWindowShade)(\"main\");\n  const status = useTypedSelector(Selectors.getMediaStatus);\n  const focused = useTypedSelector(Selectors.getFocusedWindow);\n  const loading = useTypedSelector(Selectors.getLoading);\n  const doubled = useTypedSelector(Selectors.getDoubled);\n  const llama = useTypedSelector(Selectors.getLlamaMode);\n  const working = useTypedSelector(Selectors.getWorking);\n\n  const className = classnames({\n    window: true,\n    play: status === MEDIA_STATUS.PLAYING,\n    stop: status === MEDIA_STATUS.STOPPED,\n    pause: status === MEDIA_STATUS.PAUSED,\n    selected: focused === WINDOWS.MAIN,\n    shade: mainShade,\n    draggable: true,\n    loading,\n    doubled,\n    llama,\n  });\n\n  const toggleMainWindowShadeMode = useActionCreator(\n    Actions.toggleMainWindowShadeMode\n  );\n  const scrollVolume = useActionCreator(Actions.scrollVolume);\n  const loadMedia = useActionCreator(loadMediaAndPlay);\n\n  return (\n    <DropTarget\n      id=\"main-window\"\n      windowId={WINDOWS.MAIN}\n      className={className}\n      handleDrop={loadMedia}\n      onWheelActive={scrollVolume}\n    >\n      <FocusTarget windowId={WINDOWS.MAIN}>\n        <div\n          id=\"title-bar\"\n          className=\"selected draggable\"\n          onDoubleClick={toggleMainWindowShadeMode}\n        >\n          <ContextMenuTarget\n            id=\"option-context\"\n            bottom\n            renderMenu={() => <MainContextMenu filePickers={filePickers} />}\n          >\n            <ClickedDiv id=\"option\" title=\"Winamp Menu\" />\n          </ContextMenuTarget>\n          {mainShade && <MiniTime />}\n          <Minimize />\n          <Shade />\n          <Close />\n        </div>\n        <div className=\"webamp-status\">\n          <ClutterBar />\n          {!working && <div id=\"play-pause\" />}\n          <div\n            id=\"work-indicator\"\n            className={classnames({ selected: working })}\n          />\n          <Time />\n        </div>\n        <Vis analyser={analyser} />\n        <div className=\"media-info\">\n          <Marquee />\n          <Kbps />\n          <Khz />\n          <MonoStereo />\n        </div>\n        <MainVolume />\n        <MainBalance />\n        <div className=\"windows\">\n          <EqToggleButton />\n          <PlaylistToggleButton />\n        </div>\n        <Position />\n        <ActionButtons />\n        <Eject />\n        <div className=\"shuffle-repeat\">\n          <Shuffle />\n          <Repeat />\n        </div>\n        <a\n          id=\"about\"\n          target=\"_blank\"\n          href=\"https://webamp.org/about\"\n          title=\"About\"\n        />\n      </FocusTarget>\n    </DropTarget>\n  );\n});\n\nexport default MainWindow;\n","import ResizeTarget from \"../ResizeTarget\";\nimport * as Actions from \"../../actionCreators\";\nimport * as Selectors from \"../../selectors\";\nimport { useTypedSelector, useActionCreator } from \"../../hooks\";\n\ntype Props = {\n  widthOnly?: boolean;\n};\n\nfunction PlaylistResizeTarget({ widthOnly }: Props) {\n  const windowSize = useTypedSelector(Selectors.getWindowSize);\n  const setWindowSize = useActionCreator(Actions.setWindowSize);\n  const currentSize = windowSize(\"playlist\");\n\n  return (\n    <ResizeTarget\n      currentSize={currentSize}\n      id=\"playlist-resize-target\"\n      setWindowSize={(size) => {\n        setWindowSize(\"playlist\", size);\n      }}\n      widthOnly={widthOnly}\n    />\n  );\n}\nexport default PlaylistResizeTarget;\n","import { useMemo } from \"react\";\nimport classnames from \"classnames\";\nimport { getTimeStr } from \"../../utils\";\nimport * as Selectors from \"../../selectors\";\n\nimport {\n  WINDOWS,\n  WINDOW_RESIZE_SEGMENT_WIDTH,\n  WINDOW_WIDTH,\n  CHARACTER_WIDTH,\n  UTF8_ELLIPSIS,\n} from \"../../constants\";\nimport * as Actions from \"../../actionCreators\";\nimport CharacterString from \"../CharacterString\";\nimport PlaylistResizeTarget from \"./PlaylistResizeTarget\";\nimport { useTypedSelector, useActionCreator } from \"../../hooks\";\nimport WinampButton from \"../WinampButton\";\n\nfunction PlaylistShade() {\n  const focused = useTypedSelector(Selectors.getFocusedWindow);\n  const getWindowSize = useTypedSelector(Selectors.getWindowSize);\n  const playlistSize = getWindowSize(\"playlist\");\n  const duration = useTypedSelector(Selectors.getDuration);\n  const name = useTypedSelector(Selectors.getMinimalMediaText);\n\n  const closeWindow = useActionCreator(Actions.closeWindow);\n  const toggleShade = useActionCreator(Actions.togglePlaylistShadeMode);\n  const focusWindow = useActionCreator(Actions.setFocusedWindow);\n\n  const addedWidth = playlistSize[0] * WINDOW_RESIZE_SEGMENT_WIDTH;\n\n  const trimmedName = useMemo(() => {\n    if (name == null) {\n      return \"[No file]\";\n    }\n\n    const MIN_NAME_WIDTH = 205;\n\n    const nameLength = (MIN_NAME_WIDTH + addedWidth) / CHARACTER_WIDTH;\n    return name.length > nameLength\n      ? name.slice(0, nameLength - 1) + UTF8_ELLIPSIS\n      : name;\n  }, [addedWidth, name]);\n\n  const time = useMemo(() => {\n    return name == null ? \"\" : getTimeStr(duration);\n  }, [duration, name]);\n\n  return (\n    <div\n      id=\"playlist-window-shade\"\n      className={classnames(\"window\", \"draggable\", {\n        selected: focused === WINDOWS.PLAYLIST,\n      })}\n      style={{ width: `${WINDOW_WIDTH + addedWidth}px` }}\n      onPointerDown={() => focusWindow(\"playlist\")}\n      onDoubleClick={toggleShade}\n    >\n      <div className=\"left\">\n        <div className=\"right draggable\">\n          <div id=\"playlist-shade-track-title\">\n            <CharacterString>{trimmedName}</CharacterString>\n          </div>\n          <div id=\"playlist-shade-time\">\n            <CharacterString>{time}</CharacterString>\n          </div>\n          <PlaylistResizeTarget widthOnly />\n          <WinampButton id=\"playlist-shade-button\" onClick={toggleShade} />\n          <WinampButton\n            id=\"playlist-close-button\"\n            onClick={() => closeWindow(\"playlist\")}\n          />\n        </div>\n      </div>\n    </div>\n  );\n}\n\nexport default PlaylistShade;\n","import { memo, ReactNode } from \"react\";\nimport classnames from \"classnames\";\nimport { useIsHovered } from \"../../hooks\";\n\ninterface Props {\n  children: ReactNode;\n}\n\n// We implement hover ourselves, because we hate ourselves and https://stackoverflow.com/a/13259049/1263117\nfunction PlaylistMenuEntry({ children }: Props) {\n  const { ref, hover } = useIsHovered();\n  return (\n    <li ref={ref} className={classnames({ hover })}>\n      {children}\n    </li>\n  );\n}\n\nexport default memo(PlaylistMenuEntry);\n","import { Children, memo, useState, ReactNode, useCallback } from \"react\";\nimport classnames from \"classnames\";\nimport { useOnClickAway } from \"../../hooks\";\n\nimport PlaylistMenuEntry from \"./PlaylistMenuEntry\";\n\ninterface Props {\n  id: string;\n  children: ReactNode | Array<ReactNode>;\n}\n\ninterface State {\n  selected: boolean;\n}\n\nfunction PlaylistMenu(props: Props) {\n  const [selected, setSelected] = useState(false);\n\n  const [ref, setRef] = useState<Element | null>(null);\n\n  const callback = useCallback(() => {\n    // If we've clicked on a Context Menu spawed inside this menu, it will\n    // register as an external click. However, hiding the menu will remove\n    // the Context Menu from the DOM. Therefore, we wait until the next\n    // event loop to actually hide ourselves.\n    setTimeout(() => {\n      // Close the menu\n      setSelected(false);\n    }, 0);\n  }, []);\n\n  useOnClickAway(ref, selected ? callback : null);\n\n  return (\n    <div\n      id={props.id}\n      className={classnames(\"playlist-menu\", {\n        selected,\n      })}\n      ref={setRef}\n      onClick={() => setSelected((selected_) => !selected_)}\n    >\n      <div className=\"bar\" />\n      {selected && (\n        <ul>\n          {Children.map(props.children, (child, i) => (\n            <PlaylistMenuEntry key={i}>{child}</PlaylistMenuEntry>\n          ))}\n        </ul>\n      )}\n    </div>\n  );\n}\nexport default memo(PlaylistMenu);\n","import * as Selectors from \"../../selectors\";\nimport * as Actions from \"../../actionCreators\";\nimport PlaylistMenu from \"./PlaylistMenu\";\n\nimport { useTypedSelector, useActionCreator } from \"../../hooks\";\n\nconst AddMenu = () => {\n  const nextIndex = useTypedSelector(Selectors.getTrackCount);\n  const addDirAtIndex = useActionCreator(Actions.addDirAtIndex);\n  const addFilesAtIndex = useActionCreator(Actions.addFilesAtIndex);\n  const addFilesFromUrl = useActionCreator(Actions.addFilesFromUrl);\n  return (\n    <PlaylistMenu id=\"playlist-add-menu\">\n      <div className=\"add-url\" onClick={() => addFilesFromUrl(nextIndex)} />\n      <div className=\"add-dir\" onClick={() => addDirAtIndex(nextIndex)} />\n      <div className=\"add-file\" onClick={() => addFilesAtIndex(nextIndex)} />\n    </PlaylistMenu>\n  );\n};\n\nexport default AddMenu;\n","import * as Actions from \"../../actionCreators\";\nimport PlaylistMenu from \"./PlaylistMenu\";\nimport { useActionCreator } from \"../../hooks\";\n\n/* eslint-disable no-alert */\n\nconst RemoveMenu = () => {\n  const removeSelected = useActionCreator(Actions.removeSelectedTracks);\n  const removeAll = useActionCreator(Actions.removeAllTracks);\n  const crop = useActionCreator(Actions.cropPlaylist);\n  return (\n    <PlaylistMenu id=\"playlist-remove-menu\">\n      <div\n        className=\"remove-misc\"\n        onClick={() => alert(\"Not supported in Webamp\")}\n      />\n      <div className=\"remove-all\" onClick={removeAll} />\n      <div className=\"crop\" onClick={crop} />\n      <div className=\"remove-selected\" onClick={removeSelected} />\n    </PlaylistMenu>\n  );\n};\n\nexport default RemoveMenu;\n","import PlaylistMenu from \"./PlaylistMenu\";\nimport * as Actions from \"../../actionCreators\";\nimport { useActionCreator } from \"../../hooks\";\n\nexport default function SelectionMenu() {\n  const invert = useActionCreator(Actions.invertSelection);\n  const zero = useActionCreator(Actions.selectZero);\n  const all = useActionCreator(Actions.selectAll);\n  return (\n    <PlaylistMenu id=\"playlist-selection-menu\">\n      <div className=\"invert-selection\" onClick={invert} />\n      <div className=\"select-zero\" onClick={zero} />\n      <div className=\"select-all\" onClick={all} />\n    </PlaylistMenu>\n  );\n}\n","import * as Actions from \"../../actionCreators\";\n\nimport { Hr, Node } from \"../ContextMenu\";\nimport ContextMenuTarget from \"../ContextMenuTarget\";\nimport { useActionCreator } from \"../../hooks\";\n\ninterface DispatchProps {\n  sortListByTitle: () => void;\n  reverseList: () => void;\n  randomizeList: () => void;\n}\n\n/* eslint-disable no-alert */\n/* TODO: This should really be kitty-corner to the upper right hand corner of the MiscMenu */\nexport default function SortContextMenu() {\n  const reverseList = useActionCreator(Actions.reverseList);\n  const randomizeList = useActionCreator(Actions.randomizeList);\n  const sortListByTitle = useActionCreator(Actions.sortListByTitle);\n  return (\n    <ContextMenuTarget\n      style={{ width: \"100%\", height: \"100%\" }}\n      top\n      renderMenu={() => (\n        <>\n          <Node label=\"Sort list by title\" onClick={sortListByTitle} />\n          <Hr />\n          <Node label=\"Reverse list\" onClick={reverseList} />\n          <Node label=\"Randomize list\" onClick={randomizeList} />\n        </>\n      )}\n    >\n      <div />\n    </ContextMenuTarget>\n  );\n}\n","import { Node } from \"../ContextMenu\";\nimport ContextMenuTarget from \"../ContextMenuTarget\";\nimport * as Actions from \"../../actionCreators\";\nimport { useActionCreator } from \"../../hooks\";\n\nconst MiscOptionsContextMenu = () => {\n  const downloadHtmlPlaylist = useActionCreator(Actions.downloadHtmlPlaylist);\n  return (\n    <ContextMenuTarget\n      style={{ width: \"100%\", height: \"100%\" }}\n      top\n      renderMenu={() => (\n        <Node onClick={downloadHtmlPlaylist} label=\"Generate HTML playlist\" />\n      )}\n    >\n      <div />\n    </ContextMenuTarget>\n  );\n};\n\nexport default MiscOptionsContextMenu;\n","import PlaylistMenu from \"./PlaylistMenu\";\nimport SortContextMenu from \"./SortContextMenu\";\nimport MiscOptionsContextMenu from \"./MiscOptionsContextMenu\";\n\nconst MiscMenu = () => (\n  <PlaylistMenu id=\"playlist-misc-menu\">\n    <div className=\"sort-list\" onClick={(e) => e.stopPropagation()}>\n      <SortContextMenu />\n    </div>\n    <div\n      className=\"file-info\"\n      onClick={() => alert(\"Not supported in Webamp\")}\n    />\n\n    <div className=\"misc-options\" onClick={(e) => e.stopPropagation()}>\n      <MiscOptionsContextMenu />\n    </div>\n  </PlaylistMenu>\n);\n\nexport default MiscMenu;\n","import * as Actions from \"../../actionCreators\";\nimport PlaylistMenu from \"./PlaylistMenu\";\nimport { useActionCreator } from \"../../hooks\";\n\n/* eslint-disable no-alert */\nexport default function ListMenu() {\n  const removeAllTracks = useActionCreator(Actions.removeAllTracks);\n  const addFilesFromList = useActionCreator(Actions.addFilesFromList);\n  const saveFilesToList = useActionCreator(Actions.saveFilesToList);\n  return (\n    <PlaylistMenu id=\"playlist-list-menu\">\n      <div className=\"new-list\" onClick={removeAllTracks} />\n      <div className=\"save-list\" onClick={saveFilesToList} />\n      <div className=\"load-list\" onClick={addFilesFromList} />\n    </PlaylistMenu>\n  );\n}\n","import { useMemo } from \"react\";\n\nimport CharacterString from \"../CharacterString\";\nimport * as Actions from \"../../selectors\";\nimport { useTypedSelector } from \"../../hooks\";\n\n// While all the browsers I care about support String.prototype.padEnd,\n// Not all node versions do, and I want tests to pass in Jest...\n// Sigh.\nfunction rightPad(str: string, len: number, fillChar: string): string {\n  while (str.length < len) {\n    str += fillChar;\n  }\n  return str;\n}\n\nconst RunningTimeDisplay = () => {\n  const runningTimeMessage = useTypedSelector(Actions.getRunningTimeMessage);\n  const text = useMemo(\n    () => rightPad(runningTimeMessage, 18, \" \"),\n    [runningTimeMessage]\n  );\n  return (\n    <div className=\"playlist-running-time-display draggable\">\n      {/* This div is probably not strictly needed */}\n      <div>\n        <CharacterString>{text}</CharacterString>\n      </div>\n    </div>\n  );\n};\n\nexport default RunningTimeDisplay;\n","import { Fragment } from \"react\";\n\nimport * as Actions from \"../../actionCreators\";\n\nimport MiniTime from \"../MiniTime\";\nimport RunningTimeDisplay from \"./RunningTimeDisplay\";\nimport { useActionCreator } from \"../../hooks\";\n\nconst PlaylistWindow = () => {\n  const play = useActionCreator(Actions.play);\n  const pause = useActionCreator(Actions.pause);\n  const stop = useActionCreator(Actions.stop);\n  const openMediaFileDialog = useActionCreator(Actions.openMediaFileDialog);\n  const next = useActionCreator(Actions.next);\n  const previous = useActionCreator(Actions.previous);\n  return (\n    <Fragment>\n      <RunningTimeDisplay />\n      <div className=\"playlist-action-buttons\">\n        <div className=\"playlist-previous-button\" onClick={previous} />\n        <div className=\"playlist-play-button\" onClick={play} />\n        <div className=\"playlist-pause-button\" onClick={pause} />\n        <div className=\"playlist-stop-button\" onClick={stop} />\n        <div className=\"playlist-next-button\" onClick={next} />\n        <div className=\"playlist-eject-button\" onClick={openMediaFileDialog} />\n      </div>\n      <MiniTime />\n    </Fragment>\n  );\n};\nexport default PlaylistWindow;\n","import { useCallback, ReactNode, TouchEvent } from \"react\";\nimport classnames from \"classnames\";\nimport * as Selectors from \"../../selectors\";\nimport * as Actions from \"../../actionCreators\";\nimport {\n  useTypedSelector,\n  useActionCreator,\n  useTypedDispatch,\n} from \"../../hooks\";\n\ninterface Props {\n  id: number;\n  index: number;\n  handleMoveClick: (\n    e: React.MouseEvent<HTMLDivElement> | React.TouchEvent<HTMLDivElement>\n  ) => void;\n  children: ReactNode;\n}\n\nfunction TrackCell({ children, handleMoveClick, index, id }: Props) {\n  const skinPlaylistStyle = useTypedSelector(Selectors.getSkinPlaylistStyle);\n  const selectedTrackIds = useTypedSelector(Selectors.getSelectedTrackIdsSet);\n  const currentTrackId = useTypedSelector(Selectors.getCurrentTrackId);\n  const selected = selectedTrackIds.has(id);\n  const current = currentTrackId === id;\n\n  const dispatch = useTypedDispatch();\n  const playTrackNow = useActionCreator(Actions.playTrackNow);\n\n  const onMouseDown = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (e.shiftKey) {\n        e.preventDefault();\n        dispatch({ type: \"SHIFT_CLICKED_TRACK\", index });\n        return;\n      } else if (e.metaKey || e.ctrlKey) {\n        e.preventDefault();\n        dispatch({ type: \"CTRL_CLICKED_TRACK\", index });\n        return;\n      }\n\n      if (!selected) {\n        dispatch({ type: \"CLICKED_TRACK\", index });\n      }\n\n      handleMoveClick(e);\n    },\n    [dispatch, handleMoveClick, index, selected]\n  );\n\n  const handleTouchStart = useCallback(\n    (e: TouchEvent<HTMLDivElement>) => {\n      if (!selected) {\n        dispatch({ type: \"CLICKED_TRACK\", index });\n      }\n      handleMoveClick(e);\n\n      // There's no touch equivalent of onDoubleClick, so we fake one:\n      function handleSecondTap() {\n        playTrackNow(id);\n      }\n      e.target.addEventListener(\"touchstart\", handleSecondTap);\n      setTimeout(() => {\n        // Technically we might be unmounted here, but that's fine since you\n        // can't tap an unmounted element and we will clean up eventually.\n        e.target.removeEventListener(\"touchstart\", handleSecondTap);\n      }, 250);\n    },\n    [dispatch, handleMoveClick, id, index, playTrackNow, selected]\n  );\n\n  const style: React.CSSProperties = {\n    backgroundColor: selected ? skinPlaylistStyle.selectedbg : undefined,\n    color: current ? skinPlaylistStyle.current : undefined,\n  };\n  return (\n    <div\n      className={classnames(\"track-cell\", { selected, current })}\n      style={style}\n      onClick={(e) => e.stopPropagation()}\n      onMouseDown={onMouseDown}\n      onTouchStart={handleTouchStart}\n      onContextMenu={(e) => e.preventDefault()}\n      onDoubleClick={() => playTrackNow(id)}\n    >\n      {children}\n    </div>\n  );\n}\n\nexport default TrackCell;\n","import * as Selectors from \"../../selectors\";\nimport { useTypedSelector } from \"../../hooks\";\n\ninterface Props {\n  id: number;\n  paddedTrackNumber: string;\n}\n\nconst TrackTitle = ({ id, paddedTrackNumber }: Props) => {\n  const title = useTypedSelector(Selectors.getTrackDisplayName)(id);\n  return (\n    <span>\n      {paddedTrackNumber}. {title}\n    </span>\n  );\n};\n\nexport default TrackTitle;\n","import { useState, useEffect } from \"react\";\n\nimport * as Selectors from \"../../selectors\";\nimport { TRACK_HEIGHT } from \"../../constants\";\nimport * as Actions from \"../../actionCreators\";\nimport TrackCell from \"./TrackCell\";\nimport TrackTitle from \"./TrackTitle\";\nimport { useTypedSelector, useActionCreator } from \"../../hooks\";\nimport * as Utils from \"../../utils\";\n\nfunction getNumberLength(number: number): number {\n  return number.toString().length;\n}\n\nfunction TrackList() {\n  const offset = useTypedSelector(Selectors.getScrollOffset);\n  const trackIds = useTypedSelector(Selectors.getVisibleTrackIds);\n  const tracks = useTypedSelector(Selectors.getTracks);\n  const numberOfTracks = useTypedSelector(Selectors.getNumberOfTracks);\n\n  const selectZero = useActionCreator(Actions.selectZero);\n  const dragSelected = useActionCreator(Actions.dragSelected);\n  const scrollPlaylistByDelta = useActionCreator(Actions.scrollPlaylistByDelta);\n\n  const [node, setNode] = useState<HTMLElement | null>(null);\n  const [moving, setMoving] = useState(false);\n  const [mouseStartY, setMouseStartY] = useState<number | null>(null);\n\n  const _handleMoveClick = (\n    e: React.MouseEvent<HTMLDivElement> | React.TouchEvent<HTMLDivElement>\n  ) => {\n    setMoving(true);\n    setMouseStartY(Utils.getY(e));\n  };\n\n  useEffect(() => {\n    if (node == null || mouseStartY == null || moving === false) {\n      return;\n    }\n    const { top, bottom, left, right } = node.getBoundingClientRect();\n    let lastDiff = 0;\n    const handleMouseMove = (ee: MouseEvent | TouchEvent) => {\n      const x = Utils.getX(ee);\n      const y = Utils.getY(ee);\n      if (y < top || y > bottom || x < left || x > right) {\n        // Mouse is outside the track list\n        return;\n      }\n      const proposedDiff = Math.floor((y - mouseStartY) / TRACK_HEIGHT);\n      if (proposedDiff !== lastDiff) {\n        const diffDiff = proposedDiff - lastDiff;\n        dragSelected(diffDiff);\n        lastDiff = proposedDiff;\n      }\n    };\n\n    // A little indirect here. Basically, we set `moving` false here which\n    // causes our useEffect to rerun which removes all of these event listeners.\n    // It might be a little tigher to actually remove these listeners in the\n    // `handleMouseUp` callback, but... I'm lazy.\n    const handleMouseUp = () => setMoving(false);\n    window.addEventListener(\"mouseup\", handleMouseUp);\n    window.addEventListener(\"mousemove\", handleMouseMove);\n    window.addEventListener(\"touchend\", handleMouseUp);\n    window.addEventListener(\"touchmove\", handleMouseMove);\n    return () => {\n      window.removeEventListener(\"mousemove\", handleMouseMove);\n      window.removeEventListener(\"touchmove\", handleMouseMove);\n      window.removeEventListener(\"mouseup\", handleMouseUp);\n      window.removeEventListener(\"touchend\", handleMouseUp);\n    };\n    // I'm not 100% sure how well this would work if it rebound mid drag, so\n    // we'll just pretend it's okay that we have stale values in there.\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [moving]);\n\n  function _renderTracks(\n    format: (id: number, i: number) => JSX.Element | string\n  ) {\n    return trackIds.map((id, i) => (\n      <TrackCell\n        key={id}\n        id={id}\n        index={offset + i}\n        handleMoveClick={_handleMoveClick}\n      >\n        {format(id, i)}\n      </TrackCell>\n    ));\n  }\n\n  const maxTrackNumberLength = getNumberLength(numberOfTracks);\n  const paddedTrackNumForIndex = (i: number) =>\n    (i + 1 + offset).toString().padStart(maxTrackNumberLength, \"\\u00A0\");\n\n  useEffect(() => {\n    if (node == null) {\n      return;\n    }\n\n    // Chome changed wheel events to be passive be default. We need active (so\n    // we can prevent default) and React does not have a way to control this, so\n    // we must bind our own events.\n    //\n    // https://github.com/facebook/react/issues/14856#issuecomment-806052402\n    node.addEventListener(\"wheel\", scrollPlaylistByDelta, { passive: false });\n\n    return () => {\n      node.removeEventListener(\"wheel\", scrollPlaylistByDelta);\n    };\n  }, [node, scrollPlaylistByDelta]);\n  return (\n    <div\n      ref={setNode}\n      className=\"playlist-tracks\"\n      style={{ height: \"100%\", userSelect: \"none\" }}\n      onClick={selectZero}\n    >\n      <div className=\"playlist-track-titles\">\n        {_renderTracks((id, i) => (\n          <TrackTitle id={id} paddedTrackNumber={paddedTrackNumForIndex(i)} />\n        ))}\n      </div>\n      <div className=\"playlist-track-durations\">\n        {_renderTracks((id) => Utils.getTimeStr(tracks[id].duration))}\n      </div>\n    </div>\n  );\n}\n\nexport default TrackList;\n","import * as Utils from \"../utils\";\nimport { ReactNode, useRef } from \"react\";\n\ntype Props = {\n  height: number;\n  width: number;\n  handleHeight: number;\n  value: number;\n  handle: ReactNode;\n  onBeforeChange?: () => void;\n  onChange: (value: number) => void;\n  onAfterChange?: () => void;\n  requireClicksOriginateLocally?: boolean;\n  disabled?: boolean;\n};\n\ntype RegOptions = {\n  target: HTMLElement;\n  clientY: number;\n};\n\n// `<input type=\"range\" />` can be rotated to become a vertical slider using\n// CSS, but that makes it impossible to style the handle in a pixel perfect\n// manner. Instead we reimplement it in React.\nexport default function VerticalSlider({\n  value,\n  height,\n  width,\n  handle,\n  handleHeight,\n  onBeforeChange,\n  onChange,\n  onAfterChange,\n  requireClicksOriginateLocally = true,\n  disabled,\n}: Props) {\n  const ref = useRef<HTMLDivElement | null>(null);\n  const handleRef = useRef<HTMLDivElement | null>(null);\n\n  function registerMoveListener({ target, clientY }: RegOptions) {\n    const sliderNode = ref.current;\n    const handleNode = handleRef.current;\n    if (sliderNode == null || handleNode == null) {\n      // I don't think this could ever happen in practice\n      return null;\n    }\n\n    const sliderRect = sliderNode.getBoundingClientRect();\n    const handleRect = handleNode.getBoundingClientRect();\n\n    const { top: sliderTop, height: sliderHeight } = sliderRect;\n    const { top: handleTop, height: realHandleHeight } = handleRect;\n\n    // If the user clicks on the handle we want them to continue to hold onto\n    // that point of te handle. If they click outside of the handle (in the\n    // slider itself) we want to center the handle at that point and have them\n    // move the handle from the center.\n    const handleOffset = handleNode.contains(target as HTMLElement)\n      ? clientY - handleTop\n      : realHandleHeight / 2;\n\n    const baseOffset = sliderTop + handleOffset;\n    // Measure the actual rect height rather than use the `height` prop, becuase\n    // we might be in double-size mode.\n    const spanSize = sliderHeight - realHandleHeight;\n\n    function moveToPosition(y: number) {\n      // Ensure dragging does not cause elements/text to be selected.\n      // https://stackoverflow.com/a/19164149/1263117\n      const startOffset = y - baseOffset;\n      onChange(Utils.clamp(startOffset / spanSize, 0, 1));\n    }\n\n    const handlePointerMove = (event: PointerEvent) => {\n      event.preventDefault();\n      moveToPosition(event.clientY);\n    };\n    const handleRelease = () => {\n      if (onAfterChange != null) {\n        onAfterChange();\n      }\n      document.removeEventListener(\"pointermove\", handlePointerMove);\n      document.removeEventListener(\"pointerup\", handleRelease);\n    };\n    document.addEventListener(\"pointermove\", handlePointerMove);\n    document.addEventListener(\"pointerup\", handleRelease);\n\n    if (onBeforeChange != null) {\n      onBeforeChange();\n    }\n\n    // Move the slider to where they've started.\n    moveToPosition(clientY);\n  }\n\n  function handlePointerDown(e: React.PointerEvent<HTMLDivElement>) {\n    e.preventDefault();\n    registerMoveListener({\n      target: e.target as HTMLElement,\n      clientY: e.clientY,\n    });\n  }\n\n  // We watch for events onPointerEnter only when requireClicksOriginateLocally === false\n  // If the mouse/touch enters the Slider area, and the button/touch is already down, trigger a PointerDown\n  function handlePointerEnter(e: React.PointerEvent<HTMLDivElement>) {\n    if (e.buttons === 1) {\n      handlePointerDown(e);\n    }\n  }\n\n  const offset = Math.floor((height - handleHeight) * value);\n  return (\n    <div\n      style={{ height, width }}\n      onPointerDown={disabled ? undefined : handlePointerDown}\n      onPointerEnter={\n        disabled || requireClicksOriginateLocally\n          ? undefined\n          : handlePointerEnter\n      }\n      ref={ref}\n    >\n      <div style={{ transform: `translateY(${offset}px)` }} ref={handleRef}>\n        {handle}\n      </div>\n    </div>\n  );\n}\n","import VerticalSlider from \"../VerticalSlider\";\n\nimport * as Selectors from \"../../selectors\";\nimport * as Actions from \"../../actionCreators\";\nimport { useTypedSelector, useActionCreator } from \"../../hooks\";\nimport { WINDOWS } from \"../../constants\";\n\nconst HANDLE_HEIGHT = 18;\n\nconst Handle = () => (\n  <div\n    className=\"playlist-scrollbar-handle\"\n    style={{ height: HANDLE_HEIGHT }}\n  />\n);\n\nexport default function PlaylistScrollBar() {\n  const getWindowPixelSize = useTypedSelector(Selectors.getWindowPixelSize);\n  const playlistHeight = getWindowPixelSize(WINDOWS.PLAYLIST).height;\n  const playlistScrollPosition = useTypedSelector(\n    Selectors.getPlaylistScrollPosition\n  );\n  const allTracksAreVisible = useTypedSelector(\n    Selectors.getAllTracksAreVisible\n  );\n  const setPlaylistScrollPosition = useActionCreator(\n    Actions.setPlaylistScrollPosition\n  );\n  return (\n    <div className=\"playlist-scrollbar\" style={{ marginLeft: 5 }}>\n      <VerticalSlider\n        height={playlistHeight - 58}\n        handleHeight={HANDLE_HEIGHT}\n        width={8}\n        value={playlistScrollPosition / 100}\n        onChange={(val) => setPlaylistScrollPosition(val * 100)}\n        handle={<Handle />}\n        disabled={allTracksAreVisible}\n      />\n    </div>\n  );\n}\n","import { useCallback } from \"react\";\nimport classnames from \"classnames\";\n\nimport { WINDOWS, TRACK_HEIGHT, LOAD_STYLE } from \"../../constants\";\nimport * as Actions from \"../../actionCreators\";\nimport * as Selectors from \"../../selectors\";\n\nimport { clamp } from \"../../utils\";\nimport DropTarget from \"../DropTarget\";\nimport Vis from \"../Vis\";\nimport PlaylistShade from \"./PlaylistShade\";\nimport AddMenu from \"./AddMenu\";\nimport RemoveMenu from \"./RemoveMenu\";\nimport SelectionMenu from \"./SelectionMenu\";\nimport MiscMenu from \"./MiscMenu\";\nimport ListMenu from \"./ListMenu\";\nimport PlaylistResizeTarget from \"./PlaylistResizeTarget\";\nimport PlaylistActionArea from \"./PlaylistActionArea\";\nimport TrackList from \"./TrackList\";\nimport PlaylistScrollBar from \"./PlaylistScrollBar\";\n\nimport { AppState } from \"../../types\";\nimport FocusTarget from \"../FocusTarget\";\nimport { useActionCreator, useTypedSelector } from \"../../hooks\";\nimport WinampButton from \"../WinampButton\";\n\ninterface Props {\n  analyser: AnalyserNode;\n}\n\nfunction _maxTrackIndex(state: AppState) {\n  return state.playlist.trackOrder.length - 1;\n}\n\nfunction PlaylistWindow({ analyser }: Props) {\n  const offset = useTypedSelector(Selectors.getScrollOffset);\n  const getWindowSize = useTypedSelector(Selectors.getWindowSize);\n  const selectedWindow = useTypedSelector(Selectors.getFocusedWindow);\n  const getWindowShade = useTypedSelector(Selectors.getWindowShade);\n  const getWindowOpen = useTypedSelector(Selectors.getWindowOpen);\n  const maxTrackIndex = useTypedSelector(_maxTrackIndex);\n  const skinPlaylistStyle = useTypedSelector(Selectors.getSkinPlaylistStyle);\n  const getWindowPixelSize = useTypedSelector(Selectors.getWindowPixelSize);\n\n  const selected = selectedWindow === WINDOWS.PLAYLIST;\n  const playlistShade = Boolean(getWindowShade(WINDOWS.PLAYLIST));\n  const playlistSize = getWindowSize(WINDOWS.PLAYLIST);\n  const playlistWindowPixelSize = getWindowPixelSize(WINDOWS.PLAYLIST);\n\n  const close = useActionCreator(Actions.closeWindow);\n  const toggleShade = useActionCreator(Actions.togglePlaylistShadeMode);\n  const scrollUpFourTracks = useActionCreator(Actions.scrollUpFourTracks);\n  const scrollDownFourTracks = useActionCreator(Actions.scrollDownFourTracks);\n  const scrollPlaylistByDelta = useActionCreator(Actions.scrollPlaylistByDelta);\n  const loadMedia = useActionCreator(Actions.loadMedia);\n\n  const showVisualizer = playlistSize[0] > 2;\n  const activateVisualizer = !getWindowOpen(WINDOWS.MAIN);\n\n  const handleDrop = useCallback(\n    (\n      e: React.DragEvent<HTMLDivElement>,\n      targetCoords: { x: number; y: number }\n    ) => {\n      const top = e.clientY - targetCoords.y;\n      const atIndex = clamp(\n        offset + Math.round((top - 23) / TRACK_HEIGHT),\n        0,\n        maxTrackIndex + 1\n      );\n      loadMedia(e, LOAD_STYLE.NONE, atIndex);\n    },\n    [loadMedia, maxTrackIndex, offset]\n  );\n\n  if (playlistShade) {\n    return <PlaylistShade />;\n  }\n\n  const style = {\n    color: skinPlaylistStyle.normal,\n    backgroundColor: skinPlaylistStyle.normalbg,\n    fontFamily: `${skinPlaylistStyle.font}, Arial, sans-serif`,\n    height: `${playlistWindowPixelSize.height}px`,\n    width: `${playlistWindowPixelSize.width}px`,\n  };\n\n  const classes = classnames(\"window\", \"draggable\", { selected });\n\n  const showSpacers = playlistSize[0] % 2 === 0;\n\n  return (\n    <FocusTarget windowId={WINDOWS.PLAYLIST}>\n      <DropTarget\n        id=\"playlist-window\"\n        windowId={WINDOWS.PLAYLIST}\n        className={classes}\n        style={style}\n        handleDrop={handleDrop}\n        onWheelActive={scrollPlaylistByDelta}\n      >\n        <div className=\"playlist-top draggable\" onDoubleClick={toggleShade}>\n          <div className=\"playlist-top-left draggable\" />\n          {showSpacers && (\n            <div className=\"playlist-top-left-spacer draggable\" />\n          )}\n          <div className=\"playlist-top-left-fill draggable\" />\n          <div className=\"playlist-top-title draggable\" />\n          {showSpacers && (\n            <div className=\"playlist-top-right-spacer draggable\" />\n          )}\n          <div className=\"playlist-top-right-fill draggable\" />\n          <div className=\"playlist-top-right draggable\">\n            <WinampButton id=\"playlist-shade-button\" onClick={toggleShade} />\n            <WinampButton\n              id=\"playlist-close-button\"\n              onClick={() => close(WINDOWS.PLAYLIST)}\n            />\n          </div>\n        </div>\n        <div className=\"playlist-middle draggable\">\n          <div className=\"playlist-middle-left draggable\" />\n          <div className=\"playlist-middle-center\">\n            <TrackList />\n          </div>\n          <WinampButton className=\"playlist-middle-right draggable\">\n            <PlaylistScrollBar />\n          </WinampButton>\n        </div>\n        <div className=\"playlist-bottom draggable\">\n          <div className=\"playlist-bottom-left draggable\">\n            <AddMenu />\n            <RemoveMenu />\n            <SelectionMenu />\n            <MiscMenu />\n          </div>\n          <div className=\"playlist-bottom-center draggable\" />\n          <div className=\"playlist-bottom-right draggable\">\n            {showVisualizer && (\n              <div className=\"playlist-visualizer\">\n                {activateVisualizer && (\n                  <div className=\"visualizer-wrapper\">\n                    <Vis analyser={analyser} />\n                  </div>\n                )}\n              </div>\n            )}\n            <PlaylistActionArea />\n            <ListMenu />\n            <div id=\"playlist-scroll-up-button\" onClick={scrollUpFourTracks} />\n            <div\n              id=\"playlist-scroll-down-button\"\n              onClick={scrollDownFourTracks}\n            />\n            <PlaylistResizeTarget />\n          </div>\n        </div>\n      </DropTarget>\n    </FocusTarget>\n  );\n}\n\nexport default PlaylistWindow;\n","import { useMemo } from \"react\";\nimport { Slider as SliderType } from \"../../types\";\nimport { useTypedSelector, useActionCreator } from \"../../hooks\";\nimport * as Selectors from \"../../selectors\";\nimport * as Actions from \"../../actionCreators\";\nimport VerticalSlider from \"../VerticalSlider\";\nimport WinampButton from \"../WinampButton\";\n\ninterface Props {\n  id: string;\n  band: SliderType;\n  onChange(value: number): void;\n  clickOriginatedInEq?: boolean;\n}\n\nconst MAX_VALUE = 100;\n\n// Given a value between 1-100, return the sprite number (0-27)\nexport const spriteNumber = (value: number): number => {\n  const percent = value / MAX_VALUE;\n  return Math.round(percent * 27);\n};\n\n// Given a sprite number, return the x,y\nexport const spriteOffsets = (number: number): { x: number; y: number } => {\n  const x = number % 14;\n  const y = Math.floor(number / 14);\n  return { x, y };\n};\n\nconst Handle = () => {\n  const style = { width: 11, height: 11, marginLeft: 1 };\n  return <div style={style} className=\"slider-handle\" />;\n};\n\nexport default function Band({\n  id,\n  onChange,\n  band,\n  clickOriginatedInEq,\n}: Props) {\n  const sliders = useTypedSelector(Selectors.getSliders);\n  const value = sliders[band];\n  const backgroundPosition = useMemo(() => {\n    const { x, y } = spriteOffsets(spriteNumber(value));\n    const xOffset = x * 15; // Each sprite is 15px wide\n    const yOffset = y * 65; // Each sprite is 15px tall\n    return `-${xOffset}px -${yOffset}px`;\n  }, [value]);\n  const focusBand = useActionCreator(Actions.focusBand);\n  const unsetFocus = useActionCreator(Actions.unsetFocus);\n\n  // Note: The band background is actually one pixel taller (63) than the slider\n  // it contains (62).\n  return (\n    <WinampButton\n      id={id}\n      className=\"band\"\n      style={{ backgroundPosition, height: 63 }}\n      requireClicksOriginateLocally={\n        !(band !== \"preamp\" && clickOriginatedInEq)\n      }\n    >\n      <VerticalSlider\n        height={62}\n        width={14}\n        handleHeight={11}\n        value={1 - value / MAX_VALUE}\n        onBeforeChange={() => focusBand(band)}\n        onChange={(val) => onChange((1 - val) * MAX_VALUE)}\n        onAfterChange={unsetFocus}\n        requireClicksOriginateLocally={\n          !(band !== \"preamp\" && clickOriginatedInEq)\n        }\n        handle={<Handle />}\n      />\n    </WinampButton>\n  );\n}\n","import classnames from \"classnames\";\n\nimport * as Actions from \"../../actionCreators\";\nimport * as Selectors from \"../../selectors\";\nimport { useActionCreator, useTypedSelector } from \"../../hooks\";\nimport WinampButton from \"../WinampButton\";\n\nconst EqOn = () => {\n  const toggleEq = useActionCreator(Actions.toggleEq);\n  const on = useTypedSelector(Selectors.getEqualizerEnabled);\n  return (\n    <WinampButton\n      id=\"on\"\n      className={classnames({ selected: on })}\n      onClick={toggleEq}\n    />\n  );\n};\n\nexport default EqOn;\n","import { memo } from \"react\";\nimport classnames from \"classnames\";\n\nimport * as Actions from \"../../actionCreators\";\nimport { useTypedSelector, useActionCreator } from \"../../hooks\";\nimport WinampButton from \"../WinampButton\";\n\nconst EqAuto = memo(() => {\n  const selected = useTypedSelector((state) => state.equalizer.auto);\n  const toggleAuto = useActionCreator(Actions.toggleEqAuto);\n  return (\n    <WinampButton\n      id=\"auto\"\n      className={classnames({ selected })}\n      onClick={toggleAuto}\n    />\n  );\n});\n\nexport default EqAuto;\n","// Adapted from https://github.com/morganherlocker/cubic-spline\n\nexport default function spline(xs, ys) {\n  const ks = getNaturalKs(xs, ys);\n  const maxX = xs[xs.length - 1];\n  const allYs = [];\n  let i = 1;\n  for (let x = 0; x <= maxX; x++) {\n    while (xs[i] < x) i++;\n    const t = (x - xs[i - 1]) / (xs[i] - xs[i - 1]);\n    const a = ks[i - 1] * (xs[i] - xs[i - 1]) - (ys[i] - ys[i - 1]);\n    const b = -ks[i] * (xs[i] - xs[i - 1]) + (ys[i] - ys[i - 1]);\n    const q =\n      (1 - t) * ys[i - 1] + t * ys[i] + t * (1 - t) * (a * (1 - t) + b * t);\n    allYs.push(q);\n  }\n  return allYs;\n}\n\nfunction getNaturalKs(xs, ys) {\n  const ks = xs.map(() => 0);\n  const n = xs.length - 1;\n  const matrix = zerosMatrix(n + 1, n + 2);\n\n  for (\n    let i = 1;\n    i < n;\n    i++ // rows\n  ) {\n    matrix[i][i - 1] = 1 / (xs[i] - xs[i - 1]);\n    matrix[i][i] = 2 * (1 / (xs[i] - xs[i - 1]) + 1 / (xs[i + 1] - xs[i]));\n    matrix[i][i + 1] = 1 / (xs[i + 1] - xs[i]);\n    matrix[i][n + 1] =\n      3 *\n      ((ys[i] - ys[i - 1]) / ((xs[i] - xs[i - 1]) * (xs[i] - xs[i - 1])) +\n        (ys[i + 1] - ys[i]) / ((xs[i + 1] - xs[i]) * (xs[i + 1] - xs[i])));\n  }\n\n  matrix[0][0] = 2 / (xs[1] - xs[0]);\n  matrix[0][1] = 1 / (xs[1] - xs[0]);\n  matrix[0][n + 1] =\n    (3 * (ys[1] - ys[0])) / ((xs[1] - xs[0]) * (xs[1] - xs[0]));\n\n  matrix[n][n - 1] = 1 / (xs[n] - xs[n - 1]);\n  matrix[n][n] = 2 / (xs[n] - xs[n - 1]);\n  matrix[n][n + 1] =\n    (3 * (ys[n] - ys[n - 1])) / ((xs[n] - xs[n - 1]) * (xs[n] - xs[n - 1]));\n\n  return solve(matrix, ks);\n}\n\nfunction solve(matrix, ks) {\n  const m = matrix.length;\n  // column\n  for (let k = 0; k < m; k++) {\n    // pivot for column\n    let iMax = 0;\n    let vali = Number.NEGATIVE_INFINITY;\n    for (let i = k; i < m; i++)\n      if (matrix[i][k] > vali) {\n        iMax = i;\n        vali = matrix[i][k];\n      }\n    swapRows(matrix, k, iMax);\n\n    // for all rows below pivot\n    for (let i = k + 1; i < m; i++) {\n      for (let j = k + 1; j < m + 1; j++)\n        matrix[i][j] =\n          matrix[i][j] - matrix[k][j] * (matrix[i][k] / matrix[k][k]);\n      matrix[i][k] = 0;\n    }\n  }\n  // rows = columns\n  for (let i = m - 1; i >= 0; i--) {\n    const v = matrix[i][m] / matrix[i][i];\n    ks[i] = v;\n    // rows\n    for (let j = i - 1; j >= 0; j--) {\n      matrix[j][m] -= matrix[j][i] * v;\n      matrix[j][i] = 0;\n    }\n  }\n  return ks;\n}\n\nfunction zerosMatrix(rows, columns) {\n  const matrix = [];\n  for (let i = 0; i < rows; i++) {\n    matrix.push([]);\n    for (let j = 0; j < columns; j++) {\n      matrix[i].push(0);\n    }\n  }\n  return matrix;\n}\n\nfunction swapRows(m, k, l) {\n  const p = m[k];\n  m[k] = m[l];\n  m[l] = p;\n}\n","import { useState, useMemo, useLayoutEffect } from \"react\";\nimport { percentToRange, clamp } from \"../../utils\";\nimport { BANDS } from \"../../constants\";\nimport spline from \"./spline\";\nimport * as Selectors from \"../../selectors\";\nimport { usePromiseValueOrNull, useTypedSelector } from \"../../hooks\";\nimport { Slider } from \"../../types\";\n\nconst GRAPH_HEIGHT = 19;\nconst GRAPH_WIDTH = 113;\n\nfunction EqGraph() {\n  const sliders = useTypedSelector(Selectors.getSliders);\n\n  const preampLineImagePromise = useTypedSelector(Selectors.getPreampLineImage);\n  const preampLineImage = usePromiseValueOrNull(preampLineImagePromise);\n\n  const [canvasNode, setCanvasNode] = useState<HTMLCanvasElement | null>(null);\n\n  const canvasCtx = useMemo(\n    () => canvasNode?.getContext(\"2d\") ?? null,\n    [canvasNode]\n  );\n  const colorPattern = useColorPattern(canvasCtx);\n\n  useLayoutEffect(() => {\n    if (\n      canvasCtx == null ||\n      canvasNode == null ||\n      preampLineImage == null ||\n      colorPattern == null\n    ) {\n      return;\n    }\n    const width = Number(canvasNode.width);\n    const height = Number(canvasNode.height);\n    canvasCtx.clearRect(0, 0, width, height);\n    drawEqLine({ colorPattern, sliders, canvasCtx, preampLineImage });\n  }, [canvasCtx, canvasNode, colorPattern, preampLineImage, sliders]);\n\n  return (\n    <canvas\n      id=\"eqGraph\"\n      ref={setCanvasNode}\n      width={GRAPH_WIDTH}\n      height={GRAPH_HEIGHT}\n    />\n  );\n}\n\nfunction useColorPattern(canvasCtx: CanvasRenderingContext2D | null) {\n  const lineColorsImagePromise = useTypedSelector(Selectors.getLineColorsImage);\n  const lineColorsImage = usePromiseValueOrNull(lineColorsImagePromise);\n  return useMemo(() => {\n    if (canvasCtx == null || lineColorsImage == null) {\n      return null;\n    }\n    return canvasCtx.createPattern(lineColorsImage, \"repeat-x\");\n  }, [canvasCtx, lineColorsImage]);\n}\n\nfunction drawEqLine({\n  colorPattern,\n  sliders,\n  canvasCtx,\n  preampLineImage,\n}: {\n  sliders: Record<Slider, number>;\n  colorPattern: CanvasPattern;\n  preampLineImage: HTMLImageElement;\n  canvasCtx: CanvasRenderingContext2D;\n}) {\n  const preampValue = percentToRange(sliders.preamp / 100, 0, GRAPH_HEIGHT - 1);\n  canvasCtx.drawImage(\n    preampLineImage,\n    0,\n    preampValue,\n    preampLineImage.width,\n    preampLineImage.height\n  );\n\n  const amplitudes = BANDS.map((band) => sliders[band]);\n\n  canvasCtx.fillStyle = colorPattern;\n  const paddingLeft = 2; // TODO: This should be 1.5\n\n  const min = 0;\n  const max = GRAPH_HEIGHT - 1;\n\n  const xs: number[] = [];\n  const ys: number[] = [];\n  amplitudes.forEach((value, i) => {\n    const percent = (100 - value) / 100;\n    // Each band is 12 pixels widex\n    xs.push(i * 12);\n    ys.push(percentToRange(percent, min, max));\n  });\n\n  const allYs = spline(xs, ys);\n\n  const maxX = xs[xs.length - 1];\n  let lastY = ys[0];\n  for (let x = 0; x <= maxX; x++) {\n    const y = clamp(Math.round(allYs[x]), 0, GRAPH_HEIGHT - 1);\n    const yTop = Math.min(y, lastY);\n    const height = 1 + Math.abs(lastY - y);\n    canvasCtx.fillRect(paddingLeft + x, yTop, 1, height);\n    lastY = y;\n  }\n}\n\nexport default EqGraph;\n","import builtin from \"../../../presets/builtin.json\";\nimport * as Actions from \"../../actionCreators\";\nimport { Node, Parent, Hr } from \"../ContextMenu\";\nimport ContextMenuTarget from \"../ContextMenuTarget\";\nimport { useActionCreator } from \"../../hooks\";\nimport WinampButton from \"../WinampButton\";\n\nconst PresetsContextMenu = () => {\n  const openEqfFileDialog = useActionCreator(Actions.openEqfFileDialog);\n  const downloadPreset = useActionCreator(Actions.downloadPreset);\n  const setEqFromObject = useActionCreator(Actions.setEqFromObject);\n  return (\n    <ContextMenuTarget\n      top\n      id=\"presets-context\"\n      renderMenu={() => (\n        <>\n          <Parent label=\"Load\">\n            {builtin.presets.map((preset) => (\n              <Node\n                key={preset.name}\n                onClick={() => setEqFromObject(preset)}\n                label={preset.name}\n              />\n            ))}\n            <Hr />\n            <Node onClick={openEqfFileDialog} label=\"From Eqf...\" />\n          </Parent>\n          <Node onClick={downloadPreset} label=\"Save\" />\n        </>\n      )}\n    >\n      <WinampButton id=\"presets\" />\n    </ContextMenuTarget>\n  );\n};\n\nexport default PresetsContextMenu;\n","import ClickedDiv from \"../ClickedDiv\";\nimport { useTypedSelector, useActionCreator } from \"../../hooks\";\nimport * as Selectors from \"../../selectors\";\nimport * as Actions from \"../../actionCreators\";\nimport { WINDOWS } from \"../../constants\";\nimport WinampButton from \"../WinampButton\";\n\nexport default function EqTitleButtons() {\n  const focusedWindow = useTypedSelector(Selectors.getFocusedWindow);\n\n  const selected = focusedWindow === WINDOWS.EQUALIZER;\n  const closeWindow = useActionCreator(Actions.closeWindow);\n  const toggleEqualizerShadeMode = useActionCreator(\n    Actions.toggleEqualizerShadeMode\n  );\n  return (\n    <ClickedDiv id=\"eq-buttons\" key={selected ? \"selected\" : \"unselected\"}>\n      <WinampButton id=\"equalizer-shade\" onClick={toggleEqualizerShadeMode} />\n      <WinampButton\n        id=\"equalizer-close\"\n        onClick={() => closeWindow(WINDOWS.EQUALIZER)}\n      />\n    </ClickedDiv>\n  );\n}\n","import Volume from \"../Volume\";\nimport Balance from \"../Balance\";\nimport { segment } from \"../../utils\";\nimport EqTitleButtons from \"./EqTitleButtons\";\n\nimport * as Actions from \"../../actionCreators\";\nimport * as Selectors from \"../../selectors\";\nimport { useTypedSelector, useActionCreator } from \"../../hooks\";\n\nconst EqualizerShade = () => {\n  const volume = useTypedSelector(Selectors.getVolume);\n  const balance = useTypedSelector(Selectors.getBalance);\n  const toggleEqualizerShadeMode = useActionCreator(\n    Actions.toggleEqualizerShadeMode\n  );\n\n  const classes = [\"left\", \"center\", \"right\"];\n  const eqVolumeClassName = segment(0, 100, volume, classes);\n  const eqBalanceClassName = segment(-100, 100, balance, classes);\n  return (\n    <div\n      className=\"draggable\"\n      onDoubleClick={toggleEqualizerShadeMode}\n      style={{ width: \"100%\", height: \"100%\" }}\n    >\n      <EqTitleButtons />\n      <Volume id=\"equalizer-volume\" className={eqVolumeClassName} />\n      <Balance id=\"equalizer-balance\" className={eqBalanceClassName} />\n    </div>\n  );\n};\nexport default EqualizerShade;\n","import { useState } from \"react\";\nimport classnames from \"classnames\";\n\nimport { BANDS, WINDOWS } from \"../../constants\";\nimport * as Actions from \"../../actionCreators\";\nimport * as Selectors from \"../../selectors\";\n\nimport Band from \"./Band\";\nimport EqOn from \"./EqOn\";\nimport EqAuto from \"./EqAuto\";\nimport EqGraph from \"./EqGraph\";\nimport PresetsContextMenu from \"./PresetsContextMenu\";\nimport EqualizerShade from \"./EqualizerShade\";\n\nimport { Band as BandType } from \"../../types\";\nimport FocusTarget from \"../FocusTarget\";\nimport { useTypedSelector, useActionCreator } from \"../../hooks\";\nimport EqTitleButtons from \"./EqTitleButtons\";\n\nconst bandClassName = (band: BandType) => `band-${band}`;\n\nconst EqualizerWindow = () => {\n  const doubled = useTypedSelector(Selectors.getDoubled);\n  const focusedWindow = useTypedSelector(Selectors.getFocusedWindow);\n  const getWindowShade = useTypedSelector(Selectors.getWindowShade);\n\n  const selected = focusedWindow === WINDOWS.EQUALIZER;\n  const shade = getWindowShade(WINDOWS.EQUALIZER);\n\n  const setPreampValue = useActionCreator(Actions.setPreamp);\n  const setEqToMin = useActionCreator(Actions.setEqToMin);\n  const setEqToMid = useActionCreator(Actions.setEqToMid);\n  const setEqToMax = useActionCreator(Actions.setEqToMax);\n  const setHertzValue = useActionCreator(Actions.setEqBand);\n  const toggleEqualizerShadeMode = useActionCreator(\n    Actions.toggleEqualizerShadeMode\n  );\n\n  const className = classnames({\n    selected,\n    doubled,\n    shade,\n    window: true,\n    draggable: true,\n  });\n\n  // Track whether the click originated in the \"hertz\" area of the EQ\n  // We only want to allow drag across the EQ when the click originated in that area\n  const [clickOriginatedInEq, setClickOriginatedInEq] = useState(false);\n\n  const onPointerDownHz = (e: React.PointerEvent<HTMLDivElement>) => {\n    e.stopPropagation();\n    // Release the pointer capture\n    // https://w3c.github.io/pointerevents/#implicit-pointer-capture\n    // https://w3c.github.io/pointerevents/#pointer-capture\n    const target = e.target as HTMLDivElement;\n    target.releasePointerCapture(e.pointerId);\n\n    setClickOriginatedInEq(true);\n\n    function onReleaseHz(ee: PointerEvent) {\n      // Release only if it is the actual pointer release, not the simulated one coming from WinampButton\n      // Simulated pointer release coming from WinampButton has ee.detail == -42\n      // Actual pointer release here will come in as ee.detail === 0\n      if (ee.detail === 0) {\n        setClickOriginatedInEq(false);\n        document.removeEventListener(\"pointerup\", onReleaseHz);\n      }\n    }\n    document.addEventListener(\"pointerup\", onReleaseHz);\n  };\n\n  return (\n    <div id=\"equalizer-window\" className={className}>\n      <FocusTarget windowId={WINDOWS.EQUALIZER}>\n        {shade ? (\n          <EqualizerShade />\n        ) : (\n          <div>\n            <div\n              className=\"equalizer-top title-bar draggable\"\n              onDoubleClick={toggleEqualizerShadeMode}\n            >\n              <EqTitleButtons />\n            </div>\n            <EqOn />\n            <EqAuto />\n            <EqGraph />\n            <PresetsContextMenu />\n            <Band id=\"preamp\" band=\"preamp\" onChange={setPreampValue} />\n            <div id=\"plus12db\" onClick={setEqToMax} />\n            <div id=\"zerodb\" onClick={setEqToMid} />\n            <div id=\"minus12db\" onClick={setEqToMin} />\n            <div onPointerDown={onPointerDownHz}>\n              {BANDS.map((hertz) => (\n                <Band\n                  key={hertz}\n                  id={bandClassName(hertz)}\n                  band={hertz}\n                  onChange={(value) => setHertzValue(hertz, value)}\n                  clickOriginatedInEq={clickOriginatedInEq}\n                />\n              ))}\n            </div>\n          </div>\n        )}\n      </FocusTarget>\n    </div>\n  );\n};\nexport default EqualizerWindow;\n","import { LETTERS } from \"./constants\";\nimport { FONT_LOOKUP, imageConstFromChar } from \"./skinSprites\";\n\ninterface Selectors {\n  [name: string]: string[];\n}\n\nexport const imageSelectors: Selectors = {\n  MAIN_BALANCE_BACKGROUND: [\"#balance\"],\n  MAIN_BALANCE_THUMB: [\n    \"#balance::-webkit-slider-thumb\",\n    \"#balance::-moz-range-thumb\",\n  ],\n  MAIN_BALANCE_THUMB_ACTIVE: [\n    \"#balance:active::-webkit-slider-thumb\",\n    \"#balance:active::-moz-range-thumb\",\n  ],\n  MAIN_PREVIOUS_BUTTON: [\".actions #previous\"],\n  MAIN_PREVIOUS_BUTTON_ACTIVE: [\".actions #previous.winamp-active\"],\n  MAIN_PLAY_BUTTON: [\".actions #play\"],\n  MAIN_PLAY_BUTTON_ACTIVE: [\".actions #play.winamp-active\"],\n  MAIN_PAUSE_BUTTON: [\".actions #pause\"],\n  MAIN_PAUSE_BUTTON_ACTIVE: [\".actions #pause.winamp-active\"],\n  MAIN_STOP_BUTTON: [\".actions #stop\"],\n  MAIN_STOP_BUTTON_ACTIVE: [\".actions #stop.winamp-active\"],\n  MAIN_NEXT_BUTTON: [\".actions #next\"],\n  MAIN_NEXT_BUTTON_ACTIVE: [\".actions #next.winamp-active\"],\n  MAIN_EJECT_BUTTON: [\"#eject\"],\n  MAIN_EJECT_BUTTON_ACTIVE: [\"#eject.winamp-active\"],\n  MAIN_WINDOW_BACKGROUND: [\"#main-window\"],\n  MAIN_STEREO: [\".media-info #stereo\", \".stop .media-info #stereo.selected\"],\n  MAIN_STEREO_SELECTED: [\".media-info #stereo.selected\"],\n  MAIN_MONO: [\".media-info #mono\", \".stop .media-info #mono.selected\"],\n  MAIN_MONO_SELECTED: [\".media-info #mono.selected\"],\n  NO_MINUS_SIGN: [\"#time #minus-sign\"],\n  MINUS_SIGN: [\"#time.countdown #minus-sign\"],\n  DIGIT_0: [\".digit-0\"],\n  DIGIT_1: [\".digit-1\"],\n  DIGIT_2: [\".digit-2\"],\n  DIGIT_3: [\".digit-3\"],\n  DIGIT_4: [\".digit-4\"],\n  DIGIT_5: [\".digit-5\"],\n  DIGIT_6: [\".digit-6\"],\n  DIGIT_7: [\".digit-7\"],\n  DIGIT_8: [\".digit-8\"],\n  DIGIT_9: [\".digit-9\"],\n  NO_MINUS_SIGN_EX: [\"#time #minus-sign\"],\n  MINUS_SIGN_EX: [\"#time.countdown #minus-sign\"],\n  DIGIT_0_EX: [\".digit-0\"],\n  DIGIT_1_EX: [\".digit-1\"],\n  DIGIT_2_EX: [\".digit-2\"],\n  DIGIT_3_EX: [\".digit-3\"],\n  DIGIT_4_EX: [\".digit-4\"],\n  DIGIT_5_EX: [\".digit-5\"],\n  DIGIT_6_EX: [\".digit-6\"],\n  DIGIT_7_EX: [\".digit-7\"],\n  DIGIT_8_EX: [\".digit-8\"],\n  DIGIT_9_EX: [\".digit-9\"],\n  MAIN_PLAYING_INDICATOR: [\".play #play-pause\"],\n  MAIN_PAUSED_INDICATOR: [\".pause #play-pause\"],\n  MAIN_STOPPED_INDICATOR: [\".stop #play-pause\"],\n  MAIN_NOT_WORKING_INDICATOR: [\"#work-indicator\"],\n  MAIN_WORKING_INDICATOR: [\"#work-indicator.selected\"],\n  PLAYLIST_TOP_TILE: [\n    \".playlist-top-left-fill\",\n    \".playlist-top-left-spacer\",\n    \".playlist-top-right-fill\",\n    \".playlist-top-right-spacer\",\n  ],\n  PLAYLIST_TOP_LEFT_CORNER: [\".playlist-top-left\"],\n  PLAYLIST_TITLE_BAR: [\".playlist-top-title\"],\n  PLAYLIST_TOP_RIGHT_CORNER: [\".playlist-top-right\"],\n  PLAYLIST_TOP_TILE_SELECTED: [\n    \".selected .playlist-top-left-fill\",\n    \".selected .playlist-top-left-spacer\",\n    \".selected .playlist-top-right-fill\",\n    \".selected .playlist-top-right-spacer\",\n  ],\n  PLAYLIST_TOP_LEFT_SELECTED: [\".selected .playlist-top-left\"],\n  PLAYLIST_TITLE_BAR_SELECTED: [\".selected .playlist-top-title\"],\n  PLAYLIST_TOP_RIGHT_CORNER_SELECTED: [\".selected .playlist-top-right\"],\n  PLAYLIST_LEFT_TILE: [\".playlist-middle-left\"],\n  PLAYLIST_RIGHT_TILE: [\".playlist-middle-right\"],\n  PLAYLIST_SCROLL_HANDLE: [\".playlist-scrollbar-handle\"],\n  PLAYLIST_SCROLL_HANDLE_SELECTED: [\n    \".playlist-middle-right.winamp-active .playlist-scrollbar-handle\",\n  ],\n  PLAYLIST_BOTTOM_TILE: [\".playlist-bottom\"],\n  PLAYLIST_BOTTOM_LEFT_CORNER: [\".playlist-bottom-left\"],\n  PLAYLIST_BOTTOM_RIGHT_CORNER: [\".playlist-bottom-right\"],\n  PLAYLIST_VISUALIZER_BACKGROUND: [\".playlist-visualizer\"],\n  PLAYLIST_SHADE_BACKGROUND: [\"#playlist-window-shade\"],\n  PLAYLIST_SHADE_BACKGROUND_LEFT: [\"#playlist-window-shade .left\"],\n  PLAYLIST_SHADE_BACKGROUND_RIGHT: [\"#playlist-window-shade .right\"],\n  PLAYLIST_SHADE_BACKGROUND_RIGHT_SELECTED: [\n    \"#playlist-window-shade.selected .right\",\n  ],\n\n  PLAYLIST_ADD_MENU_BAR: [\"#playlist-add-menu.selected .bar\"],\n  PLAYLIST_ADD_URL: [\"#playlist-add-menu .add-url\"],\n  PLAYLIST_ADD_URL_SELECTED: [\"#playlist-add-menu .hover .add-url\"],\n  PLAYLIST_ADD_DIR: [\"#playlist-add-menu .add-dir\"],\n  PLAYLIST_ADD_DIR_SELECTED: [\"#playlist-add-menu .hover .add-dir\"],\n  PLAYLIST_ADD_FILE: [\"#playlist-add-menu .add-file\"],\n  PLAYLIST_ADD_FILE_SELECTED: [\"#playlist-add-menu .hover .add-file\"],\n\n  PLAYLIST_REMOVE_MENU_BAR: [\"#playlist-remove-menu.selected .bar\"],\n  PLAYLIST_REMOVE_ALL: [\"#playlist-remove-menu .remove-all\"],\n  PLAYLIST_REMOVE_ALL_SELECTED: [\"#playlist-remove-menu .hover .remove-all\"],\n  PLAYLIST_CROP: [\"#playlist-remove-menu .crop\"],\n  PLAYLIST_CROP_SELECTED: [\"#playlist-remove-menu .hover .crop\"],\n  PLAYLIST_REMOVE_SELECTED: [\"#playlist-remove-menu .remove-selected\"],\n  PLAYLIST_REMOVE_SELECTED_SELECTED: [\n    \"#playlist-remove-menu .hover .remove-selected\",\n  ],\n  PLAYLIST_REMOVE_MISC: [\"#playlist-remove-menu .remove-misc\"],\n  PLAYLIST_REMOVE_MISC_SELECTED: [\"#playlist-remove-menu .hover .remove-misc\"],\n\n  PLAYLIST_SELECT_MENU_BAR: [\"#playlist-selection-menu.selected .bar\"],\n  PLAYLIST_INVERT_SELECTION: [\"#playlist-selection-menu .invert-selection\"],\n  PLAYLIST_INVERT_SELECTION_SELECTED: [\n    \"#playlist-selection-menu .hover .invert-selection\",\n  ],\n  PLAYLIST_SELECT_ZERO: [\"#playlist-selection-menu .select-zero\"],\n  PLAYLIST_SELECT_ZERO_SELECTED: [\n    \"#playlist-selection-menu .hover .select-zero\",\n  ],\n  PLAYLIST_SELECT_ALL: [\"#playlist-selection-menu .select-all\"],\n  PLAYLIST_SELECT_ALL_SELECTED: [\"#playlist-selection-menu .hover .select-all\"],\n  PLAYLIST_CLOSE_SELECTED: [\"#playlist-close-button.winamp-active\"],\n  PLAYLIST_COLLAPSE_SELECTED: [\n    \"#playlist-window #playlist-shade-button.winamp-active\",\n  ],\n  PLAYLIST_EXPAND_SELECTED: [\n    \"#playlist-window-shade #playlist-shade-button.winamp-active\",\n  ],\n\n  PLAYLIST_MISC_MENU_BAR: [\"#playlist-misc-menu.selected .bar\"],\n  PLAYLIST_MISC_OPTIONS: [\"#playlist-misc-menu .misc-options\"],\n  PLAYLIST_MISC_OPTIONS_SELECTED: [\"#playlist-misc-menu .hover .misc-options\"],\n  PLAYLIST_FILE_INFO: [\"#playlist-misc-menu .file-info\"],\n  PLAYLIST_FILE_INFO_SELECTED: [\"#playlist-misc-menu .hover .file-info\"],\n  PLAYLIST_SORT_LIST: [\"#playlist-misc-menu .sort-list\"],\n  PLAYLIST_SORT_LIST_SELECTED: [\"#playlist-misc-menu .hover .sort-list\"],\n\n  PLAYLIST_LIST_BAR: [\"#playlist-list-menu.selected .bar\"],\n  PLAYLIST_NEW_LIST: [\"#playlist-list-menu .new-list\"],\n  PLAYLIST_NEW_LIST_SELECTED: [\"#playlist-list-menu .hover .new-list\"],\n  PLAYLIST_LOAD_LIST: [\"#playlist-list-menu .load-list\"],\n  PLAYLIST_LOAD_LIST_SELECTED: [\"#playlist-list-menu .hover .load-list\"],\n  PLAYLIST_SAVE_LIST: [\"#playlist-list-menu .save-list\"],\n  PLAYLIST_SAVE_LIST_SELECTED: [\"#playlist-list-menu .hover .save-list\"],\n\n  EQ_WINDOW_BACKGROUND: [\"#equalizer-window:not(.shade)\"],\n  EQ_TITLE_BAR: [\".equalizer-top\"],\n  EQ_TITLE_BAR_SELECTED: [\".selected .equalizer-top\"],\n  EQ_SLIDER_BACKGROUND: [\".band\"],\n  EQ_SLIDER_THUMB: [\".band .slider-handle\"],\n  // Put the \"active\" pseudo selector on the parent, since clicking\n  // anywhere on the track moves the slider.\n  EQ_SLIDER_THUMB_SELECTED: [\".band.winamp-active .slider-handle\"],\n  EQ_ON_BUTTON: [\"#on\"],\n  EQ_ON_BUTTON_DEPRESSED: [\"#on.winamp-active\"],\n  EQ_ON_BUTTON_SELECTED: [\"#on.selected\"],\n  EQ_ON_BUTTON_SELECTED_DEPRESSED: [\"#on.selected.winamp-active\"],\n  EQ_AUTO_BUTTON: [\"#auto\"],\n  EQ_AUTO_BUTTON_DEPRESSED: [\"#auto.winamp-active\"],\n  EQ_AUTO_BUTTON_SELECTED: [\"#auto.selected\"],\n  EQ_AUTO_BUTTON_SELECTED_DEPRESSED: [\"#auto.selected.winamp-active\"],\n  EQ_GRAPH_BACKGROUND: [\"#eqGraph\"],\n  EQ_PRESETS_BUTTON: [\"#presets\"],\n  EQ_PRESETS_BUTTON_SELECTED: [\"#presets.winamp-active\"],\n  EQ_PREAMP_LINE: [\"#preamp-line\"],\n  EQ_SHADE_BACKGROUND: [\"#equalizer-window.shade\"],\n  EQ_SHADE_BACKGROUND_SELECTED: [\"#equalizer-window.shade.selected\"],\n  EQ_SHADE_VOLUME_SLIDER_LEFT: [\n    \"#equalizer-volume.left::-webkit-slider-thumb\",\n    \"#equalizer-volume.left::-moz-range-thumb\",\n  ],\n  EQ_SHADE_VOLUME_SLIDER_CENTER: [\n    \"#equalizer-volume.center::-webkit-slider-thumb\",\n    \"#equalizer-volume.center::-moz-range-thumb\",\n  ],\n  EQ_SHADE_VOLUME_SLIDER_RIGHT: [\n    \"#equalizer-volume.right::-webkit-slider-thumb\",\n    \"#equalizer-volume.right::-moz-range-thumb\",\n  ],\n  EQ_SHADE_BALANCE_SLIDER_LEFT: [\n    \"#equalizer-balance.left::-webkit-slider-thumb\",\n    \"#equalizer-balance.left::-moz-range-thumb\",\n  ],\n  EQ_SHADE_BALANCE_SLIDER_CENTER: [\n    \"#equalizer-balance.center::-webkit-slider-thumb\",\n    \"#equalizer-balance.center::-moz-range-thumb\",\n  ],\n  EQ_SHADE_BALANCE_SLIDER_RIGHT: [\n    \"#equalizer-balance.right::-webkit-slider-thumb\",\n    \"#equalizer-balance.right::-moz-range-thumb\",\n  ],\n  EQ_MAXIMIZE_BUTTON_ACTIVE: [\"#equalizer-shade.winamp-active\"],\n  EQ_MINIMIZE_BUTTON_ACTIVE: [\n    \"#equalizer-window.shade #equalizer-shade.winamp-active\",\n  ],\n  EQ_CLOSE_BUTTON: [\n    \"#equalizer-window.selected #eq-buttons.clicked #equalizer-close\",\n  ],\n  EQ_CLOSE_BUTTON_ACTIVE: [\n    \"#equalizer-window.selected #eq-buttons.clicked #equalizer-close.winamp-active\",\n  ],\n  EQ_SHADE_CLOSE_BUTTON: [\n    \"#equalizer-window.shade.selected #eq-buttons.clicked #equalizer-close\",\n  ],\n  EQ_SHADE_CLOSE_BUTTON_ACTIVE: [\n    \"#equalizer-window.shade.selected #eq-buttons.clicked #equalizer-close.winamp-active\",\n  ],\n  MAIN_POSITION_SLIDER_BACKGROUND: [\"#position\"],\n  MAIN_POSITION_SLIDER_THUMB: [\n    \"#position::-webkit-slider-thumb\",\n    \"#position::-moz-range-thumb\",\n  ],\n  MAIN_POSITION_SLIDER_THUMB_SELECTED: [\n    \"#position:active::-webkit-slider-thumb\",\n    \"#position:active::-moz-range-thumb\",\n  ],\n  MAIN_SHUFFLE_BUTTON: [\"#shuffle\"],\n  MAIN_SHUFFLE_BUTTON_DEPRESSED: [\"#shuffle.winamp-active\"],\n  MAIN_SHUFFLE_BUTTON_SELECTED: [\"#shuffle.selected\"],\n  MAIN_SHUFFLE_BUTTON_SELECTED_DEPRESSED: [\"#shuffle.selected.winamp-active\"],\n  MAIN_REPEAT_BUTTON: [\"#repeat\"],\n  MAIN_REPEAT_BUTTON_DEPRESSED: [\"#repeat.winamp-active\"],\n  MAIN_REPEAT_BUTTON_SELECTED: [\"#repeat.selected\"],\n  MAIN_REPEAT_BUTTON_SELECTED_DEPRESSED: [\"#repeat.selected.winamp-active\"],\n  MAIN_EQ_BUTTON: [\"#equalizer-button\"],\n  MAIN_EQ_BUTTON_SELECTED: [\"#equalizer-button.selected\"],\n  MAIN_EQ_BUTTON_DEPRESSED: [\"#equalizer-button.winamp-active\"],\n  MAIN_EQ_BUTTON_DEPRESSED_SELECTED: [\n    \"#equalizer-button.selected.winamp-button\",\n  ],\n  MAIN_PLAYLIST_BUTTON: [\"#playlist-button\"],\n  MAIN_PLAYLIST_BUTTON_SELECTED: [\"#playlist-button.selected\"],\n  MAIN_PLAYLIST_BUTTON_DEPRESSED: [\"#playlist-button.winamp-active\"],\n  MAIN_PLAYLIST_BUTTON_DEPRESSED_SELECTED: [\n    \"#playlist-button.selected.winamp-active\",\n  ],\n  MAIN_TITLE_BAR: [\"#title-bar\"],\n  MAIN_TITLE_BAR_SELECTED: [\".selected #title-bar\"],\n  MAIN_EASTER_EGG_TITLE_BAR: [\".llama #title-bar\"],\n  MAIN_EASTER_EGG_TITLE_BAR_SELECTED: [\".llama.selected #title-bar\"],\n  MAIN_OPTIONS_BUTTON: [\".selected #title-bar #option.clicked\"],\n  MAIN_OPTIONS_BUTTON_DEPRESSED: [\n    \".selected #title-bar #option:active\",\n    \".selected #title-bar #option.selected\",\n  ],\n  MAIN_MINIMIZE_BUTTON: [\".selected #title-bar #minimize.clicked\"],\n  MAIN_MINIMIZE_BUTTON_DEPRESSED: [\n    \".selected #title-bar #minimize.winamp-active\",\n  ],\n  MAIN_SHADE_BUTTON: [\".selected #title-bar #shade.clicked\"],\n  MAIN_SHADE_BUTTON_DEPRESSED: [\".selected #title-bar #shade.winamp-active\"],\n  MAIN_CLOSE_BUTTON: [\".selected #title-bar #close.clicked\"],\n  MAIN_CLOSE_BUTTON_DEPRESSED: [\".selected #title-bar #close.winamp-active\"],\n  MAIN_CLUTTER_BAR_BACKGROUND: [\"#clutter-bar\"],\n  MAIN_CLUTTER_BAR_BACKGROUND_DISABLED: [\"#clutter-bar.disabled\"],\n  MAIN_CLUTTER_BAR_BUTTON_O_SELECTED: [\n    \"#button-o:active\",\n    \"#button-0.selected\",\n  ],\n  MAIN_CLUTTER_BAR_BUTTON_A_SELECTED: [\n    \"#button-a:active\",\n    \"#button-a.selected\",\n  ],\n  MAIN_CLUTTER_BAR_BUTTON_I_SELECTED: [\n    \"#button-i:active\",\n    \"#button-i.selected\",\n  ],\n  MAIN_CLUTTER_BAR_BUTTON_D_SELECTED: [\n    \"#button-d:active\",\n    \"#button-d.selected\",\n  ],\n  MAIN_CLUTTER_BAR_BUTTON_V_SELECTED: [\n    \"#button-v:active\",\n    \"#button-v.selected\",\n  ],\n  MAIN_SHADE_BACKGROUND: [\".shade #title-bar\"],\n  MAIN_SHADE_BACKGROUND_SELECTED: [\".shade.selected #title-bar\"],\n  MAIN_SHADE_BUTTON_SELECTED: [\".shade.selected #title-bar #shade\"],\n  MAIN_SHADE_BUTTON_SELECTED_DEPRESSED: [\n    \".shade #title-bar #shade.winamp-active\",\n  ],\n  MAIN_SHADE_POSITION_BACKGROUND: [\".shade #position\"],\n  MAIN_SHADE_POSITION_THUMB: [\n    \".shade #position::-moz-range-thumb\",\n    \".shade #position::-webkit-slider-thumb\",\n  ],\n  MAIN_SHADE_POSITION_THUMB_LEFT: [\n    \".shade #position.left::-moz-range-thumb\",\n    \".shade #position.left::-webkit-slider-thumb\",\n  ],\n  MAIN_SHADE_POSITION_THUMB_RIGHT: [\n    \".shade #position.right::-moz-range-thumb\",\n    \".shade #position.right::-webkit-slider-thumb\",\n  ],\n  MAIN_VOLUME_BACKGROUND: [\"#volume\"],\n  MAIN_VOLUME_THUMB: [\n    \"#volume input::-webkit-slider-thumb\",\n    \"#volume input::-moz-range-thumb\",\n  ],\n  MAIN_VOLUME_THUMB_SELECTED: [\n    \"#volume input:active::-webkit-slider-thumb\",\n    \"#volume input:active::-moz-range-thumb\",\n  ],\n  GEN_TOP_CENTER_FILL: [\".gen-window .gen-top\"],\n  GEN_TOP_LEFT: [\".gen-window .gen-top-left\"],\n  GEN_TOP_LEFT_END: [\".gen-window .gen-top-left-end\"],\n  GEN_TOP_RIGHT: [\".gen-window .gen-top-right\"],\n  GEN_TOP_RIGHT_END: [\".gen-window .gen-top-right-end\"],\n  GEN_TOP_LEFT_RIGHT_FILL: [\n    \".gen-window .gen-top-left-fill\",\n    \".gen-window .gen-top-right-fill\",\n  ],\n\n  GEN_TOP_CENTER_FILL_SELECTED: [\".gen-window.selected .gen-top\"],\n  GEN_TOP_LEFT_SELECTED: [\".gen-window.selected .gen-top-left\"],\n  GEN_TOP_LEFT_END_SELECTED: [\".gen-window.selected .gen-top-left-end\"],\n  GEN_TOP_RIGHT_SELECTED: [\".gen-window.selected .gen-top-right\"],\n  GEN_TOP_RIGHT_END_SELECTED: [\".gen-window.selected .gen-top-right-end\"],\n  GEN_TOP_LEFT_RIGHT_FILL_SELECTED: [\n    \".gen-window.selected .gen-top-left-fill\",\n    \".gen-window.selected .gen-top-right-fill\",\n  ],\n  GEN_BOTTOM_LEFT: [\".gen-window .gen-bottom-left\"],\n  GEN_BOTTOM_RIGHT: [\".gen-window .gen-bottom-right\"],\n  GEN_BOTTOM_FILL: [\".gen-window .gen-bottom\"],\n  GEN_MIDDLE_LEFT: [\".gen-window .gen-middle-left\"],\n  GEN_MIDDLE_LEFT_BOTTOM: [\".gen-window .gen-middle-left-bottom\"],\n  GEN_MIDDLE_RIGHT: [\".gen-window .gen-middle-right\"],\n  GEN_MIDDLE_RIGHT_BOTTOM: [\".gen-window .gen-middle-right-bottom\"],\n  GEN_CLOSE_SELECTED: [\".gen-window .gen-close.winamp-active\"],\n};\n\nObject.keys(FONT_LOOKUP).forEach((character) => {\n  const key = imageConstFromChar(character);\n  const code = character.charCodeAt(0);\n  imageSelectors[key] = [`.character-${code}`];\n});\n\nLETTERS.forEach((character) => {\n  imageSelectors[`GEN_TEXT_${character}`] = [\n    `.gen-text-${character.toLowerCase()}`,\n  ];\n  imageSelectors[`GEN_TEXT_SELECTED_${character}`] = [\n    `.gen-window.selected .gen-text-${character.toLowerCase()}`,\n  ];\n});\n\nexport const cursorSelectors: Selectors = {\n  CLOSE: [\"#title-bar #close\"],\n  // This is not quite right. There are some areas that show this cursor\n  // but are not clickable.\n  EQSLID: [\"#equalizer-window .band\"],\n  EQNORMAL: [\"#equalizer-window\"],\n  EQCLOSE: [\"#equalizer-window #equalizer-close\"],\n  EQTITLE: [\n    \"#equalizer-window .title-bar\",\n    \"#equalizer-window.shade\",\n    \"#equalizer-window.shade input\",\n  ],\n  MAINMENU: [\"#main-window #option\", \"#webamp-context-menu .context-menu\"],\n  MIN: [\"#main-window #minimize\"],\n  NORMAL: [\n    // Use this as the default cursor.\n    \".window\",\n    \".window input\", // Otherwise\n    \"#main-window\",\n    \"#main-window.shade #title-bar\",\n  ],\n  MMENU: [\"#main-window.shade #option\"],\n  PNORMAL: [\"#playlist-window\"],\n  // TODO: This is should really only apply to the top part of the top.\n  // The chrome around the playlist window is larger than others. The\n  // cursor only applies to the same height as the other window's chrome.\n  PTBAR: [\"#playlist-window .playlist-top\"],\n  PCLOSE: [\n    \"#playlist-window #playlist-close-button\",\n    \"#playlist-window-shade #playlist-close-button\",\n  ],\n  PWINBUT: [\n    \"#playlist-window #playlist-shade-button\",\n    \"#playlist-window-shade #playlist-shade-button\",\n  ],\n  POSBAR: [\"#main-window #position\"],\n  PSIZE: [\"#playlist-window #playlist-resize-target\"],\n  PWSSIZE: [\"#playlist-window-shade #playlist-resize-target\"],\n  PWSNORM: [\"#playlist-window-shade\"],\n  // TODO: The target for this is not quite right.\n  PVSCROLL: [\"#playlist-window .playlist-scrollbar\"],\n  SONGNAME: [\"#main-window #marquee\"],\n  TITLEBAR: [\"#main-window #title-bar\"],\n  VOLBAL: [\"#volume\", \"#volume input\", \"#balance\"],\n  WINBUT: [\"#main-window #shade\"],\n  WSNORMAL: [\"#main-window.shade #title-bar\"],\n  WSPOSBAR: [\"#main-window.shade #position\"],\n};\n","import { createPortal } from \"react-dom\";\nimport { useMemo, useLayoutEffect } from \"react\";\n\ntype Props = {\n  children: string;\n  id?: string;\n};\n\nexport default function Css({ children, id }: Props) {\n  const style = useMemo(() => {\n    const s = document.createElement(\"style\");\n    s.type = \"text/css\";\n    if (id != null) {\n      s.id = id;\n    }\n    return s;\n  }, [id]);\n\n  useLayoutEffect(() => {\n    document.head.appendChild(style);\n    return () => style.remove();\n  }, [style]);\n\n  return createPortal(children, style);\n}\n","import { useMemo, useLayoutEffect } from \"react\";\nimport { createPortal } from \"react-dom\";\n\ntype Props = {\n  children: { [id: string]: string[] };\n};\n\n// this.props.children should be an object containing arrays of strings. The\n// keys are ids, and the arrays are arrays of polygon point strings\nexport default function ClipPaths({ children }: Props) {\n  const paths = useMemo(() => {\n    return document.createElement(\"div\");\n  }, []);\n\n  useLayoutEffect(() => {\n    document.body.appendChild(paths);\n    return () => paths.remove();\n  }, [paths]);\n\n  return createPortal(\n    <svg height={0} width={0}>\n      <defs>\n        {Object.keys(children).map((id) => (\n          <clipPath id={id} key={id}>\n            {children[id].map((points, i) => (\n              <polygon points={points} key={i} />\n            ))}\n          </clipPath>\n        ))}\n      </defs>\n    </svg>,\n    paths\n  );\n}\n","/*\r\n * Copyright (c) 2017-2018 Rafael da Silva Rocha.\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining\r\n * a copy of this software and associated documentation files (the\r\n * \"Software\"), to deal in the Software without restriction, including\r\n * without limitation the rights to use, copy, modify, merge, publish,\r\n * distribute, sublicense, and/or sell copies of the Software, and to\r\n * permit persons to whom the Software is furnished to do so, subject to\r\n * the following conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be\r\n * included in all copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\r\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\r\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\r\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n *\r\n */\r\n\r\n/**\r\n * @fileoverview A function to swap endianness in byte buffers.\r\n * @see https://github.com/rochars/endianness\r\n */\r\n\r\n/** @module endianness */\r\n\r\n/**\r\n * Swap the byte ordering in a buffer. The buffer is modified in place.\r\n * @param {!Array|!Uint8Array} bytes The bytes.\r\n * @param {number} offset The byte offset.\r\n * @param {number=} start The start index. Assumes 0.\r\n * @param {number=} end The end index. Assumes the buffer length.\r\n * @throws {Error} If the buffer length is not valid.\r\n */\r\nexport default function endianness(bytes, offset, start=0, end=bytes.length) {\r\n  if (end % offset) {\r\n    throw new Error(\"Bad buffer length.\");\r\n  }\r\n  for (let index = start; index < end; index += offset) {\r\n    swap(bytes, offset, index);\r\n  }\r\n}\r\n\r\n/**\r\n * Swap the byte order of a value in a buffer. The buffer is modified in place.\r\n * @param {!Array|!Uint8Array} bytes The bytes.\r\n * @param {number} offset The byte offset.\r\n * @param {number} index The start index.\r\n * @private\r\n */\r\nfunction swap(bytes, offset, index) {\r\n  offset--;\r\n  for(let x = 0; x < offset; x++) {\r\n    /** @type {*} */\r\n    let theByte = bytes[index + x];\r\n    bytes[index + x] = bytes[index + offset];\r\n    bytes[index + offset] = theByte;\r\n    offset--;\r\n  }\r\n}\r\n","/*\r\n * Copyright (c) 2017-2018 Rafael da Silva Rocha.\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining\r\n * a copy of this software and associated documentation files (the\r\n * \"Software\"), to deal in the Software without restriction, including\r\n * without limitation the rights to use, copy, modify, merge, publish,\r\n * distribute, sublicense, and/or sell copies of the Software, and to\r\n * permit persons to whom the Software is furnished to do so, subject to\r\n * the following conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be\r\n * included in all copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\r\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\r\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\r\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n *\r\n */\r\n\r\n/**\r\n * @fileoverview Encode and decode int numbers to and from byte buffers.\r\n * @see https://github.com/rochars/byte-data\r\n */\r\n\r\n/**\r\n * A class to write and read integer numbers to and from byte buffers.\r\n */\r\nexport class IntParser {\r\n  \r\n  /**\r\n   * @param {number} bits The number of bits used by the integer.\r\n   * @param {boolean} [signed=false] True for signed, false otherwise.\r\n   * @param {boolean} [clamp=false] True to clamp on overflow.\r\n   */\r\n  constructor(bits, signed=false, clamp=false) {\r\n    /**\r\n     * The number of bits used by one number.\r\n     * @type {number}\r\n     */\r\n    this.bits = bits;\r\n    /**\r\n     * The number of bytes used by one number.\r\n     * @type {number}\r\n     */\r\n    this.bytes = bits < 8 ? 1 : Math.ceil(bits / 8);\r\n    /**\r\n     * @type {number}\r\n     * @protected\r\n     */\r\n    this.max = Math.pow(2, bits) - 1;\r\n    /**\r\n     * @type {number}\r\n     * @protected\r\n     */\r\n    this.min = 0;\r\n    /** @type {number} */\r\n    let r = 8 - ((((bits - 1) | 7) + 1) - bits);\r\n    /**\r\n     * @type {number}\r\n     * @private\r\n     */\r\n    this.lastByteMask_ = Math.pow(2, r > 0 ? r : 8) - 1;\r\n    /**\r\n     * @type {Function}\r\n     * @protected\r\n     */\r\n    this.unpack = this.unpackUnsigned_;\r\n    if (signed) {\r\n      this.max = Math.pow(2, bits) / 2 - 1;\r\n      this.min = -this.max - 1;\r\n      this.unpack = this.unpackSigned_;\r\n    }\r\n    if (clamp) {\r\n      this.overflow_ = this.overflowClamp_;\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Write one unsigned integer to a byte buffer.\r\n   * @param {!(Uint8Array|Array<number>)} buffer An array of bytes.\r\n   * @param {number} num The number. Overflows are truncated.\r\n   * @param {number} [index=0] The index being written in the byte buffer.\r\n   * @return {number} The next index to write on the byte buffer.\r\n   */\r\n  pack(buffer, num, index=0) {\r\n    if (num !== num || num.constructor != Number) {\r\n      throw new TypeError();\r\n    }\r\n    num = this.overflow_(num);\r\n    buffer[index] = (num < 0 ? num + Math.pow(2, this.bits) : num) & 255;\r\n    index++;\r\n    for (let i = 2, len = this.bytes; i < len; i++) {\r\n      buffer[index] = Math.floor(num / Math.pow(2, ((i - 1) * 8))) & 255;\r\n      index++;\r\n    }\r\n    if (this.bits > 8) {\r\n      buffer[index] = Math.floor(\r\n        num / Math.pow(2, ((this.bytes - 1) * 8))) & this.lastByteMask_;\r\n      index++;\r\n    }\r\n    return index;\r\n  }\r\n\r\n  /**\r\n   * Read one unsigned integer from a byte buffer.\r\n   * Does not check for overflows.\r\n   * @param {!(Uint8Array|Array<number>)} buffer An array of bytes.\r\n   * @param {number} [index=0] The index to read.\r\n   * @return {number}\r\n   */\r\n  unpack_(buffer, index=0) {\r\n    /** @type {number} */\r\n    let num = 0;\r\n    for(let x = 0; x < this.bytes; x++) {\r\n      num += buffer[index + x] * Math.pow(256, x);\r\n    }\r\n    return num;\r\n  }\r\n\r\n  unpackUnsigned_(buffer, index=0) {\r\n    return this.overflow_(this.unpack_(buffer, index));\r\n  }\r\n\r\n  /**\r\n   * Read one two's complement signed integer from a byte buffer.\r\n   * @param {!(Uint8Array|Array<number>)} buffer An array of bytes.\r\n   * @param {number} [index=0] The index to read.\r\n   * @return {number}\r\n   */\r\n  unpackSigned_(buffer, index=0) {\r\n    return this.overflow_(this.sign_(this.unpack_(buffer, index)));\r\n  }\r\n\r\n  /**\r\n   * Truncate values in case of overflow.\r\n   * @param {number} num The number.\r\n   * @private\r\n   */\r\n  overflow_(num) {\r\n    if (num > this.max || num < this.min) {\r\n      throw new RangeError();\r\n    }\r\n    return num;\r\n  }\r\n\r\n  /**\r\n   * Truncate values in case of overflow.\r\n   * @param {number} num The number.\r\n   * @private\r\n   */\r\n  overflowClamp_(num) {\r\n    if (num > this.max) {\r\n      return this.max;\r\n    } else if (num < this.min) {\r\n      return this.min;\r\n    }\r\n    return num;\r\n  }\r\n\r\n  /**\r\n   * Sign a number.\r\n   * @param {number} num The number.\r\n   * @return {number}\r\n   * @private\r\n   */\r\n  sign_(num) {\r\n    if (num > this.max) {\r\n      num -= (this.max * 2) + 2;\r\n    }\r\n    return num;\r\n  }\r\n}\r\n","/*\r\n * Copyright (c) 2018-2019 Rafael da Silva Rocha.\r\n * Copyright (c) 2013 DeNA Co., Ltd.\r\n * Copyright (c) 2010, Linden Research, Inc\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining\r\n * a copy of this software and associated documentation files (the\r\n * \"Software\"), to deal in the Software without restriction, including\r\n * without limitation the rights to use, copy, modify, merge, publish,\r\n * distribute, sublicense, and/or sell copies of the Software, and to\r\n * permit persons to whom the Software is furnished to do so, subject to\r\n * the following conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be\r\n * included in all copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\r\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\r\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\r\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n *\r\n */\r\n\r\n/**\r\n * @fileoverview Encode and decode IEEE 754 floating point numbers.\r\n * @see https://github.com/rochars/ieee754-buffer\r\n * @see https://bitbucket.org/lindenlab/llsd/raw/7d2646cd3f9b4c806e73aebc4b32bd81e4047fdc/js/typedarray.js\r\n * @see https://github.com/kazuho/ieee754.js/blob/master/ieee754.js\r\n */\r\n\r\n/** \r\n * @module ieee754-buffer\r\n */\r\n\r\n/**\r\n * A class to encode and decode IEEE 754 floating-point numbers.\r\n */\r\nexport class IEEE754Buffer {\r\n\r\n  /**\r\n   * Pack a IEEE 754 floating point number.\r\n   * @param {number} ebits The exponent bits.\r\n   * @param {number} fbits The fraction bits.\r\n   */\r\n  constructor(ebits, fbits) {\r\n    /**\r\n     * @type {number}\r\n     * @private\r\n     */\r\n    this.ebits = ebits;\r\n    /**\r\n     * @type {number}\r\n     * @private\r\n     */\r\n    this.fbits = fbits;\r\n    /**\r\n     * @type {number}\r\n     * @private\r\n     */\r\n    this.bias = (1 << (ebits - 1)) - 1;\r\n    /**\r\n     * @type {number}\r\n     * @private\r\n     */\r\n    this.numBytes = Math.ceil((ebits + fbits) / 8);\r\n    /**\r\n     * @type {number}\r\n     * @private\r\n     */\r\n    this.biasP2 = Math.pow(2, this.bias + 1);\r\n    /**\r\n     * @type {number}\r\n     * @private\r\n     */\r\n    this.ebitsFbits = (ebits + fbits);\r\n    /**\r\n     * @type {number}\r\n     * @private\r\n     */\r\n    this.fbias = Math.pow(2, -(8 * this.numBytes - 1 - ebits));\r\n  }\r\n\r\n  /**\r\n   * Pack a IEEE 754 floating point number.\r\n   * @param {!Uint8Array|!Array<number>} buffer The buffer.\r\n   * @param {number} num The number.\r\n   * @param {number} index The index to write on the buffer.\r\n   * @return {number} The next index to write on the buffer.\r\n   * @throws {TypeError} If input is not a number.\r\n   */\r\n  pack(buffer, num, index) {\r\n    // Only numbers can be packed\r\n    if (typeof num != 'number') {\r\n      throw new TypeError();\r\n    }\r\n    // Round overflows\r\n    if (Math.abs(num) > this.biasP2 - (this.ebitsFbits * 2)) {\r\n      num = num < 0 ? -Infinity : Infinity;\r\n    }\r\n    /**\r\n     * sign, need this to handle negative zero\r\n     * @see http://cwestblog.com/2014/02/25/javascript-testing-for-negative-zero/\r\n     * @type {number}\r\n     */\r\n    let sign = (((num = +num) || 1 / num) < 0) ? 1 : num < 0 ? 1 : 0;\r\n    num = Math.abs(num);\r\n    /** @type {number} */\r\n    let exp = Math.min(Math.floor(Math.log(num) / Math.LN2), 1023);\r\n    /** @type {number} */\r\n    let fraction = roundToEven(num / Math.pow(2, exp) * Math.pow(2, this.fbits));\r\n    // NaN\r\n    if (num !== num) {\r\n      fraction = Math.pow(2, this.fbits - 1);\r\n      exp = (1 << this.ebits) - 1;\r\n    // Number\r\n    } else if (num !== 0) {\r\n      if (num >= Math.pow(2, 1 - this.bias)) {\r\n        if (fraction / Math.pow(2, this.fbits) >= 2) {\r\n          exp = exp + 1;\r\n          fraction = 1;\r\n        }\r\n        // Overflow\r\n        if (exp > this.bias) {\r\n          exp = (1 << this.ebits) - 1;\r\n          fraction = 0;\r\n        } else {\r\n          exp = exp + this.bias;\r\n          fraction = roundToEven(fraction) - Math.pow(2, this.fbits);\r\n        }\r\n      } else {\r\n        fraction = roundToEven(num / Math.pow(2, 1 - this.bias - this.fbits));\r\n        exp = 0;\r\n      } \r\n    }\r\n    return this.packFloatBits_(buffer, index, sign, exp, fraction);\r\n  }\r\n\r\n  /**\r\n   * Unpack a IEEE 754 floating point number.\r\n   * Derived from IEEE754 by DeNA Co., Ltd., MIT License. \r\n   * Adapted to handle NaN. Should port the solution to the original repo.\r\n   * @param {!Uint8Array|!Array<number>} buffer The buffer.\r\n   * @param {number} index The index to read from the buffer.\r\n   * @return {number} The floating point number.\r\n   */\r\n  unpack(buffer, index) {\r\n    /** @type {number} */\r\n    let eMax = (1 << this.ebits) - 1;\r\n    /** @type {number} */\r\n    let significand;\r\n    /** @type {string} */\r\n    let leftBits = \"\";\r\n    for (let i = this.numBytes - 1; i >= 0 ; i--) {\r\n      /** @type {string} */\r\n      let t = buffer[i + index].toString(2);\r\n      leftBits += \"00000000\".substring(t.length) + t;\r\n    }\r\n    /** @type {number} */\r\n    let sign = leftBits.charAt(0) == \"1\" ? -1 : 1;\r\n    leftBits = leftBits.substring(1);\r\n    /** @type {number} */\r\n    let exponent = parseInt(leftBits.substring(0, this.ebits), 2);\r\n    leftBits = leftBits.substring(this.ebits);\r\n    if (exponent == eMax) {\r\n      if (parseInt(leftBits, 2) !== 0) {\r\n        return NaN;\r\n      }\r\n      return sign * Infinity;  \r\n    } else if (exponent === 0) {\r\n      exponent += 1;\r\n      significand = parseInt(leftBits, 2);\r\n    } else {\r\n      significand = parseInt(\"1\" + leftBits, 2);\r\n    }\r\n    return sign * significand * this.fbias * Math.pow(2, exponent - this.bias);\r\n  }\r\n\r\n  /**\r\n   * Pack a IEEE754 from its sign, exponent and fraction bits\r\n   * and place it in a byte buffer.\r\n   * @param {!Uint8Array|!Array<number>} buffer The byte buffer to write to.\r\n   * @param {number} index The buffer index to write.\r\n   * @param {number} sign The sign.\r\n   * @param {number} exp the exponent.\r\n   * @param {number} fraction The fraction.\r\n   * @return {number}\r\n   * @private\r\n   */\r\n  packFloatBits_(buffer, index, sign, exp, fraction) {\r\n    /** @type {!Array<number>} */\r\n    let bits = [];\r\n    // the sign\r\n    bits.push(sign);\r\n    // the exponent\r\n    for (let i = this.ebits; i > 0; i -= 1) {\r\n      bits[i] = (exp % 2 ? 1 : 0);\r\n      exp = Math.floor(exp / 2);\r\n    }\r\n    // the fraction\r\n    let len = bits.length;\r\n    for (let i = this.fbits; i > 0; i -= 1) {\r\n      bits[len + i] = (fraction % 2 ? 1 : 0);\r\n      fraction = Math.floor(fraction / 2);\r\n    }\r\n    // pack as bytes\r\n    /** @type {string} */\r\n    let str = bits.join('');\r\n    /** @type {number} */\r\n    let numBytes = this.numBytes + index - 1;\r\n    /** @type {number} */\r\n    let k = index;\r\n    while (numBytes >= index) {\r\n      buffer[numBytes] = parseInt(str.substring(0, 8), 2);\r\n      str = str.substring(8);\r\n      numBytes--;\r\n      k++;\r\n    }\r\n    return k;\r\n  }\r\n}\r\n\r\n/**\r\n * Round a number to its nearest even value.\r\n * @param {number} n The number.\r\n * @return {number}\r\n * @private\r\n */\r\nfunction roundToEven(n) {\r\n  /** @type {number} */\r\n  let w = Math.floor(n);\r\n  let f = n - w;\r\n  if (f < 0.5) {\r\n    return w;\r\n  }\r\n  if (f > 0.5) {\r\n    return w + 1;\r\n  }\r\n  return w % 2 ? w + 1 : w;\r\n}\r\n","/*\r\n * Copyright (c) 2017-2019 Rafael da Silva Rocha.\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining\r\n * a copy of this software and associated documentation files (the\r\n * \"Software\"), to deal in the Software without restriction, including\r\n * without limitation the rights to use, copy, modify, merge, publish,\r\n * distribute, sublicense, and/or sell copies of the Software, and to\r\n * permit persons to whom the Software is furnished to do so, subject to\r\n * the following conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be\r\n * included in all copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\r\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\r\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\r\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n *\r\n */\r\n\r\n/**\r\n * @fileoverview JavaScript binary parser for any browser or environment.\r\n * @see https://github.com/rochars/byte-data\r\n */\r\n\r\n/** @module byte-data */\r\n\r\nimport endianness from 'endianness';\r\nimport { pack as packUTF8, unpack as unpackUTF8 } from 'utf8-buffer';\r\nimport { IntParser } from './lib/int-parser';\r\nimport { IEEE754Buffer } from 'ieee754-buffer';\r\n\r\n/**\r\n * Read a string of UTF-8 characters from a byte buffer.\r\n * @param {!(Uint8Array|Array<number>)} buffer A byte buffer.\r\n * @param {number} [index=0] The buffer index to start reading.\r\n * @param {number} [end=buffer.length] The index to stop reading, non inclusive.\r\n * @return {string}\r\n */\r\nexport function unpackString(buffer, index=0, end=buffer.length) {\r\n  return unpackUTF8(buffer, index, end);\r\n}\r\n\r\n/**\r\n * Write a string of UTF-8 characters as a byte buffer.\r\n * @param {string} str The string to pack.\r\n * @return {!Array<number>} The UTF-8 string bytes.\r\n */\r\nexport function packString(str) {\r\n  /** @type {!Array<number>} */\r\n  let buffer = [];\r\n  packUTF8(str, buffer, 0);\r\n  return buffer;\r\n}\r\n\r\n/**\r\n * Write a string of UTF-8 characters to a byte buffer.\r\n * @param {string} str The string to pack.\r\n * @param {!(Uint8Array|Array<number>)} buffer The output buffer.\r\n * @param {number} [index=0] The buffer index to start writing.\r\n * @return {number} The next index to write in the buffer.\r\n */\r\nexport function packStringTo(str, buffer, index=0) {\r\n  return packUTF8(str, buffer, index);\r\n}\r\n\r\n// Numbers\r\n/**\r\n * Pack a array of numbers to a byte buffer.\r\n * All other packing functions are interfaces to this function.\r\n * @param {!(Array<number>|TypedArray)} values The values to pack.\r\n * @param {!{bits:number,\r\n *   fp: (boolean|undefined),\r\n *   signed: (boolean|undefined),\r\n *   be: (boolean|undefined)}} theType The type definition.\r\n * @param {!(Uint8Array|Array<number>)} buffer The buffer to write on.\r\n * @param {number} [index=0] The buffer index to start writing.\r\n * @param {boolean} [clamp=false] True to clamp ints on overflow.\r\n * @return {number} The next index to write.\r\n * @throws {Error} If the type definition is not valid.\r\n * @throws {RangeError} On overflow.\r\n * @throws {TypeError} If input is not valid.\r\n */\r\nexport function packArrayTo(values, theType, buffer, index=0, clamp=false) {\r\n  theType = theType || {};\r\n  /** @type {!Object} */\r\n  let packer = getParser_(theType.bits, theType.fp, theType.signed, clamp);\r\n  /** @type {number} */\r\n  let offset = Math.ceil(theType.bits / 8);\r\n  /** @type {number} */\r\n  let i = 0;\r\n  /** @type {number} */\r\n  let start = index;\r\n  try {\r\n    for (let valuesLen = values.length; i < valuesLen; i++) {\r\n      index = packer.pack(buffer, values[i], index);\r\n    }\r\n    if (theType.be) {\r\n      endianness(buffer, offset, start, index);\r\n    }\r\n  } catch (e) {\r\n    throwValueError_(e, values[i], i);\r\n  }\r\n  return index;\r\n}\r\n\r\n/**\r\n * Unpack a array of numbers from a byte buffer to a array or a typed array.\r\n * All other unpacking functions are interfaces to this function.\r\n * @param {!(Uint8Array|Array<number>)} buffer The byte buffer.\r\n * @param {!{bits:number,\r\n *   fp: (boolean|undefined),\r\n *   signed: (boolean|undefined),\r\n *   be: (boolean|undefined)}} theType The type definition.\r\n * @param {!(TypedArray|Array<number>)} output The output array or typed array.\r\n * @param {number} [start=0] The buffer index to start reading.\r\n * @param {number} [end=buffer.length] The buffer index to stop reading.\r\n * @param {boolean} [safe=false] If set to false, extra bytes in the end of\r\n *   the array are ignored and input buffers with insufficient bytes will\r\n *   write nothing to the output array. If safe is set to true the function\r\n *   will throw a 'Bad buffer length' error.\r\n * @param {boolean} [clamp=false] True to clamp ints on overflow.\r\n * @throws {Error} If the type definition is not valid\r\n * @throws {RangeError} On overflow\r\n */\r\nexport function unpackArrayTo(\r\n    buffer, theType, output, start=0, end=buffer.length,\r\n    safe=false, clamp=false) {\r\n  theType = theType || {};\r\n  /** @type {!Object} */\r\n  let packer = getParser_(theType.bits, theType.fp, theType.signed, clamp);\r\n  /** @type {number} */\r\n  let offset = Math.ceil(theType.bits / 8);\r\n  // getUnpackLen_ will either fix the length of the input buffer\r\n  // according to the byte offset of the type (on unsafe mode) or\r\n  // throw a Error if the input buffer has a bad length (on safe mode)\r\n  end = getUnpackLen_(buffer, start, end, offset, safe);\r\n  /** @type {number} */\r\n  let index = 0;\r\n  let j = start;\r\n  try {\r\n    if (theType.be) {\r\n      endianness(buffer, offset, start, end);\r\n    }\r\n    for (; j < end; j += offset, index++) {\r\n      output[index] = packer.unpack(buffer, j);\r\n    }\r\n    if (theType.be) {\r\n      endianness(buffer, offset, start, end);\r\n    }\r\n  } catch (e) {\r\n    throwValueError_(e, buffer.slice(j, j + offset), j);\r\n  }\r\n}\r\n\r\n/**\r\n * Pack a number to a byte buffer.\r\n * @param {number} value The value.\r\n * @param {!{bits:number,\r\n *   fp: (boolean|undefined),\r\n *   signed: (boolean|undefined),\r\n *   be: (boolean|undefined)}} theType The type definition.\r\n * @param {!(Uint8Array|Array<number>)} buffer The byte buffer to write on.\r\n * @param {number} [index=0] The buffer index to write.\r\n * @param {boolean} [clamp=false] True to clamp ints on overflow.\r\n * @return {number} The next index to write.\r\n * @throws {Error} If the type definition is not valid.\r\n * @throws {RangeError} On overflow.\r\n * @throws {TypeError} If input is not valid.\r\n */\r\nexport function packTo(value, theType, buffer, index=0, clamp=false) {\r\n  return packArrayTo([value], theType, buffer, index, clamp);\r\n}\r\n\r\n/**\r\n * Pack a number as a array of bytes.\r\n * @param {number} value The number to pack.\r\n * @param {!{bits:number,\r\n *   fp: (boolean|undefined),\r\n *   signed: (boolean|undefined),\r\n *   be: (boolean|undefined)}} theType The type definition.\r\n * @param {boolean} [clamp=false] True to clamp ints on overflow.\r\n * @return {!Array<number>} The packed value.\r\n * @throws {Error} If the type definition is not valid.\r\n * @throws {RangeError} On overflow.\r\n * @throws {TypeError} If input is not valid.\r\n */\r\nexport function pack(value, theType, clamp=false) {\r\n  /** @type {!Array<number>} */\r\n  let output = [];\r\n  packTo(value, theType, output, 0, clamp);\r\n  return output;\r\n}\r\n\r\n/**\r\n * Pack a array of numbers as a array of bytes.\r\n * @param {!(Array<number>|TypedArray)} values The values to pack.\r\n * @param {!{bits:number,\r\n *   fp: (boolean|undefined),\r\n *   signed: (boolean|undefined),\r\n *   be: (boolean|undefined)}} theType The type definition.\r\n * @param {boolean} [clamp=false] True to clamp ints on overflow.\r\n * @return {!Array<number>} The packed values.\r\n * @throws {Error} If the type definition is not valid.\r\n * @throws {RangeError} On overflow.\r\n * @throws {TypeError} If input is not valid.\r\n */\r\nexport function packArray(values, theType, clamp=false) {\r\n  /** @type {!Array<number>} */\r\n  let output = [];\r\n  packArrayTo(values, theType, output, 0, clamp);\r\n  return output;\r\n}\r\n\r\n/**\r\n * Unpack a array of numbers from a byte buffer.\r\n * @param {!(Uint8Array|Array<number>)} buffer The byte buffer.\r\n * @param {!{bits:number,\r\n *   fp: (boolean|undefined),\r\n *   signed: (boolean|undefined),\r\n *   be: (boolean|undefined)}} theType The type definition.\r\n * @param {number} [start=0] The buffer index to start reading.\r\n * @param {number} [end=buffer.length] The buffer index to stop reading.\r\n * @param {boolean} [safe=false] If set to false, extra bytes in the end of\r\n *   the array are ignored and input buffers with insufficient bytes will\r\n *   output a empty array. If safe is set to true the function\r\n *   will throw a 'Bad buffer length' error.\r\n * @param {boolean} [clamp=false] True to clamp ints on overflow.\r\n * @return {!Array<number>}\r\n * @throws {Error} If the type definition is not valid\r\n * @throws {RangeError} On overflow\r\n */\r\nexport function unpackArray(\r\n    buffer, theType, start=0, end=buffer.length, safe=false, clamp=false) {\r\n  /** @type {!Array<number>} */\r\n  let output = [];\r\n  unpackArrayTo(buffer, theType, output, start, end, safe, clamp);\r\n  return output;\r\n}\r\n\r\n/**\r\n * Unpack a number from a byte buffer.\r\n * @param {!(Uint8Array|Array<number>)} buffer The byte buffer.\r\n * @param {!{bits:number,\r\n *   fp: (boolean|undefined),\r\n *   signed: (boolean|undefined),\r\n *   be: (boolean|undefined)}} theType The type definition.\r\n * @param {number} [index=0] The buffer index to read.\r\n * @param {boolean} [clamp=false] True to clamp ints on overflow.\r\n * @return {number}\r\n * @throws {Error} If the type definition is not valid\r\n * @throws {Error} On bad buffer length.\r\n * @throws {RangeError} On overflow\r\n */\r\nexport function unpack(buffer, theType, index=0, clamp=false) {\r\n  return unpackArray(\r\n    buffer, theType, index, index + Math.ceil(theType.bits / 8),\r\n    true, clamp)[0];\r\n}\r\n\r\n/**\r\n * Throw a error with information about the problem.\r\n * @param {!Object} err The Error object that is being raised.\r\n * @param {*} value The value that caused the error.\r\n * @param {number} index The index of the value that caused the error.\r\n * @throws {RangeError|TypeError|Error} A Error with a message.\r\n * @private\r\n */\r\nfunction throwValueError_(err, value, index) {\r\n  err.message = err.constructor.name +\r\n    ' at index ' + index + ': ' + value;\r\n  throw err;\r\n}\r\n\r\n/**\r\n * Unpack a array of numbers to a typed array.\r\n * All other unpacking functions are interfaces to this function.\r\n * @param {!(Uint8Array|Array<number>)} buffer The byte buffer.\r\n * @param {number} start The buffer index to start reading.\r\n * @param {number} end The buffer index to stop reading.\r\n * @param {number} offset The number of bytes used by the type.\r\n * @param {boolean} safe True for size-safe buffer reading.\r\n * @throws {Error} On bad buffer length, if safe.\r\n * @private\r\n */\r\nfunction getUnpackLen_(buffer, start, end, offset, safe) {\r\n  /** @type {number} */\r\n  let extra = (end - start) % offset;\r\n  if (safe && (extra || buffer.length < offset)) {\r\n    throw new Error('Bad buffer length');\r\n  }\r\n  return end - extra;\r\n}\r\n\r\n/**\r\n * Return a parser for int, uint or fp numbers.\r\n * @param {number} bits The number of bits.\r\n * @param {boolean|undefined} fp True for fp numbers, false otherwise.\r\n * @param {boolean|undefined} signed True for signed ints, false otherwise.\r\n * @param {boolean|undefined} clamp True to clamp ints on overflow, false otherwise.\r\n * @return {!Object}\r\n * @private\r\n */\r\nfunction getParser_(bits, fp, signed, clamp) {\r\n  if (fp) {\r\n    validateFloatType(bits);\r\n  } else {\r\n    validateIntType(bits);\r\n  }\r\n  if (fp && bits === 16) {\r\n    return new IEEE754Buffer(5, 11);\r\n  } else if (fp && bits == 32) {\r\n    return new IEEE754Buffer(8, 23);\r\n  } else if(fp && bits == 64) {\r\n    return new IEEE754Buffer(11, 52);\r\n  }\r\n  return new IntParser(bits, signed, clamp);\r\n}\r\n\r\n/**\r\n * The type definition error message.\r\n * @type {string}\r\n * @private\r\n */\r\nconst TYPE_ERR = 'Unsupported type';\r\n\r\n/**\r\n * Validate the type definition of floating-point numbers.\r\n * @param {number} bits The number of bits.\r\n * @throws {Error} If the type definition is not valid.\r\n * @private\r\n */\r\nfunction validateFloatType(bits) {\r\n  if (!bits || bits !== 16 && bits !== 32 && bits !== 64) {\r\n    throw new Error(TYPE_ERR + ': float, bits: ' + bits);\r\n  }\r\n}\r\n\r\n/**\r\n * Validate the type definition of integers.\r\n * @param {number} bits The number of bits.\r\n * @throws {Error} If the type definition is not valid.\r\n * @private\r\n */\r\nfunction validateIntType(bits) {\r\n  if (!bits || bits < 1 || bits > 53) {\r\n    throw new Error(TYPE_ERR + ': int, bits: ' + bits);\r\n  }\r\n}\r\n","/*\r\n * Copyright (c) 2018 Rafael da Silva Rocha.\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining\r\n * a copy of this software and associated documentation files (the\r\n * \"Software\"), to deal in the Software without restriction, including\r\n * without limitation the rights to use, copy, modify, merge, publish,\r\n * distribute, sublicense, and/or sell copies of the Software, and to\r\n * permit persons to whom the Software is furnished to do so, subject to\r\n * the following conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be\r\n * included in all copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\r\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\r\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\r\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n *\r\n */\r\n\r\n/**\r\n * @fileoverview Functions to serialize and deserialize UTF-8 strings.\r\n * @see https://github.com/rochars/utf8-buffer\r\n * @see https://encoding.spec.whatwg.org/#the-encoding\r\n * @see https://encoding.spec.whatwg.org/#utf-8-encoder\r\n */\r\n\r\n/** @module utf8-buffer */\r\n\r\n/**\r\n * Read a string of UTF-8 characters from a byte buffer.\r\n * Invalid characters are replaced with 'REPLACEMENT CHARACTER' (U+FFFD).\r\n * @see https://encoding.spec.whatwg.org/#the-encoding\r\n * @see https://stackoverflow.com/a/34926911\r\n * @param {!Uint8Array|!Array<number>} buffer A byte buffer.\r\n * @param {number=} start The buffer index to start reading.\r\n * @param {?number=} end The buffer index to stop reading.\r\n *   Assumes the buffer length if undefined.\r\n * @return {string}\r\n */\r\nexport function unpack(buffer, start=0, end=buffer.length) {\r\n  /** @type {string} */\r\n  let str = '';\r\n  for(let index = start; index < end;) {\r\n    /** @type {number} */\r\n    let lowerBoundary = 0x80;\r\n    /** @type {number} */\r\n    let upperBoundary = 0xBF;\r\n    /** @type {boolean} */\r\n    let replace = false;\r\n    /** @type {number} */\r\n    let charCode = buffer[index++];\r\n    if (charCode >= 0x00 && charCode <= 0x7F) {\r\n      str += String.fromCharCode(charCode);\r\n    } else {\r\n      /** @type {number} */\r\n      let count = 0;\r\n      if (charCode >= 0xC2 && charCode <= 0xDF) {\r\n        count = 1;\r\n      } else if (charCode >= 0xE0 && charCode <= 0xEF ) {\r\n        count = 2;\r\n        if (buffer[index] === 0xE0) {\r\n          lowerBoundary = 0xA0;\r\n        }\r\n        if (buffer[index] === 0xED) {\r\n          upperBoundary = 0x9F;\r\n        }\r\n      } else if (charCode >= 0xF0 && charCode <= 0xF4 ) {\r\n        count = 3;\r\n        if (buffer[index] === 0xF0) {\r\n          lowerBoundary = 0x90;\r\n        }\r\n        if (buffer[index] === 0xF4) {\r\n          upperBoundary = 0x8F;\r\n        }\r\n      } else {\r\n        replace = true;\r\n      }\r\n      charCode = charCode & (1 << (8 - count - 1)) - 1;\r\n      for (let i = 0; i < count; i++) {\r\n        if (buffer[index] < lowerBoundary || buffer[index] > upperBoundary) {\r\n          replace = true;\r\n        }\r\n        charCode = (charCode << 6) | (buffer[index] & 0x3f);\r\n        index++;\r\n      }\r\n      if (replace) {\r\n        str += String.fromCharCode(0xFFFD);\r\n      } \r\n      else if (charCode <= 0xffff) {\r\n        str += String.fromCharCode(charCode);\r\n      } else {\r\n        charCode -= 0x10000;\r\n        str += String.fromCharCode(\r\n          ((charCode >> 10) & 0x3ff) + 0xd800,\r\n          (charCode & 0x3ff) + 0xdc00);\r\n      }\r\n    }\r\n  }\r\n  return str;\r\n}\r\n\r\n/**\r\n * Write a string of UTF-8 characters to a byte buffer.\r\n * @see https://encoding.spec.whatwg.org/#utf-8-encoder\r\n * @param {string} str The string to pack.\r\n * @param {!Uint8Array|!Array<number>} buffer The buffer to pack the string to.\r\n * @param {number=} index The buffer index to start writing.\r\n * @return {number} The next index to write in the buffer.\r\n */\r\nexport function pack(str, buffer, index=0) {\r\n  for (let i = 0, len = str.length; i < len; i++) {\r\n    /** @type {number} */\r\n    let codePoint = str.codePointAt(i);\r\n    if (codePoint < 128) {\r\n      buffer[index] = codePoint;\r\n      index++;\r\n    } else {\r\n      /** @type {number} */\r\n      let count = 0;\r\n      /** @type {number} */\r\n      let offset = 0;\r\n      if (codePoint <= 0x07FF) {\r\n        count = 1;\r\n        offset = 0xC0;\r\n      } else if(codePoint <= 0xFFFF) {\r\n        count = 2;\r\n        offset = 0xE0;\r\n      } else if(codePoint <= 0x10FFFF) {\r\n        count = 3;\r\n        offset = 0xF0;\r\n        i++;\r\n      }\r\n      buffer[index] = (codePoint >> (6 * count)) + offset;\r\n      index++;\r\n      while (count > 0) {\r\n        buffer[index] = 0x80 | (codePoint >> (6 * (count - 1)) & 0x3F);\r\n        index++;\r\n        count--;\r\n      }\r\n    }\r\n  }\r\n  return index;\r\n}\r\n","/*\r\n * Copyright (c) 2017-2019 Rafael da Silva Rocha.\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining\r\n * a copy of this software and associated documentation files (the\r\n * \"Software\"), to deal in the Software without restriction, including\r\n * without limitation the rights to use, copy, modify, merge, publish,\r\n * distribute, sublicense, and/or sell copies of the Software, and to\r\n * permit persons to whom the Software is furnished to do so, subject to\r\n * the following conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be\r\n * included in all copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\r\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\r\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\r\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n *\r\n */\r\n\r\n/**\r\n * @fileoverview The RIFFFile class.\r\n * @see https://github.com/rochars/riff-file\r\n */\r\n\r\n/** @module riff-file */\r\n\r\nimport {unpackString, unpack} from 'byte-data';\r\n\r\n/**\r\n * A class to perform low-level reading of RIFF/RIFX files.\r\n */\r\nexport class RIFFFile {\r\n\r\n  constructor() {\r\n    /**\r\n     * The container identifier.\r\n     * 'RIFF', 'RIFX' and 'RF64' are supported.\r\n     * @type {string}\r\n     */\r\n    this.container = '';\r\n    /**\r\n     * The main chunk size, in bytes.\r\n     * @type {number}\r\n     */\r\n    this.chunkSize = 0;\r\n    /**\r\n     * The format identifier.\r\n     * @type {string}\r\n     */\r\n    this.format = '';\r\n    /**\r\n     * An object representing the signature of all chunks in the file.\r\n     * @type {{\r\n      chunkId: string,\r\n      chunkSize: number,\r\n      format: string,\r\n      chunkData: {start: number, end: number},\r\n      subChunks: Array\r\n      }|null}\r\n     */\r\n    this.signature = null;\r\n    /**\r\n     * @type {number}\r\n     * @protected\r\n     */\r\n    this.head = 0;\r\n    /**\r\n     * @type {\r\n      {bits: number, be: boolean, signed: boolean, fp: boolean}\r\n     }\r\n     * @protected\r\n     */\r\n    this.uInt32 = { bits: 32, be: false, signed: false, fp: false };\r\n    /**\r\n     * The list of supported containers.\r\n     * Any format different from RIFX will be treated as RIFF.\r\n     * @type {!Array<string>}\r\n     * @protected\r\n     */\r\n    this.supported_containers = ['RIFF', 'RIFX'];\r\n  }\r\n\r\n  /**\r\n   * Read the signature of the chunks in a RIFF/RIFX file.\r\n   * @param {!Uint8Array} buffer The file bytes.\r\n   * @protected\r\n   */\r\n  setSignature(buffer) {\r\n      this.head = 0;\r\n      this.container = this.readString(buffer, 4);\r\n      if (this.supported_containers.indexOf(this.container) === -1) {\r\n        throw Error('Not a supported format.');\r\n      }\r\n      this.uInt32.be = this.container === 'RIFX';\r\n      this.chunkSize = this.readUInt32(buffer);\r\n      this.format = this.readString(buffer, 4);\r\n      // The RIFF file signature\r\n      this.signature = {\r\n          chunkId: this.container,\r\n          chunkSize: this.chunkSize,\r\n          format: this.format,\r\n          subChunks: this.getSubChunksIndex_(buffer),\r\n          chunkData: {start: 0, end: this.chunkSize}\r\n      };\r\n  }\r\n\r\n  /**\r\n    * Find a chunk by its fourCC_ in a array of RIFF chunks.\r\n    * @param {string} chunkId The chunk fourCC_.\r\n    * @param {boolean} multiple True if there may be multiple chunks\r\n    *    with the same chunkId.\r\n    * @return {Object}\r\n    * @protected\r\n    */\r\n  findChunk(chunkId, multiple=false) {\r\n    /** @type {!Array|null} */\r\n    let chunks = this.signature.subChunks;\r\n    /** @type {!Array<!Object>} */\r\n    let chunk = [];\r\n    for (let i=0; i<chunks.length; i++) {\r\n      if (chunks[i].chunkId == chunkId) {\r\n        if (multiple) {\r\n          chunk.push(chunks[i]);\r\n        } else {\r\n          return chunks[i];\r\n        }\r\n      }\r\n    }\r\n    if (chunkId == 'LIST') {\r\n      return chunk.length ? chunk : null;\r\n    }\r\n    return null;\r\n  }\r\n\r\n  /**\r\n   * Read bytes as a string from a RIFF chunk.\r\n   * @param {!Uint8Array} bytes The bytes.\r\n   * @param {number} maxSize the max size of the string.\r\n   * @return {string} The string.\r\n   * @protected\r\n   */\r\n  readString(bytes, maxSize) {\r\n    /** @type {string} */\r\n    let str = '';\r\n    str = unpackString(bytes, this.head, this.head + maxSize);\r\n    this.head += maxSize;\r\n    return str;\r\n  }\r\n\r\n  /**\r\n   * Read a number from a chunk.\r\n   * @param {!Uint8Array} bytes The chunk bytes.\r\n   * @return {number} The number.\r\n   * @protected\r\n   */\r\n  readUInt32(bytes) {\r\n    /** @type {number} */\r\n    let value = unpack(bytes, this.uInt32, this.head);\r\n    this.head += 4;\r\n    return value;\r\n  }\r\n\r\n  /**\r\n   * Return the sub chunks of a RIFF file.\r\n   * @param {!Uint8Array} buffer the RIFF file bytes.\r\n   * @return {!Array<Object>} The subchunks of a RIFF/RIFX or LIST chunk.\r\n   * @private\r\n   */\r\n  getSubChunksIndex_(buffer) {\r\n      /** @type {!Array<!Object>} */\r\n      let chunks = [];\r\n      /** @type {number} */\r\n      let i = this.head;\r\n      while(i <= buffer.length - 8) {\r\n          chunks.push(this.getSubChunkIndex_(buffer, i));\r\n          i += 8 + chunks[chunks.length - 1].chunkSize;\r\n          i = i % 2 ? i + 1 : i;\r\n      }\r\n      return chunks;\r\n  }\r\n\r\n  /**\r\n   * Return a sub chunk from a RIFF file.\r\n   * @param {!Uint8Array} buffer the RIFF file bytes.\r\n   * @param {number} index The start index of the chunk.\r\n   * @return {!Object} A subchunk of a RIFF/RIFX or LIST chunk.\r\n   * @private\r\n   */\r\n  getSubChunkIndex_(buffer, index) {\r\n      /** @type {!Object} */\r\n      let chunk = {\r\n          chunkId: this.getChunkId_(buffer, index),\r\n          chunkSize: this.getChunkSize_(buffer, index),\r\n      };\r\n      if (chunk.chunkId == 'LIST') {\r\n          chunk.format = unpackString(buffer, index + 8, index + 12);\r\n          this.head += 4;\r\n          chunk.subChunks = this.getSubChunksIndex_(buffer);\r\n      } else {\r\n          /** @type {number} */\r\n          let realChunkSize = chunk.chunkSize % 2 ?\r\n              chunk.chunkSize + 1 : chunk.chunkSize;\r\n          this.head = index + 8 + realChunkSize;\r\n          chunk.chunkData = {\r\n              start: index + 8,\r\n              end: this.head\r\n          };\r\n      }\r\n      return chunk;\r\n  }\r\n\r\n  /**\r\n   * Return the fourCC_ of a chunk.\r\n   * @param {!Uint8Array} buffer the RIFF file bytes.\r\n   * @param {number} index The start index of the chunk.\r\n   * @return {string} The id of the chunk.\r\n   * @private\r\n   */\r\n  getChunkId_(buffer, index) {\r\n      this.head += 4;\r\n      return unpackString(buffer, index, index + 4);\r\n  }\r\n\r\n  /**\r\n   * Return the size of a chunk.\r\n   * @param {!Uint8Array} buffer the RIFF file bytes.\r\n   * @param {number} index The start index of the chunk.\r\n   * @return {number} The size of the chunk without the id and size fields.\r\n   * @private\r\n   */\r\n  getChunkSize_(buffer, index) {\r\n      this.head += 4;\r\n      return unpack(buffer, this.uInt32, index + 4);\r\n  }\r\n}\r\n","import { RIFFFile } from \"riff-file\";\nimport { unpackArray, unpackString } from \"byte-data\";\nconst DWORD = { bits: 32, be: false, signed: false, fp: false };\nexport function parseAni(arr) {\n    const riff = new RIFFFile();\n    riff.setSignature(arr);\n    const signature = riff.signature;\n    if (signature.format !== \"ACON\") {\n        throw new Error(`Expected format. Expected \"ACON\", got \"${signature.format}\"`);\n    }\n    // Helper function to get a chunk by chunkId and transform it if it's non-null.\n    function mapChunk(chunkId, mapper) {\n        const chunk = riff.findChunk(chunkId);\n        return chunk == null ? null : mapper(chunk);\n    }\n    function readImages(chunk, frameCount) {\n        return chunk.subChunks.slice(0, frameCount).map((c) => {\n            if (c.chunkId !== \"icon\") {\n                throw new Error(`Unexpected chunk type in fram: ${c.chunkId}`);\n            }\n            return arr.slice(c.chunkData.start, c.chunkData.end);\n        });\n    }\n    const metadata = mapChunk(\"anih\", (c) => {\n        const words = unpackArray(arr, DWORD, c.chunkData.start, c.chunkData.end);\n        return {\n            cbSize: words[0],\n            nFrames: words[1],\n            nSteps: words[2],\n            iWidth: words[3],\n            iHeight: words[4],\n            iBitCount: words[5],\n            nPlanes: words[6],\n            iDispRate: words[7],\n            bfAttributes: words[8],\n        };\n    });\n    if (metadata == null) {\n        throw new Error(\"Did not find anih\");\n    }\n    const rate = mapChunk(\"rate\", (c) => {\n        return unpackArray(arr, DWORD, c.chunkData.start, c.chunkData.end);\n    });\n    // chunkIds are always four chars, hence the trailing space.\n    const seq = mapChunk(\"seq \", (c) => {\n        return unpackArray(arr, DWORD, c.chunkData.start, c.chunkData.end);\n    });\n    const lists = riff.findChunk(\"LIST\", true);\n    const imageChunk = lists === null || lists === void 0 ? void 0 : lists.find((c) => c.format === \"fram\");\n    if (imageChunk == null) {\n        throw new Error(\"Did not find fram LIST\");\n    }\n    let images = readImages(imageChunk, metadata.nFrames);\n    let title = null;\n    let artist = null;\n    const infoChunk = lists === null || lists === void 0 ? void 0 : lists.find((c) => c.format === \"INFO\");\n    if (infoChunk != null) {\n        infoChunk.subChunks.forEach((c) => {\n            switch (c.chunkId) {\n                case \"INAM\":\n                    title = unpackString(arr, c.chunkData.start, c.chunkData.end);\n                    break;\n                case \"IART\":\n                    artist = unpackString(arr, c.chunkData.start, c.chunkData.end);\n                    break;\n                case \"LIST\":\n                    // Some cursors with an artist of \"Created with Take ONE 3.5 (unregisterred version)\" seem to have their frames here for some reason?\n                    if (c.format === \"fram\") {\n                        images = readImages(c, metadata.nFrames);\n                    }\n                    break;\n                default:\n                // Unexpected subchunk\n            }\n        });\n    }\n    return { images, rate, seq, metadata, artist, title };\n}\n//# sourceMappingURL=parser.js.map","import { parseAni } from \"./parser.js\";\nconst JIFFIES_PER_MS = 1000 / 60;\n// Generate CSS for an animated cursor.\n//\n// This function returns CSS containing a set of keyframes with embedded Data\n// URIs as well as a CSS rule to the given selector.\nexport function convertAniBinaryToCSS(selector, aniBinary) {\n    const ani = readAni(aniBinary);\n    const animationName = `ani-cursor-${uniqueId()}`;\n    const keyframes = ani.frames.map(({ url, percents }) => {\n        const percent = percents.map((num) => `${num}%`).join(\", \");\n        return `${percent} { cursor: url(${url}), auto; }`;\n    });\n    // CSS properties with a animation type of \"discrete\", like `cursor`, actually\n    // switch half-way _between_ each keyframe percentage. Luckily this half-way\n    // measurement is applied _after_ the easing function is applied. So, we can\n    // force the frames to appear at exactly the % that we specify by using\n    // `timing-function` of `step-end`.\n    //\n    // https://drafts.csswg.org/web-animations-1/#discrete\n    const timingFunction = \"step-end\";\n    // Winamp (re)starts the animation cycle when your mouse enters an element. By\n    // default this approach would cause the animation to run continuously, even\n    // when the cursor is not visible. To match Winamp's behavior we add a\n    // `:hover` pseudo selector so that the animation only runs when the cursor is\n    // visible.\n    const pseudoSelector = \":hover\";\n    // prettier-ignore\n    return `\n    @keyframes ${animationName} {\n        ${keyframes.join(\"\\n\")}\n    }\n    ${selector}${pseudoSelector} {\n        animation: ${animationName} ${ani.duration}ms ${timingFunction} infinite;\n    }\n   `;\n}\nfunction readAni(contents) {\n    var _a;\n    const ani = parseAni(contents);\n    const rate = (_a = ani.rate) !== null && _a !== void 0 ? _a : ani.images.map(() => ani.metadata.iDispRate);\n    const duration = sum(rate);\n    const frames = ani.images.map((image) => ({\n        url: curUrlFromByteArray(image),\n        percents: [],\n    }));\n    let elapsed = 0;\n    rate.forEach((r, i) => {\n        const frameIdx = ani.seq ? ani.seq[i] : i;\n        frames[frameIdx].percents.push((elapsed / duration) * 100);\n        elapsed += r;\n    });\n    return { duration: duration * JIFFIES_PER_MS, frames };\n}\n/* Utility Functions */\nlet i = 0;\nconst uniqueId = () => i++;\nexport function base64FromDataArray(dataArray) {\n    return window.btoa(Array.from(dataArray)\n        .map((byte) => String.fromCharCode(byte))\n        .join(\"\"));\n}\nfunction curUrlFromByteArray(arr) {\n    const base64 = base64FromDataArray(arr);\n    return `data:image/x-win-bitmap;base64,${base64}`;\n}\nfunction sum(values) {\n    return values.reduce((total, value) => total + value, 0);\n}\n//# sourceMappingURL=index.js.map","// Dynamically set the css background images for all the sprites\nimport { LETTERS } from \"../constants\";\nimport { imageSelectors, cursorSelectors } from \"../skinSelectors\";\nimport { useTypedSelector } from \"../hooks\";\nimport * as Selectors from \"../selectors\";\nimport { SkinImages } from \"../types\";\nimport { createSelector } from \"reselect\";\nimport Css from \"./Css\";\nimport ClipPaths from \"./ClipPaths\";\nimport { convertAniBinaryToCSS } from \"ani-cursor\";\n\nconst CSS_PREFIX = \"#webamp\";\n\nconst mapRegionNamesToIds: { [key: string]: string } = {\n  normal: \"mainWindowClipPath\",\n  windowshade: \"shadeMainWindowClipPath\",\n  equalizer: \"equalizerWindowClipPath\",\n  equalizerws: \"shadeEqualizerWindowClipPath\",\n};\n\nconst mapRegionNamesToMatcher: { [key: string]: string } = {\n  normal: \"#main-window:not(.shade)\",\n  windowshade: \"#main-window.shade\",\n  equalizer: \"#equalizer-window:not(.shade)\",\n  equalizerws: \"#equalizer-window.shade\",\n};\n\nconst numExIsUsed = (skinImages: SkinImages) => Boolean(skinImages.DIGIT_0_EX);\n\nconst FALLBACKS: { [key: string]: string } = {\n  MAIN_BALANCE_BACKGROUND: \"MAIN_VOLUME_BACKGROUND\",\n  MAIN_BALANCE_THUMB: \"MAIN_VOLUME_THUMB\",\n  MAIN_BALANCE_THUMB_ACTIVE: \"MAIN_VOLUME_THUMB_SELECTED\",\n  EQ_MAXIMIZE_BUTTON_ACTIVE: \"EQ_MAXIMIZE_BUTTON_ACTIVE_FALLBACK\",\n};\n\n// Cursors might appear in context menus which are not nested inside the window layout div.\nfunction normalizeCursorSelector(selector: string): string {\n  return `${\n    // TODO: Fix this hack\n    // Maybe our CSS name spacing should be based on some other class/id\n    // than the one we use for defining the main div.\n    // That way it could be shared by both the player and the context menu.\n    selector.startsWith(\"#webamp-context-menu\") ? \"\" : CSS_PREFIX\n  } ${selector}`;\n}\n\nconst getCssRules = createSelector(\n  Selectors.getSkinImages,\n  Selectors.getSkinCursors,\n  Selectors.getSkinLetterWidths,\n  Selectors.getSkinRegion,\n  (skinImages, skinCursors, skinGenLetterWidths, skinRegion): string | null => {\n    if (!skinImages || !skinCursors) {\n      return null;\n    }\n    const cssRules = [];\n    Object.keys(imageSelectors).forEach((imageName) => {\n      const imageUrl =\n        skinImages[imageName] || skinImages[FALLBACKS[imageName]];\n      if (imageUrl) {\n        imageSelectors[imageName].forEach((_selector) => {\n          const selector = _selector; // .replace(\":active\", \".active\");\n          cssRules.push(\n            `${CSS_PREFIX} ${selector} {background-image: url(${imageUrl})}`\n          );\n        });\n      }\n    });\n\n    if (skinGenLetterWidths != null) {\n      LETTERS.forEach((letter) => {\n        const width = skinGenLetterWidths[`GEN_TEXT_${letter}`];\n        const selectedWidth =\n          skinGenLetterWidths[`GEN_TEXT_SELECTED_${letter}`];\n        cssRules.push(\n          `${CSS_PREFIX} .gen-text-${letter.toLowerCase()} {width: ${width}px;}`\n        );\n        cssRules.push(\n          `${CSS_PREFIX} .selected .gen-text-${letter.toLowerCase()} {width: ${selectedWidth}px;}`\n        );\n      });\n    }\n\n    Object.entries(cursorSelectors).forEach(([cursorName, cursorSelector]) => {\n      const cursor = skinCursors[cursorName];\n      if (cursor == null) {\n        return;\n      }\n      const cursorRules = cursorSelector\n        .map(normalizeCursorSelector)\n        .map((selector) => {\n          switch (cursor.type) {\n            case \"cur\":\n              return `${selector} {cursor: url(${cursor.url}), auto}`;\n            case \"ani\": {\n              try {\n                return convertAniBinaryToCSS(selector, cursor.aniData);\n              } catch (e) {\n                console.error(e);\n                return null;\n              }\n            }\n          }\n        })\n        .filter(Boolean);\n      cssRules.push(...cursorRules);\n    });\n\n    if (numExIsUsed(skinImages)) {\n      // This alternate number file requires that the minus sign be\n      // formatted differently.\n      cssRules.push(\n        `${CSS_PREFIX} .webamp-status #time #minus-sign { top: 0px; left: -1px; width: 9px; height: 13px; }`\n      );\n    }\n\n    for (const [regionName, polygons] of Object.entries(skinRegion)) {\n      if (polygons) {\n        const matcher = mapRegionNamesToMatcher[regionName];\n        const id = mapRegionNamesToIds[regionName];\n        cssRules.push(`${CSS_PREFIX} ${matcher} { clip-path: url(#${id}); }`);\n      }\n    }\n\n    return cssRules.join(\"\\n\");\n  }\n);\n\nconst getClipPaths = createSelector(Selectors.getSkinRegion, (skinRegion) => {\n  const clipPaths: { [id: string]: string[] } = {};\n  for (const [regionName, polygons] of Object.entries(skinRegion)) {\n    if (polygons) {\n      const id = mapRegionNamesToIds[regionName];\n      clipPaths[id] = polygons;\n    }\n  }\n  return clipPaths;\n});\n\nexport default function Skin() {\n  const cssRules = useTypedSelector(getCssRules);\n  const clipPaths = useTypedSelector(getClipPaths);\n  if (cssRules == null) {\n    return null;\n  }\n  return (\n    <>\n      <Css id=\"webamp-skin\">{cssRules}</Css>\n      <ClipPaths>{clipPaths}</ClipPaths>\n    </>\n  );\n}\n","import {\n  useLayoutEffect,\n  useEffect,\n  useState,\n  useCallback,\n  StrictMode,\n} from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { FilePicker } from \"../types\";\nimport { WINDOWS } from \"../constants\";\nimport * as Selectors from \"../selectors\";\nimport * as Actions from \"../actionCreators\";\nimport * as Utils from \"../utils\";\nimport MilkdropWindow from \"../components/MilkdropWindow\";\nimport ContextMenuWrapper from \"./ContextMenuWrapper\";\nimport MainContextMenu from \"./MainWindow/MainContextMenu\";\nimport WindowManager from \"./WindowManager\";\nimport MainWindow from \"./MainWindow\";\nimport PlaylistWindow from \"./PlaylistWindow\";\nimport EqualizerWindow from \"./EqualizerWindow\";\nimport Skin from \"./Skin\";\n\nimport Media, { IMedia } from \"../media\";\nimport { useTypedSelector, useActionCreator } from \"../hooks\";\nimport Css from \"./Css\";\n\n// @ts-ignore\nimport cssText from \"../../css/webamp.css?inline\";\n\ninterface Props {\n  filePickers: FilePicker[];\n  media: IMedia;\n  parentDomNode: HTMLElement;\n  onMount?: () => void;\n}\n\n/**\n * Constructs the windows to render\n */\nexport default function App({\n  media,\n  filePickers,\n  onMount,\n  parentDomNode,\n}: Props) {\n  const closed = useTypedSelector(Selectors.getClosed);\n  const genWindowsInfo = useTypedSelector(Selectors.getGenWindows);\n  const zIndex = useTypedSelector(Selectors.getZIndex);\n\n  const browserWindowSizeChanged = useActionCreator(\n    Actions.browserWindowSizeChanged\n  );\n  const setFocusedWindow = useActionCreator(Actions.setFocusedWindow);\n\n  const [webampNode] = useState(() => {\n    const node = document.createElement(\"div\");\n    node.id = \"webamp\";\n    // @ts-ignore I think I'm supposed to set this with setAttribute, but I can't confirm.\n    node.role = \"application\";\n    return node;\n  });\n\n  useLayoutEffect(() => {\n    webampNode.style.zIndex = String(zIndex);\n  }, [webampNode, zIndex]);\n\n  useLayoutEffect(() => {\n    parentDomNode.appendChild(webampNode);\n    return () => {\n      parentDomNode.removeChild(webampNode);\n    };\n  }, [webampNode, parentDomNode]);\n\n  useEffect(() => {\n    const handleWindowResize = () => {\n      if (webampNode == null) {\n        return;\n      }\n      // It's a bit tricky to measure the \"natural\" size of the browser window.\n      // Specifically we want to know how large the window would be without our\n      // own Webamp windows influencing it. To achieve this, we temporarily make\n      // our container `overflow: hidden;`. We then make our container full\n      // screen by setting the bottom/right properties to zero. This second part\n      // allows our Webamp windows to stay visible during the resize. After we\n      // measure, we set the style back so that we don't end up interfering with\n      // click events outside of our Webamp windows.\n      webampNode.style.right = \"0\";\n      webampNode.style.bottom = \"0\";\n      webampNode.style.overflow = \"hidden\";\n      browserWindowSizeChanged(Utils.getWindowSize());\n      webampNode.style.right = \"auto\";\n      webampNode.style.bottom = \"auto\";\n      webampNode.style.overflow = \"visible\";\n    };\n\n    handleWindowResize();\n\n    window.addEventListener(\"resize\", handleWindowResize);\n\n    return () => {\n      window.removeEventListener(\"resize\", handleWindowResize);\n    };\n  }, [browserWindowSizeChanged, webampNode]);\n\n  useEffect(() => {\n    if (onMount != null) {\n      onMount();\n    }\n  }, [onMount]);\n\n  const renderWindows = useCallback(() => {\n    return Utils.objectMap(genWindowsInfo, (w, id) => {\n      if (!w.open) {\n        return null;\n      }\n      switch (id) {\n        case WINDOWS.MAIN:\n          return (\n            <MainWindow\n              analyser={media.getAnalyser()}\n              filePickers={filePickers}\n            />\n          );\n        case WINDOWS.EQUALIZER:\n          return <EqualizerWindow />;\n        case WINDOWS.PLAYLIST:\n          return <PlaylistWindow analyser={media.getAnalyser()} />;\n        case WINDOWS.MILKDROP:\n          return <MilkdropWindow analyser={media.getAnalyser()} />;\n        default:\n          throw new Error(`Tried to render an unknown window: ${id}`);\n      }\n    });\n  }, [media, filePickers, genWindowsInfo]);\n\n  const handleBlur = (e: React.FocusEvent<HTMLElement>) => {\n    if (!e.currentTarget.contains(e.relatedTarget as Element)) {\n      setFocusedWindow(null);\n    }\n  };\n\n  if (closed) {\n    return null;\n  }\n\n  return ReactDOM.createPortal(\n    <StrictMode>\n      <Css>{cssText}</Css>\n      <div onBlur={handleBlur}>\n        <Skin />\n        <ContextMenuWrapper\n          renderContents={() => <MainContextMenu filePickers={filePickers} />}\n        >\n          <WindowManager windows={renderWindows()} />\n        </ContextMenuWrapper>\n      </div>\n    </StrictMode>,\n    webampNode\n  );\n}\n","import {\n  play,\n  pause,\n  stop,\n  adjustVolume,\n  toggleRepeat,\n  toggleShuffle,\n  openMediaFileDialog,\n  seekForward,\n  seekBackward,\n  reverseList,\n  nextN,\n  next,\n  previous,\n  toggleDoubleSizeMode,\n  toggleWindow,\n} from \"./actionCreators\";\n\nimport { Dispatch } from \"./types\";\n\nconst IGNORE_EVENTS_FROM_TAGS = new Set([\"input\", \"textarea\", \"select\"]);\n\nexport function bindHotkeys(dispatch: Dispatch): () => void {\n  let currentPos: number = 0;\n  const trigger = [\n    78, // N\n    85, // U\n    76, // L\n    76, // L\n    83, // S\n    79, // O\n    70, // F\n    84, // T\n  ];\n\n  const listener = (e: KeyboardEvent) => {\n    if (\n      e.target instanceof Element &&\n      IGNORE_EVENTS_FROM_TAGS.has(e.target.tagName.toLowerCase())\n    ) {\n      return;\n    }\n    if (e.ctrlKey) {\n      switch (e.keyCode) {\n        case 68: // CTRL+D\n          dispatch(toggleDoubleSizeMode());\n          e.preventDefault(); // Supress the \"Bookmark\" action on windows.\n          break;\n        case 76: // CTRL+L FIXME\n          break;\n        case 82: // CTRL+R\n          dispatch(reverseList());\n          break;\n        case 84: // CTRL+T\n          dispatch({ type: \"TOGGLE_TIME_MODE\" });\n          break;\n      }\n    } else if (e.altKey) {\n      switch (e.keyCode) {\n        case 87: // ALT+W\n          dispatch(toggleWindow(\"main\"));\n          break;\n        case 69: // ALT+E\n          dispatch(toggleWindow(\"playlist\"));\n          break;\n        case 71: // ALT+G\n          dispatch(toggleWindow(\"equalizer\"));\n          break;\n      }\n    } else {\n      switch (e.keyCode) {\n        case 37: // left arrow\n          dispatch(seekBackward(5));\n          break;\n        case 38: // up arrow\n          dispatch(adjustVolume(1));\n          break;\n        case 39: // right arrow\n          dispatch(seekForward(5));\n          break;\n        case 40: // down arrow\n          dispatch(adjustVolume(-1));\n          break;\n        case 66: // B\n          dispatch(next());\n          break;\n        case 67: // C\n          dispatch(pause());\n          break;\n        case 76: // L\n          dispatch(openMediaFileDialog());\n          break;\n        case 82: // R\n          dispatch(toggleRepeat());\n          break;\n        case 83: // S\n          dispatch(toggleShuffle());\n          break;\n        case 86: // V\n          dispatch(stop());\n          break;\n        case 88: // X\n          dispatch(play());\n          break;\n        case 90: // Z\n          dispatch(previous());\n          break;\n        case 96: // numpad 0\n          dispatch(openMediaFileDialog());\n          break;\n        case 97: // numpad 1\n          dispatch(nextN(-10));\n          break;\n        case 98: // numpad 2\n          dispatch(adjustVolume(-1));\n          break;\n        case 99: // numpad 3\n          dispatch(nextN(10));\n          break;\n        case 100: // numpad 4\n          dispatch(previous());\n          break;\n        case 101: // numpad 5\n          dispatch(play());\n          break;\n        case 102: // numpad 6\n          dispatch(next());\n          break;\n        case 103: // numpad 7\n          dispatch(seekBackward(5));\n          break;\n        case 104: // numpad 8\n          dispatch(adjustVolume(1));\n          break;\n        case 105: // numpad 9\n          dispatch(seekForward(5));\n          break;\n      }\n    }\n\n    // Easter Egg\n\n    // Ignore escape. Usually this gets swallowed by the browser, but not always.\n    if (e.keyCode !== 27) {\n      currentPos = e.keyCode === trigger[currentPos] ? currentPos + 1 : 0;\n      if (currentPos === trigger.length) {\n        dispatch({ type: \"TOGGLE_LLAMA_MODE\" });\n      }\n    }\n  };\n  document.addEventListener(\"keydown\", listener);\n\n  return () => {\n    document.removeEventListener(\"keydown\", listener);\n  };\n}\n","export default class Emitter {\n  _listeners: { [event: string]: Array<(...args: any[]) => void> };\n\n  constructor() {\n    this._listeners = {};\n  }\n\n  on(event: string, callback: (...args: any[]) => void) {\n    const eventListeners = this._listeners[event] || [];\n    eventListeners.push(callback);\n    this._listeners[event] = eventListeners;\n    const unsubscribe = () => {\n      this._listeners[event] = eventListeners.filter((cb) => cb !== callback);\n    };\n    return unsubscribe;\n  }\n\n  trigger(event: string, ...args: any[]) {\n    const callbacks = this._listeners[event];\n    if (callbacks) {\n      callbacks.forEach((cb) => cb(...args));\n    }\n  }\n\n  dispose() {\n    this._listeners = {};\n  }\n}\n","type Teardown = (() => void) | { dispose: () => void };\n\nexport default class Disposable {\n  _teardowns: Teardown[] = [];\n  disposed: boolean;\n\n  constructor() {\n    this.disposed = false;\n  }\n\n  add(...teardowns: Teardown[]): void {\n    if (this.disposed) {\n      throw new Error(\n        \"Attempted to add a new teardown to a disposed disposable.\"\n      );\n    }\n    this._teardowns.push(...teardowns);\n  }\n\n  dispose() {\n    if (this.disposed) {\n      throw new Error(\n        \"Attempted to dispose disposable which is already disposed.\"\n      );\n    }\n    this._teardowns.forEach((teardown) => {\n      if (typeof teardown === \"function\") {\n        teardown();\n      } else if (typeof teardown.dispose === \"function\") {\n        teardown.dispose();\n      }\n    });\n    this._teardowns = [];\n    this.disposed = true;\n  }\n}\n","// The Web Audio API does not offer an easy way to make a stereo balance\n// control. This is an attempt to fill that void, using an API similar to\n// [StereoPannerNode](https://developer.mozilla.org/en-US/docs/Web/API/StereoPannerNode)\nexport default function StereoBalanceNode(context, options = { balance: 0 }) {\n  let balance = 0;\n\n  // ChannelSplitterNode cannot be told to use a `channelInterperatation` of\n  // \"speakers\". This means that if we get a mono file, we will end up only\n  // playing in the left speaker. So instead we use this dummy gain node to\n  // convert whatever source we get (stereo, mono, or n channels) into a stereo\n  // signal.\n  // Idea credit: https://github.com/WebAudio/web-audio-api/issues/975#issue-177242377\n  const upMixer = context.createGain();\n  upMixer.channelCount = 2;\n  upMixer.channelCountMode = \"explicit\";\n  upMixer.channelInterpretation = \"speakers\";\n\n  const splitter = context.createChannelSplitter(2);\n\n  // Create the gains for left and right\n  const leftGain = context.createGain();\n  const rightGain = context.createGain();\n\n  const merger = context.createChannelMerger(2);\n\n  upMixer.connect(splitter);\n\n  splitter.connect(leftGain, 0);\n  splitter.connect(rightGain, 1);\n\n  leftGain.connect(merger, 0, 0);\n  rightGain.connect(merger, 0, 1);\n\n  // -1 (left) to 1 (right)\n  function set(rawValue) {\n    const value = Number(rawValue);\n    leftGain.gain.value = value > 0 ? 1 - value : 1;\n    rightGain.gain.value = value > 0 ? 1 : 1 + value;\n    balance = value;\n  }\n\n  function get() {\n    return balance;\n  }\n\n  // Create our own version of an [AudioParam](https://developer.mozilla.org/en-US/docs/Web/API/AudioParam).\n  // We don't currently support any of the \"over time\" methods, but maybe some day\n  // we'll want to.\n  const audioParam = {};\n  Object.defineProperties(audioParam, {\n    value: { get, set, enumerable: true, configurable: true },\n  });\n\n  // The way the `.connect` API works, we can't actually construct our own\n  // AudioNode. Instead we have to take an existing node and monkey patch it.\n  Object.defineProperties(upMixer, {\n    balance: {\n      value: audioParam,\n      enumerable: true,\n      writable: false,\n      configurable: true,\n    },\n    connect: {\n      value: AudioNode.prototype.connect.bind(merger),\n      enumerable: false,\n      writable: false,\n      configurable: true,\n    },\n    disconnect: {\n      value: AudioNode.prototype.disconnect.bind(merger),\n      enumerable: false,\n      writable: false,\n      configurable: true,\n    },\n  });\n\n  if (balance !== options.balance) {\n    set(options.balance);\n  }\n\n  return upMixer;\n}\n","import Emitter from \"../emitter\";\nimport Disposable from \"../Disposable\";\nimport { clamp } from \"../utils\";\nimport { MEDIA_STATUS } from \"../constants\";\nimport { MediaStatus } from \"../types\";\n\nexport default class ElementSource {\n  _emitter: Emitter;\n  _context: AudioContext;\n  _source: AudioNode;\n  _destination: AudioNode;\n  _audio: HTMLAudioElement;\n  _stalled: boolean;\n  _status: MediaStatus;\n  _disposable: Disposable;\n\n  on(eventType: string, cb: (...args: any[]) => void) {\n    return this._emitter.on(eventType, cb);\n  }\n\n  constructor(context: AudioContext, destination: AudioNode) {\n    this._emitter = new Emitter();\n    this._context = context;\n    this._destination = destination;\n    this._audio = document.createElement(\"audio\");\n    this._audio.crossOrigin = \"anonymous\";\n    this._stalled = false;\n    this._status = MEDIA_STATUS.STOPPED;\n    this._disposable = new Disposable();\n\n    // Create event handlers and register cleanup\n    const suspendHandler = () => {\n      this._setStalled(true);\n    };\n    this._audio.addEventListener(\"suspend\", suspendHandler);\n    this._disposable.add(() =>\n      this._audio.removeEventListener(\"suspend\", suspendHandler)\n    );\n\n    const durationChangeHandler = () => {\n      this._emitter.trigger(\"loaded\");\n      this._setStalled(false);\n    };\n    this._audio.addEventListener(\"durationchange\", durationChangeHandler);\n    this._disposable.add(() =>\n      this._audio.removeEventListener(\"durationchange\", durationChangeHandler)\n    );\n\n    const endedHandler = () => {\n      this._emitter.trigger(\"ended\");\n      this._setStatus(MEDIA_STATUS.STOPPED);\n    };\n    this._audio.addEventListener(\"ended\", endedHandler);\n    this._disposable.add(() =>\n      this._audio.removeEventListener(\"ended\", endedHandler)\n    );\n\n    const timeUpdateHandler = () => {\n      this._emitter.trigger(\"positionChange\");\n    };\n    this._audio.addEventListener(\"timeupdate\", timeUpdateHandler);\n    this._disposable.add(() =>\n      this._audio.removeEventListener(\"timeupdate\", timeUpdateHandler)\n    );\n\n    const errorHandler = (e: Event) => {\n      switch (this._audio.error!.code) {\n        case 1:\n          // The fetching of the associated resource was aborted by the user's request.\n          console.error(\"MEDIA_ERR_ABORTED\", e);\n          break;\n        case 2:\n          console.error(\"MEDIA_ERR_NETWORK\", e);\n          // Some kind of network error occurred which prevented the media from being successfully fetched, despite having previously been available.\n          break;\n        case 3:\n          // Despite having previously been determined to be usable, an error occurred while trying to decode the media resource, resulting in an error.\n\n          // There is a bug in Chrome where improperly terminated mp3s can cuase this error.\n          // https://bugs.chromium.org/p/chromium/issues/detail?id=794782\n          // Related: Commit f44e826c83c74fef04c2c448af30cfb353b28312\n          console.error(\"PIPELINE_ERROR_DECODE\", e);\n          break;\n        case 4:\n          console.error(\"MEDIA_ERR_SRC_NOT_SUPPORTED\", e);\n          // The associated resource or media provider object (such as a MediaStream) has been found to be unsuitable.\n          break;\n      }\n      // Rather than just geting stuck in this error state, we can just pretend this is\n      // the end of the track.\n\n      this._emitter.trigger(\"ended\");\n      this._setStatus(MEDIA_STATUS.STOPPED);\n    };\n    this._audio.addEventListener(\"error\", errorHandler);\n    this._disposable.add(() =>\n      this._audio.removeEventListener(\"error\", errorHandler)\n    );\n\n    this._source = this._context.createMediaElementSource(this._audio);\n    this._source.connect(destination);\n  }\n\n  _setStalled(stalled: boolean) {\n    this._stalled = stalled;\n    this._emitter.trigger(\"stallChanged\");\n  }\n\n  disconnect() {\n    this._source.disconnect();\n  }\n\n  // Async for now, for compatibility with BufferAudioSource\n  // TODO: This does not need to be async\n  async loadUrl(url: string) {\n    this._audio.src = url;\n  }\n\n  async play() {\n    if (this._status !== MEDIA_STATUS.PAUSED) {\n      this.seekToTime(0);\n    }\n    try {\n      await this._audio.play();\n      // TODO #race\n    } catch (err) {\n      //\n    }\n    this._setStatus(MEDIA_STATUS.PLAYING);\n  }\n\n  pause() {\n    this._audio.pause();\n    this._setStatus(MEDIA_STATUS.PAUSED);\n  }\n\n  stop() {\n    this._audio.pause();\n    this._audio.currentTime = 0;\n    this._setStatus(MEDIA_STATUS.STOPPED);\n  }\n\n  seekToTime(time: number) {\n    /* TODO: We could check if this is actually seekable:\n    const { seekable } = this._audio;\n    for (let i = 0; i < seekable.length; i++) {\n      console.log(\"start\", seekable.start(i), \"end\", seekable.end(i));\n    }\n    */\n    this._audio.currentTime = clamp(time, 0, this.getDuration());\n    this._emitter.trigger(\"positionChange\");\n  }\n\n  getStalled() {\n    return this._stalled;\n  }\n\n  getStatus() {\n    return this._status;\n  }\n\n  getDuration() {\n    const { duration } = this._audio;\n    // Safari on iOS currently has a strange behavior where it reports\n    // the duration as infinity if an Accept-Ranges header is not returned.\n    // For now, 0 is better even though it's still wrong.\n    return isNaN(duration) || duration === Infinity ? 0 : duration;\n  }\n\n  getTimeElapsed() {\n    return this._audio.currentTime;\n  }\n\n  _setStatus(status: MediaStatus) {\n    this._status = status;\n    this._emitter.trigger(\"statusChange\");\n  }\n\n  dispose() {\n    // Clean up all event listeners via disposable\n    this._disposable.dispose();\n\n    this.stop();\n    this._emitter.dispose();\n  }\n}\n","/* Emulate the native <audio> element with Web Audio API */\nimport { BANDS, MEDIA_STATUS } from \"../constants\";\nimport { Band } from \"../types\";\nimport Emitter from \"../emitter\";\nimport Disposable from \"../Disposable\";\nimport StereoBalanceNode from \"./StereoBalanceNode\";\nimport ElementSource from \"./elementSource\";\n\ninterface StereoBalanceNodeType extends AudioNode {\n  constructor(context: AudioContext): StereoBalanceNodeType;\n  balance: {\n    value: number;\n  };\n}\n\nexport interface IMedia {\n  /**\n   * Set the volume from 0 to 100\n   */\n  setVolume(volume: number): void;\n  /**\n   * Set the stereo balance from -100 to 100\n   */\n  setBalance(balance: number): void;\n  /**\n   * Set the preamp value from 0 to 100\n   * The input value represents -12db to 12db, where 50 is 0db (no change)\n   * Equation used is: 10^((dB)/20) = x, where x is the gain value\n   */\n  setPreamp(value: number): void;\n  /**\n   * Register an event listener\n   */\n  on(event: string, callback: (...args: any[]) => void): void;\n  /**\n   * Get the current playback time in seconds\n   */\n  timeElapsed(): number;\n  /**\n   * Get the total duration of the current track in seconds\n   */\n  duration(): number;\n  /**\n   * Start or resume playback\n   */\n  play(): Promise<void>;\n  /**\n   * Pause playback\n   */\n  pause(): void;\n  /**\n   * Stop playback and reset position to beginning\n   */\n  stop(): void;\n  /**\n   * Seek to a specific position as a percentage of the total duration\n   */\n  seekToPercentComplete(percent: number): void;\n  /**\n   * Load a track from a URL and optionally start playing it\n   * Used only for the initial load, since it must have a CORS header\n   */\n  loadFromUrl(url: string, autoPlay: boolean): Promise<void>;\n  /**\n   * Set the gain value for a specific EQ band\n   */\n  setEqBand(band: Band, value: number): void;\n  /**\n   * Disable the equalizer by bypassing all EQ bands\n   */\n  disableEq(): void;\n  /**\n   * Enable the equalizer processing\n   */\n  enableEq(): void;\n  /**\n   * Get the analyser node for visualizer data\n   */\n  getAnalyser(): AnalyserNode;\n  /**\n   * Clean up resources and dispose of the media instance\n   */\n  dispose(): void;\n}\n\n// A constructable class that implements the IMedia interface.\nexport interface IMediaClass {\n  new (): IMedia;\n}\n\n// NOTE: While this is not technically a public API, https://winampify.io/ is\n// replacing this class with a custom version. Breaking changes to this API\n// surface should be communicated to Remi.\nexport default class Media implements IMedia {\n  _emitter: Emitter;\n  _context: AudioContext;\n  _balance: StereoBalanceNodeType;\n  _staticSource: GainNode;\n  _preamp: GainNode;\n  _analyser: AnalyserNode;\n  _gainNode: GainNode;\n  _source: ElementSource;\n  _bands: { [band: number]: BiquadFilterNode };\n  _disposable: Disposable;\n\n  constructor() {\n    this._emitter = new Emitter();\n    this._disposable = new Disposable();\n    // @ts-ignore Typescript does not know about webkitAudioContext\n    this._context = new (window.AudioContext || window.webkitAudioContext)();\n    // Fix for iOS and Chrome (Canary) which require that the context be created\n    // or resumed by a user interaction.\n    // https://developers.google.com/web/updates/2017/09/autoplay-policy-changes\n    // https://gist.github.com/laziel/7aefabe99ee57b16081c\n    // Via: https://stackoverflow.com/a/43395068/1263117\n    if (this._context.state === \"suspended\") {\n      const resumeHandler = async () => {\n        await this._context.resume();\n\n        if (this._context.state === \"running\") {\n          document.body.removeEventListener(\"touchend\", resumeHandler, false);\n          document.body.removeEventListener(\"click\", resumeHandler, false);\n          document.body.removeEventListener(\"keydown\", resumeHandler, false);\n        }\n      };\n\n      document.body.addEventListener(\"touchend\", resumeHandler, false);\n      document.body.addEventListener(\"click\", resumeHandler, false);\n      document.body.addEventListener(\"keydown\", resumeHandler, false);\n\n      // Add cleanup for resume handlers\n      this._disposable.add(() => {\n        document.body.removeEventListener(\"touchend\", resumeHandler, false);\n        document.body.removeEventListener(\"click\", resumeHandler, false);\n        document.body.removeEventListener(\"keydown\", resumeHandler, false);\n      });\n    }\n\n    // TODO: Maybe we can get rid of this now that we are using AudioAbstraction?\n    this._staticSource = this._context.createGain(); // Just a noop node\n\n    // @ts-ignore The way this class has to be monkey patched, makes it very hard to type.\n    this._balance = new StereoBalanceNode(this._context);\n\n    // Create the preamp node\n    this._preamp = this._context.createGain();\n\n    // Create the analyser node for the visualizer\n    this._analyser = this._context.createAnalyser();\n    this._analyser.fftSize = 2048;\n    // don't smooth audio analysis\n    this._analyser.smoothingTimeConstant = 0.0;\n\n    // Create the gain node for the volume control\n    this._gainNode = this._context.createGain();\n\n    // Connect all the nodes in the correct way\n    // (Note, source is created and connected later)\n    //\n    //                <source>\n    //                    |\n    //                    |_____________\n    //                    |             \\\n    //                <preamp>          |\n    //                    |             | <-- Optional bypass\n    //           [...biquadFilters]     |\n    //                    |_____________/\n    //                    |\n    //              <staticSource>\n    //                    |\n    //                <balance>\n    //                    |\n    //                    |\\\n    //                    | <analyser>\n    //                  <gain>\n    //                    |\n    //              <destination>\n\n    this._source = new ElementSource(this._context, this._staticSource);\n\n    this._source.on(\"positionChange\", () => {\n      this._emitter.trigger(\"timeupdate\");\n    });\n    this._source.on(\"ended\", () => {\n      this._emitter.trigger(\"ended\");\n    });\n    this._source.on(\"statusChange\", () => {\n      switch (this._source.getStatus()) {\n        case MEDIA_STATUS.PLAYING:\n          this._emitter.trigger(\"playing\");\n          break;\n      }\n      this._emitter.trigger(\"timeupdate\");\n    });\n    this._source.on(\"loaded\", () => {\n      this._emitter.trigger(\"fileLoaded\");\n    });\n\n    this._staticSource.connect(this._preamp);\n\n    let output = this._preamp;\n    this._bands = {};\n\n    BANDS.forEach((band, i) => {\n      const filter = this._context.createBiquadFilter();\n\n      this._bands[band] = filter;\n\n      if (i === 0) {\n        // The first filter, includes all lower frequencies\n        filter.type = \"lowshelf\";\n      } else if (i === BANDS.length - 1) {\n        // The last filter, includes all higher frequencies\n        filter.type = \"highshelf\";\n      } else {\n        filter.type = \"peaking\";\n      }\n      filter.frequency.value = band;\n      filter.gain.value = 0;\n\n      output.connect(filter);\n      output = filter;\n    });\n\n    output.connect(this._balance);\n\n    this._balance.connect(this._gainNode);\n    this._balance.connect(this._analyser);\n\n    this._gainNode.connect(this._context.destination);\n  }\n\n  getAnalyser() {\n    return this._analyser;\n  }\n\n  /* Properties */\n  duration() {\n    return this._source.getDuration();\n  }\n\n  timeElapsed() {\n    return this._source.getTimeElapsed();\n  }\n\n  timeRemaining() {\n    return this.duration() - this.timeElapsed();\n  }\n\n  percentComplete() {\n    return (this.timeElapsed() / this.duration()) * 100;\n  }\n\n  /* Actions */\n  async play() {\n    await this._source.play();\n  }\n\n  pause() {\n    this._source.pause();\n  }\n\n  stop() {\n    this._source.stop();\n  }\n\n  /* Actions with arguments */\n  seekToPercentComplete(percent: number) {\n    const seekTime = this.duration() * (percent / 100);\n    this.seekToTime(seekTime);\n  }\n\n  // From 0-1\n  setVolume(volume: number) {\n    this._gainNode.gain.value = volume / 100;\n  }\n\n  // from 0 to 100\n  // The input value here is 0-100 which is kinda wrong, since it represents -12db to 12db.\n  // For now, 50 is 0db (no change).\n  // Equation used is: 10^((dB)/20) = x, where x (preamp.gain.value) is passed on to gainnode for boosting or attenuation.\n  setPreamp(value: number) {\n    const db = (value / 100) * 24 - 12;\n    this._preamp.gain.value = Math.pow(10, db / 20);\n  }\n\n  // From -100 to 100\n  setBalance(balance: number) {\n    // Yo Dawg.\n    this._balance.balance.value = balance / 100;\n  }\n\n  setEqBand(band: Band, value: number) {\n    const db = (value / 100) * 24 - 12;\n    this._bands[band].gain.value = db;\n  }\n\n  disableEq() {\n    this._staticSource.disconnect();\n    this._staticSource.connect(this._balance);\n  }\n\n  enableEq() {\n    this._staticSource.disconnect();\n    this._staticSource.connect(this._preamp);\n  }\n\n  /* Listeners */\n  on(event: string, callback: (...args: any[]) => void) {\n    this._emitter.on(event, callback);\n  }\n\n  seekToTime(time: number) {\n    this._source.seekToTime(time);\n  }\n\n  // Used only for the initial load, since it must have a CORS header\n  async loadFromUrl(url: string, autoPlay: boolean) {\n    this._emitter.trigger(\"waiting\");\n    await this._source.loadUrl(url);\n    // TODO #race\n    this._emitter.trigger(\"stopWaiting\");\n    if (autoPlay) {\n      this.play();\n    }\n  }\n\n  dispose() {\n    // Clean up all event listeners via disposable\n    this._disposable.dispose();\n\n    this._source.dispose();\n    this._emitter.dispose();\n  }\n}\n","import * as React from \"react\";\nimport type JSZip from \"jszip\";\nimport ReactDOM from \"react-dom/client\";\nimport { Provider } from \"react-redux\";\n\nimport {\n  Store,\n  AppState,\n  Track,\n  LoadedURLTrack,\n  Middleware,\n  ButterchurnOptions,\n  PartialState,\n  Options,\n  MediaStatus,\n  PlaylistTrack,\n  PlayerMediaStatus,\n  IMetadataApi,\n} from \"./types\";\nimport getStore from \"./store\";\nimport App from \"./components/App\";\nimport { bindHotkeys } from \"./hotkeys\";\nimport Media, { IMedia, IMediaClass } from \"./media\";\nimport * as Selectors from \"./selectors\";\nimport * as Actions from \"./actionCreators\";\n\nimport { LOAD_STYLE } from \"./constants\";\nimport * as FileUtils from \"./fileUtils\";\n\nimport Emitter from \"./emitter\";\n\nimport { SerializedStateV1 } from \"./serializedStates/v1Types\";\nimport Disposable from \"./Disposable\";\nimport enableMediaSession from \"./mediaSession.js\";\n\nexport interface PrivateOptions {\n  __initialState?: PartialState;\n  __customMiddlewares?: Middleware[];\n  __butterchurnOptions?: ButterchurnOptions;\n  // This is used by https://winampify.io/ to proxy through to Spotify's API.\n  __customMediaClass?: IMediaClass;\n}\n\nexport interface InjectableDependencies {\n  requireJSZip: () => Promise<JSZip>;\n  requireMusicMetadata: () => Promise<IMetadataApi>;\n}\n\nclass Webamp {\n  static VERSION = \"2.2.0\";\n  _actionEmitter: Emitter;\n  _root: ReactDOM.Root | null;\n  _disposable: Disposable;\n  options: Options & PrivateOptions & InjectableDependencies; // TODO: Make this _private\n  media: IMedia; // TODO: Make this _private\n  store: Store; // TODO: Make this _private\n\n  /**\n   * Returns a true if the current browser supports the features that Webamp depends upon.\n   *\n   * It is recommended to check this before you attempt to instantiate an instance of Winamp.\n   */\n  static browserIsSupported(): boolean {\n    const supportsAudioApi = !!(\n      window.AudioContext ||\n      // @ts-ignore\n      window.webkitAudioContext\n    );\n    const supportsCanvas = !!window.document.createElement(\"canvas\").getContext;\n    const supportsPromises = typeof Promise !== \"undefined\";\n    return supportsAudioApi && supportsCanvas && supportsPromises;\n  }\n\n  constructor(options: Options & PrivateOptions & InjectableDependencies) {\n    this._root = null;\n    this._disposable = new Disposable();\n    this._actionEmitter = new Emitter();\n    this.options = options;\n    const {\n      initialTracks,\n      initialSkin,\n      availableSkins,\n      enableHotkeys = false,\n      zIndex,\n      requireJSZip,\n      requireMusicMetadata,\n      handleTrackDropEvent,\n      handleAddUrlEvent,\n      handleLoadListEvent,\n      handleSaveListEvent,\n      enableDoubleSizeMode,\n      __butterchurnOptions,\n      __customMediaClass,\n    } = this.options;\n\n    // TODO: Make this much cleaner.\n    let convertPreset = null;\n    if (__butterchurnOptions != null) {\n      const { importConvertPreset, presetConverterEndpoint } =\n        __butterchurnOptions;\n\n      if (importConvertPreset != null && presetConverterEndpoint != null) {\n        convertPreset = async (file: File): Promise<Object> => {\n          const { convertPreset: convert } = await importConvertPreset();\n          return convert(\n            await FileUtils.genStringFromFileReference(file),\n            presetConverterEndpoint\n          );\n        };\n      }\n    }\n\n    // TODO: Validate required options.\n\n    this.media = new (__customMediaClass || Media)();\n    this.store = getStore(\n      this.media,\n      this._actionEmitter,\n      this.options.__customMiddlewares,\n      this.options.__initialState,\n      {\n        requireJSZip,\n        requireMusicMetadata,\n        convertPreset,\n        // @ts-ignore Typescript is drunk.\n        handleTrackDropEvent,\n        handleAddUrlEvent,\n        handleLoadListEvent,\n        handleSaveListEvent,\n      }\n    ) as Store;\n\n    if (options.enableMediaSession) {\n      enableMediaSession(this);\n    }\n\n    if (enableDoubleSizeMode) {\n      this.store.dispatch(Actions.toggleDoubleSizeMode());\n    }\n\n    if (navigator.onLine) {\n      this.store.dispatch({ type: \"NETWORK_CONNECTED\" });\n    } else {\n      this.store.dispatch({ type: \"NETWORK_DISCONNECTED\" });\n    }\n\n    if (zIndex != null) {\n      this.store.dispatch({ type: \"SET_Z_INDEX\", zIndex });\n    }\n\n    if (options.__butterchurnOptions) {\n      this.store.dispatch({\n        type: \"ENABLE_MILKDROP\",\n        open: options.__butterchurnOptions.butterchurnOpen,\n      });\n      this.store.dispatch(\n        Actions.initializePresets(options.__butterchurnOptions)\n      );\n    }\n\n    const handleOnline = () =>\n      this.store.dispatch({ type: \"NETWORK_CONNECTED\" });\n    const handleOffline = () =>\n      this.store.dispatch({ type: \"NETWORK_DISCONNECTED\" });\n\n    window.addEventListener(\"online\", handleOnline);\n    window.addEventListener(\"offline\", handleOffline);\n\n    this._disposable.add(() => {\n      window.removeEventListener(\"online\", handleOnline);\n      window.removeEventListener(\"offline\", handleOffline);\n    });\n\n    if (initialSkin) {\n      this.store.dispatch(Actions.setSkinFromUrl(initialSkin.url));\n    } else {\n      // We are using the default skin.\n      this.store.dispatch({ type: \"LOADED\" });\n    }\n\n    if (initialTracks) {\n      this._bufferTracks(initialTracks);\n    }\n\n    // @ts-ignore\n    if (options.avaliableSkins != null) {\n      console.warn(\n        \"The misspelled option `avaliableSkins` is deprecated. Please use `availableSkins` instead.\"\n      );\n      // @ts-ignore\n      this.store.dispatch({\n        type: \"SET_AVAILABLE_SKINS\",\n        // @ts-ignore\n        skins: options.avaliableSkins,\n      });\n    } else if (availableSkins != null) {\n      this.store.dispatch({\n        type: \"SET_AVAILABLE_SKINS\",\n        skins: availableSkins,\n      });\n    }\n\n    this.store.dispatch(Actions.setWindowLayout(options.windowLayout));\n\n    if (enableHotkeys) {\n      this._disposable.add(bindHotkeys(this.store.dispatch));\n    }\n  }\n\n  /**\n   * Play the current track.\n   */\n  play(): void {\n    this.store.dispatch(Actions.play());\n  }\n\n  /**\n   * Pause the current track.\n   */\n  pause(): void {\n    this.store.dispatch(Actions.pause());\n  }\n\n  /**\n   * Stop the currently playing audio. Equivalent to pressing the \"stop\" button.\n   */\n  stop(): void {\n    this.store.dispatch(Actions.stop());\n  }\n\n  /**\n   * Set volume from 0 - 100.\n   */\n  setVolume(volume: number): void {\n    this.store.dispatch(Actions.setVolume(volume));\n  }\n\n  /**\n   * Seek backward n seconds in the current track.\n   */\n  seekBackward(seconds: number) {\n    this.store.dispatch(Actions.seekBackward(seconds));\n  }\n\n  /**\n   * Seek forward n seconds in the current track.\n   */\n  seekForward(seconds: number) {\n    this.store.dispatch(Actions.seekForward(seconds));\n  }\n\n  /**\n   * Seek to a given time within the current track.\n   */\n  seekToTime(seconds: number) {\n    this.store.dispatch(Actions.seekToTime(seconds));\n  }\n\n  /**\n   * Check if shuffle is enabled.\n   */\n  isShuffleEnabled(): boolean {\n    return Selectors.getShuffle(this.store.getState());\n  }\n\n  /**\n   * Toggle shuffle mode between enabled and disabled.\n   */\n  toggleShuffle(): void {\n    this.store.dispatch(Actions.toggleShuffle());\n  }\n\n  /**\n   * Check if repeat is enabled.\n   */\n  isRepeatEnabled(): boolean {\n    return Selectors.getRepeat(this.store.getState());\n  }\n\n  /**\n   * Toggle repeat mode between enabled and disabled.\n   */\n  toggleRepeat(): void {\n    this.store.dispatch(Actions.toggleRepeat());\n  }\n\n  /**\n   * Play the next track.\n   */\n  nextTrack(): void {\n    this.store.dispatch(Actions.next());\n  }\n\n  /**\n   * Play the previous track.\n   */\n  previousTrack(): void {\n    this.store.dispatch(Actions.previous());\n  }\n\n  /**\n   * Set the current track to a specific track in the playlist by zero-based index.\n   *\n   * Note: If Webamp is currently playing, the track will begin playing. If\n   * Webamp is not playing, the track will not start playing. You can use\n   * `webamp.pause()` before calling this method or `webamp.play()` after\n   * calling this method to control whether the track starts playing.\n   */\n  setCurrentTrack(index: number): void {\n    this.store.dispatch(Actions.playTrack(index));\n  }\n\n  /**\n   * Add an array of `Track`s to the end of the playlist.\n   */\n  appendTracks(tracks: Track[]): void {\n    const nextIndex = Selectors.getTrackCount(this.store.getState());\n    this.store.dispatch(\n      Actions.loadMediaFiles(tracks, LOAD_STYLE.NONE, nextIndex)\n    );\n  }\n\n  /**\n   * Replace the playlist with an array of `Track`s and begin playing the first track.\n   */\n  setTracksToPlay(tracks: Track[]): void {\n    this.store.dispatch(Actions.loadMediaFiles(tracks, LOAD_STYLE.PLAY));\n  }\n\n  /**\n   * Get the current playlist in order.\n   */\n  getPlaylistTracks(): PlaylistTrack[] {\n    return Selectors.getPlaylistTracks(this.store.getState());\n  }\n\n  /**\n   * Get the current \"playing\" status.\n   */\n  getMediaStatus(): MediaStatus {\n    return Selectors.getMediaStatus(this.store.getState());\n  }\n\n  /**\n   * Get the current \"playing\" status of the player. Similar to\n   * `getMediaStatus()`, but can differentiate between different reasons why the\n   * player might not be playing, such as \"ENDED\" when the end of the playlist\n   * has been reached or \"CLOSED\" when the player has been closed.\n   */\n  getPlayerMediaStatus(): PlayerMediaStatus {\n    return Selectors.getPlayerMediaStatus(this.store.getState());\n  }\n\n  /**\n   * A callback which will be called when Webamp is _about to_ close. Returns an\n   * \"unsubscribe\" function. The callback will be passed a `cancel` function\n   * which you can use to conditionally prevent Webamp from being closed.\n   *\n   * @returns An \"unsubscribe\" function. Useful if at some point in the future you want to stop listening to these events.\n   */\n  onWillClose(cb: (cancel: () => void) => void): () => void {\n    return this._actionEmitter.on(\"CLOSE_REQUESTED\", (action) => {\n      cb((action as any).cancel);\n    });\n  }\n\n  /**\n   * A callback which will be called when Webamp is closed.\n   *\n   * @returns An \"unsubscribe\" function. Useful if at some point in the future you want to stop listening to these events.\n   */\n  onClose(cb: () => void): () => void {\n    return this._actionEmitter.on(\"CLOSE_WINAMP\", cb);\n  }\n\n  /**\n   * Equivalent to selecting \"Close\" from Webamp's options menu. Once closed,\n   * you can open it again with `.reopen()`.\n   */\n  close(): void {\n    this.store.dispatch(Actions.close());\n  }\n\n  /**\n   * After `.close()`ing this instance, you can reopen it by calling this method.\n   */\n  reopen(): void {\n    this.store.dispatch(Actions.open());\n  }\n\n  /**\n   * A callback which will be called when a new track starts loading.\n   *\n   * This can happen on startup when the first track starts buffering, or when a\n   * subsequent track starts playing.  The callback will be called with an\n   * object `({url: 'https://example.com/track.mp3'})` containing the URL of the\n   * track.\n   *\n   * Note: If the user drags in a track, the URL may be an ObjectURL.\n   *\n   * @returns An \"unsubscribe\" function. Useful if at some point in the future\n   * you want to stop listening to these events.\n   */\n  onTrackDidChange(cb: (trackInfo: LoadedURLTrack | null) => void): () => void {\n    let previousTrackId: number | null = null;\n    const unsubscribe = this.store.subscribe(() => {\n      const state = this.store.getState();\n      const trackId = Selectors.getCurrentlyPlayingTrackIdIfLoaded(state);\n      if (trackId === previousTrackId) {\n        return;\n      }\n      previousTrackId = trackId;\n      cb(trackId == null ? null : Selectors.getCurrentTrackInfo(state));\n    });\n\n    // Register cleanup with disposable\n    this._disposable.add(unsubscribe);\n\n    return unsubscribe;\n  }\n\n  /**\n   * A callback which will be called when Webamp is minimized.\n   *\n   * @returns An \"unsubscribe\" function. Useful if at some point in the future you want to stop listening to these events.\n   */\n  onMinimize(cb: () => void): () => void {\n    return this._actionEmitter.on(\"MINIMIZE_WINAMP\", cb);\n  }\n\n  /**\n   * Set the skin to use. This can be a URL or a base64 encoded string. The skin\n   * will be loaded asynchronously.\n   *\n   * NOTE: If the URL is not on the same domain as the page, you will need to consider CORS.\n   * https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS\n   */\n  setSkinFromUrl(url: string): void {\n    this.store.dispatch(Actions.setSkinFromUrl(url));\n    // TODO: Should this return a promise?\n    // return this.skinIsLoaded(); ??\n  }\n\n  /**\n   * Returns a promise that resolves when the skin is done loading.\n   */\n  async skinIsLoaded(): Promise<void> {\n    // Wait for the skin to load.\n    await this.storeHas((state) => !state.display.loading);\n    // We attempt to pre-resolve these promises before we declare the skin\n    // loaded. That's because `<EqGraph>` needs these in order to render fully.\n    // As long as these are resolved before we attempt to render, we can ensure\n    // that we will have all the data we need on first paint.\n    //\n    // Note: This won't help for non-initial skin loads.\n    await Promise.all([\n      Selectors.getPreampLineImage(this.store.getState()),\n      Selectors.getLineColorsImage(this.store.getState()),\n    ]);\n    return;\n  }\n\n  /**\n   * Webamp will wait until it has fetched the skin and fully parsed it and then render itself.\n   *\n   * Webamp is rendered into a new DOM node at the end of the <body> tag with the id `#webamp`.\n   *\n   * If a domNode is passed, Webamp will place itself in the center of that DOM node.\n   *\n   * @returns A promise is returned which will resolve after the render is complete.\n   */\n  async renderWhenReady(node: HTMLElement): Promise<void> {\n    this.store.dispatch(Actions.centerWindowsInContainer(node));\n    await this.skinIsLoaded();\n    if (this._disposable.disposed) {\n      return;\n    }\n    if (this._root != null) {\n      throw new Error(\"Cannot render a Webamp instance twice\");\n    }\n    this._root = ReactDOM.createRoot(node);\n    this._disposable.add(() => {\n      if (this._root != null) {\n        this._root.unmount();\n        this._root = null;\n      }\n    });\n\n    let onMount: (() => void) | undefined;\n    const mountPromise = new Promise<void>((resolve) => {\n      onMount = resolve;\n    });\n\n    this._root.render(\n      <Provider store={this.store}>\n        <App\n          media={this.media}\n          filePickers={this.options.filePickers || []}\n          onMount={onMount}\n          parentDomNode={document.body}\n        />\n      </Provider>\n    );\n    await mountPromise;\n  }\n\n  /**\n   * **Note:** _This method is not fully functional. It is currently impossible to\n   * clean up a Winamp instance. This method makes an effort, but it still leaks\n   * the whole instance. In the future the behavior of this method will improve,\n   * so you might as well call it._\n   *\n   * When you are done with a Webamp instance, call this method and Webamp will\n   * attempt to clean itself up to avoid memory leaks.\n   */\n  dispose(): void {\n    this.media.dispose();\n    this._actionEmitter.dispose();\n    this._disposable.dispose();\n  }\n\n  __loadSerializedState(serializedState: SerializedStateV1): void {\n    this.store.dispatch(Actions.loadSerializedState(serializedState));\n  }\n\n  __getSerializedState() {\n    return Selectors.getSerlializedState(this.store.getState());\n  }\n\n  __onStateChange(cb: () => void): () => void {\n    const unsubscribe = this.store.subscribe(cb);\n\n    // Register cleanup with disposable\n    this._disposable.add(unsubscribe);\n\n    return unsubscribe;\n  }\n\n  /**\n   * Wait for the store to match a predicate condition.\n   * Returns a promise that resolves when the condition is met.\n   * If the instance is disposed, the promise will be rejected.\n   */\n  private storeHas(predicate: (state: AppState) => boolean): Promise<void> {\n    let unsubscribed = false;\n    return new Promise((resolve, reject) => {\n      if (predicate(this.store.getState())) {\n        resolve();\n        return;\n      }\n      const unsubscribe = this.store.subscribe(() => {\n        if (predicate(this.store.getState())) {\n          unsubscribed = true;\n          unsubscribe();\n          resolve();\n        }\n      });\n\n      // Register cleanup with disposable\n      this._disposable.add(() => {\n        if (!unsubscribed) {\n          unsubscribe();\n          reject(new Error(\"Store was disposed before condition was met.\"));\n        }\n      });\n    });\n  }\n\n  _bufferTracks(tracks: Track[]): void {\n    const nextIndex = Selectors.getTrackCount(this.store.getState());\n    this.store.dispatch(\n      Actions.loadMediaFiles(tracks, LOAD_STYLE.BUFFER, nextIndex)\n    );\n  }\n}\n\n// @ts-ignore\nwindow.Webamp = Webamp;\n\nexport default Webamp;\n","import type WebampLazy from \"./webampLazy\";\n\nexport default function enableMediaSession(webamp: WebampLazy) {\n  if (\"mediaSession\" in navigator) {\n    /* global MediaMetadata */\n    webamp.onTrackDidChange((track) => {\n      if (track == null) {\n        return;\n      }\n      const {\n        metaData: { title, artist, album, albumArtUrl },\n      } = track;\n      navigator.mediaSession.metadata = new MediaMetadata({\n        title: title ?? undefined,\n        artist: artist ?? undefined,\n        album: album ?? undefined,\n        artwork: albumArtUrl\n          ? [\n              {\n                src: albumArtUrl,\n                // We don't currently know these.\n                // sizes: \"96x96\",\n                // type: \"image/png\"\n              },\n            ]\n          : [],\n      });\n    });\n\n    // @ts-ignore TypeScript does not know about the Media Session API: https://github.com/Microsoft/TypeScript/issues/19473\n    navigator.mediaSession.setActionHandler(\"play\", () => {\n      webamp.play();\n    });\n    // @ts-ignore TypeScript does not know about the Media Session API: https://github.com/Microsoft/TypeScript/issues/19473\n    navigator.mediaSession.setActionHandler(\"pause\", () => {\n      webamp.pause();\n    });\n    // @ts-ignore TypeScript does not know about the Media Session API: https://github.com/Microsoft/TypeScript/issues/19473\n    navigator.mediaSession.setActionHandler(\"seekbackward\", () => {\n      webamp.seekBackward(10);\n    });\n    // @ts-ignore TypeScript does not know about the Media Session API: https://github.com/Microsoft/TypeScript/issues/19473\n    navigator.mediaSession.setActionHandler(\"seekforward\", () => {\n      webamp.seekForward(10);\n    });\n    // @ts-ignore TypeScript does not know about the Media Session API: https://github.com/Microsoft/TypeScript/issues/19473\n    navigator.mediaSession.setActionHandler(\"previoustrack\", () => {\n      webamp.previousTrack();\n    });\n    // @ts-ignore TypeScript does not know about the Media Session API: https://github.com/Microsoft/TypeScript/issues/19473\n    navigator.mediaSession.setActionHandler(\"nexttrack\", () => {\n      webamp.nextTrack();\n    });\n  }\n}\n","// A Fork of the NPM module `setimmediate`\n// I've adapted this to only include the browser implementation and to not\n// mutate the global object and instead export the `setImmediate` function.\n\ntype Handle = { callback: Function; args: any[] };\ntype TaskByHandle = { [handle: number]: Handle };\n\nlet nextHandle = 1; // Spec says greater than zero\nconst tasksByHandle: TaskByHandle = {};\nlet currentlyRunningATask = false;\nlet registerImmediate: (arg0: number) => void;\n\nexport function setImmediate(callback: Function) {\n  // Copy function arguments\n  const args = new Array(arguments.length - 1);\n  for (let i = 0; i < args.length; i++) {\n    args[i] = arguments[i + 1];\n  }\n  // Store and register the task\n  const task = { callback: callback, args: args };\n  tasksByHandle[nextHandle] = task;\n  registerImmediate(nextHandle);\n  return nextHandle++;\n}\n\nfunction clearImmediate(handle: number) {\n  delete tasksByHandle[handle];\n}\n\nfunction run(task: Handle) {\n  const callback = task.callback;\n  const args = task.args;\n  switch (args.length) {\n    case 0:\n      callback();\n      break;\n    case 1:\n      callback(args[0]);\n      break;\n    case 2:\n      callback(args[0], args[1]);\n      break;\n    case 3:\n      callback(args[0], args[1], args[2]);\n      break;\n    default:\n      // eslint-disable-next-line prefer-spread\n      callback.apply(undefined, args);\n      break;\n  }\n}\n\nfunction runIfPresent(handle: number) {\n  // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n  // So if we're currently running a task, we'll need to delay this invocation.\n  if (currentlyRunningATask) {\n    // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n    // \"too much recursion\" error.\n    setTimeout(runIfPresent, 0, handle);\n  } else {\n    const task = tasksByHandle[handle];\n    if (task) {\n      currentlyRunningATask = true;\n      try {\n        run(task);\n      } finally {\n        clearImmediate(handle);\n        currentlyRunningATask = false;\n      }\n    }\n  }\n}\n\nfunction canUsePostMessage() {\n  // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n  // where `global.postMessage` means something completely different and can't be used for this purpose.\n  if (!window.importScripts) {\n    let postMessageIsAsynchronous = true;\n    const oldOnMessage = window.onmessage;\n    window.onmessage = function () {\n      postMessageIsAsynchronous = false;\n    };\n    window.postMessage(\"\", \"*\");\n    window.onmessage = oldOnMessage;\n    return postMessageIsAsynchronous;\n  }\n}\n\nfunction installPostMessageImplementation() {\n  // Installs an event handler on `global` for the `message` event: see\n  // * https://developer.mozilla.org/en/DOM/window.postMessage\n  // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n  const messagePrefix = `setImmediate$${Math.random()}$`;\n\n  window.addEventListener(\n    \"message\",\n    (event) => {\n      if (\n        event.source === window &&\n        typeof event.data === \"string\" &&\n        event.data.indexOf(messagePrefix) === 0\n      ) {\n        runIfPresent(+event.data.slice(messagePrefix.length));\n      }\n    },\n    false\n  );\n\n  registerImmediate = function (handle) {\n    window.postMessage(messagePrefix + handle, \"*\");\n  };\n}\n\nfunction installSetTimeoutImplementation() {\n  registerImmediate = function (handle) {\n    setTimeout(runIfPresent, 0, handle);\n  };\n}\n\nif (canUsePostMessage()) {\n  // For non-IE10 modern browsers\n  installPostMessageImplementation();\n} else {\n  // For older browsers\n  installSetTimeoutImplementation();\n}\n","\"use strict\";\n\nexports.base64 = true;\nexports.array = true;\nexports.string = true;\nexports.arraybuffer = typeof ArrayBuffer !== \"undefined\" && typeof Uint8Array !== \"undefined\";\nexports.nodebuffer = typeof Buffer !== \"undefined\";\n// contains true if JSZip can read/generate Uint8Array, false otherwise.\nexports.uint8array = typeof Uint8Array !== \"undefined\";\n\nif (typeof ArrayBuffer === \"undefined\") {\n    exports.blob = false;\n}\nelse {\n    var buffer = new ArrayBuffer(0);\n    try {\n        exports.blob = new Blob([buffer], {\n            type: \"application/zip\"\n        }).size === 0;\n    }\n    catch (e) {\n        try {\n            var Builder = self.BlobBuilder || self.WebKitBlobBuilder || self.MozBlobBuilder || self.MSBlobBuilder;\n            var builder = new Builder();\n            builder.append(buffer);\n            exports.blob = builder.getBlob(\"application/zip\").size === 0;\n        }\n        catch (e) {\n            exports.blob = false;\n        }\n    }\n}\n\ntry {\n    exports.nodestream = !!require(\"readable-stream\").Readable;\n} catch(e) {\n    exports.nodestream = false;\n}\n","\"use strict\";\n/*\n * This file is used by module bundlers (browserify/webpack/etc) when\n * including a stream implementation. We use \"readable-stream\" to get a\n * consistent behavior between nodejs versions but bundlers often have a shim\n * for \"stream\". Using this shim greatly improve the compatibility and greatly\n * reduce the final size of the bundle (only one stream implementation, not\n * two).\n */\nmodule.exports = require(\"stream\");\n","\"use strict\";\nvar utils = require(\"./utils\");\nvar support = require(\"./support\");\n// private property\nvar _keyStr = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\n\n// public method for encoding\nexports.encode = function(input) {\n    var output = [];\n    var chr1, chr2, chr3, enc1, enc2, enc3, enc4;\n    var i = 0, len = input.length, remainingBytes = len;\n\n    var isArray = utils.getTypeOf(input) !== \"string\";\n    while (i < input.length) {\n        remainingBytes = len - i;\n\n        if (!isArray) {\n            chr1 = input.charCodeAt(i++);\n            chr2 = i < len ? input.charCodeAt(i++) : 0;\n            chr3 = i < len ? input.charCodeAt(i++) : 0;\n        } else {\n            chr1 = input[i++];\n            chr2 = i < len ? input[i++] : 0;\n            chr3 = i < len ? input[i++] : 0;\n        }\n\n        enc1 = chr1 >> 2;\n        enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n        enc3 = remainingBytes > 1 ? (((chr2 & 15) << 2) | (chr3 >> 6)) : 64;\n        enc4 = remainingBytes > 2 ? (chr3 & 63) : 64;\n\n        output.push(_keyStr.charAt(enc1) + _keyStr.charAt(enc2) + _keyStr.charAt(enc3) + _keyStr.charAt(enc4));\n\n    }\n\n    return output.join(\"\");\n};\n\n// public method for decoding\nexports.decode = function(input) {\n    var chr1, chr2, chr3;\n    var enc1, enc2, enc3, enc4;\n    var i = 0, resultIndex = 0;\n\n    var dataUrlPrefix = \"data:\";\n\n    if (input.substr(0, dataUrlPrefix.length) === dataUrlPrefix) {\n        // This is a common error: people give a data url\n        // (data:image/png;base64,iVBOR...) with a {base64: true} and\n        // wonders why things don't work.\n        // We can detect that the string input looks like a data url but we\n        // *can't* be sure it is one: removing everything up to the comma would\n        // be too dangerous.\n        throw new Error(\"Invalid base64 input, it looks like a data url.\");\n    }\n\n    input = input.replace(/[^A-Za-z0-9+/=]/g, \"\");\n\n    var totalLength = input.length * 3 / 4;\n    if(input.charAt(input.length - 1) === _keyStr.charAt(64)) {\n        totalLength--;\n    }\n    if(input.charAt(input.length - 2) === _keyStr.charAt(64)) {\n        totalLength--;\n    }\n    if (totalLength % 1 !== 0) {\n        // totalLength is not an integer, the length does not match a valid\n        // base64 content. That can happen if:\n        // - the input is not a base64 content\n        // - the input is *almost* a base64 content, with a extra chars at the\n        //   beginning or at the end\n        // - the input uses a base64 variant (base64url for example)\n        throw new Error(\"Invalid base64 input, bad content length.\");\n    }\n    var output;\n    if (support.uint8array) {\n        output = new Uint8Array(totalLength|0);\n    } else {\n        output = new Array(totalLength|0);\n    }\n\n    while (i < input.length) {\n\n        enc1 = _keyStr.indexOf(input.charAt(i++));\n        enc2 = _keyStr.indexOf(input.charAt(i++));\n        enc3 = _keyStr.indexOf(input.charAt(i++));\n        enc4 = _keyStr.indexOf(input.charAt(i++));\n\n        chr1 = (enc1 << 2) | (enc2 >> 4);\n        chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);\n        chr3 = ((enc3 & 3) << 6) | enc4;\n\n        output[resultIndex++] = chr1;\n\n        if (enc3 !== 64) {\n            output[resultIndex++] = chr2;\n        }\n        if (enc4 !== 64) {\n            output[resultIndex++] = chr3;\n        }\n\n    }\n\n    return output;\n};\n","\"use strict\";\n\nmodule.exports = {\n    /**\n     * True if this is running in Nodejs, will be undefined in a browser.\n     * In a browser, browserify won't include this file and the whole module\n     * will be resolved an empty object.\n     */\n    isNode : typeof Buffer !== \"undefined\",\n    /**\n     * Create a new nodejs Buffer from an existing content.\n     * @param {Object} data the data to pass to the constructor.\n     * @param {String} encoding the encoding to use.\n     * @return {Buffer} a new Buffer.\n     */\n    newBufferFrom: function(data, encoding) {\n        if (Buffer.from && Buffer.from !== Uint8Array.from) {\n            return Buffer.from(data, encoding);\n        } else {\n            if (typeof data === \"number\") {\n                // Safeguard for old Node.js versions. On newer versions,\n                // Buffer.from(number) / Buffer(number, encoding) already throw.\n                throw new Error(\"The \\\"data\\\" argument must not be a number\");\n            }\n            return new Buffer(data, encoding);\n        }\n    },\n    /**\n     * Create a new nodejs Buffer with the specified size.\n     * @param {Integer} size the size of the buffer.\n     * @return {Buffer} a new Buffer.\n     */\n    allocBuffer: function (size) {\n        if (Buffer.alloc) {\n            return Buffer.alloc(size);\n        } else {\n            var buf = new Buffer(size);\n            buf.fill(0);\n            return buf;\n        }\n    },\n    /**\n     * Find out if an object is a Buffer.\n     * @param {Object} b the object to test.\n     * @return {Boolean} true if the object is a Buffer, false otherwise.\n     */\n    isBuffer : function(b){\n        return Buffer.isBuffer(b);\n    },\n\n    isStream : function (obj) {\n        return obj &&\n            typeof obj.on === \"function\" &&\n            typeof obj.pause === \"function\" &&\n            typeof obj.resume === \"function\";\n    }\n};\n","\"use strict\";\n\n// load the global object first:\n// - it should be better integrated in the system (unhandledRejection in node)\n// - the environment may have a custom Promise implementation (see zone.js)\nvar ES6Promise = null;\nif (typeof Promise !== \"undefined\") {\n    ES6Promise = Promise;\n} else {\n    ES6Promise = require(\"lie\");\n}\n\n/**\n * Let the user use/change some implementations.\n */\nmodule.exports = {\n    Promise: ES6Promise\n};\n","'use strict';\nvar immediate = require('immediate');\n\n/* istanbul ignore next */\nfunction INTERNAL() {}\n\nvar handlers = {};\n\nvar REJECTED = ['REJECTED'];\nvar FULFILLED = ['FULFILLED'];\nvar PENDING = ['PENDING'];\n\nmodule.exports = Promise;\n\nfunction Promise(resolver) {\n  if (typeof resolver !== 'function') {\n    throw new TypeError('resolver must be a function');\n  }\n  this.state = PENDING;\n  this.queue = [];\n  this.outcome = void 0;\n  if (resolver !== INTERNAL) {\n    safelyResolveThenable(this, resolver);\n  }\n}\n\nPromise.prototype[\"finally\"] = function (callback) {\n  if (typeof callback !== 'function') {\n    return this;\n  }\n  var p = this.constructor;\n  return this.then(resolve, reject);\n\n  function resolve(value) {\n    function yes () {\n      return value;\n    }\n    return p.resolve(callback()).then(yes);\n  }\n  function reject(reason) {\n    function no () {\n      throw reason;\n    }\n    return p.resolve(callback()).then(no);\n  }\n};\nPromise.prototype[\"catch\"] = function (onRejected) {\n  return this.then(null, onRejected);\n};\nPromise.prototype.then = function (onFulfilled, onRejected) {\n  if (typeof onFulfilled !== 'function' && this.state === FULFILLED ||\n    typeof onRejected !== 'function' && this.state === REJECTED) {\n    return this;\n  }\n  var promise = new this.constructor(INTERNAL);\n  if (this.state !== PENDING) {\n    var resolver = this.state === FULFILLED ? onFulfilled : onRejected;\n    unwrap(promise, resolver, this.outcome);\n  } else {\n    this.queue.push(new QueueItem(promise, onFulfilled, onRejected));\n  }\n\n  return promise;\n};\nfunction QueueItem(promise, onFulfilled, onRejected) {\n  this.promise = promise;\n  if (typeof onFulfilled === 'function') {\n    this.onFulfilled = onFulfilled;\n    this.callFulfilled = this.otherCallFulfilled;\n  }\n  if (typeof onRejected === 'function') {\n    this.onRejected = onRejected;\n    this.callRejected = this.otherCallRejected;\n  }\n}\nQueueItem.prototype.callFulfilled = function (value) {\n  handlers.resolve(this.promise, value);\n};\nQueueItem.prototype.otherCallFulfilled = function (value) {\n  unwrap(this.promise, this.onFulfilled, value);\n};\nQueueItem.prototype.callRejected = function (value) {\n  handlers.reject(this.promise, value);\n};\nQueueItem.prototype.otherCallRejected = function (value) {\n  unwrap(this.promise, this.onRejected, value);\n};\n\nfunction unwrap(promise, func, value) {\n  immediate(function () {\n    var returnValue;\n    try {\n      returnValue = func(value);\n    } catch (e) {\n      return handlers.reject(promise, e);\n    }\n    if (returnValue === promise) {\n      handlers.reject(promise, new TypeError('Cannot resolve promise with itself'));\n    } else {\n      handlers.resolve(promise, returnValue);\n    }\n  });\n}\n\nhandlers.resolve = function (self, value) {\n  var result = tryCatch(getThen, value);\n  if (result.status === 'error') {\n    return handlers.reject(self, result.value);\n  }\n  var thenable = result.value;\n\n  if (thenable) {\n    safelyResolveThenable(self, thenable);\n  } else {\n    self.state = FULFILLED;\n    self.outcome = value;\n    var i = -1;\n    var len = self.queue.length;\n    while (++i < len) {\n      self.queue[i].callFulfilled(value);\n    }\n  }\n  return self;\n};\nhandlers.reject = function (self, error) {\n  self.state = REJECTED;\n  self.outcome = error;\n  var i = -1;\n  var len = self.queue.length;\n  while (++i < len) {\n    self.queue[i].callRejected(error);\n  }\n  return self;\n};\n\nfunction getThen(obj) {\n  // Make sure we only access the accessor once as required by the spec\n  var then = obj && obj.then;\n  if (obj && (typeof obj === 'object' || typeof obj === 'function') && typeof then === 'function') {\n    return function appyThen() {\n      then.apply(obj, arguments);\n    };\n  }\n}\n\nfunction safelyResolveThenable(self, thenable) {\n  // Either fulfill, reject or reject with error\n  var called = false;\n  function onError(value) {\n    if (called) {\n      return;\n    }\n    called = true;\n    handlers.reject(self, value);\n  }\n\n  function onSuccess(value) {\n    if (called) {\n      return;\n    }\n    called = true;\n    handlers.resolve(self, value);\n  }\n\n  function tryToUnwrap() {\n    thenable(onSuccess, onError);\n  }\n\n  var result = tryCatch(tryToUnwrap);\n  if (result.status === 'error') {\n    onError(result.value);\n  }\n}\n\nfunction tryCatch(func, value) {\n  var out = {};\n  try {\n    out.value = func(value);\n    out.status = 'success';\n  } catch (e) {\n    out.status = 'error';\n    out.value = e;\n  }\n  return out;\n}\n\nPromise.resolve = resolve;\nfunction resolve(value) {\n  if (value instanceof this) {\n    return value;\n  }\n  return handlers.resolve(new this(INTERNAL), value);\n}\n\nPromise.reject = reject;\nfunction reject(reason) {\n  var promise = new this(INTERNAL);\n  return handlers.reject(promise, reason);\n}\n\nPromise.all = all;\nfunction all(iterable) {\n  var self = this;\n  if (Object.prototype.toString.call(iterable) !== '[object Array]') {\n    return this.reject(new TypeError('must be an array'));\n  }\n\n  var len = iterable.length;\n  var called = false;\n  if (!len) {\n    return this.resolve([]);\n  }\n\n  var values = new Array(len);\n  var resolved = 0;\n  var i = -1;\n  var promise = new this(INTERNAL);\n\n  while (++i < len) {\n    allResolver(iterable[i], i);\n  }\n  return promise;\n  function allResolver(value, i) {\n    self.resolve(value).then(resolveFromAll, function (error) {\n      if (!called) {\n        called = true;\n        handlers.reject(promise, error);\n      }\n    });\n    function resolveFromAll(outValue) {\n      values[i] = outValue;\n      if (++resolved === len && !called) {\n        called = true;\n        handlers.resolve(promise, values);\n      }\n    }\n  }\n}\n\nPromise.race = race;\nfunction race(iterable) {\n  var self = this;\n  if (Object.prototype.toString.call(iterable) !== '[object Array]') {\n    return this.reject(new TypeError('must be an array'));\n  }\n\n  var len = iterable.length;\n  var called = false;\n  if (!len) {\n    return this.resolve([]);\n  }\n\n  var i = -1;\n  var promise = new this(INTERNAL);\n\n  while (++i < len) {\n    resolver(iterable[i]);\n  }\n  return promise;\n  function resolver(value) {\n    self.resolve(value).then(function (response) {\n      if (!called) {\n        called = true;\n        handlers.resolve(promise, response);\n      }\n    }, function (error) {\n      if (!called) {\n        called = true;\n        handlers.reject(promise, error);\n      }\n    });\n  }\n}\n","'use strict';\nvar Mutation = global.MutationObserver || global.WebKitMutationObserver;\n\nvar scheduleDrain;\n\n{\n  if (Mutation) {\n    var called = 0;\n    var observer = new Mutation(nextTick);\n    var element = global.document.createTextNode('');\n    observer.observe(element, {\n      characterData: true\n    });\n    scheduleDrain = function () {\n      element.data = (called = ++called % 2);\n    };\n  } else if (!global.setImmediate && typeof global.MessageChannel !== 'undefined') {\n    var channel = new global.MessageChannel();\n    channel.port1.onmessage = nextTick;\n    scheduleDrain = function () {\n      channel.port2.postMessage(0);\n    };\n  } else if ('document' in global && 'onreadystatechange' in global.document.createElement('script')) {\n    scheduleDrain = function () {\n\n      // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n      // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n      var scriptEl = global.document.createElement('script');\n      scriptEl.onreadystatechange = function () {\n        nextTick();\n\n        scriptEl.onreadystatechange = null;\n        scriptEl.parentNode.removeChild(scriptEl);\n        scriptEl = null;\n      };\n      global.document.documentElement.appendChild(scriptEl);\n    };\n  } else {\n    scheduleDrain = function () {\n      setTimeout(nextTick, 0);\n    };\n  }\n}\n\nvar draining;\nvar queue = [];\n//named nextTick for less confusing stack traces\nfunction nextTick() {\n  draining = true;\n  var i, oldQueue;\n  var len = queue.length;\n  while (len) {\n    oldQueue = queue;\n    queue = [];\n    i = -1;\n    while (++i < len) {\n      oldQueue[i]();\n    }\n    len = queue.length;\n  }\n  draining = false;\n}\n\nmodule.exports = immediate;\nfunction immediate(task) {\n  if (queue.push(task) === 1 && !draining) {\n    scheduleDrain();\n  }\n}\n","\"use strict\";\n\nvar support = require(\"./support\");\nvar base64 = require(\"./base64\");\nvar nodejsUtils = require(\"./nodejsUtils\");\nvar external = require(\"./external\");\nrequire(\"setimmediate\");\n\n\n/**\n * Convert a string that pass as a \"binary string\": it should represent a byte\n * array but may have > 255 char codes. Be sure to take only the first byte\n * and returns the byte array.\n * @param {String} str the string to transform.\n * @return {Array|Uint8Array} the string in a binary format.\n */\nfunction string2binary(str) {\n    var result = null;\n    if (support.uint8array) {\n        result = new Uint8Array(str.length);\n    } else {\n        result = new Array(str.length);\n    }\n    return stringToArrayLike(str, result);\n}\n\n/**\n * Create a new blob with the given content and the given type.\n * @param {String|ArrayBuffer} part the content to put in the blob. DO NOT use\n * an Uint8Array because the stock browser of android 4 won't accept it (it\n * will be silently converted to a string, \"[object Uint8Array]\").\n *\n * Use only ONE part to build the blob to avoid a memory leak in IE11 / Edge:\n * when a large amount of Array is used to create the Blob, the amount of\n * memory consumed is nearly 100 times the original data amount.\n *\n * @param {String} type the mime type of the blob.\n * @return {Blob} the created blob.\n */\nexports.newBlob = function(part, type) {\n    exports.checkSupport(\"blob\");\n\n    try {\n        // Blob constructor\n        return new Blob([part], {\n            type: type\n        });\n    }\n    catch (e) {\n\n        try {\n            // deprecated, browser only, old way\n            var Builder = self.BlobBuilder || self.WebKitBlobBuilder || self.MozBlobBuilder || self.MSBlobBuilder;\n            var builder = new Builder();\n            builder.append(part);\n            return builder.getBlob(type);\n        }\n        catch (e) {\n\n            // well, fuck ?!\n            throw new Error(\"Bug : can't construct the Blob.\");\n        }\n    }\n\n\n};\n/**\n * The identity function.\n * @param {Object} input the input.\n * @return {Object} the same input.\n */\nfunction identity(input) {\n    return input;\n}\n\n/**\n * Fill in an array with a string.\n * @param {String} str the string to use.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to fill in (will be mutated).\n * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated array.\n */\nfunction stringToArrayLike(str, array) {\n    for (var i = 0; i < str.length; ++i) {\n        array[i] = str.charCodeAt(i) & 0xFF;\n    }\n    return array;\n}\n\n/**\n * An helper for the function arrayLikeToString.\n * This contains static information and functions that\n * can be optimized by the browser JIT compiler.\n */\nvar arrayToStringHelper = {\n    /**\n     * Transform an array of int into a string, chunk by chunk.\n     * See the performances notes on arrayLikeToString.\n     * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.\n     * @param {String} type the type of the array.\n     * @param {Integer} chunk the chunk size.\n     * @return {String} the resulting string.\n     * @throws Error if the chunk is too big for the stack.\n     */\n    stringifyByChunk: function(array, type, chunk) {\n        var result = [], k = 0, len = array.length;\n        // shortcut\n        if (len <= chunk) {\n            return String.fromCharCode.apply(null, array);\n        }\n        while (k < len) {\n            if (type === \"array\" || type === \"nodebuffer\") {\n                result.push(String.fromCharCode.apply(null, array.slice(k, Math.min(k + chunk, len))));\n            }\n            else {\n                result.push(String.fromCharCode.apply(null, array.subarray(k, Math.min(k + chunk, len))));\n            }\n            k += chunk;\n        }\n        return result.join(\"\");\n    },\n    /**\n     * Call String.fromCharCode on every item in the array.\n     * This is the naive implementation, which generate A LOT of intermediate string.\n     * This should be used when everything else fail.\n     * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.\n     * @return {String} the result.\n     */\n    stringifyByChar: function(array){\n        var resultStr = \"\";\n        for(var i = 0; i < array.length; i++) {\n            resultStr += String.fromCharCode(array[i]);\n        }\n        return resultStr;\n    },\n    applyCanBeUsed : {\n        /**\n         * true if the browser accepts to use String.fromCharCode on Uint8Array\n         */\n        uint8array : (function () {\n            try {\n                return support.uint8array && String.fromCharCode.apply(null, new Uint8Array(1)).length === 1;\n            } catch (e) {\n                return false;\n            }\n        })(),\n        /**\n         * true if the browser accepts to use String.fromCharCode on nodejs Buffer.\n         */\n        nodebuffer : (function () {\n            try {\n                return support.nodebuffer && String.fromCharCode.apply(null, nodejsUtils.allocBuffer(1)).length === 1;\n            } catch (e) {\n                return false;\n            }\n        })()\n    }\n};\n\n/**\n * Transform an array-like object to a string.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.\n * @return {String} the result.\n */\nfunction arrayLikeToString(array) {\n    // Performances notes :\n    // --------------------\n    // String.fromCharCode.apply(null, array) is the fastest, see\n    // see http://jsperf.com/converting-a-uint8array-to-a-string/2\n    // but the stack is limited (and we can get huge arrays !).\n    //\n    // result += String.fromCharCode(array[i]); generate too many strings !\n    //\n    // This code is inspired by http://jsperf.com/arraybuffer-to-string-apply-performance/2\n    // TODO : we now have workers that split the work. Do we still need that ?\n    var chunk = 65536,\n        type = exports.getTypeOf(array),\n        canUseApply = true;\n    if (type === \"uint8array\") {\n        canUseApply = arrayToStringHelper.applyCanBeUsed.uint8array;\n    } else if (type === \"nodebuffer\") {\n        canUseApply = arrayToStringHelper.applyCanBeUsed.nodebuffer;\n    }\n\n    if (canUseApply) {\n        while (chunk > 1) {\n            try {\n                return arrayToStringHelper.stringifyByChunk(array, type, chunk);\n            } catch (e) {\n                chunk = Math.floor(chunk / 2);\n            }\n        }\n    }\n\n    // no apply or chunk error : slow and painful algorithm\n    // default browser on android 4.*\n    return arrayToStringHelper.stringifyByChar(array);\n}\n\nexports.applyFromCharCode = arrayLikeToString;\n\n\n/**\n * Copy the data from an array-like to an other array-like.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayFrom the origin array.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayTo the destination array which will be mutated.\n * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated destination array.\n */\nfunction arrayLikeToArrayLike(arrayFrom, arrayTo) {\n    for (var i = 0; i < arrayFrom.length; i++) {\n        arrayTo[i] = arrayFrom[i];\n    }\n    return arrayTo;\n}\n\n// a matrix containing functions to transform everything into everything.\nvar transform = {};\n\n// string to ?\ntransform[\"string\"] = {\n    \"string\": identity,\n    \"array\": function(input) {\n        return stringToArrayLike(input, new Array(input.length));\n    },\n    \"arraybuffer\": function(input) {\n        return transform[\"string\"][\"uint8array\"](input).buffer;\n    },\n    \"uint8array\": function(input) {\n        return stringToArrayLike(input, new Uint8Array(input.length));\n    },\n    \"nodebuffer\": function(input) {\n        return stringToArrayLike(input, nodejsUtils.allocBuffer(input.length));\n    }\n};\n\n// array to ?\ntransform[\"array\"] = {\n    \"string\": arrayLikeToString,\n    \"array\": identity,\n    \"arraybuffer\": function(input) {\n        return (new Uint8Array(input)).buffer;\n    },\n    \"uint8array\": function(input) {\n        return new Uint8Array(input);\n    },\n    \"nodebuffer\": function(input) {\n        return nodejsUtils.newBufferFrom(input);\n    }\n};\n\n// arraybuffer to ?\ntransform[\"arraybuffer\"] = {\n    \"string\": function(input) {\n        return arrayLikeToString(new Uint8Array(input));\n    },\n    \"array\": function(input) {\n        return arrayLikeToArrayLike(new Uint8Array(input), new Array(input.byteLength));\n    },\n    \"arraybuffer\": identity,\n    \"uint8array\": function(input) {\n        return new Uint8Array(input);\n    },\n    \"nodebuffer\": function(input) {\n        return nodejsUtils.newBufferFrom(new Uint8Array(input));\n    }\n};\n\n// uint8array to ?\ntransform[\"uint8array\"] = {\n    \"string\": arrayLikeToString,\n    \"array\": function(input) {\n        return arrayLikeToArrayLike(input, new Array(input.length));\n    },\n    \"arraybuffer\": function(input) {\n        return input.buffer;\n    },\n    \"uint8array\": identity,\n    \"nodebuffer\": function(input) {\n        return nodejsUtils.newBufferFrom(input);\n    }\n};\n\n// nodebuffer to ?\ntransform[\"nodebuffer\"] = {\n    \"string\": arrayLikeToString,\n    \"array\": function(input) {\n        return arrayLikeToArrayLike(input, new Array(input.length));\n    },\n    \"arraybuffer\": function(input) {\n        return transform[\"nodebuffer\"][\"uint8array\"](input).buffer;\n    },\n    \"uint8array\": function(input) {\n        return arrayLikeToArrayLike(input, new Uint8Array(input.length));\n    },\n    \"nodebuffer\": identity\n};\n\n/**\n * Transform an input into any type.\n * The supported output type are : string, array, uint8array, arraybuffer, nodebuffer.\n * If no output type is specified, the unmodified input will be returned.\n * @param {String} outputType the output type.\n * @param {String|Array|ArrayBuffer|Uint8Array|Buffer} input the input to convert.\n * @throws {Error} an Error if the browser doesn't support the requested output type.\n */\nexports.transformTo = function(outputType, input) {\n    if (!input) {\n        // undefined, null, etc\n        // an empty string won't harm.\n        input = \"\";\n    }\n    if (!outputType) {\n        return input;\n    }\n    exports.checkSupport(outputType);\n    var inputType = exports.getTypeOf(input);\n    var result = transform[inputType][outputType](input);\n    return result;\n};\n\n/**\n * Resolve all relative path components, \".\" and \"..\", in a path. If these relative components\n * traverse above the root then the resulting path will only contain the final path component.\n *\n * All empty components, e.g. \"//\", are removed.\n * @param {string} path A path with / or \\ separators\n * @returns {string} The path with all relative path components resolved.\n */\nexports.resolve = function(path) {\n    var parts = path.split(\"/\");\n    var result = [];\n    for (var index = 0; index < parts.length; index++) {\n        var part = parts[index];\n        // Allow the first and last component to be empty for trailing slashes.\n        if (part === \".\" || (part === \"\" && index !== 0 && index !== parts.length - 1)) {\n            continue;\n        } else if (part === \"..\") {\n            result.pop();\n        } else {\n            result.push(part);\n        }\n    }\n    return result.join(\"/\");\n};\n\n/**\n * Return the type of the input.\n * The type will be in a format valid for JSZip.utils.transformTo : string, array, uint8array, arraybuffer.\n * @param {Object} input the input to identify.\n * @return {String} the (lowercase) type of the input.\n */\nexports.getTypeOf = function(input) {\n    if (typeof input === \"string\") {\n        return \"string\";\n    }\n    if (Object.prototype.toString.call(input) === \"[object Array]\") {\n        return \"array\";\n    }\n    if (support.nodebuffer && nodejsUtils.isBuffer(input)) {\n        return \"nodebuffer\";\n    }\n    if (support.uint8array && input instanceof Uint8Array) {\n        return \"uint8array\";\n    }\n    if (support.arraybuffer && input instanceof ArrayBuffer) {\n        return \"arraybuffer\";\n    }\n};\n\n/**\n * Throw an exception if the type is not supported.\n * @param {String} type the type to check.\n * @throws {Error} an Error if the browser doesn't support the requested type.\n */\nexports.checkSupport = function(type) {\n    var supported = support[type.toLowerCase()];\n    if (!supported) {\n        throw new Error(type + \" is not supported by this platform\");\n    }\n};\n\nexports.MAX_VALUE_16BITS = 65535;\nexports.MAX_VALUE_32BITS = -1; // well, \"\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\" is parsed as -1\n\n/**\n * Prettify a string read as binary.\n * @param {string} str the string to prettify.\n * @return {string} a pretty string.\n */\nexports.pretty = function(str) {\n    var res = \"\",\n        code, i;\n    for (i = 0; i < (str || \"\").length; i++) {\n        code = str.charCodeAt(i);\n        res += \"\\\\x\" + (code < 16 ? \"0\" : \"\") + code.toString(16).toUpperCase();\n    }\n    return res;\n};\n\n/**\n * Defer the call of a function.\n * @param {Function} callback the function to call asynchronously.\n * @param {Array} args the arguments to give to the callback.\n */\nexports.delay = function(callback, args, self) {\n    setImmediate(function () {\n        callback.apply(self || null, args || []);\n    });\n};\n\n/**\n * Extends a prototype with an other, without calling a constructor with\n * side effects. Inspired by nodejs' `utils.inherits`\n * @param {Function} ctor the constructor to augment\n * @param {Function} superCtor the parent constructor to use\n */\nexports.inherits = function (ctor, superCtor) {\n    var Obj = function() {};\n    Obj.prototype = superCtor.prototype;\n    ctor.prototype = new Obj();\n};\n\n/**\n * Merge the objects passed as parameters into a new one.\n * @private\n * @param {...Object} var_args All objects to merge.\n * @return {Object} a new object with the data of the others.\n */\nexports.extend = function() {\n    var result = {}, i, attr;\n    for (i = 0; i < arguments.length; i++) { // arguments is not enumerable in some browsers\n        for (attr in arguments[i]) {\n            if (Object.prototype.hasOwnProperty.call(arguments[i], attr) && typeof result[attr] === \"undefined\") {\n                result[attr] = arguments[i][attr];\n            }\n        }\n    }\n    return result;\n};\n\n/**\n * Transform arbitrary content into a Promise.\n * @param {String} name a name for the content being processed.\n * @param {Object} inputData the content to process.\n * @param {Boolean} isBinary true if the content is not an unicode string\n * @param {Boolean} isOptimizedBinaryString true if the string content only has one byte per character.\n * @param {Boolean} isBase64 true if the string content is encoded with base64.\n * @return {Promise} a promise in a format usable by JSZip.\n */\nexports.prepareContent = function(name, inputData, isBinary, isOptimizedBinaryString, isBase64) {\n\n    // if inputData is already a promise, this flatten it.\n    var promise = external.Promise.resolve(inputData).then(function(data) {\n\n\n        var isBlob = support.blob && (data instanceof Blob || [\"[object File]\", \"[object Blob]\"].indexOf(Object.prototype.toString.call(data)) !== -1);\n\n        if (isBlob && typeof FileReader !== \"undefined\") {\n            return new external.Promise(function (resolve, reject) {\n                var reader = new FileReader();\n\n                reader.onload = function(e) {\n                    resolve(e.target.result);\n                };\n                reader.onerror = function(e) {\n                    reject(e.target.error);\n                };\n                reader.readAsArrayBuffer(data);\n            });\n        } else {\n            return data;\n        }\n    });\n\n    return promise.then(function(data) {\n        var dataType = exports.getTypeOf(data);\n\n        if (!dataType) {\n            return external.Promise.reject(\n                new Error(\"Can't read the data of '\" + name + \"'. Is it \" +\n                          \"in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?\")\n            );\n        }\n        // special case : it's way easier to work with Uint8Array than with ArrayBuffer\n        if (dataType === \"arraybuffer\") {\n            data = exports.transformTo(\"uint8array\", data);\n        } else if (dataType === \"string\") {\n            if (isBase64) {\n                data = base64.decode(data);\n            }\n            else if (isBinary) {\n                // optimizedBinaryString === true means that the file has already been filtered with a 0xFF mask\n                if (isOptimizedBinaryString !== true) {\n                    // this is a string, not in a base64 format.\n                    // Be sure that this is a correct \"binary string\"\n                    data = string2binary(data);\n                }\n            }\n        }\n        return data;\n    });\n};\n","import JSZip from \"jszip\";\nimport * as musicMetadata from \"music-metadata\";\nimport { IMetadataApi, Options } from \"./types\";\nimport WebampLazy, { PrivateOptions } from \"./webampLazy\";\n\n// There is some bug between how JSZip pulls in setimmediate (which it expects\n// to polyfill `window.setimmediate` and our bundler set. The result is that one\n// of our bundles is missing the polyfill. If we call JSZip code from within\n// that bundle the polyfill is not present and we get an error.\n//\n// To work around this we manually import the helper function which is the one\n// place JSZip actually uses `setImmediate` and then set it to use our fork of\n// the polyfill which does not require adding a property to `window`.\nimport { setImmediate } from \"./setImmediate\";\n// @ts-ignore\nimport Utils from \"jszip/lib/utils\";\n// @ts-ignore\nUtils.delay = function (callback, args, self) {\n  setImmediate(() => {\n    callback.apply(self || null, args || []);\n  });\n};\n\nexport type * from \"./types\";\n\nexport default class Webamp extends WebampLazy {\n  constructor(options: Options & PrivateOptions) {\n    super({\n      ...options,\n      requireJSZip: async () => JSZip,\n      requireMusicMetadata: async (): Promise<IMetadataApi> => {\n        // @ts-ignore\n        return musicMetadata;\n      },\n    });\n  }\n}\n\n// Bit of a hack here. This overwrites the value set in WebampLazy.ts\n// @ts-ignore\nwindow.Webamp = Webamp;\n","{const t=(t,e)=>{var i=\"function\"==typeof e,s=\"function\"==typeof e,r=\"function\"==typeof e;Object.defineProperty(Math,t,{configurable:i,enumerable:r,writable:s,value:e})};t(\"DEG_PER_RAD\",Math.PI/180),t(\"RAD_PER_DEG\",180/Math.PI);const e=new Float32Array(1);t(\"scale\",function(t,e,i,s,r){return 0===arguments.length||Number.isNaN(t)||Number.isNaN(e)||Number.isNaN(i)||Number.isNaN(s)||Number.isNaN(r)?NaN:t===1/0||t===-1/0?t:(t-e)*(r-s)/(i-e)+s}),t(\"fscale\",function(t,i,s,r,a){return e[0]=Math.scale(t,i,s,r,a),e[0]}),t(\"clamp\",function(t,e,i){return Math.min(i,Math.max(e,t))}),t(\"radians\",function(t){return t*Math.DEG_PER_RAD}),t(\"degrees\",function(t){return t*Math.RAD_PER_DEG})}var t=1e-5;window.sqr=function(t){return t*t},window.sqrt=function(t){return Math.sqrt(Math.abs(t))},window.log10=function(t){return Math.log(t)*Math.LOG10E},window.sign=function(t){return t>0?1:t<0?-1:0},window.rand=function(t){var e=Math.floor(t);return e<1?Math.random():Math.random()*e},window.randint=function(t){return Math.floor(rand(t))},window.bnot=function(e){return Math.abs(e)<t?1:0},window.pow=function(t,e){var i,s=Math.pow(t,e);return i=s,!isFinite(i)||isNaN(i)?0:s},window.div=function(t,e){return 0===e?0:t/e},window.mod=function(t,e){return 0===e?0:Math.floor(t)%Math.floor(e)},window.bitor=function(t,e){return Math.floor(t)|Math.floor(e)},window.bitand=function(t,e){return Math.floor(t)&Math.floor(e)},window.sigmoid=function(e,i){var s=1+Math.exp(-e*i);return Math.abs(s)>t?1/s:0},window.bor=function(e,i){return Math.abs(e)>t||Math.abs(i)>t?1:0},window.band=function(e,i){return Math.abs(e)>t&&Math.abs(i)>t?1:0},window.equal=function(e,i){return Math.abs(e-i)<t?1:0},window.above=function(t,e){return t>e?1:0},window.below=function(t,e){return t<e?1:0},window.ifcond=function(e,i,s){return Math.abs(e)>t?i:s},window.memcpy=function(t,e,i,s){let r=e,a=i,o=s;return a<0&&(o+=a,r-=a,a=0),r<0&&(o+=r,a-=r,r=0),o>0&&t.copyWithin(r,a,o),e};var e,i={},s={},r={};function a(t){throw new Error('Could not dynamically require \"'+t+'\". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var o,h,A,n={};function l(){return o||(o=1,function(t){var e=function(){var t=function(t,e,i,s){for(i=i||{},s=t.length;s--;i[t[s]]=e);return i},e=[1,18],i=[1,7],s=[1,19],r=[1,20],a=[1,14],o=[1,15],h=[1,16],A=[1,33],n=[1,31],l=[1,23],c=[1,22],g=[1,24],m=[1,25],u=[1,26],f=[1,27],d=[1,28],p=[1,29],_=[1,30],E=[5,8,15,18,20,28,29,32,33,34,35,36,37,38],b=[5,15,18],x=[5,12,15,17,18,24,25,28,29,30],v=[1,57],T=[5,8,12,15,17,18,24,25,28,29,30],S=[15,18],P=[5,8,15,18,28,29,38],w=[5,8,15,18,28,29,32,33,38],I=[5,8,15,18,28,29,32,33,34,37,38],R=[5,8,15,18,28,29,32,33,34,35,36,37,38],y=[5,8,15,18],B=[5,8,15,18,20,22,28,29,32,33,34,35,36,37,38],L={trace:function(){},yy:{},symbols_:{error:2,SCRIPT:3,expression:4,EOF:5,expressionsOptionalTrailingSemi:6,separator:7,\";\":8,expressions:9,EXPRESSION_BLOCK:10,IDENTIFIER:11,IDENTIFIER_TOKEN:12,argument:13,arguments:14,\",\":15,FUNCTION_CALL:16,\"(\":17,\")\":18,LOGICAL_EXPRESSION:19,LOGICAL_OPERATOR_TOKEN:20,ASSIGNMENT:21,ASSIGNMENT_OPERATOR_TOKEN:22,number:23,DIGITS_TOKEN:24,\".\":25,NUMBER_LITERAL:26,UNARY_EXPRESSION:27,\"-\":28,\"+\":29,\"!\":30,BINARY_EXPRESSION:31,\"*\":32,\"/\":33,\"%\":34,\"&\":35,\"|\":36,\"^\":37,COMPARISON_TOKEN:38,$accept:0,$end:1},terminals_:{2:\"error\",5:\"EOF\",8:\";\",12:\"IDENTIFIER_TOKEN\",15:\",\",17:\"(\",18:\")\",20:\"LOGICAL_OPERATOR_TOKEN\",22:\"ASSIGNMENT_OPERATOR_TOKEN\",24:\"DIGITS_TOKEN\",25:\".\",28:\"-\",29:\"+\",30:\"!\",32:\"*\",33:\"/\",34:\"%\",35:\"&\",36:\"|\",37:\"^\",38:\"COMPARISON_TOKEN\"},productions_:[0,[3,2],[3,2],[3,1],[7,1],[7,2],[9,2],[9,3],[6,1],[6,2],[10,1],[11,1],[13,1],[13,1],[14,1],[14,3],[16,3],[16,4],[19,3],[21,3],[21,3],[23,1],[23,2],[23,3],[23,2],[23,1],[26,1],[27,2],[27,2],[27,2],[31,3],[31,3],[31,3],[31,3],[31,3],[31,3],[31,3],[31,3],[31,3],[4,1],[4,1],[4,3],[4,1],[4,1],[4,1],[4,1],[4,1],[4,3]],performAction:function(t,e,i,s,r,a,o){var h=a.length-1;switch(r){case 1:return{type:\"SCRIPT\",body:[a[h-1]],loc:this._$};case 2:return{type:\"SCRIPT\",body:a[h-1],loc:this._$};case 3:return{type:\"SCRIPT\",body:[],loc:this._$};case 6:this.$=[a[h-1]];break;case 7:this.$=a[h-2].concat([a[h-1]]);break;case 8:this.$=a[h];break;case 9:this.$=a[h-1].concat([a[h]]);break;case 10:this.$={type:\"EXPRESSION_BLOCK\",body:a[h],loc:this._$};break;case 11:this.$={type:\"IDENTIFIER\",value:a[h].toLowerCase(),loc:this._$};break;case 14:this.$=[a[h]];break;case 15:this.$=a[h-2].concat([a[h]]);break;case 16:this.$={type:\"CALL_EXPRESSION\",callee:a[h-2],arguments:[],loc:this._$};break;case 17:this.$={type:\"CALL_EXPRESSION\",callee:a[h-3],arguments:a[h-1],loc:this._$};break;case 18:this.$={type:\"LOGICAL_EXPRESSION\",left:a[h-2],right:a[h],operator:a[h-1],loc:this._$};break;case 19:case 20:this.$={type:\"ASSIGNMENT_EXPRESSION\",left:a[h-2],operator:a[h-1],right:a[h],loc:this._$};break;case 21:this.$=Number(a[h]);break;case 22:this.$=Number(a[h-1]);break;case 23:this.$=Number(a[h-2]+a[h-1]+a[h]);break;case 24:this.$=Number(\"0\"+a[h-1]+a[h]);break;case 25:this.$=0;break;case 26:this.$={type:\"NUMBER_LITERAL\",value:a[h],loc:this._$};break;case 27:case 28:case 29:this.$={type:\"UNARY_EXPRESSION\",value:a[h],operator:a[h-1],loc:this._$};break;case 30:case 31:case 32:case 33:case 34:case 35:case 36:case 37:case 38:this.$={type:\"BINARY_EXPRESSION\",left:a[h-2],right:a[h],operator:a[h-1],loc:this._$};break;case 41:case 47:this.$=a[h-1]}},table:[{3:1,4:2,5:[1,4],6:3,9:13,11:11,12:e,16:10,17:i,19:12,21:9,23:17,24:s,25:r,26:8,27:6,28:a,29:o,30:h,31:5},{1:[3]},{5:[1,21],7:32,8:A,20:n,28:l,29:c,32:g,33:m,34:u,35:f,36:d,37:p,38:_},{5:[1,34]},{1:[2,3]},t(E,[2,39]),t(E,[2,40]),{4:35,6:37,9:13,10:36,11:11,12:e,16:10,17:i,19:12,21:9,23:17,24:s,25:r,26:8,27:6,28:a,29:o,30:h,31:5},t(E,[2,42]),t(E,[2,43]),t(E,[2,44],{22:[1,38]}),t(E,[2,45],{17:[1,40],22:[1,39]}),t(E,[2,46]),t(b,[2,8],{31:5,27:6,26:8,21:9,16:10,11:11,19:12,23:17,4:41,12:e,17:i,24:s,25:r,28:a,29:o,30:h}),{4:42,11:11,12:e,16:10,17:i,19:12,21:9,23:17,24:s,25:r,26:8,27:6,28:a,29:o,30:h,31:5},{4:43,11:11,12:e,16:10,17:i,19:12,21:9,23:17,24:s,25:r,26:8,27:6,28:a,29:o,30:h,31:5},{4:44,11:11,12:e,16:10,17:i,19:12,21:9,23:17,24:s,25:r,26:8,27:6,28:a,29:o,30:h,31:5},t(E,[2,26]),t([5,8,15,17,18,20,22,28,29,32,33,34,35,36,37,38],[2,11]),t(E,[2,21],{25:[1,45]}),t(E,[2,25],{24:[1,46]}),{1:[2,1]},{4:47,11:11,12:e,16:10,17:i,19:12,21:9,23:17,24:s,25:r,26:8,27:6,28:a,29:o,30:h,31:5},{4:48,11:11,12:e,16:10,17:i,19:12,21:9,23:17,24:s,25:r,26:8,27:6,28:a,29:o,30:h,31:5},{4:49,11:11,12:e,16:10,17:i,19:12,21:9,23:17,24:s,25:r,26:8,27:6,28:a,29:o,30:h,31:5},{4:50,11:11,12:e,16:10,17:i,19:12,21:9,23:17,24:s,25:r,26:8,27:6,28:a,29:o,30:h,31:5},{4:51,11:11,12:e,16:10,17:i,19:12,21:9,23:17,24:s,25:r,26:8,27:6,28:a,29:o,30:h,31:5},{4:52,11:11,12:e,16:10,17:i,19:12,21:9,23:17,24:s,25:r,26:8,27:6,28:a,29:o,30:h,31:5},{4:53,11:11,12:e,16:10,17:i,19:12,21:9,23:17,24:s,25:r,26:8,27:6,28:a,29:o,30:h,31:5},{4:54,11:11,12:e,16:10,17:i,19:12,21:9,23:17,24:s,25:r,26:8,27:6,28:a,29:o,30:h,31:5},{4:55,11:11,12:e,16:10,17:i,19:12,21:9,23:17,24:s,25:r,26:8,27:6,28:a,29:o,30:h,31:5},{4:56,11:11,12:e,16:10,17:i,19:12,21:9,23:17,24:s,25:r,26:8,27:6,28:a,29:o,30:h,31:5},t(x,[2,6],{8:v}),t(T,[2,4]),{1:[2,2]},{7:32,8:A,18:[1,58],20:n,28:l,29:c,32:g,33:m,34:u,35:f,36:d,37:p,38:_},{18:[1,59]},t(S,[2,10]),{4:60,11:11,12:e,16:10,17:i,19:12,21:9,23:17,24:s,25:r,26:8,27:6,28:a,29:o,30:h,31:5},{4:61,11:11,12:e,16:10,17:i,19:12,21:9,23:17,24:s,25:r,26:8,27:6,28:a,29:o,30:h,31:5},{4:65,6:37,9:13,10:66,11:11,12:e,13:64,14:63,16:10,17:i,18:[1,62],19:12,21:9,23:17,24:s,25:r,26:8,27:6,28:a,29:o,30:h,31:5},t(b,[2,9],{7:67,8:A,20:n,28:l,29:c,32:g,33:m,34:u,35:f,36:d,37:p,38:_}),t(P,[2,27],{20:n,32:g,33:m,34:u,35:f,36:d,37:p}),t(P,[2,28],{20:n,32:g,33:m,34:u,35:f,36:d,37:p}),t(P,[2,29],{20:n,32:g,33:m,34:u,35:f,36:d,37:p}),t(E,[2,22],{24:[1,68]}),t(E,[2,24]),t(P,[2,30],{20:n,32:g,33:m,34:u,35:f,36:d,37:p}),t(P,[2,31],{20:n,32:g,33:m,34:u,35:f,36:d,37:p}),t(w,[2,32],{20:n,34:u,35:f,36:d,37:p}),t(w,[2,33],{20:n,34:u,35:f,36:d,37:p}),t(I,[2,34],{20:n,35:f,36:d}),t(R,[2,35],{20:n}),t(R,[2,36],{20:n}),t(I,[2,37],{20:n,35:f,36:d}),t(y,[2,38],{20:n,28:l,29:c,32:g,33:m,34:u,35:f,36:d,37:p,38:_}),t(E,[2,18]),t(T,[2,5]),t(E,[2,41]),t(E,[2,47]),t(y,[2,20],{20:n,28:l,29:c,32:g,33:m,34:u,35:f,36:d,37:p,38:_}),t(y,[2,19],{20:n,28:l,29:c,32:g,33:m,34:u,35:f,36:d,37:p,38:_}),t(B,[2,16]),{15:[1,70],18:[1,69]},t(S,[2,14]),t(S,[2,12],{7:32,8:A,20:n,28:l,29:c,32:g,33:m,34:u,35:f,36:d,37:p,38:_}),t(S,[2,13]),t(x,[2,7],{8:v}),t(E,[2,23]),t(B,[2,17]),{4:65,6:37,9:13,10:66,11:11,12:e,13:71,16:10,17:i,19:12,21:9,23:17,24:s,25:r,26:8,27:6,28:a,29:o,30:h,31:5},t(S,[2,15])],defaultActions:{4:[2,3],21:[2,1],34:[2,2]},parseError:function(t,e){if(!e.recoverable){var i=new Error(t);throw i.hash=e,i}this.trace(t)},parse:function(t){var e=this,i=[0],s=[null],r=[],a=this.table,o=\"\",h=0,A=0,n=r.slice.call(arguments,1),l=Object.create(this.lexer),c={yy:{}};for(var g in this.yy)Object.prototype.hasOwnProperty.call(this.yy,g)&&(c.yy[g]=this.yy[g]);l.setInput(t,c.yy),c.yy.lexer=l,c.yy.parser=this,void 0===l.yylloc&&(l.yylloc={});var m=l.yylloc;r.push(m);var u=l.options&&l.options.ranges;\"function\"==typeof c.yy.parseError?this.parseError=c.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var f,d,p,_,E,b,x,v,T=function(){var t;return\"number\"!=typeof(t=l.lex()||1)&&(t=e.symbols_[t]||t),t},S={};;){if(d=i[i.length-1],this.defaultActions[d]?p=this.defaultActions[d]:(null==f&&(f=T()),p=a[d]&&a[d][f]),void 0===p||!p.length||!p[0]){var P=\"\";for(E in v=[],a[d])this.terminals_[E]&&E>2&&v.push(\"'\"+this.terminals_[E]+\"'\");P=l.showPosition?\"Parse error on line \"+(h+1)+\":\\n\"+l.showPosition()+\"\\nExpecting \"+v.join(\", \")+\", got '\"+(this.terminals_[f]||f)+\"'\":\"Parse error on line \"+(h+1)+\": Unexpected \"+(1==f?\"end of input\":\"'\"+(this.terminals_[f]||f)+\"'\"),this.parseError(P,{text:l.match,token:this.terminals_[f]||f,line:l.yylineno,loc:m,expected:v})}if(p[0]instanceof Array&&p.length>1)throw new Error(\"Parse Error: multiple actions possible at state: \"+d+\", token: \"+f);switch(p[0]){case 1:i.push(f),s.push(l.yytext),r.push(l.yylloc),i.push(p[1]),f=null,A=l.yyleng,o=l.yytext,h=l.yylineno,m=l.yylloc;break;case 2:if(b=this.productions_[p[1]][1],S.$=s[s.length-b],S._$={first_line:r[r.length-(b||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(b||1)].first_column,last_column:r[r.length-1].last_column},u&&(S._$.range=[r[r.length-(b||1)].range[0],r[r.length-1].range[1]]),void 0!==(_=this.performAction.apply(S,[o,A,h,c.yy,p[1],s,r].concat(n))))return _;b&&(i=i.slice(0,-1*b*2),s=s.slice(0,-1*b),r=r.slice(0,-1*b)),i.push(this.productions_[p[1]][0]),s.push(S.$),r.push(S._$),x=a[i[i.length-2]][i[i.length-1]],i.push(x);break;case 3:return!0}}return!0}},C={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match=\"\",this.conditionStack=[\"INITIAL\"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\\r\\n?|\\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,i=t.split(/(?:\\r\\n?|\\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var s=this.match.split(/(?:\\r\\n?|\\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),i.length-1&&(this.yylineno-=i.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:i?(i.length===s.length?this.yylloc.first_column:0)+s[s.length-i.length].length-i[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError(\"Lexical error on line \"+(this.yylineno+1)+\". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n\"+this.showPosition(),{text:\"\",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?\"...\":\"\")+t.substr(-20).replace(/\\n/g,\"\")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?\"...\":\"\")).replace(/\\n/g,\"\")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join(\"-\");return t+this.upcomingInput()+\"\\n\"+e+\"^\"},test_match:function(t,e){var i,s,r;if(this.options.backtrack_lexer&&(r={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(r.yylloc.range=this.yylloc.range.slice(0))),(s=t[0].match(/(?:\\r\\n?|\\n).*/g))&&(this.yylineno+=s.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:s?s[s.length-1].length-s[s.length-1].match(/\\r?\\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],i=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),i)return i;if(this._backtrack){for(var a in r)this[a]=r[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,i,s;this._input||(this.done=!0),this._more||(this.yytext=\"\",this.match=\"\");for(var r=this._currentRules(),a=0;a<r.length;a++)if((i=this._input.match(this.rules[r[a]]))&&(!e||i[0].length>e[0].length)){if(e=i,s=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(i,r[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,r[s]))&&t:\"\"===this._input?this.EOF:this.parseError(\"Lexical error on line \"+(this.yylineno+1)+\". Unrecognized text.\\n\"+this.showPosition(),{text:\"\",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:\"INITIAL\"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(t,e,i,s){switch(i){case 0:break;case 1:return 24;case 2:return 38;case 3:return 22;case 4:return 20;case 5:return 12;case 6:return 5;case 7:return e.yytext[0]}},rules:[/^(?:\\s+)/,/^(?:[0-9]+)/,/^(?:(==|!=|<=|>=|<|>))/,/^(?:[+\\-*/%]?=)/,/^(?:(\\&\\&)|\\|\\|)/,/^(?:[a-zA-Z_][a-zA-Z0-9._]*)/,/^(?:$)/,/^(?:.)/],conditions:{INITIAL:{rules:[0,1,2,3,4,5,6,7],inclusive:!0}}};function U(){this.yy={}}return L.lexer=C,U.prototype=L,L.Parser=U,new U}();void 0!==a&&(t.parser=e,t.Parser=e.Parser,t.parse=function(){return e.parse.apply(e,arguments)},t.main=()=>{})}(n)),n}var c,g={};var m,u,f,d={},p={};function _(){if(m)return p;m=1,Object.defineProperty(p,\"__esModule\",{value:!0}),p.arrayJoin=function(t,e){const i=[];for(let s=0;s<t.length;s++){i.push(t[s]);s===t.length-1||i.push(e)}return i},p.flatten=function(t){return[].concat.apply([],t)},p.times=function(t,e){return new Array(t).fill(null).map((t,i)=>e(i))},p.repeat=function(t,e){return new Array(t).fill(e).join(\"\")};return p.ScopedIdMap=class{constructor(){this._map=new Map}get(t,e){const i=null==t?e:`${t}::${e}`;return this._map.has(i)||this._map.set(i,this._map.size),this._map.get(i)}size(){return this._map.size}},p.formatList=function(t){if(0===t.length)throw new Error(\"Cannot format an empty list\");if(1===t.length)return t[0];const e=t.map(t=>`\"${t}\"`),i=e.pop();return e.join(\", \")+` and ${i}`},p}function E(){if(u)return d;u=1,Object.defineProperty(d,\"__esModule\",{value:!0});const t=_();function e(e,i,s=1){const r=Math.max(e.first_line-1-s,0),a=e.last_line+s,o=i.split(\"\\n\").slice(r,a).map((t,i)=>{const s=i+r+1;return`${s>=e.first_line&&s<=e.last_line?\">\":\" \"} ${s} | ${t}`});if(e.first_line===e.last_line){const i=t.repeat(e.first_column,\" \"),s=t.repeat(e.last_column-e.first_column,\"^\"),a=e.first_line-r;o.splice(a,0,`    | ${i}${s}`)}return o.join(\"\\n\")}d.printLoc=e;class i extends Error{constructor(t,i,s){super(t),this.sourceContext=e(i,s),this.loc=i}}class s extends i{}return d.createUserError=function(t,e,i){return new s(t,e,i)},d.createCompilerError=function(t,e,s){return new i(t,e,s)},d}function b(){if(f)return s;f=1,Object.defineProperty(s,\"__esModule\",{value:!0});const t=(e||(e=1,Object.defineProperty(r,\"__esModule\",{value:!0}),r.getLoc=function(t,e){let i={destCol:1,srcCol:1,srcLine:1};t.forEach(t=>{t.destCol>e||(i=t)});const s=e-i.destCol;return{column:i.srcCol+s,line:i.srcLine}},r.preProcess=function(t){const e=[];let i=1,s=\"\",r=0,a=!1,o=!1,h=!1;for(let A=0;A<t.length;A++){const n=t[A];if(h){const t=s.length+1,a=A-r+1;e.push({destCol:t,srcCol:a,srcLine:i}),h=!1}\"\\n\"===n?(a=!1,i++,r=A+1,h=!0):\"\\r\"===n&&\"\\n\"===t[A+1]?(A++,a=!1,i++,r=A+1,h=!0):o&&\"*\"===n&&\"/\"===t[A+1]?(o=!1,A++,h=!0):\"\\\\\"===n&&\"\\\\\"===t[A+1]||\"/\"===n&&\"/\"===t[A+1]?(a=!0,A++):\"/\"===n&&\"*\"===t[A+1]?(o=!0,A++):a||o||(s+=n)}return[s,e]}),r),i=function(){if(A)return h;A=1;let t=l();return h={parse:t.parse}}(),a=function(){if(c)return g;c=1,Object.defineProperty(g,\"__esModule\",{value:!0});const t={ASSIGNMENT_EXPRESSION:[{type:\"NODE\",key:\"right\"}],SCRIPT:[{type:\"ARRAY\",key:\"body\"}],EXPRESSION_BLOCK:[{type:\"ARRAY\",key:\"body\"}],UNARY_EXPRESSION:[{type:\"NODE\",key:\"value\"}],NUMBER_LITERAL:[],IDENTIFIER:[],CALL_EXPRESSION:[{type:\"ARRAY\",key:\"arguments\"},{type:\"NODE\",key:\"callee\"}],BINARY_EXPRESSION:[{type:\"NODE\",key:\"left\"},{type:\"NODE\",key:\"right\"}],LOGICAL_EXPRESSION:[{type:\"NODE\",key:\"left\"},{type:\"NODE\",key:\"right\"}]};return g.mapAst=function e(i,s){const r=t[i.type];let a=i;if(null==r)throw new Error(`Unknown children definition for ${i.type}`);return r.forEach(t=>{if(\"NODE\"===t.type){const r=i[t.key],o=e(r,s);o!==r&&(a=Object.assign(Object.assign({},a),{[t.key]:o}))}else if(\"ARRAY\"===t.type){const r=i[t.key],o=r.map(t=>e(t,s)),h=r.some((t,e)=>t!==o[e]);h&&(a=Object.assign(Object.assign({},a),{[t.key]:o}))}}),s(a)},g}(),o=E();function n(e,i){const s=t.getLoc(i,e.first_column),r=t.getLoc(i,e.last_column);return{first_column:s.column,last_column:r.column,first_line:s.line,last_line:r.line}}return s.parse=function(e){const[s,r]=t.preProcess(e);try{const t=i.parse(s);return a.mapAst(t,t=>{if(1!==t.loc.first_line||1!=t.loc.last_line)throw o.createCompilerError(\"Unexpected multiline\",t.loc,e);return Object.assign(Object.assign({},t),{loc:n(t.loc,r)})})}catch(t){if(null==t.hash)throw t;throw o.createUserError(`Parse Error: ${t.message.split(\"\\n\")[3]}`,n(t.hash.loc,r),e)}},s}var x,v,T={},S={},P={},w={};function I(){if(x)return w;return x=1,Object.defineProperty(w,\"__esModule\",{value:!0}),w.write=function(t,e){let i=52;var s,r,a,o=64-i-1,h=(1<<o)-1,A=h>>1,n=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,l=0,c=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(r=isNaN(e)?1:0,s=h):(s=Math.floor(Math.log(e)/Math.LN2),e*(a=Math.pow(2,-s))<1&&(s--,a*=2),(e+=s+A>=1?n/a:n*Math.pow(2,1-A))*a>=2&&(s++,a/=2),s+A>=h?(r=0,s=h):s+A>=1?(r=(e*a-1)*Math.pow(2,i),s+=A):(r=e*Math.pow(2,A-1)*Math.pow(2,i),s=0));i>=8;t[0+l]=255&r,l+=1,r/=256,i-=8);for(s=s<<i|r,o+=i;o>0;t[0+l]=255&s,l+=1,s/=256,o-=8);t[0+l-1]|=128*c},w}function R(){return v||(v=1,function(t){var e=P&&P.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var i in t)Object.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e.default=t,e};Object.defineProperty(t,\"__esModule\",{value:!0});const i=e(I()),s=_();function r(t){const e=new Uint8Array(8);return i.write(e,t),e}function a(t){const e=[];do{let i=127&t;0!==(t>>>=7)&&(i|=128),e.push(i)}while(0!==t);return e}function o(t){let e=[],i=0,s=Math.ceil(Math.log2(Math.abs(t))),r=t<0,a=!0;for(;a;)i=127&t,t>>=7,r&&(t|=-(1<<s-7)),(0!=t||64&i)&&(-1!=t||64&~i)?i|=128:a=!1,e.push(i);return e}t.MAGIC=[0,97,115,109],t.WASM_VERSION=[1,0,0,0],t.EPSILON=1e-5,t.SECTION={TYPE:1,IMPORT:2,FUNC:3,MEMORY:5,GLOBAL:6,EXPORT:7,CODE:10},t.EXPORT_TYPE={FUNC:0,TABLE:1,MEMORY:2,GLOBAL:3},t.op={block:t=>[2,t],loop:t=>[3,t],if:t=>[4,t],else:5,end:11,br_if:t=>[13,...a(t)],call:t=>[16,...a(t)],drop:26,select:27,local_get:t=>[32,...a(t)],local_set:t=>[33,...a(t)],local_tee:t=>[34,...a(t)],global_get:t=>[35,...a(t)],global_set:t=>[36,...a(t)],f64_load:(t,e)=>[43,...a(t),...a(e)],f64_store:(t,e)=>[57,...a(t),...a(e)],i32_const:t=>[65,...o(t)],f64_const:t=>[68,...r(t)],i32_eqz:69,i32_ne:71,i32_lt_s:72,i32_lt_u:73,i32_gt_s:74,i32_le_s:76,i32_le_u:77,i32_ge_s:78,f64_eq:97,f64_ne:98,f64_lt:99,f64_gt:100,f64_le:101,f64_ge:102,i32_add:106,i32_sub:107,i32_mul:108,i32_rem_s:111,i32_and:113,i32_or:114,i64_rem_s:129,i64_and:131,i64_or:132,f64_abs:153,f64_neg:154,f64_ceil:155,f64_floor:156,f64_sqrt:159,f64_add:160,f64_sub:161,f64_mul:162,f64_div:163,f64_min:164,f64_max:165,i32_trunc_f64_s:170,i32_trunc_f64_u:171,i64_trunc_s_f64:176,f64_convert_i64_s:185,f64_convert_i32_s:183},t.VAL_TYPE={i32:127,i64:126,f32:125,f64:124},t.MUTABILITY={const:0,var:1},t.BLOCK={void:64,i32:127,i64:126,f32:125,f64:124},t.FUNCTION_TYPE=96,t.MEMORY_IDX=2,t.GLOBAL_TYPE=3,t.TYPE_IDX=0,t.IS_ZEROISH=[t.op.f64_abs,...t.op.f64_const(t.EPSILON),t.op.f64_lt],t.IS_NOT_ZEROISH=[t.op.f64_abs,...t.op.f64_const(t.EPSILON),t.op.f64_gt],t.encodef64=r,t.encodeString=t=>[t.length].concat(t.split(\"\").map(t=>t.charCodeAt(0))),t.unsignedLEB128=a,t.signedLEB128=o,t.encodeFlatVector=t=>a(t.length).concat(t),t.encodeNestedVector=t=>a(t.length).concat(s.flatten(t)),t.encodeSection=function(e,i){if(0===i.length)return[];const s=t.encodeFlatVector(t.encodeNestedVector(i));return s.unshift(e),s}}(P)),P}var y,B={};function L(){if(y)return B;y=1,Object.defineProperty(B,\"__esModule\",{value:!0});const t={sin:Math.sin,cos:Math.cos,tan:Math.tan,asin:Math.asin,acos:Math.acos,atan:Math.atan,atan2:Math.atan2,rand:t=>Math.random()*t,pow:Math.pow,log:Math.log,log10:Math.log10,exp:Math.exp,sigmoid:function(t,e){const i=1+Math.exp(-t*e);return Math.abs(i)>1e-5?1/i:0}};return B.default=t,B}var C,U,M,F,Q={},V={};function D(){return C||(C=1,function(t){Object.defineProperty(t,\"__esModule\",{value:!0});t.MAX_LOOP_COUNT=1048576,t.BUFFER_SIZE=8388608,t.WASM_MEMORY_SIZE=Math.ceil(8*t.BUFFER_SIZE*2/65536)}(V)),V}function q(){if(U)return Q;U=1,Object.defineProperty(Q,\"__esModule\",{value:!0});const t=R(),e=D();return Q.localFuncMap={sqr:{args:[t.VAL_TYPE.f64],returns:[t.VAL_TYPE.f64],binary:[...t.op.local_get(0),...t.op.local_get(0),t.op.f64_mul]},bor:{args:[t.VAL_TYPE.f64,t.VAL_TYPE.f64],returns:[t.VAL_TYPE.f64],binary:[...t.op.local_get(0),...t.IS_NOT_ZEROISH,...t.op.local_get(1),...t.IS_NOT_ZEROISH,t.op.i32_or,...t.op.i32_const(0),t.op.i32_ne,t.op.f64_convert_i32_s]},band:{args:[t.VAL_TYPE.f64,t.VAL_TYPE.f64],returns:[t.VAL_TYPE.f64],binary:[...t.op.local_get(0),...t.IS_NOT_ZEROISH,...t.op.local_get(1),...t.IS_NOT_ZEROISH,t.op.i32_and,...t.op.i32_const(0),t.op.i32_ne,t.op.f64_convert_i32_s]},sign:{args:[t.VAL_TYPE.f64],returns:[t.VAL_TYPE.f64],binary:[...t.op.f64_const(0),...t.op.local_get(0),t.op.f64_lt,...t.op.local_get(0),...t.op.f64_const(0),t.op.f64_lt,t.op.i32_sub,t.op.f64_convert_i32_s]},mod:{args:[t.VAL_TYPE.f64,t.VAL_TYPE.f64],returns:[t.VAL_TYPE.f64],localVariables:[t.VAL_TYPE.i32],binary:[...t.op.local_get(1),t.op.i32_trunc_f64_s,...t.op.local_tee(2),...t.op.i32_const(0),t.op.i32_ne,...t.op.if(t.BLOCK.f64),...t.op.local_get(0),t.op.i32_trunc_f64_s,...t.op.local_get(2),t.op.i32_rem_s,t.op.f64_convert_i32_s,t.op.else,...t.op.f64_const(0),t.op.end]},bitwiseOr:{args:[t.VAL_TYPE.f64,t.VAL_TYPE.f64],returns:[t.VAL_TYPE.f64],binary:[...t.op.local_get(0),t.op.i64_trunc_s_f64,...t.op.local_get(1),t.op.i64_trunc_s_f64,t.op.i64_or,t.op.f64_convert_i64_s]},bitwiseAnd:{args:[t.VAL_TYPE.f64,t.VAL_TYPE.f64],returns:[t.VAL_TYPE.f64],binary:[...t.op.local_get(0),t.op.i64_trunc_s_f64,...t.op.local_get(1),t.op.i64_trunc_s_f64,t.op.i64_and,t.op.f64_convert_i64_s]},div:{args:[t.VAL_TYPE.f64,t.VAL_TYPE.f64],returns:[t.VAL_TYPE.f64],localVariables:[t.VAL_TYPE.i32],binary:[...t.op.local_get(1),...t.op.f64_const(0),t.op.f64_ne,...t.op.if(t.BLOCK.f64),...t.op.local_get(0),...t.op.local_get(1),t.op.f64_div,t.op.else,...t.op.f64_const(0),t.op.end]},_getBufferIndex:{args:[t.VAL_TYPE.f64],returns:[t.VAL_TYPE.i32],localVariables:[t.VAL_TYPE.f64,t.VAL_TYPE.i32],binary:[...t.op.f64_const(t.EPSILON),...t.op.local_get(0),t.op.f64_add,...t.op.local_tee(1),t.op.i32_trunc_f64_s,...t.op.local_set(2),...t.op.i32_const(-1),...t.op.local_get(2),...t.op.i32_const(8),t.op.i32_mul,...t.op.local_get(2),...t.op.i32_const(0),t.op.i32_lt_s,...t.op.local_get(2),...t.op.i32_const(e.BUFFER_SIZE-1),t.op.i32_gt_s,t.op.i32_or,t.op.select]}},Q}function z(){if(M)return S;M=1;var t=S&&S.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(S,\"__esModule\",{value:!0});const e=R(),i=t(L()),s=E(),r=q(),a=_(),o=D();function h(t,l){var c,g,m;switch(t.type){case\"SCRIPT\":{const i=t.body.map((t,i)=>[...h(t,l),e.op.drop]);return a.flatten(i)}case\"EXPRESSION_BLOCK\":return A(t.body,l);case\"BINARY_EXPRESSION\":{const i=h(t.left,l),r=h(t.right,l),a={\"+\":[e.op.f64_add],\"-\":[e.op.f64_sub],\"*\":[e.op.f64_mul],\"/\":l.resolveFunc(\"div\"),\"%\":l.resolveFunc(\"mod\"),\"|\":l.resolveFunc(\"bitwiseOr\"),\"&\":l.resolveFunc(\"bitwiseAnd\"),\"^\":l.resolveFunc(\"pow\"),\"==\":[e.op.f64_sub,...e.IS_ZEROISH,e.op.f64_convert_i32_s],\"!=\":[e.op.f64_sub,...e.IS_NOT_ZEROISH,e.op.f64_convert_i32_s],\"<\":[e.op.f64_lt,e.op.f64_convert_i32_s],\">\":[e.op.f64_gt,e.op.f64_convert_i32_s],\"<=\":[e.op.f64_le,e.op.f64_convert_i32_s],\">=\":[e.op.f64_ge,e.op.f64_convert_i32_s]}[t.operator];if(null==a)throw s.createCompilerError(`Unknown binary expression operator ${t.operator}`,t.loc,l.rawSource);return[...i,...r,...a]}case\"CALL_EXPRESSION\":{const g=t.callee.value,m=t.arguments,u=e=>{if(m.length<e)throw s.createUserError(`Too few arguments passed to \\`${g}()\\`. Expected ${e} but only got ${m.length}.`,t.loc,l.rawSource);if(m.length>e)throw s.createUserError(`Too many arguments passed to \\`${g}()\\`. Expected ${e} but got ${m.length}.`,m[e].loc,l.rawSource)};switch(g){case\"exec2\":return u(2),A(t.arguments,l);case\"exec3\":return u(3),A(t.arguments,l);case\"if\":u(3);const[i,r,a]=t.arguments;return function(t,i,s,r){return[...h(t,r),...e.IS_NOT_ZEROISH,...e.op.if(e.BLOCK.f64),...h(i,r),e.op.else,...h(s,r),e.op.end]}(i,r,a,l);case\"while\":return u(1),function(t,i){const s=h(t,i),r=i.resolveLocal(e.VAL_TYPE.i32);return[...e.op.i32_const(0),...e.op.local_set(r),...e.op.loop(e.BLOCK.void),...e.op.local_get(r),...e.op.i32_const(1),e.op.i32_add,...e.op.local_tee(r),...e.op.i32_const(o.MAX_LOOP_COUNT),e.op.i32_lt_u,...s,...e.IS_NOT_ZEROISH,e.op.i32_and,...e.op.br_if(0),e.op.end,...e.op.f64_const(0)]}(t.arguments[0],l);case\"loop\":return u(2),function(t,i,s){const r=h(i,s),a=s.resolveLocal(e.VAL_TYPE.i32);return[...e.op.block(e.BLOCK.void),...h(t,s),e.op.i32_trunc_f64_s,...e.op.local_tee(a),...e.op.i32_const(0),e.op.i32_le_s,...e.op.br_if(1),...e.op.loop(e.BLOCK.void),...r,e.op.drop,...e.op.local_get(a),...e.op.i32_const(1),e.op.i32_sub,...e.op.local_tee(a),...e.op.i32_const(0),e.op.i32_ne,...e.op.br_if(0),e.op.end,e.op.end,...e.op.f64_const(0)]}(t.arguments[0],t.arguments[1],l);case\"megabuf\":case\"gmegabuf\":u(1);const m=l.resolveLocal(e.VAL_TYPE.i32);return[...h(t.arguments[0],l),...null!==(c=l.resolveFunc(\"_getBufferIndex\"))&&void 0!==c?c:[],...e.op.local_tee(m),...e.op.i32_const(-1),e.op.i32_ne,...e.op.if(e.BLOCK.f64),...e.op.local_get(m),...e.op.f64_load(3,n(g)),e.op.else,...e.op.f64_const(0),e.op.end];case\"assign\":u(2);const f=t.arguments[0];if(\"IDENTIFIER\"!=f.type)throw s.createUserError(\"Expected the first argument of `assign()` to be an identifier.\",f.loc,l.rawSource);const d=l.resolveVar(f.value);return[...h(t.arguments[1],l),...e.op.global_set(d),...e.op.global_get(d)]}const f=a.flatten(t.arguments.map(t=>h(t,l)));switch(g){case\"abs\":return u(1),[...f,e.op.f64_abs];case\"sqrt\":return u(1),[...f,e.op.f64_abs,e.op.f64_sqrt];case\"int\":case\"floor\":return u(1),[...f,e.op.f64_floor];case\"min\":return u(2),[...f,e.op.f64_min];case\"max\":return u(2),[...f,e.op.f64_max];case\"above\":return u(2),[...f,e.op.f64_gt,e.op.f64_convert_i32_s];case\"below\":return u(2),[...f,e.op.f64_lt,e.op.f64_convert_i32_s];case\"equal\":return u(2),[...f,e.op.f64_sub,...e.IS_ZEROISH,e.op.f64_convert_i32_s];case\"bnot\":return u(1),[...f,...e.IS_ZEROISH,e.op.f64_convert_i32_s];case\"ceil\":return u(1),[...f,e.op.f64_ceil]}const d=l.resolveFunc(g);if(null==d||g.startsWith(\"_\"))throw s.createUserError(`\"${g}\" is not defined.`,t.callee.loc,l.rawSource);if(null!=i.default[g])u(i.default[g].length);else{if(null==r.localFuncMap[g])throw s.createCompilerError(`Missing arity information for the function \\`${g}()\\``,t.callee.loc,l.rawSource);u(r.localFuncMap[g].args.length)}return[...f,...d]}case\"ASSIGNMENT_EXPRESSION\":{const{left:i}=t,r=h(t.right,l),a=function(t,i){const r={\"+=\":[e.op.f64_add],\"-=\":[e.op.f64_sub],\"*=\":[e.op.f64_mul],\"/=\":[e.op.f64_div],\"%=\":i.resolveFunc(\"mod\"),\"=\":null},a=r[t.operator];if(void 0===a)throw s.createCompilerError(`Unknown assignment operator \"${t.operator}\"`,t.loc,i.rawSource);return a}(t,l);if(\"IDENTIFIER\"===i.type){const t=l.resolveVar(i.value),s=e.op.global_get(t),o=e.op.global_set(t);return null===a?[...r,...o,...s]:[...s,...r,...a,...o,...s]}if(\"CALL_EXPRESSION\"!==i.type)throw s.createCompilerError(`Unexpected left hand side type for assignment: ${i.type}`,t.loc,l.rawSource);const o=l.resolveLocal(e.VAL_TYPE.i32);if(1!==i.arguments.length)throw s.createUserError(`Expected 1 argument when assinging to a buffer but got ${i.arguments.length}.`,0===i.arguments.length?i.loc:i.arguments[1].loc,l.rawSource);const A=i.callee.value;if(\"gmegabuf\"!==A&&\"megabuf\"!==A)throw s.createUserError(\"The only function calls which may be assigned to are `gmegabuf()` and `megabuf()`.\",i.callee.loc,l.rawSource);const c=n(A);if(null===a){const t=l.resolveLocal(e.VAL_TYPE.i32),s=l.resolveLocal(e.VAL_TYPE.f64);return[...r,...e.op.local_set(s),...h(i.arguments[0],l),...null!==(g=l.resolveFunc(\"_getBufferIndex\"))&&void 0!==g?g:[],...e.op.local_tee(t),...e.op.i32_const(0),e.op.i32_lt_s,...e.op.if(e.BLOCK.f64),...e.op.f64_const(0),e.op.else,...e.op.local_get(t),...e.op.local_tee(o),...e.op.local_get(s),...e.op.f64_store(3,c),...e.op.local_get(s),e.op.end]}const u=l.resolveLocal(e.VAL_TYPE.i32),f=l.resolveLocal(e.VAL_TYPE.i32),d=l.resolveLocal(e.VAL_TYPE.f64),p=l.resolveLocal(e.VAL_TYPE.f64);return[...r,...e.op.local_set(d),...h(i.arguments[0],l),...null!==(m=l.resolveFunc(\"_getBufferIndex\"))&&void 0!==m?m:[],...e.op.local_tee(u),...e.op.i32_const(-1),e.op.i32_ne,...e.op.local_tee(f),...e.op.if(e.BLOCK.f64),...e.op.local_get(u),...e.op.f64_load(3,c),e.op.else,...e.op.f64_const(0),e.op.end,...e.op.local_get(d),...a,...e.op.local_tee(p),...e.op.local_get(f),...e.op.if(e.BLOCK.void),...e.op.local_get(u),...e.op.local_get(p),...e.op.f64_store(3,c),e.op.end]}case\"LOGICAL_EXPRESSION\":{const i=h(t.left,l),r=h(t.right,l),a={\"&&\":{comparison:e.IS_ZEROISH,shortCircutValue:0},\"||\":{comparison:e.IS_NOT_ZEROISH,shortCircutValue:1}}[t.operator];if(null==a)throw s.createCompilerError(`Unknown logical expression operator ${t.operator}`,t.loc,l.rawSource);const{comparison:o,shortCircutValue:A}=a;return[...i,...o,...e.op.if(e.BLOCK.f64),...e.op.f64_const(A),e.op.else,...r,...e.IS_NOT_ZEROISH,e.op.f64_convert_i32_s,e.op.end]}case\"UNARY_EXPRESSION\":{const i=h(t.value,l),r={\"-\":[e.op.f64_neg],\"+\":[],\"!\":[...e.IS_ZEROISH,e.op.f64_convert_i32_s]}[t.operator];if(null==r)throw s.createCompilerError(`Unknown logical unary operator ${t.operator}`,t.loc,l.rawSource);return[...i,...r]}case\"IDENTIFIER\":const u=t.value;return e.op.global_get(l.resolveVar(u));case\"NUMBER_LITERAL\":return e.op.f64_const(t.value);default:throw s.createCompilerError(`Unknown AST node type ${t.type}`,t.loc,l.rawSource)}}function A(t,i){const s=t.map((t,e)=>h(t,i));return a.flatten(a.arrayJoin(s,[e.op.drop]))}function n(t){switch(t){case\"gmegabuf\":return 8*o.BUFFER_SIZE;case\"megabuf\":return 0}}return S.emit=h,S}function N(){if(F)return T;F=1;var t=T&&T.__importDefault||function(t){return t&&t.__esModule?t:{default:t}},e=T&&T.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var i in t)Object.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e.default=t,e};Object.defineProperty(T,\"__esModule\",{value:!0});const i=b(),s=z(),r=R(),a=t(L()),o=e(_()),h=q(),A=D();return T.compileModule=function({pools:t,functions:e,eelVersion:n=2,preParsed:l=!1}){if(Object.keys(t).includes(\"shims\"))throw new Error('You may not name a pool \"shims\". \"shims\" is reserved for injected JavaScript functions.');const c=[];Object.entries(t).forEach(([t,e])=>{e.forEach(e=>{c.push([t,e])})});const g=new o.ScopedIdMap;c.forEach(([t,e])=>{g.get(t,e)});const m=Object.entries(a.default).map(([t,e])=>({args:new Array(e.length).fill(null).map(t=>r.VAL_TYPE.f64),returns:[r.VAL_TYPE.f64],name:t})),u=[],f=[];Object.entries(e).forEach(([e,{pool:a,code:A}])=>{if(null==t[a]){const i=Object.keys(t);if(0===i.length)throw new Error(`The function \"${e}\" was declared as using a variable pool named \"${a}\" but no pools were defined.`);throw new Error(`The function \"${e}\" was declared as using a variable pool named \"${a}\" which is not among the variable pools defined. The defined variable pools are: ${o.formatList(i)}.`)}const c=l?A:i.parse(A);if(\"string\"==typeof c)throw new Error(\"Got passed unparsed code without setting the preParsed flag\");if(\"SCRIPT\"!==c.type)throw new Error(\"Invalid AST\");if(0===c.body.length)return;const d=[],p={resolveVar:t=>/^reg\\d\\d$/.test(t)?g.get(null,t):g.get(a,t),resolveLocal:t=>(d.push(t),d.length-1),resolveFunc:t=>{const e=m.findIndex(e=>e.name===t);if(-1!==e){const i=r.op.call(e);return\"rand\"===t&&1===n?[...i,r.op.f64_floor]:i}if(null==h.localFuncMap[t])return null;let i=u.indexOf(t);return-1===i&&(u.push(t),i=u.length-1),r.op.call(i+m.length)},rawSource:A},_=s.emit(c,p);f.push({binary:_,exportName:e,args:[],returns:[],localVariables:d})});const d=u.map(t=>{const e=h.localFuncMap[t];if(null==e)throw new Error(`Undefined local function \"${t}\"`);return e}),p=t=>[...t.args,\"|\",...t.returns].join(\"-\"),_=[],E=new Map;function b(t){const e=p(t),i=E.get(e);if(null==i)throw new Error(`Failed to get a type index for key ${e}`);return i}[...m,...d,...f].forEach(t=>{const e=p(t);E.has(e)||(_.push([r.FUNCTION_TYPE,...r.encodeFlatVector(t.args),...r.encodeFlatVector(t.returns)]),E.set(e,_.length-1))});const x=[...c.map(([t,e])=>[...r.encodeString(t),...r.encodeString(e),r.GLOBAL_TYPE,r.VAL_TYPE.f64,r.MUTABILITY.var]),...m.map((t,e)=>{const i=b(t);return[...r.encodeString(\"shims\"),...r.encodeString(t.name),r.TYPE_IDX,...r.unsignedLEB128(i)]})],v=[...d,...f].map(t=>{const e=b(t);return r.unsignedLEB128(e)}),T=[[1,...r.unsignedLEB128(A.WASM_MEMORY_SIZE),...r.unsignedLEB128(A.WASM_MEMORY_SIZE)]],S=g.size()-c.length,P=o.times(S,()=>[r.VAL_TYPE.f64,r.MUTABILITY.var,...r.op.f64_const(0),r.op.end]),w=[...f].map((t,e)=>{const i=e+m.length+d.length;return[...r.encodeString(t.exportName),r.EXPORT_TYPE.FUNC,...r.unsignedLEB128(i)]}),I=[...d,...f].map(t=>{var e;const i=(null!==(e=t.localVariables)&&void 0!==e?e:[]).map(t=>[...r.unsignedLEB128(1),t]);return r.encodeFlatVector([...r.encodeNestedVector(i),...t.binary,r.op.end])});return new Uint8Array([...r.MAGIC,...r.WASM_VERSION,...r.encodeSection(r.SECTION.TYPE,_),...r.encodeSection(r.SECTION.IMPORT,x),...r.encodeSection(r.SECTION.FUNC,v),...r.encodeSection(r.SECTION.MEMORY,T),...r.encodeSection(r.SECTION.GLOBAL,P),...r.encodeSection(r.SECTION.EXPORT,w),...r.encodeSection(r.SECTION.CODE,I)])},T}var X,O,k={};var G=function(){if(O)return i;O=1;var t=i&&i.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(i,\"__esModule\",{value:!0});const e=b();i.parse=e.parse;const s=N();i.compileModule=s.compileModule;const r=t(L());i.shims=r.default;const a=function(){if(X)return k;X=1;var t=k&&k.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(k,\"__esModule\",{value:!0});const e=t(L()),i=N();return k.loadModule=async function({pools:t,functions:s,eelVersion:r=2}){let a={};Object.entries(t).forEach(([t,e])=>{a[t]=new Set(Object.keys(e))});const o=i.compileModule({pools:a,functions:s,eelVersion:r}),h=await WebAssembly.compile(o);var A=Object.assign(Object.assign({},t),{shims:e.default});return await WebAssembly.instantiate(h,A)},k}();return i.loadModule=a.loadModule,i}();const Y=\"undefined\"!=typeof BigUint64Array,W=Symbol(),J=new TextDecoder(\"utf-16le\");function K(t,e){const i=new Uint32Array(t)[e+-4>>>2]>>>1,s=new Uint16Array(t,e,i);return i<=32?String.fromCharCode.apply(String,s):J.decode(s)}function j(t){const e={};function i(t,e){return t?K(t.buffer,e):\"<yet unknown>\"}const s=t.env=t.env||{};return s.abort=s.abort||function(t,r,a,o){const h=e.memory||s.memory;throw Error(`abort: ${i(h,t)} at ${i(h,r)}:${a}:${o}`)},s.trace=s.trace||function(t,r,...a){const o=e.memory||s.memory;console.log(`trace: ${i(o,t)}${r?\" \":\"\"}${a.slice(0,r).join(\", \")}`)},s.seed=s.seed||Date.now,t.Math=t.Math||Math,t.Date=t.Date||Date,e}function H(t,e){const i=e.exports,s=i.memory,r=i.table,a=i.__new,o=i.__retain,h=i.__rtti_base||-1;function A(t){const e=function(t){const e=new Uint32Array(s.buffer);if((t>>>=0)>=e[h>>>2])throw Error(`invalid id: ${t}`);return e[(h+4>>>2)+2*t]}(t);if(!(7&e))throw Error(`not an array: ${t}, flags=${e}`);return e}function n(t){const e=new Uint32Array(s.buffer);if((t>>>=0)>=e[h>>>2])throw Error(`invalid id: ${t}`);return e[(h+4>>>2)+2*t+1]}function l(t){return 31-Math.clz32(t>>>6&31)}function c(t,e,i){const r=s.buffer;if(i)switch(t){case 2:return new Float32Array(r);case 3:return new Float64Array(r)}else switch(t){case 0:return new(e?Int8Array:Uint8Array)(r);case 1:return new(e?Int16Array:Uint16Array)(r);case 2:return new(e?Int32Array:Uint32Array)(r);case 3:return new(e?BigInt64Array:BigUint64Array)(r)}throw Error(`unsupported align: ${t}`)}function g(t){const e=new Uint32Array(s.buffer),i=A(e[t+-8>>>2]),r=l(i);let a=4&i?t:e[t+4>>>2];const o=2&i?e[t+12>>>2]:e[a+-4>>>2]>>>r;return c(r,2048&i,4096&i).subarray(a>>>=r,a+o)}function m(t,e,i){return new t(u(t,e,i))}function u(t,e,i){const r=s.buffer,a=new Uint32Array(r),o=a[i+4>>>2];return new t(r,o,a[o+-4>>>2]>>>e)}function f(e,i,s){t[`__get${i}`]=m.bind(null,e,s),t[`__get${i}View`]=u.bind(null,e,s)}return t.__newString=function(t){if(null==t)return 0;const e=t.length,i=a(e<<1,1),r=new Uint16Array(s.buffer);for(var o=0,h=i>>>1;o<e;++o)r[h+o]=t.charCodeAt(o);return i},t.__getString=function(t){if(!t)return null;const e=s.buffer;if(1!==new Uint32Array(e)[t+-8>>>2])throw Error(`not a string: ${t}`);return K(e,t)},t.__newArray=function(t,e){const i=A(t),r=l(i),h=e.length,n=a(h<<r,4&i?t:0);let g;if(4&i)g=n;else{const e=a(2&i?16:12,t),A=new Uint32Array(s.buffer);A[e+0>>>2]=o(n),A[e+4>>>2]=n,A[e+8>>>2]=h<<r,2&i&&(A[e+12>>>2]=h),g=e}const m=c(r,2048&i,4096&i);if(16384&i)for(let t=0;t<h;++t)m[(n>>>r)+t]=o(e[t]);else m.set(e,n>>>r);return g},t.__getArrayView=g,t.__getArray=function(t){const e=g(t),i=e.length,s=new Array(i);for(let t=0;t<i;t++)s[t]=e[t];return s},t.__getArrayBuffer=function(t){const e=s.buffer,i=new Uint32Array(e)[t+-4>>>2];return e.slice(t,t+i)},[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array].forEach(t=>{f(t,t.name,31-Math.clz32(t.BYTES_PER_ELEMENT))}),Y&&[BigUint64Array,BigInt64Array].forEach(t=>{f(t,t.name.slice(3),3)}),t.__instanceof=function(t,e){const i=new Uint32Array(s.buffer);let r=i[t+-8>>>2];if(r<=i[h>>>2])do{if(r==e)return!0;r=n(r)}while(r);return!1},t.memory=t.memory||s,t.table=t.table||r,it(i,t)}function Z(t){return\"undefined\"!=typeof Response&&t instanceof Response}function $(t){return t instanceof WebAssembly.Module}async function tt(t,e={}){if(Z(t=await t))return et(t,e);const i=$(t)?t:await WebAssembly.compile(t),s=j(e),r=await WebAssembly.instantiate(i,e);return{module:i,instance:r,exports:H(s,r)}}async function et(t,e={}){if(!WebAssembly.instantiateStreaming)return tt(Z(t=await t)?t.arrayBuffer():t,e);const i=j(e),s=await WebAssembly.instantiateStreaming(t,e),r=H(i,s.instance);return{...s,exports:r}}function it(t,e={}){const i=t.__argumentsLength?e=>{t.__argumentsLength.value=e}:t.__setArgumentsLength||t.__setargc||(()=>{});for(let s in t){if(!Object.prototype.hasOwnProperty.call(t,s))continue;const r=t[s];let a=s.split(\".\"),o=e;for(;a.length>1;){let t=a.shift();Object.prototype.hasOwnProperty.call(o,t)||(o[t]={}),o=o[t]}let h=a[0],A=h.indexOf(\"#\");if(A>=0){const e=h.substring(0,A),a=o[e];if(void 0===a||!a.prototype){const t=function(...e){return t.wrap(t.prototype.constructor(0,...e))};t.prototype={valueOf(){return this[W]}},t.wrap=function(e){return Object.create(t.prototype,{[W]:{value:e,writable:!1}})},a&&Object.getOwnPropertyNames(a).forEach(e=>Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(a,e))),o[e]=t}if(h=h.substring(A+1),o=o[e].prototype,/^(get|set):/.test(h)){if(!Object.prototype.hasOwnProperty.call(o,h=h.substring(4))){let e=t[s.replace(\"set:\",\"get:\")],i=t[s.replace(\"get:\",\"set:\")];Object.defineProperty(o,h,{get(){return e(this[W])},set(t){i(this[W],t)},enumerable:!0})}}else\"constructor\"===h?(o[h]=(...t)=>(i(t.length),r(...t))).original=r:(o[h]=function(...t){return i(t.length),r(this[W],...t)}).original=r}else/^(get|set):/.test(h)?Object.prototype.hasOwnProperty.call(o,h=h.substring(4))||Object.defineProperty(o,h,{get:t[s.replace(\"set:\",\"get:\")],set:t[s.replace(\"get:\",\"set:\")],enumerable:!0}):\"function\"==typeof r&&r!==i?(o[h]=(...t)=>(i(t.length),r(...t))).original=r:o[h]=r}return e}var st={instantiate:tt,instantiateSync:function(t,e={}){const i=$(t)?t:new WebAssembly.Module(t),s=j(e),r=new WebAssembly.Instance(i,e);return{module:i,instance:r,exports:H(s,r)}},instantiateStreaming:et,demangle:it};class rt{constructor(t,e,i=!1){this.samplesIn=t,this.samplesOut=e,this.equalize=i,this.NFREQ=2*e,this.equalize&&this.initEqualizeTable(),this.initBitRevTable(),this.initCosSinTable()}initEqualizeTable(){this.equalizeArr=new Float32Array(this.samplesOut);const t=1/this.samplesOut;for(let e=0;e<this.samplesOut;e++)this.equalizeArr[e]=-.02*Math.log((this.samplesOut-e)*t)}initBitRevTable(){this.bitrevtable=new Uint16Array(this.NFREQ);for(let t=0;t<this.NFREQ;t++)this.bitrevtable[t]=t;let t=0;for(let e=0;e<this.NFREQ;e++){if(t>e){const i=this.bitrevtable[e];this.bitrevtable[e]=this.bitrevtable[t],this.bitrevtable[t]=i}let i=this.NFREQ>>1;for(;i>=1&&t>=i;)t-=i,i>>=1;t+=i}}initCosSinTable(){let t=2,e=0;for(;t<=this.NFREQ;)e+=1,t<<=1;this.cossintable=[new Float32Array(e),new Float32Array(e)],t=2;let i=0;for(;t<=this.NFREQ;){const e=-2*Math.PI/t;this.cossintable[0][i]=Math.cos(e),this.cossintable[1][i]=Math.sin(e),i+=1,t<<=1}}timeToFrequencyDomain(t){const e=new Float32Array(this.NFREQ),i=new Float32Array(this.NFREQ);for(let s=0;s<this.NFREQ;s++){const r=this.bitrevtable[s];r<this.samplesIn?e[s]=t[r]:e[s]=0,i[s]=0}let s=2,r=0;for(;s<=this.NFREQ;){const t=this.cossintable[0][r],a=this.cossintable[1][r];let o=1,h=0;const A=s>>1;for(let r=0;r<A;r++){for(let t=r;t<this.NFREQ;t+=s){const s=t+A,r=o*e[s]-h*i[s],a=o*i[s]+h*e[s];e[s]=e[t]-r,i[s]=i[t]-a,e[t]+=r,i[t]+=a}const n=o;o=n*t-h*a,h=h*t+n*a}s<<=1,r+=1}const a=new Float32Array(this.samplesOut);if(this.equalize)for(let t=0;t<this.samplesOut;t++)a[t]=this.equalizeArr[t]*Math.sqrt(e[t]*e[t]+i[t]*i[t]);else for(let t=0;t<this.samplesOut;t++)a[t]=Math.sqrt(e[t]*e[t]+i[t]*i[t]);return a}}class at{constructor(t){this.numSamps=512,this.fftSize=2*this.numSamps,this.fft=new rt(this.fftSize,512,!0),t&&(this.audioContext=t,this.audible=t.createDelay(),this.analyser=t.createAnalyser(),this.analyser.smoothingTimeConstant=0,this.analyser.fftSize=this.fftSize,this.audible.connect(this.analyser),this.analyserL=t.createAnalyser(),this.analyserL.smoothingTimeConstant=0,this.analyserL.fftSize=this.fftSize,this.analyserR=t.createAnalyser(),this.analyserR.smoothingTimeConstant=0,this.analyserR.fftSize=this.fftSize,this.splitter=t.createChannelSplitter(2),this.audible.connect(this.splitter),this.splitter.connect(this.analyserL,0),this.splitter.connect(this.analyserR,1)),this.timeByteArray=new Uint8Array(this.fftSize),this.timeByteArrayL=new Uint8Array(this.fftSize),this.timeByteArrayR=new Uint8Array(this.fftSize),this.timeArray=new Int8Array(this.fftSize),this.timeByteArraySignedL=new Int8Array(this.fftSize),this.timeByteArraySignedR=new Int8Array(this.fftSize),this.tempTimeArrayL=new Int8Array(this.fftSize),this.tempTimeArrayR=new Int8Array(this.fftSize),this.timeArrayL=new Int8Array(this.numSamps),this.timeArrayR=new Int8Array(this.numSamps)}sampleAudio(){this.analyser.getByteTimeDomainData(this.timeByteArray),this.analyserL.getByteTimeDomainData(this.timeByteArrayL),this.analyserR.getByteTimeDomainData(this.timeByteArrayR),this.processAudio()}updateAudio(t,e,i){this.timeByteArray.set(t),this.timeByteArrayL.set(e),this.timeByteArrayR.set(i),this.processAudio()}processAudio(){for(let t=0,e=0,i=0;t<this.fftSize;t++)this.timeArray[t]=this.timeByteArray[t]-128,this.timeByteArraySignedL[t]=this.timeByteArrayL[t]-128,this.timeByteArraySignedR[t]=this.timeByteArrayR[t]-128,this.tempTimeArrayL[t]=.5*(this.timeByteArraySignedL[t]+this.timeByteArraySignedL[i]),this.tempTimeArrayR[t]=.5*(this.timeByteArraySignedR[t]+this.timeByteArraySignedR[i]),t%2==0&&(this.timeArrayL[e]=this.tempTimeArrayL[t],this.timeArrayR[e]=this.tempTimeArrayR[t],e+=1),i=t;this.freqArray=this.fft.timeToFrequencyDomain(this.timeArray),this.freqArrayL=this.fft.timeToFrequencyDomain(this.timeByteArraySignedL),this.freqArrayR=this.fft.timeToFrequencyDomain(this.timeByteArraySignedR)}connectAudio(t){t.connect(this.audible)}disconnectAudio(t){t.disconnect(this.audible)}}class ot{constructor(t){let e;this.audio=t,e=this.audio.audioContext?this.audio.audioContext.sampleRate:44100;const i=e/this.audio.fftSize,s=Math.clamp(Math.round(20/i)-1,0,this.audio.numSamps-1),r=Math.clamp(Math.round(320/i)-1,0,this.audio.numSamps-1),a=Math.clamp(Math.round(2800/i)-1,0,this.audio.numSamps-1),o=Math.clamp(Math.round(11025/i)-1,0,this.audio.numSamps-1);this.starts=[s,r,a],this.stops=[r,a,o],this.val=new Float32Array(3),this.imm=new Float32Array(3),this.att=new Float32Array(3),this.avg=new Float32Array(3),this.longAvg=new Float32Array(3),this.att.fill(1),this.avg.fill(1),this.longAvg.fill(1)}get bass(){return this.val[0]}get bass_att(){return this.att[0]}get mid(){return this.val[1]}get mid_att(){return this.att[1]}get treb(){return this.val[2]}get treb_att(){return this.att[2]}static isFiniteNumber(t){return Number.isFinite(t)&&!Number.isNaN(t)}static adjustRateToFPS(t,e,i){return t**(e/i)}updateAudioLevels(t,e){if(this.audio.freqArray.length>0){let i=t;!ot.isFiniteNumber(i)||i<15?i=15:i>144&&(i=144),this.imm.fill(0);for(let t=0;t<3;t++)for(let e=this.starts[t];e<this.stops[t];e++)this.imm[t]+=this.audio.freqArray[e];for(let t=0;t<3;t++){let s;s=this.imm[t]>this.avg[t]?.2:.5,s=ot.adjustRateToFPS(s,30,i),this.avg[t]=this.avg[t]*s+this.imm[t]*(1-s),s=e<50?.9:.992,s=ot.adjustRateToFPS(s,30,i),this.longAvg[t]=this.longAvg[t]*s+this.imm[t]*(1-s),this.longAvg[t]<.001?(this.val[t]=1,this.att[t]=1):(this.val[t]=this.imm[t]/this.longAvg[t],this.att[t]=this.avg[t]/this.longAvg[t])}}}}const ht={baseVals:{gammaadj:1.25,wave_g:.5,mv_x:12,warpscale:1,brighten:0,mv_y:9,wave_scale:1,echo_alpha:0,additivewave:0,sx:1,sy:1,warp:.01,red_blue:0,wave_mode:0,wave_brighten:0,wrap:0,zoomexp:1,fshader:0,wave_r:.5,echo_zoom:1,wave_smoothing:.75,warpanimspeed:1,wave_dots:0,wave_x:.5,wave_y:.5,zoom:1,solarize:0,modwavealphabyvolume:0,dx:0,cx:.5,dy:0,darken_center:0,cy:.5,invert:0,bmotionvectorson:0,rot:0,modwavealphaend:.95,wave_mystery:-.2,decay:.9,wave_a:1,wave_b:.5,rating:5,modwavealphastart:.75,darken:0,echo_orient:0,ib_r:.5,ib_g:.5,ib_b:.5,ib_a:0,ib_size:0,ob_r:.5,ob_g:.5,ob_b:.5,ob_a:0,ob_size:0,mv_dx:0,mv_dy:0,mv_a:0,mv_r:.5,mv_g:.5,mv_b:.5,mv_l:0},init_eqs:function(){return{}},frame_eqs:function(t){return t.rkeys=[\"warp\"],t.zoom=1.01+.02*t.treb_att,t.warp=.15+.25*t.bass_att,t},pixel_eqs:function(t){return t.warp=t.warp+.15*t.rad,t},waves:[{baseVals:{a:1,enabled:0,b:1,g:1,scaling:1,samples:512,additive:0,usedots:0,spectrum:0,r:1,smoothing:.5,thick:0,sep:0},init_eqs:function(t){return t.rkeys=[],t},frame_eqs:function(t){return t},point_eqs:\"\"},{baseVals:{a:1,enabled:0,b:1,g:1,scaling:1,samples:512,additive:0,usedots:0,spectrum:0,r:1,smoothing:.5,thick:0,sep:0},init_eqs:function(t){return t.rkeys=[],t},frame_eqs:function(t){return t},point_eqs:\"\"},{baseVals:{a:1,enabled:0,b:1,g:1,scaling:1,samples:512,additive:0,usedots:0,spectrum:0,r:1,smoothing:.5,thick:0,sep:0},init_eqs:function(t){return t.rkeys=[],t},frame_eqs:function(t){return t},point_eqs:\"\"},{baseVals:{a:1,enabled:0,b:1,g:1,scaling:1,samples:512,additive:0,usedots:0,spectrum:0,r:1,smoothing:.5,thick:0,sep:0},init_eqs:function(t){return t.rkeys=[],t},frame_eqs:function(t){return t},point_eqs:\"\"}],shapes:[{baseVals:{r2:0,a:1,enabled:0,b:0,tex_ang:0,thickoutline:0,g:0,textured:0,g2:1,tex_zoom:1,additive:0,border_a:.1,border_b:1,b2:0,a2:0,r:1,border_g:1,rad:.1,x:.5,y:.5,ang:0,sides:4,border_r:1},init_eqs:function(t){return t.rkeys=[],t},frame_eqs:function(t){return t}},{baseVals:{r2:0,a:1,enabled:0,b:0,tex_ang:0,thickoutline:0,g:0,textured:0,g2:1,tex_zoom:1,additive:0,border_a:.1,border_b:1,b2:0,a2:0,r:1,border_g:1,rad:.1,x:.5,y:.5,ang:0,sides:4,border_r:1},init_eqs:function(t){return t.rkeys=[],t},frame_eqs:function(t){return t}},{baseVals:{r2:0,a:1,enabled:0,b:0,tex_ang:0,thickoutline:0,g:0,textured:0,g2:1,tex_zoom:1,additive:0,border_a:.1,border_b:1,b2:0,a2:0,r:1,border_g:1,rad:.1,x:.5,y:.5,ang:0,sides:4,border_r:1},init_eqs:function(t){return t.rkeys=[],t},frame_eqs:function(t){return t}},{baseVals:{r2:0,a:1,enabled:0,b:0,tex_ang:0,thickoutline:0,g:0,textured:0,g2:1,tex_zoom:1,additive:0,border_a:.1,border_b:1,b2:0,a2:0,r:1,border_g:1,rad:.1,x:.5,y:.5,ang:0,sides:4,border_r:1},init_eqs:function(t){return t.rkeys=[],t},frame_eqs:function(t){return t}}],warp:\"shader_body {\\nret = texture2D(sampler_main, uv).rgb;\\nret -= 0.004;\\n}\\n\",comp:\"shader_body {\\nret = texture2D(sampler_main, uv).rgb;\\nret *= hue_shader;\\n}\\n\"};class At{static atan2(t,e){let i=Math.atan2(t,e);return i<0&&(i+=2*Math.PI),i}static cloneVars(t){return Object.assign({},t)}static range(t,e){return void 0===e?[...Array(t).keys()]:Array.from({length:e-t},(e,i)=>i+t)}static pick(t,e){const i={};for(let s=0;s<e.length;s++){const r=e[s];i[r]=t[r]||0}return i}static omit(t,e){const i=Object.assign({},t);for(let t=0;t<e.length;t++){delete i[e[t]]}return i}static setWasm(t,e,i){for(let s=0;s<i.length;s++){const r=i[s];t[r].value=e[r]}}static pickWasm(t,e){const i={};for(let s=0;s<e.length;s++){const r=e[s];i[r]=t[r].value}return i}}class nt{constructor(t=1){this.state=new Uint32Array(4),nt.initializeState(this.state,t),this.warmUp()}static initializeState(t,e){t[0]=e,t[1]=2654435769^e,t[2]=1779033703^e,t[3]=3144134277^e}warmUp(){for(let t=0;t<10;t++)this.next()}next(){let t=this.state[3],e=this.state[0];return this.state[3]=this.state[2],this.state[2]=this.state[1],this.state[1]=e,t^=t<<11,t^=t>>>8,this.state[0]=t^e^e>>>19,(this.state[0]>>>0)/4294967296}nextInt(t){return Math.floor(this.next()*t)}rand(t){return t<1?this.next():Math.floor(this.next()*Math.floor(t))}reset(t){nt.initializeState(this.state,t),this.warmUp()}}function lt(){return{random:Math.random,rand:t=>t<1?Math.random():Math.random()*Math.floor(t),randint:t=>Math.floor((t<1?Math.random():Math.random()*Math.floor(t))+1),getRNG:()=>null,reset:()=>{}}}let ct=null;function gt(t={}){return ct=t.deterministic||t.testMode?function(t=1){const e=new nt(t);return{random:()=>e.next(),rand:t=>e.rand(t),randint:t=>Math.floor(e.rand(t)+1),getRNG:()=>e,reset:i=>{void 0!==i?e.reset(i):e.reset(t)}}}(t.seed||12345):lt(),(t.deterministic||t.testMode)&&(window.rand=t=>ct.rand(t),window.randint=t=>ct.randint(t),Math.random=()=>ct.random()),ct}function mt(){return ct||(ct=lt()),ct}class ut{constructor(t,e,i){this.rng=mt(),this.preset=t,this.texsizeX=i.texsizeX,this.texsizeY=i.texsizeY,this.mesh_width=i.mesh_width,this.mesh_height=i.mesh_height,this.aspectx=i.aspectx,this.aspecty=i.aspecty,this.invAspectx=1/this.aspectx,this.invAspecty=1/this.aspecty,this.qs=At.range(1,33).map(t=>`q${t}`),this.ts=At.range(1,9).map(t=>`t${t}`),this.regs=At.range(100).map(t=>t<10?`reg0${t}`:`reg${t}`),this.initializeEquations(e)}initializeEquations(t){this.runVertEQs=\"\"!==this.preset.pixel_eqs,this.mdVSQInit=null,this.mdVSRegs=null,this.mdVSFrame=null,this.mdVSUserKeys=null,this.mdVSFrameMap=null,this.mdVSShapes=null,this.mdVSUserKeysShapes=null,this.mdVSFrameMapShapes=null,this.mdVSWaves=null,this.mdVSUserKeysWaves=null,this.mdVSFrameMapWaves=null,this.mdVSQAfterFrame=null,this.gmegabuf=new Array(1048576).fill(0);const e={frame:t.frame,time:t.time,fps:t.fps,bass:t.bass,bass_att:t.bass_att,mid:t.mid,mid_att:t.mid_att,treb:t.treb,treb_att:t.treb_att,meshx:this.mesh_width,meshy:this.mesh_height,aspectx:this.invAspectx,aspecty:this.invAspecty,pixelsx:this.texsizeX,pixelsy:this.texsizeY,gmegabuf:this.gmegabuf};this.mdVS=Object.assign({},this.preset.baseVals,e),this.mdVS.megabuf=new Array(1048576).fill(0),this.mdVS.rand_start=new Float32Array([this.rng.random(),this.rng.random(),this.rng.random(),this.rng.random()]),this.mdVS.rand_preset=new Float32Array([this.rng.random(),this.rng.random(),this.rng.random(),this.rng.random()]);const i=this.qs.concat(this.regs,Object.keys(this.mdVS)),s=this.preset.init_eqs(At.cloneVars(this.mdVS));this.mdVSQInit=At.pick(s,this.qs),this.mdVSRegs=At.pick(s,this.regs);const r=At.pick(s,Object.keys(At.omit(s,i)));if(r.megabuf=s.megabuf,r.gmegabuf=s.gmegabuf,this.mdVSFrame=this.preset.frame_eqs(Object.assign({},this.mdVS,this.mdVSQInit,this.mdVSRegs,r)),this.mdVSUserKeys=Object.keys(At.omit(this.mdVSFrame,i)),this.mdVSFrameMap=At.pick(this.mdVSFrame,this.mdVSUserKeys),this.mdVSQAfterFrame=At.pick(this.mdVSFrame,this.qs),this.mdVSRegs=At.pick(this.mdVSFrame,this.regs),this.mdVSWaves=[],this.mdVSTWaveInits=[],this.mdVSUserKeysWaves=[],this.mdVSFrameMapWaves=[],this.preset.waves&&this.preset.waves.length>0)for(let t=0;t<this.preset.waves.length;t++){const i=this.preset.waves[t],s=i.baseVals;if(0!==s.enabled){let r=Object.assign({},s,e);const a=this.qs.concat(this.ts,this.regs,Object.keys(r));Object.assign(r,this.mdVSQAfterFrame,this.mdVSRegs),r.megabuf=new Array(1048576).fill(0),i.init_eqs&&(r=i.init_eqs(r),this.mdVSRegs=At.pick(r,this.regs),Object.assign(r,s)),this.mdVSWaves.push(r),this.mdVSTWaveInits.push(At.pick(r,this.ts)),this.mdVSUserKeysWaves.push(Object.keys(At.omit(r,a))),this.mdVSFrameMapWaves.push(At.pick(r,this.mdVSUserKeysWaves[t]))}else this.mdVSWaves.push({}),this.mdVSTWaveInits.push({}),this.mdVSUserKeysWaves.push([]),this.mdVSFrameMapWaves.push({})}if(this.mdVSShapes=[],this.mdVSTShapeInits=[],this.mdVSUserKeysShapes=[],this.mdVSFrameMapShapes=[],this.preset.shapes&&this.preset.shapes.length>0)for(let t=0;t<this.preset.shapes.length;t++){const i=this.preset.shapes[t],s=i.baseVals;if(0!==s.enabled){let r=Object.assign({},s,e);const a=this.qs.concat(this.ts,this.regs,Object.keys(r));Object.assign(r,this.mdVSQAfterFrame,this.mdVSRegs),r.megabuf=new Array(1048576).fill(0),i.init_eqs&&(r=i.init_eqs(r),this.mdVSRegs=At.pick(r,this.regs),Object.assign(r,s)),this.mdVSShapes.push(r),this.mdVSTShapeInits.push(At.pick(r,this.ts)),this.mdVSUserKeysShapes.push(Object.keys(At.omit(r,a))),this.mdVSFrameMapShapes.push(At.pick(r,this.mdVSUserKeysShapes[t]))}else this.mdVSShapes.push({}),this.mdVSTShapeInits.push({}),this.mdVSUserKeysShapes.push([]),this.mdVSFrameMapShapes.push({})}}updatePreset(t,e){this.preset=t,this.initializeEquations(e)}updateGlobals(t){this.texsizeX=t.texsizeX,this.texsizeY=t.texsizeY,this.mesh_width=t.mesh_width,this.mesh_height=t.mesh_height,this.aspectx=t.aspectx,this.aspecty=t.aspecty,this.invAspectx=1/this.aspectx,this.invAspecty=1/this.aspecty}runFrameEquations(t){return this.mdVSFrame=Object.assign({},this.mdVS,this.mdVSQInit,this.mdVSFrameMap,t),this.mdVSFrame=this.preset.frame_eqs(this.mdVSFrame),this.mdVSFrameMap=At.pick(this.mdVSFrame,this.mdVSUserKeys),this.mdVSQAfterFrame=At.pick(this.mdVSFrame,this.qs),this.mdVSFrame}runPixelEquations(t){return this.preset.pixel_eqs(t)}runShapeFrameEquations(t,e){return this.preset.shapes[t].frame_eqs(e)}runWaveFrameEquations(t,e){return this.preset.waves[t].frame_eqs(e)}runWavePointEquations(t,e){return this.preset.waves[t].point_eqs(e)}}class ft{constructor(t,e,i){this.rng=mt(),this.preset=t,this.texsizeX=i.texsizeX,this.texsizeY=i.texsizeY,this.mesh_width=i.mesh_width,this.mesh_height=i.mesh_height,this.aspectx=i.aspectx,this.aspecty=i.aspecty,this.invAspectx=1/this.aspectx,this.invAspecty=1/this.aspecty,this.qs=At.range(1,33).map(t=>`q${t}`),this.ts=At.range(1,9).map(t=>`t${t}`),this.regs=At.range(100).map(t=>t<10?`reg0${t}`:`reg${t}`),this.globalKeys=[\"frame\",\"time\",\"fps\",\"bass\",\"bass_att\",\"mid\",\"mid_att\",\"treb\",\"treb_att\",\"meshx\",\"meshy\",\"aspectx\",\"aspecty\",\"pixelsx\",\"pixelsy\"],this.frameKeys=[\"decay\",\"wave_a\",\"wave_r\",\"wave_g\",\"wave_b\",\"wave_x\",\"wave_y\",\"wave_scale\",\"wave_smoothing\",\"wave_mode\",\"old_wave_mode\",\"wave_mystery\",\"ob_size\",\"ob_r\",\"ob_g\",\"ob_b\",\"ob_a\",\"ib_size\",\"ib_r\",\"ib_g\",\"ib_b\",\"ib_a\",\"mv_x\",\"mv_y\",\"mv_dx\",\"mv_dy\",\"mv_l\",\"mv_r\",\"mv_g\",\"mv_b\",\"mv_a\",\"echo_zoom\",\"echo_alpha\",\"echo_orient\",\"wave_dots\",\"wave_thick\",\"additivewave\",\"wave_brighten\",\"modwavealphabyvolume\",\"modwavealphastart\",\"modwavealphaend\",\"darken_center\",\"gammaadj\",\"warp\",\"warpanimspeed\",\"warpscale\",\"zoom\",\"zoomexp\",\"rot\",\"cx\",\"cy\",\"dx\",\"dy\",\"sx\",\"sy\",\"fshader\",\"wrap\",\"invert\",\"brighten\",\"darken\",\"solarize\",\"bmotionvectorson\",\"b1n\",\"b2n\",\"b3n\",\"b1x\",\"b2x\",\"b3x\",\"b1ed\"],this.waveFrameKeys=[\"samples\",\"sep\",\"scaling\",\"spectrum\",\"smoothing\",\"r\",\"g\",\"b\",\"a\"],this.waveFrameInputKeys=[\"samples\",\"r\",\"g\",\"b\",\"a\"],this.initializeEquations(e)}getQVars(t){return At.pickWasm(this.preset.globalPools[t],this.qs)}getTVars(t){return At.pickWasm(this.preset.globalPools[t],this.ts)}initializeEquations(t){this.runVertEQs=!!this.preset.pixel_eqs,this.mdVSQInit=null,this.mdVSQAfterFrame=null;const e={frame:t.frame,time:t.time,fps:t.fps,bass:t.bass,bass_att:t.bass_att,mid:t.mid,mid_att:t.mid_att,treb:t.treb,treb_att:t.treb_att,meshx:this.mesh_width,meshy:this.mesh_height,aspectx:this.invAspectx,aspecty:this.invAspecty,pixelsx:this.texsizeX,pixelsy:this.texsizeY};if(this.mdVS=Object.assign({},this.preset.baseVals,e),At.setWasm(this.preset.globalPools.perFrame,this.mdVS,Object.keys(this.mdVS)),this.rand_start=new Float32Array([this.rng.random(),this.rng.random(),this.rng.random(),this.rng.random()]),this.rand_preset=new Float32Array([this.rng.random(),this.rng.random(),this.rng.random(),this.rng.random()]),this.preset.init_eqs(),this.mdVSQInit=this.getQVars(\"perFrame\"),this.preset.frame_eqs(),this.mdVSQAfterFrame=this.getQVars(\"perFrame\"),this.mdVSTWaveInits=[],this.preset.waves&&this.preset.waves.length>0)for(let t=0;t<this.preset.waves.length;t++){const e=this.preset.waves[t],i=e.baseVals;0!==i.enabled?(At.setWasm(this.preset.globalPools[`wavePerFrame${t}`],i,Object.keys(i)),e.init_eqs&&(e.init_eqs(),At.setWasm(this.preset.globalPools[`wavePerFrame${t}`],i,Object.keys(i))),this.mdVSTWaveInits.push(this.getTVars(`wavePerFrame${t}`))):this.mdVSTWaveInits.push({})}if(this.mdVSTShapeInits=[],this.preset.shapes&&this.preset.shapes.length>0)for(let t=0;t<this.preset.shapes.length;t++){const e=this.preset.shapes[t],i=e.baseVals;0!==i.enabled?(At.setWasm(this.preset.globalPools[`shapePerFrame${t}`],i,Object.keys(i)),e.init_eqs&&(e.init_eqs(),At.setWasm(this.preset.globalPools[`shapePerFrame${t}`],i,Object.keys(i))),this.mdVSTShapeInits.push(this.getTVars(`shapePerFrame${t}`))):this.mdVSTShapeInits.push({})}}updatePreset(t,e){this.preset=t,this.initializeEquations(e)}updateGlobals(t){this.texsizeX=t.texsizeX,this.texsizeY=t.texsizeY,this.mesh_width=t.mesh_width,this.mesh_height=t.mesh_height,this.aspectx=t.aspectx,this.aspecty=t.aspecty,this.invAspectx=1/this.aspectx,this.invAspecty=1/this.aspecty}runFrameEquations(t){At.setWasm(this.preset.globalPools.perFrame,this.mdVS,this.frameKeys),At.setWasm(this.preset.globalPools.perFrame,this.mdVSQInit,this.qs),At.setWasm(this.preset.globalPools.perFrame,t,this.globalKeys),this.preset.frame_eqs(),this.preset.save_qs(),this.mdVSQAfterFrame=this.getQVars(\"perFrame\");const e=At.pickWasm(this.preset.globalPools.perFrame,[...this.frameKeys,...this.globalKeys]);return e.rand_preset=this.rand_preset,e.rand_start=this.rand_start,e}runWaveFrameEquations(t,e){const i=this.preset.waves[t].baseVals;return At.setWasm(this.preset.globalPools[`wavePerFrame${t}`],i,this.waveFrameInputKeys),At.setWasm(this.preset.globalPools[`wavePerFrame${t}`],this.mdVSQAfterFrame,this.qs),At.setWasm(this.preset.globalPools[`wavePerFrame${t}`],this.mdVSTWaveInits[t],this.ts),At.setWasm(this.preset.globalPools[`wavePerFrame${t}`],e,this.globalKeys),this.preset.waves[t].frame_eqs(),At.pickWasm(this.preset.globalPools[`wavePerFrame${t}`],this.waveFrameKeys)}}const dt=/uniform sampler2D sampler_(?:.+?);/g,pt=/uniform sampler2D sampler_(.+?);/;class _t{static getShaderParts(t){const e=t.indexOf(\"shader_body\");if(t&&e>-1){const i=t.substring(0,e),s=t.substring(e),r=s.indexOf(\"{\"),a=s.lastIndexOf(\"}\");return[i,s.substring(r+1,a)]}return[\"\",t]}static getFragmentFloatPrecision(t){return t.getShaderPrecisionFormat(t.FRAGMENT_SHADER,t.HIGH_FLOAT).precision>0?\"highp\":t.getShaderPrecisionFormat(t.FRAGMENT_SHADER,t.MEDIUM_FLOAT).precision>0?\"mediump\":\"lowp\"}static getUserSamplers(t){const e=[],i=t.match(dt);if(i&&i.length>0)for(let t=0;t<i.length;t++){const s=i[t].match(pt);if(s&&s.length>0){const t=s[1];e.push({sampler:t})}}return e}}class Et{static smoothWave(t,e,i,s=!1){const r=-.15,a=1.15,o=1.15,h=-.15;let A,n=0,l=0,c=1;for(let g=0;g<i-1;g++){A=c,c=Math.min(i-1,g+2);for(let i=0;i<3;i++)e[3*n+i]=t[3*g+i];if(s)for(let i=0;i<3;i++)e[3*(n+1)+i]=.5*(r*t[3*l+i]+a*t[3*g+i]+o*t[3*A+i]+h*t[3*c+i]);else{for(let i=0;i<2;i++)e[3*(n+1)+i]=.5*(r*t[3*l+i]+a*t[3*g+i]+o*t[3*A+i]+h*t[3*c+i]);e[3*(n+1)+2]=0}l=g,n+=2}for(let s=0;s<3;s++)e[3*n+s]=t[3*(i-1)+s]}static smoothWaveAndColor(t,e,i,s,r,a=!1){const o=-.15,h=1.15,A=1.15,n=-.15;let l,c=0,g=0,m=1;for(let u=0;u<r-1;u++){l=m,m=Math.min(r-1,u+2);for(let e=0;e<3;e++)i[3*c+e]=t[3*u+e];if(a)for(let e=0;e<3;e++)i[3*(c+1)+e]=.5*(o*t[3*g+e]+h*t[3*u+e]+A*t[3*l+e]+n*t[3*m+e]);else{for(let e=0;e<2;e++)i[3*(c+1)+e]=.5*(o*t[3*g+e]+h*t[3*u+e]+A*t[3*l+e]+n*t[3*m+e]);i[3*(c+1)+2]=0}for(let t=0;t<4;t++)s[4*c+t]=e[4*u+t],s[4*(c+1)+t]=e[4*u+t];g=u,c+=2}for(let e=0;e<3;e++)i[3*c+e]=t[3*(r-1)+e];for(let t=0;t<4;t++)s[4*c+t]=e[4*(r-1)+t]}}class bt{constructor(t,e={}){this.gl=t;this.positions=new Float32Array(1536),this.positions2=new Float32Array(1536),this.oldPositions=new Float32Array(1536),this.oldPositions2=new Float32Array(1536),this.smoothedPositions=new Float32Array(3069),this.smoothedPositions2=new Float32Array(3069),this.color=[0,0,0,1],this.texsizeX=e.texsizeX,this.texsizeY=e.texsizeY,this.aspectx=e.aspectx,this.aspecty=e.aspecty,this.invAspectx=1/this.aspectx,this.invAspecty=1/this.aspecty,this.floatPrecision=_t.getFragmentFloatPrecision(this.gl),this.createShader(),this.vertexBuf=this.gl.createBuffer()}updateGlobals(t){this.texsizeX=t.texsizeX,this.texsizeY=t.texsizeY,this.aspectx=t.aspectx,this.aspecty=t.aspecty,this.invAspectx=1/this.aspectx,this.invAspecty=1/this.aspecty}createShader(){this.shaderProgram=this.gl.createProgram();const t=this.gl.createShader(this.gl.VERTEX_SHADER);this.gl.shaderSource(t,\"\\n      #version 300 es\\n      in vec3 aPos;\\n      uniform vec2 thickOffset;\\n      void main(void) {\\n        gl_Position = vec4(aPos + vec3(thickOffset, 0.0), 1.0);\\n      }\\n      \".trim()),this.gl.compileShader(t);const e=this.gl.createShader(this.gl.FRAGMENT_SHADER);this.gl.shaderSource(e,`\\n      #version 300 es\\n      precision ${this.floatPrecision} float;\\n      precision highp int;\\n      precision mediump sampler2D;\\n      out vec4 fragColor;\\n      uniform vec4 u_color;\\n      void main(void) {\\n        fragColor = u_color;\\n      }\\n      `.trim()),this.gl.compileShader(e),this.gl.attachShader(this.shaderProgram,t),this.gl.attachShader(this.shaderProgram,e),this.gl.linkProgram(this.shaderProgram),this.aPosLoc=this.gl.getAttribLocation(this.shaderProgram,\"aPos\"),this.colorLoc=this.gl.getUniformLocation(this.shaderProgram,\"u_color\"),this.thickOffsetLoc=this.gl.getUniformLocation(this.shaderProgram,\"thickOffset\")}static processWaveform(t,e){const i=[],s=e.wave_scale/128,r=e.wave_smoothing,a=s*(1-r);i.push(t[0]*s);for(let e=1;e<t.length;e++)i.push(t[e]*a+i[e-1]*r);return i}generateWaveform(t,e,i,s,r){let a=r.wave_a;const o=(r.bass+r.mid+r.treb)/3;if(o>-.01&&a>.001&&i.length>0){const h=bt.processWaveform(i,r),A=bt.processWaveform(s,r),n=Math.floor(r.wave_mode)%8,l=Math.floor(r.old_wave_mode)%8,c=2*r.wave_x-1,g=2*r.wave_y-1;this.numVert=0,this.oldNumVert=0;const m=t&&n!==l?2:1;for(let t=0;t<m;t++){const e=0===t?n:l;let i,s,m,u=r.wave_mystery;if(0!==e&&1!==e&&4!==e||!(u<-1||u>1)||(u=.5*u+.5,u-=Math.floor(u),u=Math.abs(u),u=2*u-1),0===t?(s=this.positions,m=this.positions2):(s=this.oldPositions,m=this.oldPositions2),a=r.wave_a,0===e){if(r.modwavealphabyvolume>0){const t=r.modwavealphaend-r.modwavealphastart;a*=(o-r.modwavealphastart)/t}a=Math.clamp(a,0,1),i=Math.floor(h.length/2)+1;const t=1/(i-1),e=Math.floor((h.length-i)/2);for(let a=0;a<i-1;a++){let o=.5+.4*A[a+e]+u;const h=a*t*2*Math.PI+.2*r.time;if(a<i/10){let t=a/(.1*i);t=.5-.5*Math.cos(t*Math.PI);o=(1-t)*(.5+.4*A[a+i+e]+u)+o*t}s[3*a+0]=o*Math.cos(h)*this.aspecty+c,s[3*a+1]=o*Math.sin(h)*this.aspectx+g,s[3*a+2]=0}s[3*(i-1)+0]=s[0],s[3*(i-1)+1]=s[1],s[3*(i-1)+2]=0}else if(1===e){if(a*=1.25,r.modwavealphabyvolume>0){const t=r.modwavealphaend-r.modwavealphastart;a*=(o-r.modwavealphastart)/t}a=Math.clamp(a,0,1),i=Math.floor(h.length/2);for(let t=0;t<i;t++){const e=.53+.43*A[t]+u,i=.5*h[t+32]*Math.PI+2.3*r.time;s[3*t+0]=e*Math.cos(i)*this.aspecty+c,s[3*t+1]=e*Math.sin(i)*this.aspectx+g,s[3*t+2]=0}}else if(2===e){if(this.texsizeX<1024?a*=.09:this.texsizeX>=1024&&this.texsizeX<2048?a*=.11:a*=.13,r.modwavealphabyvolume>0){const t=r.modwavealphaend-r.modwavealphastart;a*=(o-r.modwavealphastart)/t}a=Math.clamp(a,0,1),i=h.length;for(let t=0;t<h.length;t++)s[3*t+0]=A[t]*this.aspecty+c,s[3*t+1]=h[(t+32)%h.length]*this.aspectx+g,s[3*t+2]=0}else if(3===e){if(this.texsizeX<1024?a*=.15:this.texsizeX>=1024&&this.texsizeX<2048?a*=.22:a*=.33,a*=1.3,a*=r.treb*r.treb,r.modwavealphabyvolume>0){const t=r.modwavealphaend-r.modwavealphastart;a*=(o-r.modwavealphastart)/t}a=Math.clamp(a,0,1),i=h.length;for(let t=0;t<h.length;t++)s[3*t+0]=A[t]*this.aspecty+c,s[3*t+1]=h[(t+32)%h.length]*this.aspectx+g,s[3*t+2]=0}else if(4===e){if(r.modwavealphabyvolume>0){const t=r.modwavealphaend-r.modwavealphastart;a*=(o-r.modwavealphastart)/t}a=Math.clamp(a,0,1),i=h.length,i>this.texsizeX/3&&(i=Math.floor(this.texsizeX/3));const t=1/i,e=Math.floor((h.length-i)/2),n=.45+.5*(.5*u+.5),l=1-n;for(let r=0;r<i;r++){let i=2*r*t+(c-1)+.44*A[(r+25+e)%h.length],a=.47*h[r+e]+g;r>1&&(i=i*l+n*(2*s[3*(r-1)+0]-s[3*(r-2)+0]),a=a*l+n*(2*s[3*(r-1)+1]-s[3*(r-2)+1])),s[3*r+0]=i,s[3*r+1]=a,s[3*r+2]=0}}else if(5===e){if(this.texsizeX<1024?a*=.09:this.texsizeX>=1024&&this.texsizeX<2048?a*=.11:a*=.13,r.modwavealphabyvolume>0){const t=r.modwavealphaend-r.modwavealphastart;a*=(o-r.modwavealphastart)/t}a=Math.clamp(a,0,1);const t=Math.cos(.3*r.time),e=Math.sin(.3*r.time);i=h.length;for(let i=0;i<h.length;i++){const r=(i+32)%h.length,a=A[i]*h[r]+h[i]*A[r],o=A[i]*A[i]-h[r]*h[r];s[3*i+0]=(a*t-o*e)*(this.aspecty+c),s[3*i+1]=(a*e+o*t)*(this.aspectx+g),s[3*i+2]=0}}else if(6===e||7===e){if(r.modwavealphabyvolume>0){const t=r.modwavealphaend-r.modwavealphastart;a*=(o-r.modwavealphastart)/t}a=Math.clamp(a,0,1),i=Math.floor(h.length/2),i>this.texsizeX/3&&(i=Math.floor(this.texsizeX/3));const t=Math.floor((h.length-i)/2),n=.5*Math.PI*u;let l=Math.cos(n),f=Math.sin(n);const d=[c*Math.cos(n+.5*Math.PI)-3*l,c*Math.cos(n+.5*Math.PI)+3*l],p=[c*Math.sin(n+.5*Math.PI)-3*f,c*Math.sin(n+.5*Math.PI)+3*f];for(let t=0;t<2;t++)for(let e=0;e<4;e++){let i,s=!1;switch(e){case 0:d[t]>1.1&&(i=(1.1-d[1-t])/(d[t]-d[1-t]),s=!0);break;case 1:d[t]<-1.1&&(i=(-1.1-d[1-t])/(d[t]-d[1-t]),s=!0);break;case 2:p[t]>1.1&&(i=(1.1-p[1-t])/(p[t]-p[1-t]),s=!0);break;case 3:p[t]<-1.1&&(i=(-1.1-p[1-t])/(p[t]-p[1-t]),s=!0)}if(s){const e=d[t]-d[1-t],s=p[t]-p[1-t];d[t]=d[1-t]+e*i,p[t]=p[1-t]+s*i}}l=(d[1]-d[0])/i,f=(p[1]-p[0])/i;const _=Math.atan2(f,l),E=Math.cos(_+.5*Math.PI),b=Math.sin(_+.5*Math.PI);if(6===e)for(let e=0;e<i;e++){const i=h[e+t];s[3*e+0]=d[0]+l*e+.25*E*i,s[3*e+1]=p[0]+f*e+.25*b*i,s[3*e+2]=0}else if(7===e){const e=(.5*g+.5)**2;for(let r=0;r<i;r++){const i=h[r+t];s[3*r+0]=d[0]+l*r+E*(.25*i+e),s[3*r+1]=p[0]+f*r+b*(.25*i+e),s[3*r+2]=0}for(let s=0;s<i;s++){const i=A[s+t];m[3*s+0]=d[0]+l*s+E*(.25*i-e),m[3*s+1]=p[0]+f*s+b*(.25*i-e),m[3*s+2]=0}}}0===t?(this.positions=s,this.positions2=m,this.numVert=i,this.alpha=a):(this.oldPositions=s,this.oldPositions2=m,this.oldNumVert=i,this.oldAlpha=a)}const u=.5-.5*Math.cos(e*Math.PI),f=1-u;this.oldNumVert>0&&(a=u*this.alpha+f*this.oldAlpha);let d=Math.clamp(r.wave_r,0,1),p=Math.clamp(r.wave_g,0,1),_=Math.clamp(r.wave_b,0,1);if(0!==r.wave_brighten){const t=Math.max(d,p,_);t>.01&&(d/=t,p/=t,_/=t)}if(this.color=[d,p,_,a],this.oldNumVert>0)if(7===n){const t=(this.oldNumVert-1)/(2*this.numVert);for(let e=0;e<this.numVert;e++){const i=e*t,s=Math.floor(i),r=i-s,a=this.oldPositions[3*s+0]*(1-r)+this.oldPositions[3*(s+1)+0]*r,o=this.oldPositions[3*s+1]*(1-r)+this.oldPositions[3*(s+1)+1]*r;this.positions[3*e+0]=this.positions[3*e+0]*u+a*f,this.positions[3*e+1]=this.positions[3*e+1]*u+o*f,this.positions[3*e+2]=0}for(let e=0;e<this.numVert;e++){const i=(e+this.numVert)*t,s=Math.floor(i),r=i-s,a=this.oldPositions[3*s+0]*(1-r)+this.oldPositions[3*(s+1)+0]*r,o=this.oldPositions[3*s+1]*(1-r)+this.oldPositions[3*(s+1)+1]*r;this.positions2[3*e+0]=this.positions2[3*e+0]*u+a*f,this.positions2[3*e+1]=this.positions2[3*e+1]*u+o*f,this.positions2[3*e+2]=0}}else if(7===l){const t=this.numVert/2,e=(this.oldNumVert-1)/t;for(let i=0;i<t;i++){const t=i*e,s=Math.floor(t),r=t-s,a=this.oldPositions[3*s+0]*(1-r)+this.oldPositions[3*(s+1)+0]*r,o=this.oldPositions[3*s+1]*(1-r)+this.oldPositions[3*(s+1)+1]*r;this.positions[3*i+0]=this.positions[3*i+0]*u+a*f,this.positions[3*i+1]=this.positions[3*i+1]*u+o*f,this.positions[3*i+2]=0}for(let i=0;i<t;i++){const s=i*e,r=Math.floor(s),a=s-r,o=this.oldPositions2[3*r+0]*(1-a)+this.oldPositions2[3*(r+1)+0]*a,h=this.oldPositions2[3*r+1]*(1-a)+this.oldPositions2[3*(r+1)+1]*a;this.positions2[3*i+0]=this.positions[3*(i+t)+0]*u+o*f,this.positions2[3*i+1]=this.positions[3*(i+t)+1]*u+h*f,this.positions2[3*i+2]=0}}else{const t=(this.oldNumVert-1)/this.numVert;for(let e=0;e<this.numVert;e++){const i=e*t,s=Math.floor(i),r=i-s,a=this.oldPositions[3*s+0]*(1-r)+this.oldPositions[3*(s+1)+0]*r,o=this.oldPositions[3*s+1]*(1-r)+this.oldPositions[3*(s+1)+1]*r;this.positions[3*e+0]=this.positions[3*e+0]*u+a*f,this.positions[3*e+1]=this.positions[3*e+1]*u+o*f,this.positions[3*e+2]=0}}for(let t=0;t<this.numVert;t++)this.positions[3*t+1]=-this.positions[3*t+1];if(this.smoothedNumVert=2*this.numVert-1,Et.smoothWave(this.positions,this.smoothedPositions,this.numVert),7===n||7===l){for(let t=0;t<this.numVert;t++)this.positions2[3*t+1]=-this.positions2[3*t+1];Et.smoothWave(this.positions2,this.smoothedPositions2,this.numVert)}return!0}return!1}drawBasicWaveform(t,e,i,s,r){if(this.generateWaveform(t,e,i,s,r)){this.gl.useProgram(this.shaderProgram),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.vertexBuf),this.gl.bufferData(this.gl.ARRAY_BUFFER,this.smoothedPositions,this.gl.STATIC_DRAW),this.gl.vertexAttribPointer(this.aPosLoc,3,this.gl.FLOAT,!1,0,0),this.gl.enableVertexAttribArray(this.aPosLoc),this.gl.uniform4fv(this.colorLoc,this.color);let t=1;0===r.wave_thick&&0===r.wave_dots||(t=4),0!==r.additivewave?this.gl.blendFunc(this.gl.SRC_ALPHA,this.gl.ONE):this.gl.blendFunc(this.gl.SRC_ALPHA,this.gl.ONE_MINUS_SRC_ALPHA);const e=0!==r.wave_dots?this.gl.POINTS:this.gl.LINE_STRIP;for(let i=0;i<t;i++){const t=2;0===i?this.gl.uniform2fv(this.thickOffsetLoc,[0,0]):1===i?this.gl.uniform2fv(this.thickOffsetLoc,[t/this.texsizeX,0]):2===i?this.gl.uniform2fv(this.thickOffsetLoc,[0,t/this.texsizeY]):3===i&&this.gl.uniform2fv(this.thickOffsetLoc,[t/this.texsizeX,t/this.texsizeY]),this.gl.drawArrays(e,0,this.smoothedNumVert)}if(7===Math.floor(r.wave_mode)%8){this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.vertexBuf),this.gl.bufferData(this.gl.ARRAY_BUFFER,this.smoothedPositions2,this.gl.STATIC_DRAW),this.gl.vertexAttribPointer(this.aPosLoc,3,this.gl.FLOAT,!1,0,0),this.gl.enableVertexAttribArray(this.aPosLoc);for(let i=0;i<t;i++){const t=2;0===i?this.gl.uniform2fv(this.thickOffsetLoc,[0,0]):1===i?this.gl.uniform2fv(this.thickOffsetLoc,[t/this.texsizeX,0]):2===i?this.gl.uniform2fv(this.thickOffsetLoc,[0,t/this.texsizeY]):3===i&&this.gl.uniform2fv(this.thickOffsetLoc,[t/this.texsizeX,t/this.texsizeY]),this.gl.drawArrays(e,0,this.smoothedNumVert)}}}}}class xt{constructor(t,e,i){this.index=t,this.gl=e;const s=512;this.pointsData=[new Float32Array(s),new Float32Array(s)],this.positions=new Float32Array(1536),this.colors=new Float32Array(2048),this.smoothedPositions=new Float32Array(3069),this.smoothedColors=new Float32Array(4092),this.texsizeX=i.texsizeX,this.texsizeY=i.texsizeY,this.mesh_width=i.mesh_width,this.mesh_height=i.mesh_height,this.aspectx=i.aspectx,this.aspecty=i.aspecty,this.invAspectx=1/this.aspectx,this.invAspecty=1/this.aspecty,this.positionVertexBuf=this.gl.createBuffer(),this.colorVertexBuf=this.gl.createBuffer(),this.floatPrecision=_t.getFragmentFloatPrecision(this.gl),this.createShader()}updateGlobals(t){this.texsizeX=t.texsizeX,this.texsizeY=t.texsizeY,this.mesh_width=t.mesh_width,this.mesh_height=t.mesh_height,this.aspectx=t.aspectx,this.aspecty=t.aspecty,this.invAspectx=1/this.aspectx,this.invAspecty=1/this.aspecty}createShader(){this.shaderProgram=this.gl.createProgram();const t=this.gl.createShader(this.gl.VERTEX_SHADER);this.gl.shaderSource(t,\"\\n      #version 300 es\\n      uniform float uSize;\\n      uniform vec2 thickOffset;\\n      in vec3 aPos;\\n      in vec4 aColor;\\n      out vec4 vColor;\\n      void main(void) {\\n        vColor = aColor;\\n        gl_PointSize = uSize;\\n        gl_Position = vec4(aPos + vec3(thickOffset, 0.0), 1.0);\\n      }\\n      \".trim()),this.gl.compileShader(t);const e=this.gl.createShader(this.gl.FRAGMENT_SHADER);this.gl.shaderSource(e,`\\n      #version 300 es\\n      precision ${this.floatPrecision} float;\\n      precision highp int;\\n      precision mediump sampler2D;\\n      in vec4 vColor;\\n      out vec4 fragColor;\\n      void main(void) {\\n        fragColor = vColor;\\n      }\\n      `.trim()),this.gl.compileShader(e),this.gl.attachShader(this.shaderProgram,t),this.gl.attachShader(this.shaderProgram,e),this.gl.linkProgram(this.shaderProgram),this.aPosLocation=this.gl.getAttribLocation(this.shaderProgram,\"aPos\"),this.aColorLocation=this.gl.getAttribLocation(this.shaderProgram,\"aColor\"),this.sizeLoc=this.gl.getUniformLocation(this.shaderProgram,\"uSize\"),this.thickOffsetLoc=this.gl.getUniformLocation(this.shaderProgram,\"thickOffset\")}generateWaveform(t,e,i,s,r,a,o,h){if(0!==o.baseVals.enabled&&t.length>0){let A;if(a.preset.useWASM)A=a.runWaveFrameEquations(this.index,r);else{const t=Object.assign({},a.mdVSWaves[this.index],a.mdVSFrameMapWaves[this.index],a.mdVSQAfterFrame,a.mdVSTWaveInits[this.index],r);A=a.runWaveFrameEquations(this.index,t)}const n=512;Object.prototype.hasOwnProperty.call(A,\"samples\")?this.samples=A.samples:this.samples=n,this.samples>n&&(this.samples=n),this.samples=Math.floor(this.samples);const l=a.preset.waves[this.index].baseVals,c=Math.floor(A.sep),g=A.scaling,m=A.spectrum,u=A.smoothing,f=l.usedots,d=A.r,p=A.g,_=A.b,E=A.a,b=a.preset.baseVals.wave_scale;if(this.samples-=c,this.samples>=2||0!==f&&this.samples>=1){const r=0!==m,x=(r?.15:.004)*g*b,v=r?i:t,T=r?s:e,S=r?0:Math.floor((n-this.samples)/2-c/2),P=r?0:Math.floor((n-this.samples)/2+c/2),w=r?(n-c)/this.samples:1,I=(.98*u)**.5,R=1-I;this.pointsData[0][0]=v[S],this.pointsData[1][0]=T[P];for(let t=1;t<this.samples;t++){const e=v[Math.floor(t*w+S)],i=T[Math.floor(t*w+P)];this.pointsData[0][t]=e*R+this.pointsData[0][t-1]*I,this.pointsData[1][t]=i*R+this.pointsData[1][t-1]*I}for(let t=this.samples-2;t>=0;t--)this.pointsData[0][t]=this.pointsData[0][t]*R+this.pointsData[0][t+1]*I,this.pointsData[1][t]=this.pointsData[1][t]*R+this.pointsData[1][t+1]*I;for(let t=0;t<this.samples;t++)this.pointsData[0][t]*=x,this.pointsData[1][t]*=x;if(a.preset.useWASM){const t=a.preset.globalPools[`wavePerFrame${this.index}`];for(let e=0;e<this.samples;e++){const i=this.pointsData[0][e],s=this.pointsData[1][e];t.sample.value=e/(this.samples-1),t.value1.value=i,t.value2.value=s,t.x.value=.5+i,t.y.value=.5+s,t.r.value=d,t.g.value=p,t.b.value=_,t.a.value=E,o.point_eqs&&a.preset.waves[this.index].point_eqs();const r=(2*t.x.value-1)*this.invAspectx,A=(-2*t.y.value+1)*this.invAspecty,n=t.r.value,l=t.g.value,c=t.b.value,g=t.a.value;this.positions[3*e+0]=r,this.positions[3*e+1]=A,this.positions[3*e+2]=0,this.colors[4*e+0]=n,this.colors[4*e+1]=l,this.colors[4*e+2]=c,this.colors[4*e+3]=g*h}}else for(let t=0;t<this.samples;t++){const e=this.pointsData[0][t],i=this.pointsData[1][t];A.sample=t/(this.samples-1),A.value1=e,A.value2=i,A.x=.5+e,A.y=.5+i,A.r=d,A.g=p,A.b=_,A.a=E,\"\"!==o.point_eqs&&(A=a.runWavePointEquations(this.index,A));const s=(2*A.x-1)*this.invAspectx,r=(-2*A.y+1)*this.invAspecty,n=A.r,l=A.g,c=A.b,g=A.a;this.positions[3*t+0]=s,this.positions[3*t+1]=r,this.positions[3*t+2]=0,this.colors[4*t+0]=n,this.colors[4*t+1]=l,this.colors[4*t+2]=c,this.colors[4*t+3]=g*h}if(a.preset.useWASM)A.usedots=f,A.thick=l.thick,A.additive=l.additive;else{const t=a.mdVSUserKeysWaves[this.index],e=At.pick(A,t);a.mdVSFrameMapWaves[this.index]=e}return this.mdVSWaveFrame=A,0===f&&Et.smoothWaveAndColor(this.positions,this.colors,this.smoothedPositions,this.smoothedColors,this.samples),!0}}return!1}drawCustomWaveform(t,e,i,s,r,a,o,h){if(h&&this.generateWaveform(e,i,s,r,a,o,h,t)){this.gl.useProgram(this.shaderProgram);const t=0!==this.mdVSWaveFrame.usedots,e=0!==this.mdVSWaveFrame.thick,i=0!==this.mdVSWaveFrame.additive;let s,r,a;t?(s=this.positions,r=this.colors,a=this.samples):(s=this.smoothedPositions,r=this.smoothedColors,a=2*this.samples-1),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.positionVertexBuf),this.gl.bufferData(this.gl.ARRAY_BUFFER,s,this.gl.STATIC_DRAW),this.gl.vertexAttribPointer(this.aPosLocation,3,this.gl.FLOAT,!1,0,0),this.gl.enableVertexAttribArray(this.aPosLocation),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.colorVertexBuf),this.gl.bufferData(this.gl.ARRAY_BUFFER,r,this.gl.STATIC_DRAW),this.gl.vertexAttribPointer(this.aColorLocation,4,this.gl.FLOAT,!1,0,0),this.gl.enableVertexAttribArray(this.aColorLocation);let o=1;t?e?this.gl.uniform1f(this.sizeLoc,2+(this.texsizeX>=1024?1:0)):this.gl.uniform1f(this.sizeLoc,1+(this.texsizeX>=1024?1:0)):(this.gl.uniform1f(this.sizeLoc,1),e&&(o=4)),i?this.gl.blendFunc(this.gl.SRC_ALPHA,this.gl.ONE):this.gl.blendFunc(this.gl.SRC_ALPHA,this.gl.ONE_MINUS_SRC_ALPHA);const h=t?this.gl.POINTS:this.gl.LINE_STRIP;for(let t=0;t<o;t++){const e=2;0===t?this.gl.uniform2fv(this.thickOffsetLoc,[0,0]):1===t?this.gl.uniform2fv(this.thickOffsetLoc,[e/this.texsizeX,0]):2===t?this.gl.uniform2fv(this.thickOffsetLoc,[0,e/this.texsizeY]):3===t&&this.gl.uniform2fv(this.thickOffsetLoc,[e/this.texsizeX,e/this.texsizeY]),this.gl.drawArrays(h,0,a)}}}}let vt=class{constructor(t,e,i){this.index=t,this.gl=e;this.positions=new Float32Array(309),this.colors=new Float32Array(412),this.uvs=new Float32Array(206),this.borderPositions=new Float32Array(306),this.texsizeX=i.texsizeX,this.texsizeY=i.texsizeY,this.mesh_width=i.mesh_width,this.mesh_height=i.mesh_height,this.aspectx=i.aspectx,this.aspecty=i.aspecty,this.invAspectx=1/this.aspectx,this.invAspecty=1/this.aspecty,this.positionVertexBuf=this.gl.createBuffer(),this.colorVertexBuf=this.gl.createBuffer(),this.uvVertexBuf=this.gl.createBuffer(),this.borderPositionVertexBuf=this.gl.createBuffer(),this.floatPrecision=_t.getFragmentFloatPrecision(this.gl),this.createShader(),this.createBorderShader(),this.mainSampler=this.gl.createSampler(),e.samplerParameteri(this.mainSampler,e.TEXTURE_MIN_FILTER,e.LINEAR_MIPMAP_LINEAR),e.samplerParameteri(this.mainSampler,e.TEXTURE_MAG_FILTER,e.LINEAR),e.samplerParameteri(this.mainSampler,e.TEXTURE_WRAP_S,e.REPEAT),e.samplerParameteri(this.mainSampler,e.TEXTURE_WRAP_T,e.REPEAT)}updateGlobals(t){this.texsizeX=t.texsizeX,this.texsizeY=t.texsizeY,this.mesh_width=t.mesh_width,this.mesh_height=t.mesh_height,this.aspectx=t.aspectx,this.aspecty=t.aspecty,this.invAspectx=1/this.aspectx,this.invAspecty=1/this.aspecty}createShader(){this.shaderProgram=this.gl.createProgram();const t=this.gl.createShader(this.gl.VERTEX_SHADER);this.gl.shaderSource(t,\"\\n      #version 300 es\\n      in vec3 aPos;\\n      in vec4 aColor;\\n      in vec2 aUv;\\n      out vec4 vColor;\\n      out vec2 vUv;\\n      void main(void) {\\n        vColor = aColor;\\n        vUv = aUv;\\n        gl_Position = vec4(aPos, 1.0);\\n      }\\n      \".trim()),this.gl.compileShader(t);const e=this.gl.createShader(this.gl.FRAGMENT_SHADER);this.gl.shaderSource(e,`\\n      #version 300 es\\n      precision ${this.floatPrecision} float;\\n      precision highp int;\\n      precision mediump sampler2D;\\n      uniform sampler2D uTexture;\\n      uniform float uTextured;\\n      in vec4 vColor;\\n      in vec2 vUv;\\n      out vec4 fragColor;\\n      void main(void) {\\n        if (uTextured != 0.0) {\\n          fragColor = texture(uTexture, vUv) * vColor;\\n        } else {\\n          fragColor = vColor;\\n        }\\n      }\\n      `.trim()),this.gl.compileShader(e),this.gl.attachShader(this.shaderProgram,t),this.gl.attachShader(this.shaderProgram,e),this.gl.linkProgram(this.shaderProgram),this.aPosLocation=this.gl.getAttribLocation(this.shaderProgram,\"aPos\"),this.aColorLocation=this.gl.getAttribLocation(this.shaderProgram,\"aColor\"),this.aUvLocation=this.gl.getAttribLocation(this.shaderProgram,\"aUv\"),this.texturedLoc=this.gl.getUniformLocation(this.shaderProgram,\"uTextured\"),this.textureLoc=this.gl.getUniformLocation(this.shaderProgram,\"uTexture\")}createBorderShader(){this.borderShaderProgram=this.gl.createProgram();const t=this.gl.createShader(this.gl.VERTEX_SHADER);this.gl.shaderSource(t,\"\\n      #version 300 es\\n      in vec3 aBorderPos;\\n      uniform vec2 thickOffset;\\n      void main(void) {\\n        gl_Position = vec4(aBorderPos +\\n                            vec3(thickOffset, 0.0), 1.0);\\n      }\\n      \".trim()),this.gl.compileShader(t);const e=this.gl.createShader(this.gl.FRAGMENT_SHADER);this.gl.shaderSource(e,`\\n      #version 300 es\\n      precision ${this.floatPrecision} float;\\n      precision highp int;\\n      precision mediump sampler2D;\\n      out vec4 fragColor;\\n      uniform vec4 uBorderColor;\\n      void main(void) {\\n        fragColor = uBorderColor;\\n      }\\n      `.trim()),this.gl.compileShader(e),this.gl.attachShader(this.borderShaderProgram,t),this.gl.attachShader(this.borderShaderProgram,e),this.gl.linkProgram(this.borderShaderProgram),this.aBorderPosLoc=this.gl.getAttribLocation(this.borderShaderProgram,\"aBorderPos\"),this.uBorderColorLoc=this.gl.getUniformLocation(this.borderShaderProgram,\"uBorderColor\"),this.thickOffsetLoc=this.gl.getUniformLocation(this.shaderProgram,\"thickOffset\")}drawCustomShape(t,e,i,s,r){if(0!==s.baseVals.enabled)if(i.preset.useWASM){this.setupShapeBuffers(i.preset.globalPools.perFrame.wrap.value);const s=i.preset.shapes[this.index].baseVals,a=i.preset.globalPools[`shapePerFrame${this.index}`];At.setWasm(a,e,i.globalKeys),i.preset.shapes[this.index].frame_eqs||i.preset.restore_qs(),At.setWasm(a,i.mdVSTShapeInits[this.index],i.ts),i.preset.save_ts(),a.x.value=s.x,a.y.value=s.y,a.rad.value=s.rad,a.ang.value=s.ang,a.r.value=s.r,a.g.value=s.g,a.b.value=s.b,a.a.value=s.a,a.r2.value=s.r2,a.g2.value=s.g2,a.b2.value=s.b2,a.a2.value=s.a2,a.border_r.value=s.border_r,a.border_g.value=s.border_g,a.border_b.value=s.border_b,a.border_a.value=s.border_a,a.thickoutline.value=s.thickoutline,a.textured.value=s.textured,a.tex_zoom.value=s.tex_zoom,a.tex_ang.value=s.tex_ang,a.additive.value=s.additive,i.preset.shapes[this.index].frame_eqs_save();const o=Math.clamp(s.num_inst,1,1024);for(let e=0;e<o;e++){a.instance.value=e,i.preset.shapes[this.index].frame_eqs&&(i.preset.shapes[this.index].frame_eqs_restore(),i.preset.restore_qs(),i.preset.restore_ts(),i.preset.shapes[this.index].frame_eqs());let s=a.sides.value;s=Math.clamp(s,3,100),s=Math.floor(s);const o=a.rad.value,h=a.ang.value,A=2*a.x.value-1,n=-2*a.y.value+1,l=a.r.value,c=a.g.value,g=a.b.value,m=a.a.value,u=a.r2.value,f=a.g2.value,d=a.b2.value,p=a.a2.value,_=a.border_r.value,E=a.border_g.value,b=a.border_b.value,x=a.border_a.value;this.borderColor=[_,E,b,x*t];const v=a.thickoutline.value,T=a.textured.value,S=a.tex_zoom.value,P=a.tex_ang.value,w=a.additive.value,I=this.borderColor[3]>0,R=Math.abs(T)>=1,y=Math.abs(v)>=1,B=Math.abs(w)>=1;this.positions[0]=A,this.positions[1]=n,this.positions[2]=0,this.colors[0]=l,this.colors[1]=c,this.colors[2]=g,this.colors[3]=m*t,R&&(this.uvs[0]=.5,this.uvs[1]=.5);const L=.25*Math.PI;for(let e=1;e<=s+1;e++){const i=2*((e-1)/s)*Math.PI,r=i+h+L;if(this.positions[3*e+0]=A+o*Math.cos(r)*this.aspecty,this.positions[3*e+1]=n+o*Math.sin(r),this.positions[3*e+2]=0,this.colors[4*e+0]=u,this.colors[4*e+1]=f,this.colors[4*e+2]=d,this.colors[4*e+3]=p*t,R){const t=i+P+L;this.uvs[2*e+0]=.5+.5*Math.cos(t)/S*this.aspecty,this.uvs[2*e+1]=.5+.5*Math.sin(t)/S}I&&(this.borderPositions[3*(e-1)+0]=this.positions[3*e+0],this.borderPositions[3*(e-1)+1]=this.positions[3*e+1],this.borderPositions[3*(e-1)+2]=this.positions[3*e+2])}this.drawCustomShapeInstance(r,s,R,I,y,B)}}else{this.setupShapeBuffers(i.mdVSFrame.wrap);let s=Object.assign({},i.mdVSShapes[this.index],i.mdVSFrameMapShapes[this.index],e);\"\"===i.preset.shapes[this.index].frame_eqs_str&&(s=Object.assign(s,i.mdVSQAfterFrame,i.mdVSTShapeInits[this.index]));const a=i.preset.shapes[this.index].baseVals,o=Math.clamp(a.num_inst,1,1024);for(let e=0;e<o;e++){let o;s.instance=e,s.x=a.x,s.y=a.y,s.rad=a.rad,s.ang=a.ang,s.r=a.r,s.g=a.g,s.b=a.b,s.a=a.a,s.r2=a.r2,s.g2=a.g2,s.b2=a.b2,s.a2=a.a2,s.border_r=a.border_r,s.border_g=a.border_g,s.border_b=a.border_b,s.border_a=a.border_a,s.thickoutline=a.thickoutline,s.textured=a.textured,s.tex_zoom=a.tex_zoom,s.tex_ang=a.tex_ang,s.additive=a.additive,\"\"!==i.preset.shapes[this.index].frame_eqs_str?(s=Object.assign(s,i.mdVSQAfterFrame,i.mdVSTShapeInits[this.index]),o=i.runShapeFrameEquations(this.index,s)):o=s;let h=o.sides;h=Math.clamp(h,3,100),h=Math.floor(h);const A=o.rad,n=o.ang,l=2*o.x-1,c=-2*o.y+1,g=o.r,m=o.g,u=o.b,f=o.a,d=o.r2,p=o.g2,_=o.b2,E=o.a2,b=o.border_r,x=o.border_g,v=o.border_b,T=o.border_a;this.borderColor=[b,x,v,T*t];const S=o.thickoutline,P=o.textured,w=o.tex_zoom,I=o.tex_ang,R=o.additive,y=this.borderColor[3]>0,B=Math.abs(P)>=1,L=Math.abs(S)>=1,C=Math.abs(R)>=1;this.positions[0]=l,this.positions[1]=c,this.positions[2]=0,this.colors[0]=g,this.colors[1]=m,this.colors[2]=u,this.colors[3]=f*t,B&&(this.uvs[0]=.5,this.uvs[1]=.5);const U=.25*Math.PI;for(let e=1;e<=h+1;e++){const i=2*((e-1)/h)*Math.PI,s=i+n+U;if(this.positions[3*e+0]=l+A*Math.cos(s)*this.aspecty,this.positions[3*e+1]=c+A*Math.sin(s),this.positions[3*e+2]=0,this.colors[4*e+0]=d,this.colors[4*e+1]=p,this.colors[4*e+2]=_,this.colors[4*e+3]=E*t,B){const t=i+I+U;this.uvs[2*e+0]=.5+.5*Math.cos(t)/w*this.aspecty,this.uvs[2*e+1]=.5+.5*Math.sin(t)/w}y&&(this.borderPositions[3*(e-1)+0]=this.positions[3*e+0],this.borderPositions[3*(e-1)+1]=this.positions[3*e+1],this.borderPositions[3*(e-1)+2]=this.positions[3*e+2])}this.mdVSShapeFrame=o,this.drawCustomShapeInstance(r,h,B,y,L,C)}const h=i.mdVSUserKeysShapes[this.index],A=At.pick(this.mdVSShapeFrame,h);i.mdVSFrameMapShapes[this.index]=A}}setupShapeBuffers(t){this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.positionVertexBuf),this.gl.bufferData(this.gl.ARRAY_BUFFER,this.positions,this.gl.DYNAMIC_DRAW),this.gl.vertexAttribPointer(this.aPosLocation,3,this.gl.FLOAT,!1,0,0),this.gl.enableVertexAttribArray(this.aPosLocation),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.colorVertexBuf),this.gl.bufferData(this.gl.ARRAY_BUFFER,this.colors,this.gl.DYNAMIC_DRAW),this.gl.vertexAttribPointer(this.aColorLocation,4,this.gl.FLOAT,!1,0,0),this.gl.enableVertexAttribArray(this.aColorLocation),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.uvVertexBuf),this.gl.bufferData(this.gl.ARRAY_BUFFER,this.uvs,this.gl.DYNAMIC_DRAW),this.gl.vertexAttribPointer(this.aUvLocation,2,this.gl.FLOAT,!1,0,0),this.gl.enableVertexAttribArray(this.aUvLocation),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.borderPositionVertexBuf),this.gl.bufferData(this.gl.ARRAY_BUFFER,this.borderPositions,this.gl.DYNAMIC_DRAW),this.gl.vertexAttribPointer(this.aBorderPosLoc,3,this.gl.FLOAT,!1,0,0),this.gl.enableVertexAttribArray(this.aBorderPosLoc);const e=0!==t?this.gl.REPEAT:this.gl.CLAMP_TO_EDGE;this.gl.samplerParameteri(this.mainSampler,this.gl.TEXTURE_WRAP_S,e),this.gl.samplerParameteri(this.mainSampler,this.gl.TEXTURE_WRAP_T,e)}drawCustomShapeInstance(t,e,i,s,r,a){if(this.gl.useProgram(this.shaderProgram),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.positionVertexBuf),this.gl.bufferSubData(this.gl.ARRAY_BUFFER,0,this.positions,0,3*(e+2)),this.gl.vertexAttribPointer(this.aPosLocation,3,this.gl.FLOAT,!1,0,0),this.gl.enableVertexAttribArray(this.aPosLocation),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.colorVertexBuf),this.gl.bufferSubData(this.gl.ARRAY_BUFFER,0,this.colors,0,4*(e+2)),this.gl.vertexAttribPointer(this.aColorLocation,4,this.gl.FLOAT,!1,0,0),this.gl.enableVertexAttribArray(this.aColorLocation),i&&(this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.uvVertexBuf),this.gl.bufferSubData(this.gl.ARRAY_BUFFER,0,this.uvs,0,2*(e+2)),this.gl.vertexAttribPointer(this.aUvLocation,2,this.gl.FLOAT,!1,0,0),this.gl.enableVertexAttribArray(this.aUvLocation)),this.gl.uniform1f(this.texturedLoc,i?1:0),this.gl.activeTexture(this.gl.TEXTURE0),this.gl.bindTexture(this.gl.TEXTURE_2D,t),this.gl.bindSampler(0,this.mainSampler),this.gl.uniform1i(this.textureLoc,0),a?this.gl.blendFunc(this.gl.SRC_ALPHA,this.gl.ONE):this.gl.blendFunc(this.gl.SRC_ALPHA,this.gl.ONE_MINUS_SRC_ALPHA),this.gl.drawArrays(this.gl.TRIANGLE_FAN,0,e+2),s){this.gl.useProgram(this.borderShaderProgram),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.borderPositionVertexBuf),this.gl.bufferSubData(this.gl.ARRAY_BUFFER,0,this.borderPositions,0,3*(e+1)),this.gl.vertexAttribPointer(this.aBorderPosLoc,3,this.gl.FLOAT,!1,0,0),this.gl.enableVertexAttribArray(this.aBorderPosLoc),this.gl.uniform4fv(this.uBorderColorLoc,this.borderColor);const t=r?4:1;for(let i=0;i<t;i++){const t=2;0===i?this.gl.uniform2fv(this.thickOffsetLoc,[0,0]):1===i?this.gl.uniform2fv(this.thickOffsetLoc,[t/this.texsizeX,0]):2===i?this.gl.uniform2fv(this.thickOffsetLoc,[0,t/this.texsizeY]):3===i&&this.gl.uniform2fv(this.thickOffsetLoc,[t/this.texsizeX,t/this.texsizeY]),this.gl.drawArrays(this.gl.LINE_STRIP,0,e+1)}}}};class Tt{constructor(t,e={}){this.gl=t,this.positions=new Float32Array(72),this.aspectx=e.aspectx,this.aspecty=e.aspecty,this.invAspectx=1/this.aspectx,this.invAspecty=1/this.aspecty,this.floatPrecision=_t.getFragmentFloatPrecision(this.gl),this.createShader(),this.vertexBuf=this.gl.createBuffer()}updateGlobals(t){this.aspectx=t.aspectx,this.aspecty=t.aspecty,this.invAspectx=1/this.aspectx,this.invAspecty=1/this.aspecty}createShader(){this.shaderProgram=this.gl.createProgram();const t=this.gl.createShader(this.gl.VERTEX_SHADER);this.gl.shaderSource(t,\"\\n      #version 300 es\\n      in vec3 aPos;\\n      void main(void) {\\n        gl_Position = vec4(aPos, 1.0);\\n      }\\n      \".trim()),this.gl.compileShader(t);const e=this.gl.createShader(this.gl.FRAGMENT_SHADER);this.gl.shaderSource(e,`\\n      #version 300 es\\n      precision ${this.floatPrecision} float;\\n      precision highp int;\\n      precision mediump sampler2D;\\n      out vec4 fragColor;\\n      uniform vec4 u_color;\\n      void main(void) {\\n        fragColor = u_color;\\n      }\\n      `.trim()),this.gl.compileShader(e),this.gl.attachShader(this.shaderProgram,t),this.gl.attachShader(this.shaderProgram,e),this.gl.linkProgram(this.shaderProgram),this.aPosLoc=this.gl.getAttribLocation(this.shaderProgram,\"aPos\"),this.colorLoc=this.gl.getUniformLocation(this.shaderProgram,\"u_color\")}addTriangle(t,e,i,s){this.positions[t+0]=e[0],this.positions[t+1]=e[1],this.positions[t+2]=e[2],this.positions[t+3]=i[0],this.positions[t+4]=i[1],this.positions[t+5]=i[2],this.positions[t+6]=s[0],this.positions[t+7]=s[1],this.positions[t+8]=s[2]}generateBorder(t,e,i){if(e>0&&t[3]>0){const t=2,s=2,r=t/2,a=s/2,o=i/2,h=e/2+o,A=o*t,n=o*s,l=h*t,c=h*s;let g=[-r+A,-a+c,0],m=[-r+A,a-c,0],u=[-r+l,a-c,0],f=[-r+l,-a+c,0];return this.addTriangle(0,f,m,g),this.addTriangle(9,f,u,m),g=[r-A,-a+c,0],m=[r-A,a-c,0],u=[r-l,a-c,0],f=[r-l,-a+c,0],this.addTriangle(18,g,m,f),this.addTriangle(27,m,u,f),g=[-r+A,-a+n,0],m=[-r+A,c-a,0],u=[r-A,c-a,0],f=[r-A,-a+n,0],this.addTriangle(36,f,m,g),this.addTriangle(45,f,u,m),g=[-r+A,a-n,0],m=[-r+A,a-c,0],u=[r-A,a-c,0],f=[r-A,a-n,0],this.addTriangle(54,g,m,f),this.addTriangle(63,m,u,f),!0}return!1}drawBorder(t,e,i){this.generateBorder(t,e,i)&&(this.gl.useProgram(this.shaderProgram),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.vertexBuf),this.gl.bufferData(this.gl.ARRAY_BUFFER,this.positions,this.gl.STATIC_DRAW),this.gl.vertexAttribPointer(this.aPosLoc,3,this.gl.FLOAT,!1,0,0),this.gl.enableVertexAttribArray(this.aPosLoc),this.gl.uniform4fv(this.colorLoc,t),this.gl.blendFunc(this.gl.SRC_ALPHA,this.gl.ONE_MINUS_SRC_ALPHA),this.gl.drawArrays(this.gl.TRIANGLES,0,this.positions.length/3))}}class St{constructor(t,e){this.gl=t,this.aspectx=e.aspectx,this.aspecty=e.aspecty,this.invAspectx=1/this.aspectx,this.invAspecty=1/this.aspecty,this.generatePositions(),this.colors=new Float32Array([0,0,0,3/32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),this.positionVertexBuf=this.gl.createBuffer(),this.colorVertexBuf=this.gl.createBuffer(),this.floatPrecision=_t.getFragmentFloatPrecision(this.gl),this.createShader()}updateGlobals(t){this.aspectx=t.aspectx,this.aspecty=t.aspecty,this.invAspectx=1/this.aspectx,this.invAspecty=1/this.aspecty,this.generatePositions()}generatePositions(){const t=.05;this.positions=new Float32Array([0,0,0,-.05*this.aspecty,0,0,0,-.05,0,t*this.aspecty,0,0,0,t,0,-.05*this.aspecty,0,0])}createShader(){this.shaderProgram=this.gl.createProgram();const t=this.gl.createShader(this.gl.VERTEX_SHADER);this.gl.shaderSource(t,\"\\n      #version 300 es\\n      in vec3 aPos;\\n      in vec4 aColor;\\n      out vec4 vColor;\\n      void main(void) {\\n        vColor = aColor;\\n        gl_Position = vec4(aPos, 1.0);\\n      }\\n      \".trim()),this.gl.compileShader(t);const e=this.gl.createShader(this.gl.FRAGMENT_SHADER);this.gl.shaderSource(e,`\\n      #version 300 es\\n      precision ${this.floatPrecision} float;\\n      precision highp int;\\n      precision mediump sampler2D;\\n      in vec4 vColor;\\n      out vec4 fragColor;\\n      void main(void) {\\n        fragColor = vColor;\\n      }\\n      `.trim()),this.gl.compileShader(e),this.gl.attachShader(this.shaderProgram,t),this.gl.attachShader(this.shaderProgram,e),this.gl.linkProgram(this.shaderProgram),this.aPosLocation=this.gl.getAttribLocation(this.shaderProgram,\"aPos\"),this.aColorLocation=this.gl.getAttribLocation(this.shaderProgram,\"aColor\")}drawDarkenCenter(t){0!==t.darken_center&&(this.gl.useProgram(this.shaderProgram),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.positionVertexBuf),this.gl.bufferData(this.gl.ARRAY_BUFFER,this.positions,this.gl.STATIC_DRAW),this.gl.vertexAttribPointer(this.aPosLocation,3,this.gl.FLOAT,!1,0,0),this.gl.enableVertexAttribArray(this.aPosLocation),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.colorVertexBuf),this.gl.bufferData(this.gl.ARRAY_BUFFER,this.colors,this.gl.STATIC_DRAW),this.gl.vertexAttribPointer(this.aColorLocation,4,this.gl.FLOAT,!1,0,0),this.gl.enableVertexAttribArray(this.aColorLocation),this.gl.blendFunc(this.gl.SRC_ALPHA,this.gl.ONE_MINUS_SRC_ALPHA),this.gl.drawArrays(this.gl.TRIANGLE_FAN,0,this.positions.length/3))}}class Pt{constructor(t,e){this.gl=t,this.maxX=64,this.maxY=48,this.positions=new Float32Array(this.maxX*this.maxY*2*3),this.texsizeX=e.texsizeX,this.texsizeY=e.texsizeY,this.mesh_width=e.mesh_width,this.mesh_height=e.mesh_height,this.positionVertexBuf=this.gl.createBuffer(),this.floatPrecision=_t.getFragmentFloatPrecision(this.gl),this.createShader()}updateGlobals(t){this.texsizeX=t.texsizeX,this.texsizeY=t.texsizeY,this.mesh_width=t.mesh_width,this.mesh_height=t.mesh_height}createShader(){this.shaderProgram=this.gl.createProgram();const t=this.gl.createShader(this.gl.VERTEX_SHADER);this.gl.shaderSource(t,\"\\n      #version 300 es\\n      in vec3 aPos;\\n      void main(void) {\\n        gl_Position = vec4(aPos, 1.0);\\n      }\\n      \".trim()),this.gl.compileShader(t);const e=this.gl.createShader(this.gl.FRAGMENT_SHADER);this.gl.shaderSource(e,`\\n      #version 300 es\\n      precision ${this.floatPrecision} float;\\n      precision highp int;\\n      precision mediump sampler2D;\\n      out vec4 fragColor;\\n      uniform vec4 u_color;\\n      void main(void) {\\n        fragColor = u_color;\\n      }\\n      `.trim()),this.gl.compileShader(e),this.gl.attachShader(this.shaderProgram,t),this.gl.attachShader(this.shaderProgram,e),this.gl.linkProgram(this.shaderProgram),this.aPosLoc=this.gl.getAttribLocation(this.shaderProgram,\"aPos\"),this.colorLoc=this.gl.getUniformLocation(this.shaderProgram,\"u_color\")}getMotionDir(t,e,i){const s=Math.floor(i*this.mesh_height),r=i*this.mesh_height-s,a=Math.floor(e*this.mesh_width),o=e*this.mesh_width-a,h=a+1,A=s+1,n=this.mesh_width+1;let l,c;return l=t[2*(s*n+a)+0]*(1-o)*(1-r),c=t[2*(s*n+a)+1]*(1-o)*(1-r),l+=t[2*(s*n+h)+0]*o*(1-r),c+=t[2*(s*n+h)+1]*o*(1-r),l+=t[2*(A*n+a)+0]*(1-o)*r,c+=t[2*(A*n+a)+1]*(1-o)*r,l+=t[2*(A*n+h)+0]*o*r,c+=t[2*(A*n+h)+1]*o*r,[l,1-c]}generateMotionVectors(t,e){const i=0===t.bmotionvectorson?0:t.mv_a;let s=Math.floor(t.mv_x),r=Math.floor(t.mv_y);if(i>.001&&s>0&&r>0){let a=t.mv_x-s,o=t.mv_y-r;s>this.maxX&&(s=this.maxX,a=0),r>this.maxY&&(r=this.maxY,o=0);const h=t.mv_dx,A=t.mv_dy,n=t.mv_l,l=1/this.texsizeX;this.numVecVerts=0;for(let t=0;t<r;t++){let i=(t+.25)/(r+o+.25-1);if(i-=A,i>1e-4&&i<.9999)for(let t=0;t<s;t++){let r=(t+.25)/(s+a+.25-1);if(r+=h,r>1e-4&&r<.9999){const t=this.getMotionDir(e,r,i);let s=t[0],a=t[1],o=s-r,h=a-i;o*=n,h*=n;let A=Math.sqrt(o*o+h*h);A<l&&A>1e-8?(A=l/A,o*=A,h*=A):(o=l,o=l),s=r+o,a=i+h;const c=2*r-1,g=2*i-1,m=2*s-1,u=2*a-1;this.positions[3*this.numVecVerts+0]=c,this.positions[3*this.numVecVerts+1]=g,this.positions[3*this.numVecVerts+2]=0,this.positions[3*(this.numVecVerts+1)+0]=m,this.positions[3*(this.numVecVerts+1)+1]=u,this.positions[3*(this.numVecVerts+1)+2]=0,this.numVecVerts+=2}}}if(this.numVecVerts>0)return this.color=[t.mv_r,t.mv_g,t.mv_b,i],!0}return!1}drawMotionVectors(t,e){this.generateMotionVectors(t,e)&&(this.gl.useProgram(this.shaderProgram),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.positionVertexBuf),this.gl.bufferData(this.gl.ARRAY_BUFFER,this.positions,this.gl.STATIC_DRAW),this.gl.vertexAttribPointer(this.aPosLoc,3,this.gl.FLOAT,!1,0,0),this.gl.enableVertexAttribArray(this.aPosLoc),this.gl.uniform4fv(this.colorLoc,this.color),this.gl.lineWidth(1),this.gl.blendFunc(this.gl.SRC_ALPHA,this.gl.ONE_MINUS_SRC_ALPHA),this.gl.drawArrays(this.gl.LINES,0,this.numVecVerts))}}class wt{constructor(t,e,i,s={}){this.gl=t,this.noise=e,this.image=i,this.rng=mt(),this.texsizeX=s.texsizeX,this.texsizeY=s.texsizeY,this.mesh_width=s.mesh_width,this.mesh_height=s.mesh_height,this.aspectx=s.aspectx,this.aspecty=s.aspecty,this.invAspectx=1/this.aspectx,this.invAspecty=1/this.aspecty,this.buildPositions(),this.indexBuf=t.createBuffer(),this.positionVertexBuf=this.gl.createBuffer(),this.warpUvVertexBuf=this.gl.createBuffer(),this.warpColorVertexBuf=this.gl.createBuffer(),this.floatPrecision=_t.getFragmentFloatPrecision(this.gl),this.createShader(),this.mainSampler=this.gl.createSampler(),this.mainSamplerFW=this.gl.createSampler(),this.mainSamplerFC=this.gl.createSampler(),this.mainSamplerPW=this.gl.createSampler(),this.mainSamplerPC=this.gl.createSampler(),t.samplerParameteri(this.mainSampler,t.TEXTURE_MIN_FILTER,t.LINEAR_MIPMAP_LINEAR),t.samplerParameteri(this.mainSampler,t.TEXTURE_MAG_FILTER,t.LINEAR),t.samplerParameteri(this.mainSampler,t.TEXTURE_WRAP_S,t.REPEAT),t.samplerParameteri(this.mainSampler,t.TEXTURE_WRAP_T,t.REPEAT),t.samplerParameteri(this.mainSamplerFW,t.TEXTURE_MIN_FILTER,t.LINEAR_MIPMAP_LINEAR),t.samplerParameteri(this.mainSamplerFW,t.TEXTURE_MAG_FILTER,t.LINEAR),t.samplerParameteri(this.mainSamplerFW,t.TEXTURE_WRAP_S,t.REPEAT),t.samplerParameteri(this.mainSamplerFW,t.TEXTURE_WRAP_T,t.REPEAT),t.samplerParameteri(this.mainSamplerFC,t.TEXTURE_MIN_FILTER,t.LINEAR_MIPMAP_LINEAR),t.samplerParameteri(this.mainSamplerFC,t.TEXTURE_MAG_FILTER,t.LINEAR),t.samplerParameteri(this.mainSamplerFC,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.samplerParameteri(this.mainSamplerFC,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),t.samplerParameteri(this.mainSamplerPW,t.TEXTURE_MIN_FILTER,t.NEAREST_MIPMAP_NEAREST),t.samplerParameteri(this.mainSamplerPW,t.TEXTURE_MAG_FILTER,t.NEAREST),t.samplerParameteri(this.mainSamplerPW,t.TEXTURE_WRAP_S,t.REPEAT),t.samplerParameteri(this.mainSamplerPW,t.TEXTURE_WRAP_T,t.REPEAT),t.samplerParameteri(this.mainSamplerPC,t.TEXTURE_MIN_FILTER,t.NEAREST_MIPMAP_NEAREST),t.samplerParameteri(this.mainSamplerPC,t.TEXTURE_MAG_FILTER,t.NEAREST),t.samplerParameteri(this.mainSamplerPC,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.samplerParameteri(this.mainSamplerPC,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE)}buildPositions(){const t=this.mesh_width,e=this.mesh_height,i=t+1,s=e+1,r=2/t,a=2/e,o=[];for(let t=0;t<s;t++){const e=t*a-1;for(let t=0;t<i;t++){const i=t*r-1;o.push(i,-e,0)}}const h=[];for(let s=0;s<e;s++)for(let e=0;e<t;e++){const t=e+i*s,r=e+i*(s+1),a=e+1+i*(s+1),o=e+1+i*s;h.push(t,r,o),h.push(r,a,o)}this.vertices=new Float32Array(o),this.indices=new Uint16Array(h)}updateGlobals(t){this.texsizeX=t.texsizeX,this.texsizeY=t.texsizeY,this.mesh_width=t.mesh_width,this.mesh_height=t.mesh_height,this.aspectx=t.aspectx,this.aspecty=t.aspecty,this.invAspectx=1/this.aspectx,this.invAspecty=1/this.aspecty,this.buildPositions()}createShader(t=\"\"){let e,i;if(0===t.length)e=\"ret = texture(sampler_main, uv).rgb * decay;\",i=\"\";else{const s=_t.getShaderParts(t);i=s[0],e=s[1]}e=e.replace(/texture2D/g,\"texture\"),e=e.replace(/texture3D/g,\"texture\"),this.userTextures=_t.getUserSamplers(i),this.shaderProgram=this.gl.createProgram();const s=this.gl.createShader(this.gl.VERTEX_SHADER);this.gl.shaderSource(s,`\\n      #version 300 es\\n      precision ${this.floatPrecision} float;\\n      const vec2 halfmad = vec2(0.5);\\n      in vec2 aPos;\\n      in vec2 aWarpUv;\\n      in vec4 aWarpColor;\\n      out vec2 uv;\\n      out vec2 uv_orig;\\n      out vec4 vColor;\\n      void main(void) {\\n        gl_Position = vec4(aPos, 0.0, 1.0);\\n        uv_orig = aPos * halfmad + halfmad;\\n        uv = aWarpUv;\\n        vColor = aWarpColor;\\n      }\\n      `.trim()),this.gl.compileShader(s);const r=this.gl.createShader(this.gl.FRAGMENT_SHADER);this.gl.shaderSource(r,`\\n      #version 300 es\\n      precision ${this.floatPrecision} float;\\n      precision highp int;\\n      precision mediump sampler2D;\\n      precision mediump sampler3D;\\n\\n      in vec2 uv;\\n      in vec2 uv_orig;\\n      in vec4 vColor;\\n      out vec4 fragColor;\\n      uniform sampler2D sampler_main;\\n      uniform sampler2D sampler_fw_main;\\n      uniform sampler2D sampler_fc_main;\\n      uniform sampler2D sampler_pw_main;\\n      uniform sampler2D sampler_pc_main;\\n      uniform sampler2D sampler_blur1;\\n      uniform sampler2D sampler_blur2;\\n      uniform sampler2D sampler_blur3;\\n      uniform sampler2D sampler_noise_lq;\\n      uniform sampler2D sampler_noise_lq_lite;\\n      uniform sampler2D sampler_noise_mq;\\n      uniform sampler2D sampler_noise_hq;\\n      uniform sampler2D sampler_pw_noise_lq;\\n      uniform sampler3D sampler_noisevol_lq;\\n      uniform sampler3D sampler_noisevol_hq;\\n      uniform float time;\\n      uniform float decay;\\n      uniform vec2 resolution;\\n      uniform vec4 aspect;\\n      uniform vec4 texsize;\\n      uniform vec4 texsize_noise_lq;\\n      uniform vec4 texsize_noise_mq;\\n      uniform vec4 texsize_noise_hq;\\n      uniform vec4 texsize_noise_lq_lite;\\n      uniform vec4 texsize_noisevol_lq;\\n      uniform vec4 texsize_noisevol_hq;\\n\\n      uniform float bass;\\n      uniform float mid;\\n      uniform float treb;\\n      uniform float vol;\\n      uniform float bass_att;\\n      uniform float mid_att;\\n      uniform float treb_att;\\n      uniform float vol_att;\\n\\n      uniform float frame;\\n      uniform float fps;\\n\\n      uniform vec4 _qa;\\n      uniform vec4 _qb;\\n      uniform vec4 _qc;\\n      uniform vec4 _qd;\\n      uniform vec4 _qe;\\n      uniform vec4 _qf;\\n      uniform vec4 _qg;\\n      uniform vec4 _qh;\\n\\n      #define q1 _qa.x\\n      #define q2 _qa.y\\n      #define q3 _qa.z\\n      #define q4 _qa.w\\n      #define q5 _qb.x\\n      #define q6 _qb.y\\n      #define q7 _qb.z\\n      #define q8 _qb.w\\n      #define q9 _qc.x\\n      #define q10 _qc.y\\n      #define q11 _qc.z\\n      #define q12 _qc.w\\n      #define q13 _qd.x\\n      #define q14 _qd.y\\n      #define q15 _qd.z\\n      #define q16 _qd.w\\n      #define q17 _qe.x\\n      #define q18 _qe.y\\n      #define q19 _qe.z\\n      #define q20 _qe.w\\n      #define q21 _qf.x\\n      #define q22 _qf.y\\n      #define q23 _qf.z\\n      #define q24 _qf.w\\n      #define q25 _qg.x\\n      #define q26 _qg.y\\n      #define q27 _qg.z\\n      #define q28 _qg.w\\n      #define q29 _qh.x\\n      #define q30 _qh.y\\n      #define q31 _qh.z\\n      #define q32 _qh.w\\n\\n      uniform vec4 slow_roam_cos;\\n      uniform vec4 roam_cos;\\n      uniform vec4 slow_roam_sin;\\n      uniform vec4 roam_sin;\\n\\n      uniform float blur1_min;\\n      uniform float blur1_max;\\n      uniform float blur2_min;\\n      uniform float blur2_max;\\n      uniform float blur3_min;\\n      uniform float blur3_max;\\n\\n      uniform float scale1;\\n      uniform float scale2;\\n      uniform float scale3;\\n      uniform float bias1;\\n      uniform float bias2;\\n      uniform float bias3;\\n\\n      uniform vec4 rand_frame;\\n      uniform vec4 rand_preset;\\n\\n      float PI = ${Math.PI};\\n\\n      ${i}\\n\\n      void main(void) {\\n        vec3 ret;\\n        float rad = length(uv_orig - 0.5);\\n        float ang = atan(uv_orig.x - 0.5, uv_orig.y - 0.5);\\n\\n        ${e}\\n\\n        fragColor = vec4(ret, 1.0) * vColor;\\n      }\\n      `.trim()),this.gl.compileShader(r),this.gl.attachShader(this.shaderProgram,s),this.gl.attachShader(this.shaderProgram,r),this.gl.linkProgram(this.shaderProgram),this.positionLocation=this.gl.getAttribLocation(this.shaderProgram,\"aPos\"),this.warpUvLocation=this.gl.getAttribLocation(this.shaderProgram,\"aWarpUv\"),this.warpColorLocation=this.gl.getAttribLocation(this.shaderProgram,\"aWarpColor\"),this.textureLoc=this.gl.getUniformLocation(this.shaderProgram,\"sampler_main\"),this.textureFWLoc=this.gl.getUniformLocation(this.shaderProgram,\"sampler_fw_main\"),this.textureFCLoc=this.gl.getUniformLocation(this.shaderProgram,\"sampler_fc_main\"),this.texturePWLoc=this.gl.getUniformLocation(this.shaderProgram,\"sampler_pw_main\"),this.texturePCLoc=this.gl.getUniformLocation(this.shaderProgram,\"sampler_pc_main\"),this.blurTexture1Loc=this.gl.getUniformLocation(this.shaderProgram,\"sampler_blur1\"),this.blurTexture2Loc=this.gl.getUniformLocation(this.shaderProgram,\"sampler_blur2\"),this.blurTexture3Loc=this.gl.getUniformLocation(this.shaderProgram,\"sampler_blur3\"),this.noiseLQLoc=this.gl.getUniformLocation(this.shaderProgram,\"sampler_noise_lq\"),this.noiseMQLoc=this.gl.getUniformLocation(this.shaderProgram,\"sampler_noise_mq\"),this.noiseHQLoc=this.gl.getUniformLocation(this.shaderProgram,\"sampler_noise_hq\"),this.noiseLQLiteLoc=this.gl.getUniformLocation(this.shaderProgram,\"sampler_noise_lq_lite\"),this.noisePointLQLoc=this.gl.getUniformLocation(this.shaderProgram,\"sampler_pw_noise_lq\"),this.noiseVolLQLoc=this.gl.getUniformLocation(this.shaderProgram,\"sampler_noisevol_lq\"),this.noiseVolHQLoc=this.gl.getUniformLocation(this.shaderProgram,\"sampler_noisevol_hq\"),this.decayLoc=this.gl.getUniformLocation(this.shaderProgram,\"decay\"),this.texsizeLoc=this.gl.getUniformLocation(this.shaderProgram,\"texsize\"),this.texsizeNoiseLQLoc=this.gl.getUniformLocation(this.shaderProgram,\"texsize_noise_lq\"),this.texsizeNoiseMQLoc=this.gl.getUniformLocation(this.shaderProgram,\"texsize_noise_mq\"),this.texsizeNoiseHQLoc=this.gl.getUniformLocation(this.shaderProgram,\"texsize_noise_hq\"),this.texsizeNoiseLQLiteLoc=this.gl.getUniformLocation(this.shaderProgram,\"texsize_noise_lq_lite\"),this.texsizeNoiseVolLQLoc=this.gl.getUniformLocation(this.shaderProgram,\"texsize_noisevol_lq\"),this.texsizeNoiseVolHQLoc=this.gl.getUniformLocation(this.shaderProgram,\"texsize_noisevol_hq\"),this.resolutionLoc=this.gl.getUniformLocation(this.shaderProgram,\"resolution\"),this.aspectLoc=this.gl.getUniformLocation(this.shaderProgram,\"aspect\"),this.bassLoc=this.gl.getUniformLocation(this.shaderProgram,\"bass\"),this.midLoc=this.gl.getUniformLocation(this.shaderProgram,\"mid\"),this.trebLoc=this.gl.getUniformLocation(this.shaderProgram,\"treb\"),this.volLoc=this.gl.getUniformLocation(this.shaderProgram,\"vol\"),this.bassAttLoc=this.gl.getUniformLocation(this.shaderProgram,\"bass_att\"),this.midAttLoc=this.gl.getUniformLocation(this.shaderProgram,\"mid_att\"),this.trebAttLoc=this.gl.getUniformLocation(this.shaderProgram,\"treb_att\"),this.volAttLoc=this.gl.getUniformLocation(this.shaderProgram,\"vol_att\"),this.timeLoc=this.gl.getUniformLocation(this.shaderProgram,\"time\"),this.frameLoc=this.gl.getUniformLocation(this.shaderProgram,\"frame\"),this.fpsLoc=this.gl.getUniformLocation(this.shaderProgram,\"fps\"),this.blur1MinLoc=this.gl.getUniformLocation(this.shaderProgram,\"blur1_min\"),this.blur1MaxLoc=this.gl.getUniformLocation(this.shaderProgram,\"blur1_max\"),this.blur2MinLoc=this.gl.getUniformLocation(this.shaderProgram,\"blur2_min\"),this.blur2MaxLoc=this.gl.getUniformLocation(this.shaderProgram,\"blur2_max\"),this.blur3MinLoc=this.gl.getUniformLocation(this.shaderProgram,\"blur3_min\"),this.blur3MaxLoc=this.gl.getUniformLocation(this.shaderProgram,\"blur3_max\"),this.scale1Loc=this.gl.getUniformLocation(this.shaderProgram,\"scale1\"),this.scale2Loc=this.gl.getUniformLocation(this.shaderProgram,\"scale2\"),this.scale3Loc=this.gl.getUniformLocation(this.shaderProgram,\"scale3\"),this.bias1Loc=this.gl.getUniformLocation(this.shaderProgram,\"bias1\"),this.bias2Loc=this.gl.getUniformLocation(this.shaderProgram,\"bias2\"),this.bias3Loc=this.gl.getUniformLocation(this.shaderProgram,\"bias3\"),this.randPresetLoc=this.gl.getUniformLocation(this.shaderProgram,\"rand_preset\"),this.randFrameLoc=this.gl.getUniformLocation(this.shaderProgram,\"rand_frame\"),this.qaLoc=this.gl.getUniformLocation(this.shaderProgram,\"_qa\"),this.qbLoc=this.gl.getUniformLocation(this.shaderProgram,\"_qb\"),this.qcLoc=this.gl.getUniformLocation(this.shaderProgram,\"_qc\"),this.qdLoc=this.gl.getUniformLocation(this.shaderProgram,\"_qd\"),this.qeLoc=this.gl.getUniformLocation(this.shaderProgram,\"_qe\"),this.qfLoc=this.gl.getUniformLocation(this.shaderProgram,\"_qf\"),this.qgLoc=this.gl.getUniformLocation(this.shaderProgram,\"_qg\"),this.qhLoc=this.gl.getUniformLocation(this.shaderProgram,\"_qh\"),this.slowRoamCosLoc=this.gl.getUniformLocation(this.shaderProgram,\"slow_roam_cos\"),this.roamCosLoc=this.gl.getUniformLocation(this.shaderProgram,\"roam_cos\"),this.slowRoamSinLoc=this.gl.getUniformLocation(this.shaderProgram,\"slow_roam_sin\"),this.roamSinLoc=this.gl.getUniformLocation(this.shaderProgram,\"roam_sin\");for(let t=0;t<this.userTextures.length;t++){const e=this.userTextures[t];e.textureLoc=this.gl.getUniformLocation(this.shaderProgram,`sampler_${e.sampler}`)}}updateShader(t){this.createShader(t)}bindBlurVals(t,e){const i=t[0],s=t[1],r=t[2],a=e[0],o=e[1],h=e[2],A=a-i,n=i,l=o-s,c=s,g=h-r,m=r;this.gl.uniform1f(this.blur1MinLoc,i),this.gl.uniform1f(this.blur1MaxLoc,a),this.gl.uniform1f(this.blur2MinLoc,s),this.gl.uniform1f(this.blur2MaxLoc,o),this.gl.uniform1f(this.blur3MinLoc,r),this.gl.uniform1f(this.blur3MaxLoc,h),this.gl.uniform1f(this.scale1Loc,A),this.gl.uniform1f(this.scale2Loc,l),this.gl.uniform1f(this.scale3Loc,g),this.gl.uniform1f(this.bias1Loc,n),this.gl.uniform1f(this.bias2Loc,c),this.gl.uniform1f(this.bias3Loc,m)}renderQuadTexture(t,e,i,s,r,a,o,h,A,n,l){this.gl.useProgram(this.shaderProgram),this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER,this.indexBuf),this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER,this.indices,this.gl.STATIC_DRAW),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.positionVertexBuf),this.gl.bufferData(this.gl.ARRAY_BUFFER,this.vertices,this.gl.STATIC_DRAW),this.gl.vertexAttribPointer(this.positionLocation,3,this.gl.FLOAT,!1,0,0),this.gl.enableVertexAttribArray(this.positionLocation),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.warpUvVertexBuf),this.gl.bufferData(this.gl.ARRAY_BUFFER,n,this.gl.STATIC_DRAW),this.gl.vertexAttribPointer(this.warpUvLocation,2,this.gl.FLOAT,!1,0,0),this.gl.enableVertexAttribArray(this.warpUvLocation),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.warpColorVertexBuf),this.gl.bufferData(this.gl.ARRAY_BUFFER,l,this.gl.STATIC_DRAW),this.gl.vertexAttribPointer(this.warpColorLocation,4,this.gl.FLOAT,!1,0,0),this.gl.enableVertexAttribArray(this.warpColorLocation);const c=0!==h.wrap?this.gl.REPEAT:this.gl.CLAMP_TO_EDGE;this.gl.samplerParameteri(this.mainSampler,this.gl.TEXTURE_WRAP_S,c),this.gl.samplerParameteri(this.mainSampler,this.gl.TEXTURE_WRAP_T,c),this.gl.activeTexture(this.gl.TEXTURE0),this.gl.bindTexture(this.gl.TEXTURE_2D,e),this.gl.bindSampler(0,this.mainSampler),this.gl.uniform1i(this.textureLoc,0),this.gl.activeTexture(this.gl.TEXTURE1),this.gl.bindTexture(this.gl.TEXTURE_2D,e),this.gl.bindSampler(1,this.mainSamplerFW),this.gl.uniform1i(this.textureFWLoc,1),this.gl.activeTexture(this.gl.TEXTURE2),this.gl.bindTexture(this.gl.TEXTURE_2D,e),this.gl.bindSampler(2,this.mainSamplerFC),this.gl.uniform1i(this.textureFCLoc,2),this.gl.activeTexture(this.gl.TEXTURE3),this.gl.bindTexture(this.gl.TEXTURE_2D,e),this.gl.bindSampler(3,this.mainSamplerPW),this.gl.uniform1i(this.texturePWLoc,3),this.gl.activeTexture(this.gl.TEXTURE4),this.gl.bindTexture(this.gl.TEXTURE_2D,e),this.gl.bindSampler(4,this.mainSamplerPC),this.gl.uniform1i(this.texturePCLoc,4),this.gl.activeTexture(this.gl.TEXTURE5),this.gl.bindTexture(this.gl.TEXTURE_2D,i),this.gl.uniform1i(this.blurTexture1Loc,5),this.gl.activeTexture(this.gl.TEXTURE6),this.gl.bindTexture(this.gl.TEXTURE_2D,s),this.gl.uniform1i(this.blurTexture2Loc,6),this.gl.activeTexture(this.gl.TEXTURE7),this.gl.bindTexture(this.gl.TEXTURE_2D,r),this.gl.uniform1i(this.blurTexture3Loc,7),this.gl.activeTexture(this.gl.TEXTURE8),this.gl.bindTexture(this.gl.TEXTURE_2D,this.noise.noiseTexLQ),this.gl.uniform1i(this.noiseLQLoc,8),this.gl.activeTexture(this.gl.TEXTURE9),this.gl.bindTexture(this.gl.TEXTURE_2D,this.noise.noiseTexMQ),this.gl.uniform1i(this.noiseMQLoc,9),this.gl.activeTexture(this.gl.TEXTURE10),this.gl.bindTexture(this.gl.TEXTURE_2D,this.noise.noiseTexHQ),this.gl.uniform1i(this.noiseHQLoc,10),this.gl.activeTexture(this.gl.TEXTURE11),this.gl.bindTexture(this.gl.TEXTURE_2D,this.noise.noiseTexLQLite),this.gl.uniform1i(this.noiseLQLiteLoc,11),this.gl.activeTexture(this.gl.TEXTURE12),this.gl.bindTexture(this.gl.TEXTURE_2D,this.noise.noiseTexLQ),this.gl.bindSampler(12,this.noise.noiseTexPointLQ),this.gl.uniform1i(this.noisePointLQLoc,12),this.gl.activeTexture(this.gl.TEXTURE13),this.gl.bindTexture(this.gl.TEXTURE_3D,this.noise.noiseTexVolLQ),this.gl.uniform1i(this.noiseVolLQLoc,13),this.gl.activeTexture(this.gl.TEXTURE14),this.gl.bindTexture(this.gl.TEXTURE_3D,this.noise.noiseTexVolHQ),this.gl.uniform1i(this.noiseVolHQLoc,14);for(let t=0;t<this.userTextures.length;t++){const e=this.userTextures[t];this.gl.activeTexture(this.gl.TEXTURE15+t),this.gl.bindTexture(this.gl.TEXTURE_2D,this.image.getTexture(e.sampler)),this.gl.uniform1i(e.textureLoc,15+t)}this.gl.uniform1f(this.decayLoc,h.decay),this.gl.uniform2fv(this.resolutionLoc,[this.texsizeX,this.texsizeY]),this.gl.uniform4fv(this.aspectLoc,[this.aspectx,this.aspecty,this.invAspectx,this.invAspecty]),this.gl.uniform4fv(this.texsizeLoc,[this.texsizeX,this.texsizeY,1/this.texsizeX,1/this.texsizeY]),this.gl.uniform4fv(this.texsizeNoiseLQLoc,[256,256,1/256,1/256]),this.gl.uniform4fv(this.texsizeNoiseMQLoc,[256,256,1/256,1/256]),this.gl.uniform4fv(this.texsizeNoiseHQLoc,[256,256,1/256,1/256]),this.gl.uniform4fv(this.texsizeNoiseLQLiteLoc,[32,32,1/32,1/32]),this.gl.uniform4fv(this.texsizeNoiseVolLQLoc,[32,32,1/32,1/32]),this.gl.uniform4fv(this.texsizeNoiseVolHQLoc,[32,32,1/32,1/32]),this.gl.uniform1f(this.bassLoc,h.bass),this.gl.uniform1f(this.midLoc,h.mid),this.gl.uniform1f(this.trebLoc,h.treb),this.gl.uniform1f(this.volLoc,(h.bass+h.mid+h.treb)/3),this.gl.uniform1f(this.bassAttLoc,h.bass_att),this.gl.uniform1f(this.midAttLoc,h.mid_att),this.gl.uniform1f(this.trebAttLoc,h.treb_att),this.gl.uniform1f(this.volAttLoc,(h.bass_att+h.mid_att+h.treb_att)/3),this.gl.uniform1f(this.timeLoc,h.time),this.gl.uniform1f(this.frameLoc,h.frame),this.gl.uniform1f(this.fpsLoc,h.fps),this.gl.uniform4fv(this.randPresetLoc,h.rand_preset),this.gl.uniform4fv(this.randFrameLoc,new Float32Array([this.rng.random(),this.rng.random(),this.rng.random(),this.rng.random()])),this.gl.uniform4fv(this.qaLoc,new Float32Array([A.q1||0,A.q2||0,A.q3||0,A.q4||0])),this.gl.uniform4fv(this.qbLoc,new Float32Array([A.q5||0,A.q6||0,A.q7||0,A.q8||0])),this.gl.uniform4fv(this.qcLoc,new Float32Array([A.q9||0,A.q10||0,A.q11||0,A.q12||0])),this.gl.uniform4fv(this.qdLoc,new Float32Array([A.q13||0,A.q14||0,A.q15||0,A.q16||0])),this.gl.uniform4fv(this.qeLoc,new Float32Array([A.q17||0,A.q18||0,A.q19||0,A.q20||0])),this.gl.uniform4fv(this.qfLoc,new Float32Array([A.q21||0,A.q22||0,A.q23||0,A.q24||0])),this.gl.uniform4fv(this.qgLoc,new Float32Array([A.q25||0,A.q26||0,A.q27||0,A.q28||0])),this.gl.uniform4fv(this.qhLoc,new Float32Array([A.q29||0,A.q30||0,A.q31||0,A.q32||0])),this.gl.uniform4fv(this.slowRoamCosLoc,[.5+.5*Math.cos(.005*h.time),.5+.5*Math.cos(.008*h.time),.5+.5*Math.cos(.013*h.time),.5+.5*Math.cos(.022*h.time)]),this.gl.uniform4fv(this.roamCosLoc,[.5+.5*Math.cos(.3*h.time),.5+.5*Math.cos(1.3*h.time),.5+.5*Math.cos(5*h.time),.5+.5*Math.cos(20*h.time)]),this.gl.uniform4fv(this.slowRoamSinLoc,[.5+.5*Math.sin(.005*h.time),.5+.5*Math.sin(.008*h.time),.5+.5*Math.sin(.013*h.time),.5+.5*Math.sin(.022*h.time)]),this.gl.uniform4fv(this.roamSinLoc,[.5+.5*Math.sin(.3*h.time),.5+.5*Math.sin(1.3*h.time),.5+.5*Math.sin(5*h.time),.5+.5*Math.sin(20*h.time)]),this.bindBlurVals(a,o),t?this.gl.blendFunc(this.gl.SRC_ALPHA,this.gl.ONE_MINUS_SRC_ALPHA):this.gl.disable(this.gl.BLEND),this.gl.drawElements(this.gl.TRIANGLES,this.indices.length,this.gl.UNSIGNED_SHORT,0),t||this.gl.enable(this.gl.BLEND)}}class It{constructor(t,e,i,s={}){this.gl=t,this.noise=e,this.image=i,this.rng=mt(),this.mesh_width=s.mesh_width,this.mesh_height=s.mesh_height,this.texsizeX=s.texsizeX,this.texsizeY=s.texsizeY,this.aspectx=s.aspectx,this.aspecty=s.aspecty,this.invAspectx=1/this.aspectx,this.invAspecty=1/this.aspecty,this.compWidth=32,this.compHeight=24,this.buildPositions(),this.indexBuf=t.createBuffer(),this.positionVertexBuf=this.gl.createBuffer(),this.compColorVertexBuf=this.gl.createBuffer(),this.floatPrecision=_t.getFragmentFloatPrecision(this.gl),this.createShader(),this.mainSampler=this.gl.createSampler(),this.mainSamplerFW=this.gl.createSampler(),this.mainSamplerFC=this.gl.createSampler(),this.mainSamplerPW=this.gl.createSampler(),this.mainSamplerPC=this.gl.createSampler(),t.samplerParameteri(this.mainSampler,t.TEXTURE_MIN_FILTER,t.LINEAR_MIPMAP_LINEAR),t.samplerParameteri(this.mainSampler,t.TEXTURE_MAG_FILTER,t.LINEAR),t.samplerParameteri(this.mainSampler,t.TEXTURE_WRAP_S,t.REPEAT),t.samplerParameteri(this.mainSampler,t.TEXTURE_WRAP_T,t.REPEAT),t.samplerParameteri(this.mainSamplerFW,t.TEXTURE_MIN_FILTER,t.LINEAR_MIPMAP_LINEAR),t.samplerParameteri(this.mainSamplerFW,t.TEXTURE_MAG_FILTER,t.LINEAR),t.samplerParameteri(this.mainSamplerFW,t.TEXTURE_WRAP_S,t.REPEAT),t.samplerParameteri(this.mainSamplerFW,t.TEXTURE_WRAP_T,t.REPEAT),t.samplerParameteri(this.mainSamplerFC,t.TEXTURE_MIN_FILTER,t.LINEAR_MIPMAP_LINEAR),t.samplerParameteri(this.mainSamplerFC,t.TEXTURE_MAG_FILTER,t.LINEAR),t.samplerParameteri(this.mainSamplerFC,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.samplerParameteri(this.mainSamplerFC,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),t.samplerParameteri(this.mainSamplerPW,t.TEXTURE_MIN_FILTER,t.NEAREST_MIPMAP_NEAREST),t.samplerParameteri(this.mainSamplerPW,t.TEXTURE_MAG_FILTER,t.NEAREST),t.samplerParameteri(this.mainSamplerPW,t.TEXTURE_WRAP_S,t.REPEAT),t.samplerParameteri(this.mainSamplerPW,t.TEXTURE_WRAP_T,t.REPEAT),t.samplerParameteri(this.mainSamplerPC,t.TEXTURE_MIN_FILTER,t.NEAREST_MIPMAP_NEAREST),t.samplerParameteri(this.mainSamplerPC,t.TEXTURE_MAG_FILTER,t.NEAREST),t.samplerParameteri(this.mainSamplerPC,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.samplerParameteri(this.mainSamplerPC,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE)}buildPositions(){const t=this.compWidth,e=this.compHeight,i=t+1,s=e+1,r=2/t,a=2/e,o=[];for(let t=0;t<s;t++){const e=t*a-1;for(let t=0;t<i;t++){const i=t*r-1;o.push(i,-e,0)}}const h=[];for(let s=0;s<e;s++)for(let e=0;e<t;e++){const t=e+i*s,r=e+i*(s+1),a=e+1+i*(s+1),o=e+1+i*s;h.push(t,r,o),h.push(r,a,o)}this.vertices=new Float32Array(o),this.indices=new Uint16Array(h)}updateGlobals(t){this.mesh_width=t.mesh_width,this.mesh_height=t.mesh_height,this.texsizeX=t.texsizeX,this.texsizeY=t.texsizeY,this.aspectx=t.aspectx,this.aspecty=t.aspecty,this.invAspectx=1/this.aspectx,this.invAspecty=1/this.aspecty,this.buildPositions()}createShader(t=\"\"){let e,i;if(0===t.length)e=\"float orient_horiz = mod(echo_orientation, 2.0);\\n                        float orient_x = (orient_horiz != 0.0) ? -1.0 : 1.0;\\n                        float orient_y = (echo_orientation >= 2.0) ? -1.0 : 1.0;\\n                        vec2 uv_echo = ((uv - 0.5) *\\n                                        (1.0 / echo_zoom) *\\n                                        vec2(orient_x, orient_y)) + 0.5;\\n\\n                        ret = mix(texture(sampler_main, uv).rgb,\\n                                  texture(sampler_main, uv_echo).rgb,\\n                                  echo_alpha);\\n\\n                        ret *= gammaAdj;\\n\\n                        if(fShader >= 1.0) {\\n                          ret *= hue_shader;\\n                        } else if(fShader > 0.001) {\\n                          ret *= (1.0 - fShader) + (fShader * hue_shader);\\n                        }\\n\\n                        if(brighten != 0) ret = sqrt(ret);\\n                        if(darken != 0) ret = ret*ret;\\n                        if(solarize != 0) ret = ret * (1.0 - ret) * 4.0;\\n                        if(invert != 0) ret = 1.0 - ret;\",i=\"\";else{const s=_t.getShaderParts(t);i=s[0],e=s[1]}e=e.replace(/texture2D/g,\"texture\"),e=e.replace(/texture3D/g,\"texture\"),this.userTextures=_t.getUserSamplers(i),this.shaderProgram=this.gl.createProgram();const s=this.gl.createShader(this.gl.VERTEX_SHADER);this.gl.shaderSource(s,\"\\n      #version 300 es\\n      const vec2 halfmad = vec2(0.5);\\n      in vec2 aPos;\\n      in vec4 aCompColor;\\n      out vec2 vUv;\\n      out vec4 vColor;\\n      void main(void) {\\n        gl_Position = vec4(aPos, 0.0, 1.0);\\n        vUv = aPos * halfmad + halfmad;\\n        vColor = aCompColor;\\n      }\\n      \".trim()),this.gl.compileShader(s);const r=this.gl.createShader(this.gl.FRAGMENT_SHADER);this.gl.shaderSource(r,`\\n      #version 300 es\\n      precision ${this.floatPrecision} float;\\n      precision highp int;\\n      precision mediump sampler2D;\\n      precision mediump sampler3D;\\n\\n      vec3 lum(vec3 v){\\n          return vec3(dot(v, vec3(0.32,0.49,0.29)));\\n      }\\n\\n      in vec2 vUv;\\n      in vec4 vColor;\\n      out vec4 fragColor;\\n      uniform sampler2D sampler_main;\\n      uniform sampler2D sampler_fw_main;\\n      uniform sampler2D sampler_fc_main;\\n      uniform sampler2D sampler_pw_main;\\n      uniform sampler2D sampler_pc_main;\\n      uniform sampler2D sampler_blur1;\\n      uniform sampler2D sampler_blur2;\\n      uniform sampler2D sampler_blur3;\\n      uniform sampler2D sampler_noise_lq;\\n      uniform sampler2D sampler_noise_lq_lite;\\n      uniform sampler2D sampler_noise_mq;\\n      uniform sampler2D sampler_noise_hq;\\n      uniform sampler2D sampler_pw_noise_lq;\\n      uniform sampler3D sampler_noisevol_lq;\\n      uniform sampler3D sampler_noisevol_hq;\\n\\n      uniform float time;\\n      uniform float gammaAdj;\\n      uniform float echo_zoom;\\n      uniform float echo_alpha;\\n      uniform float echo_orientation;\\n      uniform int invert;\\n      uniform int brighten;\\n      uniform int darken;\\n      uniform int solarize;\\n      uniform vec2 resolution;\\n      uniform vec4 aspect;\\n      uniform vec4 texsize;\\n      uniform vec4 texsize_noise_lq;\\n      uniform vec4 texsize_noise_mq;\\n      uniform vec4 texsize_noise_hq;\\n      uniform vec4 texsize_noise_lq_lite;\\n      uniform vec4 texsize_noisevol_lq;\\n      uniform vec4 texsize_noisevol_hq;\\n\\n      uniform float bass;\\n      uniform float mid;\\n      uniform float treb;\\n      uniform float vol;\\n      uniform float bass_att;\\n      uniform float mid_att;\\n      uniform float treb_att;\\n      uniform float vol_att;\\n\\n      uniform float frame;\\n      uniform float fps;\\n\\n      uniform vec4 _qa;\\n      uniform vec4 _qb;\\n      uniform vec4 _qc;\\n      uniform vec4 _qd;\\n      uniform vec4 _qe;\\n      uniform vec4 _qf;\\n      uniform vec4 _qg;\\n      uniform vec4 _qh;\\n\\n      #define q1 _qa.x\\n      #define q2 _qa.y\\n      #define q3 _qa.z\\n      #define q4 _qa.w\\n      #define q5 _qb.x\\n      #define q6 _qb.y\\n      #define q7 _qb.z\\n      #define q8 _qb.w\\n      #define q9 _qc.x\\n      #define q10 _qc.y\\n      #define q11 _qc.z\\n      #define q12 _qc.w\\n      #define q13 _qd.x\\n      #define q14 _qd.y\\n      #define q15 _qd.z\\n      #define q16 _qd.w\\n      #define q17 _qe.x\\n      #define q18 _qe.y\\n      #define q19 _qe.z\\n      #define q20 _qe.w\\n      #define q21 _qf.x\\n      #define q22 _qf.y\\n      #define q23 _qf.z\\n      #define q24 _qf.w\\n      #define q25 _qg.x\\n      #define q26 _qg.y\\n      #define q27 _qg.z\\n      #define q28 _qg.w\\n      #define q29 _qh.x\\n      #define q30 _qh.y\\n      #define q31 _qh.z\\n      #define q32 _qh.w\\n\\n      uniform vec4 slow_roam_cos;\\n      uniform vec4 roam_cos;\\n      uniform vec4 slow_roam_sin;\\n      uniform vec4 roam_sin;\\n\\n      uniform float blur1_min;\\n      uniform float blur1_max;\\n      uniform float blur2_min;\\n      uniform float blur2_max;\\n      uniform float blur3_min;\\n      uniform float blur3_max;\\n\\n      uniform float scale1;\\n      uniform float scale2;\\n      uniform float scale3;\\n      uniform float bias1;\\n      uniform float bias2;\\n      uniform float bias3;\\n\\n      uniform vec4 rand_frame;\\n      uniform vec4 rand_preset;\\n\\n      uniform float fShader;\\n\\n      float PI = ${Math.PI};\\n\\n      ${i}\\n\\n      void main(void) {\\n        vec3 ret;\\n        vec2 uv = vUv;\\n        vec2 uv_orig = vUv;\\n        uv.y = 1.0 - uv.y;\\n        uv_orig.y = 1.0 - uv_orig.y;\\n        float rad = length(uv - 0.5);\\n        float ang = atan(uv.x - 0.5, uv.y - 0.5);\\n        vec3 hue_shader = vColor.rgb;\\n\\n        ${e}\\n\\n        fragColor = vec4(ret, vColor.a);\\n      }\\n      `.trim()),this.gl.compileShader(r),this.gl.attachShader(this.shaderProgram,s),this.gl.attachShader(this.shaderProgram,r),this.gl.linkProgram(this.shaderProgram),this.positionLocation=this.gl.getAttribLocation(this.shaderProgram,\"aPos\"),this.compColorLocation=this.gl.getAttribLocation(this.shaderProgram,\"aCompColor\"),this.textureLoc=this.gl.getUniformLocation(this.shaderProgram,\"sampler_main\"),this.textureFWLoc=this.gl.getUniformLocation(this.shaderProgram,\"sampler_fw_main\"),this.textureFCLoc=this.gl.getUniformLocation(this.shaderProgram,\"sampler_fc_main\"),this.texturePWLoc=this.gl.getUniformLocation(this.shaderProgram,\"sampler_pw_main\"),this.texturePCLoc=this.gl.getUniformLocation(this.shaderProgram,\"sampler_pc_main\"),this.blurTexture1Loc=this.gl.getUniformLocation(this.shaderProgram,\"sampler_blur1\"),this.blurTexture2Loc=this.gl.getUniformLocation(this.shaderProgram,\"sampler_blur2\"),this.blurTexture3Loc=this.gl.getUniformLocation(this.shaderProgram,\"sampler_blur3\"),this.noiseLQLoc=this.gl.getUniformLocation(this.shaderProgram,\"sampler_noise_lq\"),this.noiseMQLoc=this.gl.getUniformLocation(this.shaderProgram,\"sampler_noise_mq\"),this.noiseHQLoc=this.gl.getUniformLocation(this.shaderProgram,\"sampler_noise_hq\"),this.noiseLQLiteLoc=this.gl.getUniformLocation(this.shaderProgram,\"sampler_noise_lq_lite\"),this.noisePointLQLoc=this.gl.getUniformLocation(this.shaderProgram,\"sampler_pw_noise_lq\"),this.noiseVolLQLoc=this.gl.getUniformLocation(this.shaderProgram,\"sampler_noisevol_lq\"),this.noiseVolHQLoc=this.gl.getUniformLocation(this.shaderProgram,\"sampler_noisevol_hq\"),this.timeLoc=this.gl.getUniformLocation(this.shaderProgram,\"time\"),this.gammaAdjLoc=this.gl.getUniformLocation(this.shaderProgram,\"gammaAdj\"),this.echoZoomLoc=this.gl.getUniformLocation(this.shaderProgram,\"echo_zoom\"),this.echoAlphaLoc=this.gl.getUniformLocation(this.shaderProgram,\"echo_alpha\"),this.echoOrientationLoc=this.gl.getUniformLocation(this.shaderProgram,\"echo_orientation\"),this.invertLoc=this.gl.getUniformLocation(this.shaderProgram,\"invert\"),this.brightenLoc=this.gl.getUniformLocation(this.shaderProgram,\"brighten\"),this.darkenLoc=this.gl.getUniformLocation(this.shaderProgram,\"darken\"),this.solarizeLoc=this.gl.getUniformLocation(this.shaderProgram,\"solarize\"),this.texsizeLoc=this.gl.getUniformLocation(this.shaderProgram,\"texsize\"),this.texsizeNoiseLQLoc=this.gl.getUniformLocation(this.shaderProgram,\"texsize_noise_lq\"),this.texsizeNoiseMQLoc=this.gl.getUniformLocation(this.shaderProgram,\"texsize_noise_mq\"),this.texsizeNoiseHQLoc=this.gl.getUniformLocation(this.shaderProgram,\"texsize_noise_hq\"),this.texsizeNoiseLQLiteLoc=this.gl.getUniformLocation(this.shaderProgram,\"texsize_noise_lq_lite\"),this.texsizeNoiseVolLQLoc=this.gl.getUniformLocation(this.shaderProgram,\"texsize_noisevol_lq\"),this.texsizeNoiseVolHQLoc=this.gl.getUniformLocation(this.shaderProgram,\"texsize_noisevol_hq\"),this.resolutionLoc=this.gl.getUniformLocation(this.shaderProgram,\"resolution\"),this.aspectLoc=this.gl.getUniformLocation(this.shaderProgram,\"aspect\"),this.bassLoc=this.gl.getUniformLocation(this.shaderProgram,\"bass\"),this.midLoc=this.gl.getUniformLocation(this.shaderProgram,\"mid\"),this.trebLoc=this.gl.getUniformLocation(this.shaderProgram,\"treb\"),this.volLoc=this.gl.getUniformLocation(this.shaderProgram,\"vol\"),this.bassAttLoc=this.gl.getUniformLocation(this.shaderProgram,\"bass_att\"),this.midAttLoc=this.gl.getUniformLocation(this.shaderProgram,\"mid_att\"),this.trebAttLoc=this.gl.getUniformLocation(this.shaderProgram,\"treb_att\"),this.volAttLoc=this.gl.getUniformLocation(this.shaderProgram,\"vol_att\"),this.frameLoc=this.gl.getUniformLocation(this.shaderProgram,\"frame\"),this.fpsLoc=this.gl.getUniformLocation(this.shaderProgram,\"fps\"),this.blur1MinLoc=this.gl.getUniformLocation(this.shaderProgram,\"blur1_min\"),this.blur1MaxLoc=this.gl.getUniformLocation(this.shaderProgram,\"blur1_max\"),this.blur2MinLoc=this.gl.getUniformLocation(this.shaderProgram,\"blur2_min\"),this.blur2MaxLoc=this.gl.getUniformLocation(this.shaderProgram,\"blur2_max\"),this.blur3MinLoc=this.gl.getUniformLocation(this.shaderProgram,\"blur3_min\"),this.blur3MaxLoc=this.gl.getUniformLocation(this.shaderProgram,\"blur3_max\"),this.scale1Loc=this.gl.getUniformLocation(this.shaderProgram,\"scale1\"),this.scale2Loc=this.gl.getUniformLocation(this.shaderProgram,\"scale2\"),this.scale3Loc=this.gl.getUniformLocation(this.shaderProgram,\"scale3\"),this.bias1Loc=this.gl.getUniformLocation(this.shaderProgram,\"bias1\"),this.bias2Loc=this.gl.getUniformLocation(this.shaderProgram,\"bias2\"),this.bias3Loc=this.gl.getUniformLocation(this.shaderProgram,\"bias3\"),this.randPresetLoc=this.gl.getUniformLocation(this.shaderProgram,\"rand_preset\"),this.randFrameLoc=this.gl.getUniformLocation(this.shaderProgram,\"rand_frame\"),this.fShaderLoc=this.gl.getUniformLocation(this.shaderProgram,\"fShader\"),this.qaLoc=this.gl.getUniformLocation(this.shaderProgram,\"_qa\"),this.qbLoc=this.gl.getUniformLocation(this.shaderProgram,\"_qb\"),this.qcLoc=this.gl.getUniformLocation(this.shaderProgram,\"_qc\"),this.qdLoc=this.gl.getUniformLocation(this.shaderProgram,\"_qd\"),this.qeLoc=this.gl.getUniformLocation(this.shaderProgram,\"_qe\"),this.qfLoc=this.gl.getUniformLocation(this.shaderProgram,\"_qf\"),this.qgLoc=this.gl.getUniformLocation(this.shaderProgram,\"_qg\"),this.qhLoc=this.gl.getUniformLocation(this.shaderProgram,\"_qh\"),this.slowRoamCosLoc=this.gl.getUniformLocation(this.shaderProgram,\"slow_roam_cos\"),this.roamCosLoc=this.gl.getUniformLocation(this.shaderProgram,\"roam_cos\"),this.slowRoamSinLoc=this.gl.getUniformLocation(this.shaderProgram,\"slow_roam_sin\"),this.roamSinLoc=this.gl.getUniformLocation(this.shaderProgram,\"roam_sin\");for(let t=0;t<this.userTextures.length;t++){const e=this.userTextures[t];e.textureLoc=this.gl.getUniformLocation(this.shaderProgram,`sampler_${e.sampler}`)}}updateShader(t){this.createShader(t)}bindBlurVals(t,e){const i=t[0],s=t[1],r=t[2],a=e[0],o=e[1],h=e[2],A=a-i,n=i,l=o-s,c=s,g=h-r,m=r;this.gl.uniform1f(this.blur1MinLoc,i),this.gl.uniform1f(this.blur1MaxLoc,a),this.gl.uniform1f(this.blur2MinLoc,s),this.gl.uniform1f(this.blur2MaxLoc,o),this.gl.uniform1f(this.blur3MinLoc,r),this.gl.uniform1f(this.blur3MaxLoc,h),this.gl.uniform1f(this.scale1Loc,A),this.gl.uniform1f(this.scale2Loc,l),this.gl.uniform1f(this.scale3Loc,g),this.gl.uniform1f(this.bias1Loc,n),this.gl.uniform1f(this.bias2Loc,c),this.gl.uniform1f(this.bias3Loc,m)}static generateHueBase(t){const e=new Float32Array([1,1,1,1,1,1,1,1,1,1,1,1]);for(let i=0;i<4;i++){e[3*i+0]=.6+.3*Math.sin(30*t.time*.0143+3+21*i+t.rand_start[3]),e[3*i+1]=.6+.3*Math.sin(30*t.time*.0107+1+13*i+t.rand_start[1]),e[3*i+2]=.6+.3*Math.sin(30*t.time*.0129+6+9*i+t.rand_start[2]);const s=Math.max(e[3*i],e[3*i+1],e[3*i+2]);for(let t=0;t<3;t++)e[3*i+t]=e[3*i+t]/s,e[3*i+t]=.5+.5*e[3*i+t]}return e}generateCompColors(t,e,i){const s=It.generateHueBase(e),r=this.compWidth+1,a=this.compHeight+1,o=new Float32Array(r*a*4);let h=0;for(let e=0;e<a;e++)for(let a=0;a<r;a++){let r=a/this.compWidth,A=e/this.compHeight;const n=[1,1,1];for(let t=0;t<3;t++)n[t]=s[0+t]*r*A+s[3+t]*(1-r)*A+s[6+t]*r*(1-A)+s[9+t]*(1-r)*(1-A);let l=1;if(t){r*=this.mesh_width+1,A*=this.mesh_height+1,r=Math.clamp(r,0,this.mesh_width-1),A=Math.clamp(A,0,this.mesh_height-1);const t=Math.floor(r),e=Math.floor(A),s=r-t,a=A-e;l=i[4*(e*(this.mesh_width+1)+t)+3]*(1-s)*(1-a)+i[4*(e*(this.mesh_width+1)+(t+1))+3]*s*(1-a)+i[4*((e+1)*(this.mesh_width+1)+t)+3]*(1-s)*a+i[4*((e+1)*(this.mesh_width+1)+(t+1))+3]*s*a}o[h+0]=n[0],o[h+1]=n[1],o[h+2]=n[2],o[h+3]=l,h+=4}return o}renderQuadTexture(t,e,i,s,r,a,o,h,A,n){const l=this.generateCompColors(t,h,n);this.gl.useProgram(this.shaderProgram),this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER,this.indexBuf),this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER,this.indices,this.gl.STATIC_DRAW),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.positionVertexBuf),this.gl.bufferData(this.gl.ARRAY_BUFFER,this.vertices,this.gl.STATIC_DRAW),this.gl.vertexAttribPointer(this.positionLocation,3,this.gl.FLOAT,!1,0,0),this.gl.enableVertexAttribArray(this.positionLocation),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.compColorVertexBuf),this.gl.bufferData(this.gl.ARRAY_BUFFER,l,this.gl.STATIC_DRAW),this.gl.vertexAttribPointer(this.compColorLocation,4,this.gl.FLOAT,!1,0,0),this.gl.enableVertexAttribArray(this.compColorLocation);const c=0!==h.wrap?this.gl.REPEAT:this.gl.CLAMP_TO_EDGE;this.gl.samplerParameteri(this.mainSampler,this.gl.TEXTURE_WRAP_S,c),this.gl.samplerParameteri(this.mainSampler,this.gl.TEXTURE_WRAP_T,c),this.gl.activeTexture(this.gl.TEXTURE0),this.gl.bindTexture(this.gl.TEXTURE_2D,e),this.gl.bindSampler(0,this.mainSampler),this.gl.uniform1i(this.textureLoc,0),this.gl.activeTexture(this.gl.TEXTURE1),this.gl.bindTexture(this.gl.TEXTURE_2D,e),this.gl.bindSampler(1,this.mainSamplerFW),this.gl.uniform1i(this.textureFWLoc,1),this.gl.activeTexture(this.gl.TEXTURE2),this.gl.bindTexture(this.gl.TEXTURE_2D,e),this.gl.bindSampler(2,this.mainSamplerFC),this.gl.uniform1i(this.textureFCLoc,2),this.gl.activeTexture(this.gl.TEXTURE3),this.gl.bindTexture(this.gl.TEXTURE_2D,e),this.gl.bindSampler(3,this.mainSamplerPW),this.gl.uniform1i(this.texturePWLoc,3),this.gl.activeTexture(this.gl.TEXTURE4),this.gl.bindTexture(this.gl.TEXTURE_2D,e),this.gl.bindSampler(4,this.mainSamplerPC),this.gl.uniform1i(this.texturePCLoc,4),this.gl.activeTexture(this.gl.TEXTURE5),this.gl.bindTexture(this.gl.TEXTURE_2D,i),this.gl.uniform1i(this.blurTexture1Loc,5),this.gl.activeTexture(this.gl.TEXTURE6),this.gl.bindTexture(this.gl.TEXTURE_2D,s),this.gl.uniform1i(this.blurTexture2Loc,6),this.gl.activeTexture(this.gl.TEXTURE7),this.gl.bindTexture(this.gl.TEXTURE_2D,r),this.gl.uniform1i(this.blurTexture3Loc,7),this.gl.activeTexture(this.gl.TEXTURE8),this.gl.bindTexture(this.gl.TEXTURE_2D,this.noise.noiseTexLQ),this.gl.uniform1i(this.noiseLQLoc,8),this.gl.activeTexture(this.gl.TEXTURE9),this.gl.bindTexture(this.gl.TEXTURE_2D,this.noise.noiseTexMQ),this.gl.uniform1i(this.noiseMQLoc,9),this.gl.activeTexture(this.gl.TEXTURE10),this.gl.bindTexture(this.gl.TEXTURE_2D,this.noise.noiseTexHQ),this.gl.uniform1i(this.noiseHQLoc,10),this.gl.activeTexture(this.gl.TEXTURE11),this.gl.bindTexture(this.gl.TEXTURE_2D,this.noise.noiseTexLQLite),this.gl.uniform1i(this.noiseLQLiteLoc,11),this.gl.activeTexture(this.gl.TEXTURE12),this.gl.bindTexture(this.gl.TEXTURE_2D,this.noise.noiseTexLQ),this.gl.bindSampler(12,this.noise.noiseTexPointLQ),this.gl.uniform1i(this.noisePointLQLoc,12),this.gl.activeTexture(this.gl.TEXTURE13),this.gl.bindTexture(this.gl.TEXTURE_3D,this.noise.noiseTexVolLQ),this.gl.uniform1i(this.noiseVolLQLoc,13),this.gl.activeTexture(this.gl.TEXTURE14),this.gl.bindTexture(this.gl.TEXTURE_3D,this.noise.noiseTexVolHQ),this.gl.uniform1i(this.noiseVolHQLoc,14);for(let t=0;t<this.userTextures.length;t++){const e=this.userTextures[t];this.gl.activeTexture(this.gl.TEXTURE15+t),this.gl.bindTexture(this.gl.TEXTURE_2D,this.image.getTexture(e.sampler)),this.gl.uniform1i(e.textureLoc,15+t)}this.gl.uniform1f(this.timeLoc,h.time),this.gl.uniform1f(this.gammaAdjLoc,h.gammaadj),this.gl.uniform1f(this.echoZoomLoc,h.echo_zoom),this.gl.uniform1f(this.echoAlphaLoc,h.echo_alpha),this.gl.uniform1f(this.echoOrientationLoc,h.echo_orient),this.gl.uniform1i(this.invertLoc,h.invert),this.gl.uniform1i(this.brightenLoc,h.brighten),this.gl.uniform1i(this.darkenLoc,h.darken),this.gl.uniform1i(this.solarizeLoc,h.solarize),this.gl.uniform2fv(this.resolutionLoc,[this.texsizeX,this.texsizeY]),this.gl.uniform4fv(this.aspectLoc,[this.aspectx,this.aspecty,this.invAspectx,this.invAspecty]),this.gl.uniform4fv(this.texsizeLoc,new Float32Array([this.texsizeX,this.texsizeY,1/this.texsizeX,1/this.texsizeY])),this.gl.uniform4fv(this.texsizeNoiseLQLoc,[256,256,1/256,1/256]),this.gl.uniform4fv(this.texsizeNoiseMQLoc,[256,256,1/256,1/256]),this.gl.uniform4fv(this.texsizeNoiseHQLoc,[256,256,1/256,1/256]),this.gl.uniform4fv(this.texsizeNoiseLQLiteLoc,[32,32,1/32,1/32]),this.gl.uniform4fv(this.texsizeNoiseVolLQLoc,[32,32,1/32,1/32]),this.gl.uniform4fv(this.texsizeNoiseVolHQLoc,[32,32,1/32,1/32]),this.gl.uniform1f(this.bassLoc,h.bass),this.gl.uniform1f(this.midLoc,h.mid),this.gl.uniform1f(this.trebLoc,h.treb),this.gl.uniform1f(this.volLoc,(h.bass+h.mid+h.treb)/3),this.gl.uniform1f(this.bassAttLoc,h.bass_att),this.gl.uniform1f(this.midAttLoc,h.mid_att),this.gl.uniform1f(this.trebAttLoc,h.treb_att),this.gl.uniform1f(this.volAttLoc,(h.bass_att+h.mid_att+h.treb_att)/3),this.gl.uniform1f(this.frameLoc,h.frame),this.gl.uniform1f(this.fpsLoc,h.fps),this.gl.uniform4fv(this.randPresetLoc,h.rand_preset),this.gl.uniform4fv(this.randFrameLoc,new Float32Array([this.rng.random(),this.rng.random(),this.rng.random(),this.rng.random()])),this.gl.uniform1f(this.fShaderLoc,h.fshader),this.gl.uniform4fv(this.qaLoc,new Float32Array([A.q1||0,A.q2||0,A.q3||0,A.q4||0])),this.gl.uniform4fv(this.qbLoc,new Float32Array([A.q5||0,A.q6||0,A.q7||0,A.q8||0])),this.gl.uniform4fv(this.qcLoc,new Float32Array([A.q9||0,A.q10||0,A.q11||0,A.q12||0])),this.gl.uniform4fv(this.qdLoc,new Float32Array([A.q13||0,A.q14||0,A.q15||0,A.q16||0])),this.gl.uniform4fv(this.qeLoc,new Float32Array([A.q17||0,A.q18||0,A.q19||0,A.q20||0])),this.gl.uniform4fv(this.qfLoc,new Float32Array([A.q21||0,A.q22||0,A.q23||0,A.q24||0])),this.gl.uniform4fv(this.qgLoc,new Float32Array([A.q25||0,A.q26||0,A.q27||0,A.q28||0])),this.gl.uniform4fv(this.qhLoc,new Float32Array([A.q29||0,A.q30||0,A.q31||0,A.q32||0])),this.gl.uniform4fv(this.slowRoamCosLoc,[.5+.5*Math.cos(.005*h.time),.5+.5*Math.cos(.008*h.time),.5+.5*Math.cos(.013*h.time),.5+.5*Math.cos(.022*h.time)]),this.gl.uniform4fv(this.roamCosLoc,[.5+.5*Math.cos(.3*h.time),.5+.5*Math.cos(1.3*h.time),.5+.5*Math.cos(5*h.time),.5+.5*Math.cos(20*h.time)]),this.gl.uniform4fv(this.slowRoamSinLoc,[.5+.5*Math.sin(.005*h.time),.5+.5*Math.sin(.008*h.time),.5+.5*Math.sin(.013*h.time),.5+.5*Math.sin(.022*h.time)]),this.gl.uniform4fv(this.roamSinLoc,[.5+.5*Math.sin(.3*h.time),.5+.5*Math.sin(1.3*h.time),.5+.5*Math.sin(5*h.time),.5+.5*Math.sin(20*h.time)]),this.bindBlurVals(a,o),t?this.gl.blendFunc(this.gl.SRC_ALPHA,this.gl.ONE_MINUS_SRC_ALPHA):this.gl.disable(this.gl.BLEND),this.gl.drawElements(this.gl.TRIANGLES,this.indices.length,this.gl.UNSIGNED_SHORT,0),t||this.gl.enable(this.gl.BLEND)}}class Rt{constructor(t,e){this.gl=t,this.textureRatio=e.textureRatio,this.texsizeX=e.texsizeX,this.texsizeY=e.texsizeY,this.positions=new Float32Array([-1,-1,1,-1,-1,1,1,1]),this.vertexBuf=this.gl.createBuffer(),this.floatPrecision=_t.getFragmentFloatPrecision(this.gl),this.useFXAA()?this.createFXAAShader():this.createShader()}useFXAA(){return this.textureRatio<=1}updateGlobals(t){this.textureRatio=t.textureRatio,this.texsizeX=t.texsizeX,this.texsizeY=t.texsizeY,this.gl.deleteProgram(this.shaderProgram),this.useFXAA()?this.createFXAAShader():this.createShader()}createFXAAShader(){this.shaderProgram=this.gl.createProgram();const t=this.gl.createShader(this.gl.VERTEX_SHADER);this.gl.shaderSource(t,\"#version 300 es\\n       const vec2 halfmad = vec2(0.5);\\n       in vec2 aPos;\\n       out vec2 v_rgbM;\\n       out vec2 v_rgbNW;\\n       out vec2 v_rgbNE;\\n       out vec2 v_rgbSW;\\n       out vec2 v_rgbSE;\\n       uniform vec4 texsize;\\n       void main(void) {\\n         gl_Position = vec4(aPos, 0.0, 1.0);\\n\\n         v_rgbM = aPos * halfmad + halfmad;\\n         v_rgbNW = v_rgbM + (vec2(-1.0, -1.0) * texsize.zx);\\n         v_rgbNE = v_rgbM + (vec2(1.0, -1.0) * texsize.zx);\\n         v_rgbSW = v_rgbM + (vec2(-1.0, 1.0) * texsize.zx);\\n         v_rgbSE = v_rgbM + (vec2(1.0, 1.0) * texsize.zx);\\n       }\"),this.gl.compileShader(t);const e=this.gl.createShader(this.gl.FRAGMENT_SHADER);this.gl.shaderSource(e,`#version 300 es\\n       precision ${this.floatPrecision} float;\\n       precision highp int;\\n       precision mediump sampler2D;\\n\\n       in vec2 v_rgbM;\\n       in vec2 v_rgbNW;\\n       in vec2 v_rgbNE;\\n       in vec2 v_rgbSW;\\n       in vec2 v_rgbSE;\\n       out vec4 fragColor;\\n       uniform vec4 texsize;\\n       uniform sampler2D uTexture;\\n\\n       #ifndef FXAA_REDUCE_MIN\\n         #define FXAA_REDUCE_MIN   (1.0/ 128.0)\\n       #endif\\n       #ifndef FXAA_REDUCE_MUL\\n         #define FXAA_REDUCE_MUL   (1.0 / 8.0)\\n       #endif\\n       #ifndef FXAA_SPAN_MAX\\n         #define FXAA_SPAN_MAX     8.0\\n       #endif\\n\\n       void main(void) {\\n         vec4 color;\\n         vec3 rgbNW = textureLod(uTexture, v_rgbNW, 0.0).xyz;\\n         vec3 rgbNE = textureLod(uTexture, v_rgbNE, 0.0).xyz;\\n         vec3 rgbSW = textureLod(uTexture, v_rgbSW, 0.0).xyz;\\n         vec3 rgbSE = textureLod(uTexture, v_rgbSE, 0.0).xyz;\\n         vec3 rgbM  = textureLod(uTexture, v_rgbM, 0.0).xyz;\\n         vec3 luma = vec3(0.299, 0.587, 0.114);\\n         float lumaNW = dot(rgbNW, luma);\\n         float lumaNE = dot(rgbNE, luma);\\n         float lumaSW = dot(rgbSW, luma);\\n         float lumaSE = dot(rgbSE, luma);\\n         float lumaM  = dot(rgbM,  luma);\\n         float lumaMin = min(lumaM, min(min(lumaNW, lumaNE), min(lumaSW, lumaSE)));\\n         float lumaMax = max(lumaM, max(max(lumaNW, lumaNE), max(lumaSW, lumaSE)));\\n\\n         mediump vec2 dir;\\n         dir.x = -((lumaNW + lumaNE) - (lumaSW + lumaSE));\\n         dir.y =  ((lumaNW + lumaSW) - (lumaNE + lumaSE));\\n\\n         float dirReduce = max((lumaNW + lumaNE + lumaSW + lumaSE) *\\n                               (0.25 * FXAA_REDUCE_MUL), FXAA_REDUCE_MIN);\\n\\n         float rcpDirMin = 1.0 / (min(abs(dir.x), abs(dir.y)) + dirReduce);\\n         dir = min(vec2(FXAA_SPAN_MAX, FXAA_SPAN_MAX),\\n                   max(vec2(-FXAA_SPAN_MAX, -FXAA_SPAN_MAX),\\n                   dir * rcpDirMin)) * texsize.zw;\\n\\n         vec3 rgbA = 0.5 * (\\n             textureLod(uTexture, v_rgbM + dir * (1.0 / 3.0 - 0.5), 0.0).xyz +\\n             textureLod(uTexture, v_rgbM + dir * (2.0 / 3.0 - 0.5), 0.0).xyz);\\n         vec3 rgbB = rgbA * 0.5 + 0.25 * (\\n             textureLod(uTexture, v_rgbM + dir * -0.5, 0.0).xyz +\\n             textureLod(uTexture, v_rgbM + dir * 0.5, 0.0).xyz);\\n\\n         float lumaB = dot(rgbB, luma);\\n         if ((lumaB < lumaMin) || (lumaB > lumaMax))\\n           color = vec4(rgbA, 1.0);\\n         else\\n           color = vec4(rgbB, 1.0);\\n\\n         fragColor = color;\\n       }`),this.gl.compileShader(e),this.gl.attachShader(this.shaderProgram,t),this.gl.attachShader(this.shaderProgram,e),this.gl.linkProgram(this.shaderProgram),this.positionLocation=this.gl.getAttribLocation(this.shaderProgram,\"aPos\"),this.textureLoc=this.gl.getUniformLocation(this.shaderProgram,\"uTexture\"),this.texsizeLoc=this.gl.getUniformLocation(this.shaderProgram,\"texsize\")}createShader(){this.shaderProgram=this.gl.createProgram();const t=this.gl.createShader(this.gl.VERTEX_SHADER);this.gl.shaderSource(t,\"#version 300 es\\n       const vec2 halfmad = vec2(0.5);\\n       in vec2 aPos;\\n       out vec2 uv;\\n       void main(void) {\\n         gl_Position = vec4(aPos, 0.0, 1.0);\\n         uv = aPos * halfmad + halfmad;\\n       }\"),this.gl.compileShader(t);const e=this.gl.createShader(this.gl.FRAGMENT_SHADER);this.gl.shaderSource(e,`#version 300 es\\n       precision ${this.floatPrecision} float;\\n       precision highp int;\\n       precision mediump sampler2D;\\n\\n       in vec2 uv;\\n       out vec4 fragColor;\\n       uniform sampler2D uTexture;\\n\\n       void main(void) {\\n         fragColor = vec4(texture(uTexture, uv).rgb, 1.0);\\n       }`),this.gl.compileShader(e),this.gl.attachShader(this.shaderProgram,t),this.gl.attachShader(this.shaderProgram,e),this.gl.linkProgram(this.shaderProgram),this.positionLocation=this.gl.getAttribLocation(this.shaderProgram,\"aPos\"),this.textureLoc=this.gl.getUniformLocation(this.shaderProgram,\"uTexture\")}renderQuadTexture(t){this.gl.useProgram(this.shaderProgram),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.vertexBuf),this.gl.bufferData(this.gl.ARRAY_BUFFER,this.positions,this.gl.STATIC_DRAW),this.gl.vertexAttribPointer(this.positionLocation,2,this.gl.FLOAT,!1,0,0),this.gl.enableVertexAttribArray(this.positionLocation),this.gl.activeTexture(this.gl.TEXTURE0),this.gl.bindTexture(this.gl.TEXTURE_2D,t),this.gl.uniform1i(this.textureLoc,0),this.useFXAA()&&this.gl.uniform4fv(this.texsizeLoc,new Float32Array([this.texsizeX,this.texsizeY,1/this.texsizeX,1/this.texsizeY])),this.gl.blendFunc(this.gl.SRC_ALPHA,this.gl.ONE_MINUS_SRC_ALPHA),this.gl.drawArrays(this.gl.TRIANGLE_STRIP,0,4)}}class yt{constructor(t){this.gl=t,this.positions=new Float32Array([-1,-1,1,-1,-1,1,1,1]),this.vertexBuf=this.gl.createBuffer(),this.floatPrecision=_t.getFragmentFloatPrecision(this.gl),this.createShader()}createShader(){this.shaderProgram=this.gl.createProgram();const t=this.gl.createShader(this.gl.VERTEX_SHADER);this.gl.shaderSource(t,\"#version 300 es\\n       const vec2 halfmad = vec2(0.5);\\n       in vec2 aPos;\\n       out vec2 uv;\\n       void main(void) {\\n         gl_Position = vec4(aPos, 0.0, 1.0);\\n         uv = aPos * halfmad + halfmad;\\n       }\"),this.gl.compileShader(t);const e=this.gl.createShader(this.gl.FRAGMENT_SHADER);this.gl.shaderSource(e,`#version 300 es\\n       precision ${this.floatPrecision} float;\\n       precision highp int;\\n       precision mediump sampler2D;\\n\\n       in vec2 uv;\\n       out vec4 fragColor;\\n       uniform sampler2D uTexture;\\n\\n       void main(void) {\\n         fragColor = vec4(texture(uTexture, uv).rgb, 1.0);\\n       }`),this.gl.compileShader(e),this.gl.attachShader(this.shaderProgram,t),this.gl.attachShader(this.shaderProgram,e),this.gl.linkProgram(this.shaderProgram),this.positionLocation=this.gl.getAttribLocation(this.shaderProgram,\"aPos\"),this.textureLoc=this.gl.getUniformLocation(this.shaderProgram,\"uTexture\")}renderQuadTexture(t){this.gl.useProgram(this.shaderProgram),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.vertexBuf),this.gl.bufferData(this.gl.ARRAY_BUFFER,this.positions,this.gl.STATIC_DRAW),this.gl.vertexAttribPointer(this.positionLocation,2,this.gl.FLOAT,!1,0,0),this.gl.enableVertexAttribArray(this.positionLocation),this.gl.activeTexture(this.gl.TEXTURE0),this.gl.bindTexture(this.gl.TEXTURE_2D,t),this.gl.generateMipmap(this.gl.TEXTURE_2D),this.gl.uniform1i(this.textureLoc,0),this.gl.blendFunc(this.gl.SRC_ALPHA,this.gl.ONE_MINUS_SRC_ALPHA),this.gl.drawArrays(this.gl.TRIANGLE_STRIP,0,4)}}class Bt{constructor(t,e){this.gl=t,this.blurLevel=e;const i=[4,3.8,3.5,2.9,1.9,1.2,.7,.3],s=i[0]+i[1]+i[2]+i[3],r=i[4]+i[5]+i[6]+i[7],a=0+(i[2]+i[3])/s*2,o=2+(i[6]+i[7])/r*2;this.wds=new Float32Array([s,r,a,o]),this.wDiv=1/(2*(s+r)),this.positions=new Float32Array([-1,-1,1,-1,-1,1,1,1]),this.vertexBuf=this.gl.createBuffer(),this.floatPrecision=_t.getFragmentFloatPrecision(this.gl),this.createShader()}createShader(){this.shaderProgram=this.gl.createProgram();const t=this.gl.createShader(this.gl.VERTEX_SHADER);this.gl.shaderSource(t,\"\\n      #version 300 es\\n      const vec2 halfmad = vec2(0.5);\\n      in vec2 aPos;\\n      out vec2 uv;\\n      void main(void) {\\n        gl_Position = vec4(aPos, 0.0, 1.0);\\n        uv = aPos * halfmad + halfmad;\\n      }\\n      \".trim()),this.gl.compileShader(t);const e=this.gl.createShader(this.gl.FRAGMENT_SHADER);this.gl.shaderSource(e,`#version 300 es\\n       precision ${this.floatPrecision} float;\\n       precision highp int;\\n       precision mediump sampler2D;\\n\\n       in vec2 uv;\\n       out vec4 fragColor;\\n       uniform sampler2D uTexture;\\n       uniform vec4 texsize;\\n       uniform float ed1;\\n       uniform float ed2;\\n       uniform float ed3;\\n       uniform vec4 wds;\\n       uniform float wdiv;\\n\\n       void main(void) {\\n         float w1 = wds[0];\\n         float w2 = wds[1];\\n         float d1 = wds[2];\\n         float d2 = wds[3];\\n\\n         vec2 uv2 = uv.xy;\\n\\n         vec3 blur =\\n           ( texture(uTexture, uv2 + vec2(0.0, d1 * texsize.w) ).xyz\\n           + texture(uTexture, uv2 + vec2(0.0,-d1 * texsize.w) ).xyz) * w1 +\\n           ( texture(uTexture, uv2 + vec2(0.0, d2 * texsize.w) ).xyz\\n           + texture(uTexture, uv2 + vec2(0.0,-d2 * texsize.w) ).xyz) * w2;\\n\\n         blur.xyz *= wdiv;\\n\\n         float t = min(min(uv.x, uv.y), 1.0 - max(uv.x, uv.y));\\n         t = sqrt(t);\\n         t = ed1 + ed2 * clamp(t * ed3, 0.0, 1.0);\\n         blur.xyz *= t;\\n\\n         fragColor = vec4(blur, 1.0);\\n       }`),this.gl.compileShader(e),this.gl.attachShader(this.shaderProgram,t),this.gl.attachShader(this.shaderProgram,e),this.gl.linkProgram(this.shaderProgram),this.positionLocation=this.gl.getAttribLocation(this.shaderProgram,\"aPos\"),this.textureLoc=this.gl.getUniformLocation(this.shaderProgram,\"uTexture\"),this.texsizeLocation=this.gl.getUniformLocation(this.shaderProgram,\"texsize\"),this.ed1Loc=this.gl.getUniformLocation(this.shaderProgram,\"ed1\"),this.ed2Loc=this.gl.getUniformLocation(this.shaderProgram,\"ed2\"),this.ed3Loc=this.gl.getUniformLocation(this.shaderProgram,\"ed3\"),this.wdsLocation=this.gl.getUniformLocation(this.shaderProgram,\"wds\"),this.wdivLoc=this.gl.getUniformLocation(this.shaderProgram,\"wdiv\")}renderQuadTexture(t,e,i){this.gl.useProgram(this.shaderProgram),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.vertexBuf),this.gl.bufferData(this.gl.ARRAY_BUFFER,this.positions,this.gl.STATIC_DRAW),this.gl.vertexAttribPointer(this.positionLocation,2,this.gl.FLOAT,!1,0,0),this.gl.enableVertexAttribArray(this.positionLocation),this.gl.activeTexture(this.gl.TEXTURE0),this.gl.bindTexture(this.gl.TEXTURE_2D,t),this.gl.uniform1i(this.textureLoc,0);const s=0===this.blurLevel?e.b1ed:0;this.gl.uniform4fv(this.texsizeLocation,[i[0],i[1],1/i[0],1/i[1]]),this.gl.uniform1f(this.ed1Loc,1-s),this.gl.uniform1f(this.ed2Loc,s),this.gl.uniform1f(this.ed3Loc,5),this.gl.uniform4fv(this.wdsLocation,this.wds),this.gl.uniform1f(this.wdivLoc,this.wDiv),this.gl.blendFunc(this.gl.SRC_ALPHA,this.gl.ONE_MINUS_SRC_ALPHA),this.gl.drawArrays(this.gl.TRIANGLE_STRIP,0,4)}}class Lt{constructor(t,e){this.gl=t,this.blurLevel=e;const i=[4,3.8,3.5,2.9,1.9,1.2,.7,.3],s=i[0]+i[1],r=i[2]+i[3],a=i[4]+i[5],o=i[6]+i[7],h=0+2*i[1]/s,A=2+2*i[3]/r,n=4+2*i[5]/a,l=6+2*i[7]/o;this.ws=new Float32Array([s,r,a,o]),this.ds=new Float32Array([h,A,n,l]),this.wDiv=.5/(s+r+a+o),this.positions=new Float32Array([-1,-1,1,-1,-1,1,1,1]),this.vertexBuf=this.gl.createBuffer(),this.floatPrecision=_t.getFragmentFloatPrecision(this.gl),this.createShader()}createShader(){this.shaderProgram=this.gl.createProgram();const t=this.gl.createShader(this.gl.VERTEX_SHADER);this.gl.shaderSource(t,\"\\n      #version 300 es\\n      const vec2 halfmad = vec2(0.5);\\n      in vec2 aPos;\\n      out vec2 uv;\\n      void main(void) {\\n        gl_Position = vec4(aPos, 0.0, 1.0);\\n        uv = aPos * halfmad + halfmad;\\n      }\\n      \".trim()),this.gl.compileShader(t);const e=this.gl.createShader(this.gl.FRAGMENT_SHADER);this.gl.shaderSource(e,`#version 300 es\\n       precision ${this.floatPrecision} float;\\n       precision highp int;\\n       precision mediump sampler2D;\\n\\n       in vec2 uv;\\n       out vec4 fragColor;\\n       uniform sampler2D uTexture;\\n       uniform vec4 texsize;\\n       uniform float scale;\\n       uniform float bias;\\n       uniform vec4 ws;\\n       uniform vec4 ds;\\n       uniform float wdiv;\\n\\n       void main(void) {\\n         float w1 = ws[0];\\n         float w2 = ws[1];\\n         float w3 = ws[2];\\n         float w4 = ws[3];\\n         float d1 = ds[0];\\n         float d2 = ds[1];\\n         float d3 = ds[2];\\n         float d4 = ds[3];\\n\\n         vec2 uv2 = uv.xy;\\n\\n         vec3 blur =\\n           ( texture(uTexture, uv2 + vec2( d1 * texsize.z,0.0) ).xyz\\n           + texture(uTexture, uv2 + vec2(-d1 * texsize.z,0.0) ).xyz) * w1 +\\n           ( texture(uTexture, uv2 + vec2( d2 * texsize.z,0.0) ).xyz\\n           + texture(uTexture, uv2 + vec2(-d2 * texsize.z,0.0) ).xyz) * w2 +\\n           ( texture(uTexture, uv2 + vec2( d3 * texsize.z,0.0) ).xyz\\n           + texture(uTexture, uv2 + vec2(-d3 * texsize.z,0.0) ).xyz) * w3 +\\n           ( texture(uTexture, uv2 + vec2( d4 * texsize.z,0.0) ).xyz\\n           + texture(uTexture, uv2 + vec2(-d4 * texsize.z,0.0) ).xyz) * w4;\\n\\n         blur.xyz *= wdiv;\\n         blur.xyz = blur.xyz * scale + bias;\\n\\n         fragColor = vec4(blur, 1.0);\\n       }`),this.gl.compileShader(e),this.gl.attachShader(this.shaderProgram,t),this.gl.attachShader(this.shaderProgram,e),this.gl.linkProgram(this.shaderProgram),this.positionLocation=this.gl.getAttribLocation(this.shaderProgram,\"aPos\"),this.textureLoc=this.gl.getUniformLocation(this.shaderProgram,\"uTexture\"),this.texsizeLocation=this.gl.getUniformLocation(this.shaderProgram,\"texsize\"),this.scaleLoc=this.gl.getUniformLocation(this.shaderProgram,\"scale\"),this.biasLoc=this.gl.getUniformLocation(this.shaderProgram,\"bias\"),this.wsLoc=this.gl.getUniformLocation(this.shaderProgram,\"ws\"),this.dsLocation=this.gl.getUniformLocation(this.shaderProgram,\"ds\"),this.wdivLoc=this.gl.getUniformLocation(this.shaderProgram,\"wdiv\")}getScaleAndBias(t,e){const i=[1,1,1],s=[0,0,0];let r,a;return i[0]=1/(e[0]-t[0]),s[0]=-t[0]*i[0],r=(t[1]-t[0])/(e[0]-t[0]),a=(e[1]-t[0])/(e[0]-t[0]),i[1]=1/(a-r),s[1]=-r*i[1],r=(t[2]-t[1])/(e[1]-t[1]),a=(e[2]-t[1])/(e[1]-t[1]),i[2]=1/(a-r),s[2]=-r*i[2],{scale:i[this.blurLevel],bias:s[this.blurLevel]}}renderQuadTexture(t,e,i,s,r){this.gl.useProgram(this.shaderProgram),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.vertexBuf),this.gl.bufferData(this.gl.ARRAY_BUFFER,this.positions,this.gl.STATIC_DRAW),this.gl.vertexAttribPointer(this.positionLocation,2,this.gl.FLOAT,!1,0,0),this.gl.enableVertexAttribArray(this.positionLocation),this.gl.activeTexture(this.gl.TEXTURE0),this.gl.bindTexture(this.gl.TEXTURE_2D,t),this.gl.uniform1i(this.textureLoc,0);const{scale:a,bias:o}=this.getScaleAndBias(i,s);this.gl.uniform4fv(this.texsizeLocation,[r[0],r[1],1/r[0],1/r[1]]),this.gl.uniform1f(this.scaleLoc,a),this.gl.uniform1f(this.biasLoc,o),this.gl.uniform4fv(this.wsLoc,this.ws),this.gl.uniform4fv(this.dsLocation,this.ds),this.gl.uniform1f(this.wdivLoc,this.wDiv),this.gl.blendFunc(this.gl.SRC_ALPHA,this.gl.ONE_MINUS_SRC_ALPHA),this.gl.drawArrays(this.gl.TRIANGLE_STRIP,0,4)}}class Ct{constructor(t,e,i,s={}){this.blurLevel=t,this.blurRatios=e,this.gl=i,this.texsizeX=s.texsizeX,this.texsizeY=s.texsizeY,this.anisoExt=this.gl.getExtension(\"EXT_texture_filter_anisotropic\")||this.gl.getExtension(\"MOZ_EXT_texture_filter_anisotropic\")||this.gl.getExtension(\"WEBKIT_EXT_texture_filter_anisotropic\"),this.blurHorizontalFrameBuffer=this.gl.createFramebuffer(),this.blurVerticalFrameBuffer=this.gl.createFramebuffer(),this.blurHorizontalTexture=this.gl.createTexture(),this.blurVerticalTexture=this.gl.createTexture(),this.setupFrameBufferTextures(),this.blurHorizontal=new Lt(i,this.blurLevel,s),this.blurVertical=new Bt(i,this.blurLevel,s)}updateGlobals(t){this.texsizeX=t.texsizeX,this.texsizeY=t.texsizeY,this.setupFrameBufferTextures()}getTextureSize(t){let e=Math.max(this.texsizeX*t,16);e=16*Math.floor((e+3)/16);let i=Math.max(this.texsizeY*t,16);return i=4*Math.floor((i+3)/4),[e,i]}setupFrameBufferTextures(){const t=this.blurLevel>0?this.blurRatios[this.blurLevel-1]:[1,1],e=this.blurRatios[this.blurLevel],i=this.getTextureSize(t[1]),s=this.getTextureSize(e[0]);this.bindFrameBufferTexture(this.blurHorizontalFrameBuffer,this.blurHorizontalTexture,s);const r=s,a=this.getTextureSize(e[1]);this.bindFrameBufferTexture(this.blurVerticalFrameBuffer,this.blurVerticalTexture,a),this.horizontalTexsizes=[i,s],this.verticalTexsizes=[r,a]}bindFrambufferAndSetViewport(t,e){this.gl.bindFramebuffer(this.gl.FRAMEBUFFER,t),this.gl.viewport(0,0,e[0],e[1])}bindFrameBufferTexture(t,e,i){if(this.gl.bindTexture(this.gl.TEXTURE_2D,e),this.gl.pixelStorei(this.gl.UNPACK_ALIGNMENT,1),this.gl.texImage2D(this.gl.TEXTURE_2D,0,this.gl.RGBA,i[0],i[1],0,this.gl.RGBA,this.gl.UNSIGNED_BYTE,new Uint8Array(i[0]*i[1]*4)),this.gl.generateMipmap(this.gl.TEXTURE_2D),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_S,this.gl.CLAMP_TO_EDGE),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_T,this.gl.CLAMP_TO_EDGE),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MIN_FILTER,this.gl.LINEAR_MIPMAP_LINEAR),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MAG_FILTER,this.gl.LINEAR),this.anisoExt){const t=this.gl.getParameter(this.anisoExt.MAX_TEXTURE_MAX_ANISOTROPY_EXT);this.gl.texParameterf(this.gl.TEXTURE_2D,this.anisoExt.TEXTURE_MAX_ANISOTROPY_EXT,t)}this.gl.bindFramebuffer(this.gl.FRAMEBUFFER,t),this.gl.framebufferTexture2D(this.gl.FRAMEBUFFER,this.gl.COLOR_ATTACHMENT0,this.gl.TEXTURE_2D,e,0)}renderBlurTexture(t,e,i,s){this.bindFrambufferAndSetViewport(this.blurHorizontalFrameBuffer,this.horizontalTexsizes[1]),this.blurHorizontal.renderQuadTexture(t,e,i,s,this.horizontalTexsizes[0]),this.gl.bindTexture(this.gl.TEXTURE_2D,this.blurHorizontalTexture),this.gl.generateMipmap(this.gl.TEXTURE_2D),this.bindFrambufferAndSetViewport(this.blurVerticalFrameBuffer,this.verticalTexsizes[1]),this.blurVertical.renderQuadTexture(this.blurHorizontalTexture,e,this.verticalTexsizes[0]),this.gl.bindTexture(this.gl.TEXTURE_2D,this.blurVerticalTexture),this.gl.generateMipmap(this.gl.TEXTURE_2D)}}class Ut{constructor(t){this.gl=t,this.randomFn=mt().random,this.anisoExt=this.gl.getExtension(\"EXT_texture_filter_anisotropic\")||this.gl.getExtension(\"MOZ_EXT_texture_filter_anisotropic\")||this.gl.getExtension(\"WEBKIT_EXT_texture_filter_anisotropic\"),this.noiseTexLQ=this.gl.createTexture(),this.noiseTexLQLite=this.gl.createTexture(),this.noiseTexMQ=this.gl.createTexture(),this.noiseTexHQ=this.gl.createTexture(),this.noiseTexVolLQ=this.gl.createTexture(),this.noiseTexVolHQ=this.gl.createTexture(),this.nTexArrLQ=Ut.createNoiseTex(256,1,this.randomFn),this.nTexArrLQLite=Ut.createNoiseTex(32,1,this.randomFn),this.nTexArrMQ=Ut.createNoiseTex(256,4,this.randomFn),this.nTexArrHQ=Ut.createNoiseTex(256,8,this.randomFn),this.nTexArrVolLQ=Ut.createNoiseVolTex(32,1,this.randomFn),this.nTexArrVolHQ=Ut.createNoiseVolTex(32,4,this.randomFn),this.bindTexture(this.noiseTexLQ,this.nTexArrLQ,256,256),this.bindTexture(this.noiseTexLQLite,this.nTexArrLQLite,32,32),this.bindTexture(this.noiseTexMQ,this.nTexArrMQ,256,256),this.bindTexture(this.noiseTexHQ,this.nTexArrHQ,256,256),this.bindTexture3D(this.noiseTexVolLQ,this.nTexArrVolLQ,32,32,32),this.bindTexture3D(this.noiseTexVolHQ,this.nTexArrVolHQ,32,32,32),this.noiseTexPointLQ=this.gl.createSampler(),t.samplerParameteri(this.noiseTexPointLQ,t.TEXTURE_MIN_FILTER,t.NEAREST_MIPMAP_NEAREST),t.samplerParameteri(this.noiseTexPointLQ,t.TEXTURE_MAG_FILTER,t.NEAREST),t.samplerParameteri(this.noiseTexPointLQ,t.TEXTURE_WRAP_S,t.REPEAT),t.samplerParameteri(this.noiseTexPointLQ,t.TEXTURE_WRAP_T,t.REPEAT)}bindTexture(t,e,i,s){if(this.gl.bindTexture(this.gl.TEXTURE_2D,t),this.gl.pixelStorei(this.gl.UNPACK_ALIGNMENT,1),this.gl.texImage2D(this.gl.TEXTURE_2D,0,this.gl.RGBA,i,s,0,this.gl.RGBA,this.gl.UNSIGNED_BYTE,e),this.gl.generateMipmap(this.gl.TEXTURE_2D),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_S,this.gl.REPEAT),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_T,this.gl.REPEAT),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MIN_FILTER,this.gl.LINEAR_MIPMAP_LINEAR),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MAG_FILTER,this.gl.LINEAR),this.anisoExt){const t=this.gl.getParameter(this.anisoExt.MAX_TEXTURE_MAX_ANISOTROPY_EXT);this.gl.texParameterf(this.gl.TEXTURE_2D,this.anisoExt.TEXTURE_MAX_ANISOTROPY_EXT,t)}}bindTexture3D(t,e,i,s,r){if(this.gl.bindTexture(this.gl.TEXTURE_3D,t),this.gl.pixelStorei(this.gl.UNPACK_ALIGNMENT,1),this.gl.texImage3D(this.gl.TEXTURE_3D,0,this.gl.RGBA,i,s,r,0,this.gl.RGBA,this.gl.UNSIGNED_BYTE,e),this.gl.generateMipmap(this.gl.TEXTURE_3D),this.gl.texParameteri(this.gl.TEXTURE_3D,this.gl.TEXTURE_WRAP_S,this.gl.REPEAT),this.gl.texParameteri(this.gl.TEXTURE_3D,this.gl.TEXTURE_WRAP_T,this.gl.REPEAT),this.gl.texParameteri(this.gl.TEXTURE_3D,this.gl.TEXTURE_WRAP_R,this.gl.REPEAT),this.gl.texParameteri(this.gl.TEXTURE_3D,this.gl.TEXTURE_MIN_FILTER,this.gl.LINEAR_MIPMAP_LINEAR),this.gl.texParameteri(this.gl.TEXTURE_3D,this.gl.TEXTURE_MAG_FILTER,this.gl.LINEAR),this.anisoExt){const t=this.gl.getParameter(this.anisoExt.MAX_TEXTURE_MAX_ANISOTROPY_EXT);this.gl.texParameterf(this.gl.TEXTURE_3D,this.anisoExt.TEXTURE_MAX_ANISOTROPY_EXT,t)}}static fCubicInterpolate(t,e,i,s,r){const a=r*r,o=s-i-t+e;return o*(r*a)+(t-e-o)*a+(i-t)*r+e}static dwCubicInterpolate(t,e,i,s,r){const a=[];for(let o=0;o<4;o++){let h=Ut.fCubicInterpolate(t[o]/255,e[o]/255,i[o]/255,s[o]/255,r);h=Math.clamp(h,0,1),a[o]=255*h}return a}static createNoiseVolTex(t,e,i){const s=t*t*t,r=new Uint8Array(4*s),a=e>1?216:256,o=.5*a;for(let t=0;t<s;t++)r[4*t+0]=Math.floor(i()*a+o),r[4*t+1]=Math.floor(i()*a+o),r[4*t+2]=Math.floor(i()*a+o),r[4*t+3]=Math.floor(i()*a+o);const h=t*t,A=t;if(e>1){for(let i=0;i<t;i+=e)for(let s=0;s<t;s+=e)for(let a=0;a<t;a++)if(a%e!==0){const o=Math.floor(a/e)*e+t,n=i*h+s*A,l=[],c=[],g=[],m=[];for(let i=0;i<4;i++)l[i]=r[4*n+(o-e)%t*4+i],c[i]=r[4*n+o%t*4+i],g[i]=r[4*n+(o+e)%t*4+i],m[i]=r[4*n+(o+2*e)%t*4+i];const u=a%e/e,f=Ut.dwCubicInterpolate(l,c,g,m,u);for(let t=0;t<4;t++){r[i*h*4+s*A*4+(4*a+t)]=f[t]}}for(let i=0;i<t;i+=e)for(let s=0;s<t;s++)for(let a=0;a<t;a++)if(a%e!==0){const o=Math.floor(a/e)*e+t,n=i*h,l=[],c=[],g=[],m=[];for(let i=0;i<4;i++){const a=4*s+4*n+i;l[i]=r[(o-e)%t*A*4+a],c[i]=r[o%t*A*4+a],g[i]=r[(o+e)%t*A*4+a],m[i]=r[(o+2*e)%t*A*4+a]}const u=a%e/e,f=Ut.dwCubicInterpolate(l,c,g,m,u);for(let t=0;t<4;t++){r[a*A*4+(4*s+4*n+t)]=f[t]}}for(let i=0;i<t;i++)for(let s=0;s<t;s++)for(let a=0;a<t;a++)if(a%e!==0){const o=s*A,n=Math.floor(a/e)*e+t,l=[],c=[],g=[],m=[];for(let s=0;s<4;s++){const a=4*i+4*o+s;l[s]=r[(n-e)%t*h*4+a],c[s]=r[n%t*h*4+a],g[s]=r[(n+e)%t*h*4+a],m[s]=r[(n+2*e)%t*h*4+a]}const u=s%e/e,f=Ut.dwCubicInterpolate(l,c,g,m,u);for(let t=0;t<4;t++){r[a*h*4+(4*i+4*o+t)]=f[t]}}}return r}static createNoiseTex(t,e,i){const s=t*t,r=new Uint8Array(4*s),a=e>1?216:256,o=.5*a;for(let t=0;t<s;t++)r[4*t+0]=Math.floor(i()*a+o),r[4*t+1]=Math.floor(i()*a+o),r[4*t+2]=Math.floor(i()*a+o),r[4*t+3]=Math.floor(i()*a+o);if(e>1){for(let i=0;i<t;i+=e)for(let s=0;s<t;s++)if(s%e!==0){const a=Math.floor(s/e)*e+t,o=i*t,h=[],A=[],n=[],l=[];for(let i=0;i<4;i++)h[i]=r[4*o+(a-e)%t*4+i],A[i]=r[4*o+a%t*4+i],n[i]=r[4*o+(a+e)%t*4+i],l[i]=r[4*o+(a+2*e)%t*4+i];const c=s%e/e,g=Ut.dwCubicInterpolate(h,A,n,l,c);for(let e=0;e<4;e++)r[i*t*4+4*s+e]=g[e]}for(let i=0;i<t;i++)for(let s=0;s<t;s++)if(s%e!==0){const a=Math.floor(s/e)*e+t,o=[],h=[],A=[],n=[];for(let s=0;s<4;s++)o[s]=r[(a-e)%t*t*4+4*i+s],h[s]=r[a%t*t*4+4*i+s],A[s]=r[(a+e)%t*t*4+4*i+s],n[s]=r[(a+2*e)%t*t*4+4*i+s];const l=s%e/e,c=Ut.dwCubicInterpolate(o,h,A,n,l);for(let e=0;e<4;e++)r[s*t*4+4*i+e]=c[e]}}return r}}class Mt{constructor(t){this.gl=t,this.anisoExt=this.gl.getExtension(\"EXT_texture_filter_anisotropic\")||this.gl.getExtension(\"MOZ_EXT_texture_filter_anisotropic\")||this.gl.getExtension(\"WEBKIT_EXT_texture_filter_anisotropic\"),this.samplers={},this.clouds2Image=new Image,this.clouds2Image.onload=()=>{this.samplers.clouds2=this.gl.createTexture(),this.bindTexture(this.samplers.clouds2,this.clouds2Image,128,128)},this.clouds2Image.src=\"data:image/jpeg;base64,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\",this.emptyImage=new Image,this.emptyImage.onload=()=>{this.samplers.empty=this.gl.createTexture(),this.bindTexture(this.samplers.empty,this.emptyImage,1,1)},this.emptyImage.src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAUEBAAAACwAAAAAAQABAAACAkQBADs=\"}bindTexture(t,e,i,s){if(this.gl.bindTexture(this.gl.TEXTURE_2D,t),this.gl.pixelStorei(this.gl.UNPACK_ALIGNMENT,1),this.gl.texImage2D(this.gl.TEXTURE_2D,0,this.gl.RGBA,i,s,0,this.gl.RGBA,this.gl.UNSIGNED_BYTE,e),this.gl.generateMipmap(this.gl.TEXTURE_2D),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_S,this.gl.REPEAT),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_T,this.gl.REPEAT),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MIN_FILTER,this.gl.LINEAR_MIPMAP_LINEAR),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MAG_FILTER,this.gl.LINEAR),this.anisoExt){const t=this.gl.getParameter(this.anisoExt.MAX_TEXTURE_MAX_ANISOTROPY_EXT);this.gl.texParameterf(this.gl.TEXTURE_2D,this.anisoExt.TEXTURE_MAX_ANISOTROPY_EXT,t)}}loadExtraImages(t){Object.keys(t).forEach(e=>{const{data:i,width:s,height:r}=t[e];if(!this.samplers[e]){const t=new Image;t.onload=()=>{this.samplers[e]=this.gl.createTexture(),this.bindTexture(this.samplers[e],t,s,r)},t.src=i}})}getTexture(t){const e=this.samplers[t];return e||this.samplers.clouds2}}class Ft{constructor(t,e={}){this.gl=t,this.texsizeX=e.texsizeX,this.texsizeY=e.texsizeY,this.aspectx=e.aspectx,this.aspecty=e.aspecty,this.invAspectx=1/this.aspectx,this.invAspecty=1/this.aspecty,this.buildPositions(),this.textTexture=this.gl.createTexture(),this.indexBuf=t.createBuffer(),this.positionVertexBuf=this.gl.createBuffer(),this.vertexBuf=this.gl.createBuffer(),this.canvas=document.createElement(\"canvas\"),this.canvas.width=this.texsizeX,this.canvas.height=this.texsizeY,this.context2D=this.canvas.getContext(\"2d\",{willReadFrequently:!1}),this.floatPrecision=_t.getFragmentFloatPrecision(this.gl),this.createShader()}generateTitleTexture(t){this.context2D.clearRect(0,0,this.texsizeX,this.texsizeY),this.fontSize=Math.floor(this.texsizeX/256*16),this.fontSize=Math.max(this.fontSize,6),this.context2D.font=`italic ${this.fontSize}px Times New Roman`;let e=t,i=this.context2D.measureText(e).width;if(i>this.texsizeX){const t=this.texsizeX/i*.91;e=`${e.substring(0,Math.floor(e.length*t))}...`,i=this.context2D.measureText(e).width}this.context2D.fillStyle=\"#FFFFFF\",this.context2D.fillText(e,(this.texsizeX-i)/2,this.texsizeY/2);const s=new Uint8Array(this.context2D.getImageData(0,0,this.texsizeX,this.texsizeY).data.buffer);this.gl.pixelStorei(this.gl.UNPACK_FLIP_Y_WEBGL,!0),this.gl.bindTexture(this.gl.TEXTURE_2D,this.textTexture),this.gl.texImage2D(this.gl.TEXTURE_2D,0,this.gl.RGBA,this.texsizeX,this.texsizeY,0,this.gl.RGBA,this.gl.UNSIGNED_BYTE,s),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MAG_FILTER,this.gl.LINEAR),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MIN_FILTER,this.gl.LINEAR_MIPMAP_LINEAR),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_S,this.gl.CLAMP_TO_EDGE),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_T,this.gl.CLAMP_TO_EDGE),this.gl.generateMipmap(this.gl.TEXTURE_2D),this.gl.bindTexture(this.gl.TEXTURE_2D,null)}updateGlobals(t){this.texsizeX=t.texsizeX,this.texsizeY=t.texsizeY,this.aspectx=t.aspectx,this.aspecty=t.aspecty,this.invAspectx=1/this.aspectx,this.invAspecty=1/this.aspecty,this.canvas.width=this.texsizeX,this.canvas.height=this.texsizeY}buildPositions(){const t=2/15,e=2/7,i=[];for(let s=0;s<8;s++){const r=s*e-1;for(let e=0;e<16;e++){const s=e*t-1;i.push(s,-r,0)}}const s=[];for(let t=0;t<7;t++)for(let e=0;e<15;e++){const i=e+16*t,r=e+16*(t+1),a=e+1+16*(t+1),o=e+1+16*t;s.push(i,r,o),s.push(r,a,o)}this.vertices=new Float32Array(i),this.indices=new Uint16Array(s)}createShader(){this.shaderProgram=this.gl.createProgram();const t=this.gl.createShader(this.gl.VERTEX_SHADER);this.gl.shaderSource(t,\"#version 300 es\\n       const vec2 halfmad = vec2(0.5);\\n       in vec2 aPos;\\n       in vec2 aUv;\\n       out vec2 uv_orig;\\n       out vec2 uv;\\n       void main(void) {\\n         gl_Position = vec4(aPos, 0.0, 1.0);\\n         uv_orig = aPos * halfmad + halfmad;\\n         uv = aUv;\\n       }\"),this.gl.compileShader(t);const e=this.gl.createShader(this.gl.FRAGMENT_SHADER);this.gl.shaderSource(e,`#version 300 es\\n       precision ${this.floatPrecision} float;\\n       precision highp int;\\n       precision mediump sampler2D;\\n\\n       in vec2 uv_orig;\\n       in vec2 uv;\\n       out vec4 fragColor;\\n       uniform sampler2D uTexture;\\n       uniform float textColor;\\n\\n       void main(void) {\\n         fragColor = texture(uTexture, uv) * vec4(textColor);\\n       }`),this.gl.compileShader(e),this.gl.attachShader(this.shaderProgram,t),this.gl.attachShader(this.shaderProgram,e),this.gl.linkProgram(this.shaderProgram),this.positionLocation=this.gl.getAttribLocation(this.shaderProgram,\"aPos\"),this.uvLocation=this.gl.getAttribLocation(this.shaderProgram,\"aUv\"),this.textureLoc=this.gl.getUniformLocation(this.shaderProgram,\"uTexture\"),this.textColorLoc=this.gl.getUniformLocation(this.shaderProgram,\"textColor\")}generateUvs(t,e,i){const s=[];for(let i=0;i<8;i++)for(let r=0;r<16;r++){const a=2*(r/15)-1;let o=2*(.75*(i/7-.5)+.5)-1;t>=1&&(o+=1/this.texsizeY),s.push(a,e?o:-o)}const r=Math.max(0,1-1.5*t)**1.8*1.3;for(let t=0;t<8;t++)for(let e=0;e<16;e++){const a=16*t+e;s[a]+=.07*r*Math.sin(.31*i.time+.39*s[a]-1.94*s[a+1]),s[a]+=.044*r*Math.sin(.81*i.time-1.91*s[a]+.27*s[a+1]),s[a]+=.061*r*Math.sin(1.31*i.time+.61*s[a]+.74*s[a+1]),s[a+1]+=.061*r*Math.sin(.37*i.time+1.83*s[a]+.69*s[a+1]),s[a+1]+=.07*r*Math.sin(.67*i.time+.42*s[a]-1.39*s[a+1]),s[a+1]+=.087*r*Math.sin(1.07*i.time+3.55*s[a]+.89*s[a+1])}const a=1.01/(t**.21+.01);for(let t=0;t<s.length/2;t++)s[2*t]*=a,s[2*t+1]*=a*this.invAspecty,s[2*t]=(s[2*t]+1)/2,s[2*t+1]=(s[2*t+1]+1)/2;return new Float32Array(s)}renderTitle(t,e,i){this.gl.useProgram(this.shaderProgram);const s=this.generateUvs(t,e,i);this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER,this.indexBuf),this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER,this.indices,this.gl.STATIC_DRAW),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.positionVertexBuf),this.gl.bufferData(this.gl.ARRAY_BUFFER,this.vertices,this.gl.STATIC_DRAW),this.gl.vertexAttribPointer(this.positionLocation,3,this.gl.FLOAT,!1,0,0),this.gl.enableVertexAttribArray(this.positionLocation),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.vertexBuf),this.gl.bufferData(this.gl.ARRAY_BUFFER,s,this.gl.STATIC_DRAW),this.gl.vertexAttribPointer(this.uvLocation,2,this.gl.FLOAT,!1,0,0),this.gl.enableVertexAttribArray(this.uvLocation),this.gl.activeTexture(this.gl.TEXTURE0),this.gl.bindTexture(this.gl.TEXTURE_2D,this.textTexture),this.gl.uniform1i(this.textureLoc,0),this.gl.uniform1f(this.textColorLoc,t**.3),this.gl.blendFunc(this.gl.SRC_ALPHA,this.gl.ONE_MINUS_SRC_ALPHA),this.gl.drawElements(this.gl.TRIANGLES,this.indices.length,this.gl.UNSIGNED_SHORT,0)}}class Qt{constructor(t){this.rng=mt(),this.mesh_width=t.mesh_width,this.mesh_height=t.mesh_height,this.aspectx=t.aspectx,this.aspecty=t.aspecty,this.vertInfoA=new Float32Array((this.mesh_width+1)*(this.mesh_height+1)),this.vertInfoC=new Float32Array((this.mesh_width+1)*(this.mesh_height+1)),this.createBlendPattern()}static resizeMatrixValues(t,e,i,s,r){const a=new Float32Array((s+1)*(r+1));let o=0;for(let h=0;h<r+1;h++)for(let A=0;A<s+1;A++){let n=A/r,l=h/s;n*=e+1,l*=i+1,n=Math.clamp(n,0,e-1),l=Math.clamp(l,0,i-1);const c=Math.floor(n),g=Math.floor(l),m=n-c,u=l-g,f=t[g*(e+1)+c],d=t[g*(e+1)+(c+1)],p=t[(g+1)*(e+1)+c],_=t[(g+1)*(e+1)+(c+1)];a[o]=f*(1-m)*(1-u)+d*m*(1-u)+p*(1-m)*u+_*m*u,o+=1}return a}updateGlobals(t){const e=this.mesh_width,i=this.mesh_height;this.mesh_width=t.mesh_width,this.mesh_height=t.mesh_height,this.aspectx=t.aspectx,this.aspecty=t.aspecty,this.mesh_width===e&&this.mesh_height===i||(this.vertInfoA=Qt.resizeMatrixValues(this.vertInfoA,e,i,this.mesh_width,this.mesh_height),this.vertInfoC=Qt.resizeMatrixValues(this.vertInfoC,e,i,this.mesh_width,this.mesh_height))}genPlasma(t,e,i,s,r){const a=Math.floor((t+e)/2),o=Math.floor((i+s)/2);let h=this.vertInfoC[i*(this.mesh_width+1)+t],A=this.vertInfoC[i*(this.mesh_width+1)+e],n=this.vertInfoC[s*(this.mesh_width+1)+t],l=this.vertInfoC[s*(this.mesh_width+1)+e];s-i>=2&&(0===t&&(this.vertInfoC[o*(this.mesh_width+1)+t]=.5*(h+n)+(2*this.rng.random()-1)*r*this.aspecty),this.vertInfoC[o*(this.mesh_width+1)+e]=.5*(A+l)+(2*this.rng.random()-1)*r*this.aspecty),e-t>=2&&(0===i&&(this.vertInfoC[i*(this.mesh_width+1)+a]=.5*(h+A)+(2*this.rng.random()-1)*r*this.aspectx),this.vertInfoC[s*(this.mesh_width+1)+a]=.5*(n+l)+(2*this.rng.random()-1)*r*this.aspectx),s-i>=2&&e-t>=2&&(h=this.vertInfoC[o*(this.mesh_width+1)+t],A=this.vertInfoC[o*(this.mesh_width+1)+e],n=this.vertInfoC[i*(this.mesh_width+1)+a],l=this.vertInfoC[s*(this.mesh_width+1)+a],this.vertInfoC[o*(this.mesh_width+1)+a]=.25*(n+l+h+A)+(2*this.rng.random()-1)*r,this.genPlasma(t,a,i,o,.5*r),this.genPlasma(a,e,i,o,.5*r),this.genPlasma(t,a,o,s,.5*r),this.genPlasma(a,e,o,s,.5*r))}createBlendPattern(){const t=1+Math.floor(3*this.rng.random());if(0===t){let t=0;for(let e=0;e<=this.mesh_height;e++)for(let e=0;e<=this.mesh_width;e++)this.vertInfoA[t]=1,this.vertInfoC[t]=0,t+=1}else if(1===t){const t=6.28*this.rng.random(),e=Math.cos(t),i=Math.sin(t),s=.1+.2*this.rng.random(),r=1/s;let a=0;for(let t=0;t<=this.mesh_height;t++){const o=t/this.mesh_height*this.aspecty;for(let t=0;t<=this.mesh_width;t++){let h=(t/this.mesh_width*this.aspectx-.5)*e+(o-.5)*i+.5;h=(h-.5)/Math.sqrt(2)+.5,this.vertInfoA[a]=r*(1+s),this.vertInfoC[a]=r*h-r,a+=1}}}else if(2===t){const t=.12+.13*this.rng.random(),e=1/t;this.vertInfoC[0]=this.rng.random(),this.vertInfoC[this.mesh_width]=this.rng.random(),this.vertInfoC[this.mesh_height*(this.mesh_width+1)]=this.rng.random(),this.vertInfoC[this.mesh_height*(this.mesh_width+1)+this.mesh_width]=this.rng.random(),this.genPlasma(0,this.mesh_width,0,this.mesh_height,.25);let i=this.vertInfoC[0],s=this.vertInfoC[0],r=0;for(let t=0;t<=this.mesh_height;t++)for(let t=0;t<=this.mesh_width;t++)i>this.vertInfoC[r]&&(i=this.vertInfoC[r]),s<this.vertInfoC[r]&&(s=this.vertInfoC[r]),r+=1;const a=1/(s-i);r=0;for(let s=0;s<=this.mesh_height;s++)for(let s=0;s<=this.mesh_width;s++){const s=(this.vertInfoC[r]-i)*a;this.vertInfoA[r]=e*(1+t),this.vertInfoC[r]=e*s-e,r+=1}}else if(3===t){const t=.02+.14*this.rng.random()+.34*this.rng.random(),e=1/t,i=2*Math.floor(2*this.rng.random())-1;let s=0;for(let r=0;r<=this.mesh_height;r++){const a=(r/this.mesh_height-.5)*this.aspecty;for(let r=0;r<=this.mesh_width;r++){const o=(r/this.mesh_width-.5)*this.aspectx;let h=1.41421*Math.sqrt(o*o+a*a);-1===i&&(h=1-h),this.vertInfoA[s]=e*(1+t),this.vertInfoC[s]=e*h-e,s+=1}}}}}class Vt{constructor(t,e,i){this.gl=t,this.audio=e,this.frameNum=0,this.fps=30,this.time=0,this.presetTime=0,this.lastTime=performance.now(),this.timeHist=[0],this.timeHistMax=120,this.blending=!1,this.blendStartTime=0,this.blendProgress=0,this.blendDuration=0,this.width=i.width||1200,this.height=i.height||900,this.mesh_width=i.meshWidth||48,this.mesh_height=i.meshHeight||36,this.pixelRatio=i.pixelRatio||window.devicePixelRatio||1,this.textureRatio=i.textureRatio||1,this.outputFXAA=i.outputFXAA||!1,this.texsizeX=this.width*this.pixelRatio*this.textureRatio,this.texsizeY=this.height*this.pixelRatio*this.textureRatio,this.aspectx=this.texsizeY>this.texsizeX?this.texsizeX/this.texsizeY:1,this.aspecty=this.texsizeX>this.texsizeY?this.texsizeY/this.texsizeX:1,this.invAspectx=1/this.aspectx,this.invAspecty=1/this.aspecty,this.qs=At.range(1,33).map(t=>`q${t}`),this.ts=At.range(1,9).map(t=>`t${t}`),this.regs=At.range(0,100).map(t=>t<10?`reg0${t}`:`reg${t}`),this.blurRatios=[[.5,.25],[.125,.125],[.0625,.0625]],this.audioLevels=new ot(this.audio),this.prevFrameBuffer=this.gl.createFramebuffer(),this.targetFrameBuffer=this.gl.createFramebuffer(),this.prevTexture=this.gl.createTexture(),this.targetTexture=this.gl.createTexture(),this.compFrameBuffer=this.gl.createFramebuffer(),this.compTexture=this.gl.createTexture(),this.anisoExt=this.gl.getExtension(\"EXT_texture_filter_anisotropic\")||this.gl.getExtension(\"MOZ_EXT_texture_filter_anisotropic\")||this.gl.getExtension(\"WEBKIT_EXT_texture_filter_anisotropic\"),this.bindFrameBufferTexture(this.prevFrameBuffer,this.prevTexture),this.bindFrameBufferTexture(this.targetFrameBuffer,this.targetTexture),this.bindFrameBufferTexture(this.compFrameBuffer,this.compTexture);const s={pixelRatio:this.pixelRatio,textureRatio:this.textureRatio,texsizeX:this.texsizeX,texsizeY:this.texsizeY,mesh_width:this.mesh_width,mesh_height:this.mesh_height,aspectx:this.aspectx,aspecty:this.aspecty};this.noise=new Ut(t),this.image=new Mt(t),this.warpShader=new wt(t,this.noise,this.image,s),this.compShader=new It(t,this.noise,this.image,s),this.outputShader=new Rt(t,s),this.prevWarpShader=new wt(t,this.noise,this.image,s),this.prevCompShader=new It(t,this.noise,this.image,s),this.numBlurPasses=0,this.blurShader1=new Ct(0,this.blurRatios,t,s),this.blurShader2=new Ct(1,this.blurRatios,t,s),this.blurShader3=new Ct(2,this.blurRatios,t,s),this.blurTexture1=this.blurShader1.blurVerticalTexture,this.blurTexture2=this.blurShader2.blurVerticalTexture,this.blurTexture3=this.blurShader3.blurVerticalTexture,this.basicWaveform=new bt(t,s),this.customWaveforms=At.range(4).map(e=>new xt(e,t,s)),this.customShapes=At.range(4).map(e=>new vt(e,t,s)),this.prevCustomWaveforms=At.range(4).map(e=>new xt(e,t,s)),this.prevCustomShapes=At.range(4).map(e=>new vt(e,t,s)),this.darkenCenter=new St(t,s),this.innerBorder=new Tt(t,s),this.outerBorder=new Tt(t,s),this.motionVectors=new Pt(t,s),this.titleText=new Ft(t,s),this.blendPattern=new Qt(s),this.resampleShader=new yt(t),this.supertext={startTime:-1},this.warpUVs=new Float32Array((this.mesh_width+1)*(this.mesh_height+1)*2),this.warpColor=new Float32Array((this.mesh_width+1)*(this.mesh_height+1)*4),this.gl.clearColor(0,0,0,1),this.blankPreset=ht;const r={frame:0,time:0,fps:45,bass:1,bass_att:1,mid:1,mid_att:1,treb:1,treb_att:1};this.preset=ht,this.prevPreset=this.preset,this.presetEquationRunner=new ut(this.preset,r,s),this.prevPresetEquationRunner=new ut(this.prevPreset,r,s),this.preset.useWASM||(this.regVars=this.presetEquationRunner.mdVSRegs)}static getHighestBlur(t){return/sampler_blur3/.test(t)?3:/sampler_blur2/.test(t)?2:/sampler_blur1/.test(t)?1:0}loadPreset(t,e){this.blendPattern.createBlendPattern(),this.blending=!0,this.blendStartTime=this.time,this.blendDuration=e,this.blendProgress=0,this.prevPresetEquationRunner=this.presetEquationRunner,this.prevPreset=this.preset,this.preset=t,this.presetTime=this.time;const i={frame:this.frameNum,time:this.time,fps:this.fps,bass:this.audioLevels.bass,bass_att:this.audioLevels.bass_att,mid:this.audioLevels.mid,mid_att:this.audioLevels.mid_att,treb:this.audioLevels.treb,treb_att:this.audioLevels.treb_att},s={pixelRatio:this.pixelRatio,textureRatio:this.textureRatio,texsizeX:this.texsizeX,texsizeY:this.texsizeY,mesh_width:this.mesh_width,mesh_height:this.mesh_height,aspectx:this.aspectx,aspecty:this.aspecty};t.useWASM?(this.preset.globalPools.perFrame.old_wave_mode.value=this.prevPreset.baseVals.wave_mode,this.preset.baseVals.old_wave_mode=this.prevPreset.baseVals.wave_mode,this.presetEquationRunner=new ft(this.preset,i,s),this.preset.pixel_eqs_initialize_array&&this.preset.pixel_eqs_initialize_array(this.mesh_width,this.mesh_height)):(this.preset.baseVals.old_wave_mode=this.prevPreset.baseVals.wave_mode,this.presetEquationRunner=new ut(this.preset,i,s),this.regVars=this.presetEquationRunner.mdVSRegs);const r=this.prevWarpShader;this.prevWarpShader=this.warpShader,this.warpShader=r;const a=this.prevCompShader;this.prevCompShader=this.compShader,this.compShader=a;const o=this.preset.warp.trim(),h=this.preset.comp.trim();this.warpShader.updateShader(o),this.compShader.updateShader(h),0===o.length?this.numBlurPasses=0:this.numBlurPasses=Vt.getHighestBlur(o),0!==h.length&&(this.numBlurPasses=Math.max(this.numBlurPasses,Vt.getHighestBlur(h)))}loadExtraImages(t){this.image.loadExtraImages(t)}setRendererSize(t,e,i){const s=this.texsizeX,r=this.texsizeY;if(this.width=t,this.height=e,this.mesh_width=i.meshWidth||this.mesh_width,this.mesh_height=i.meshHeight||this.mesh_height,this.pixelRatio=i.pixelRatio||this.pixelRatio,this.textureRatio=i.textureRatio||this.textureRatio,this.texsizeX=t*this.pixelRatio*this.textureRatio,this.texsizeY=e*this.pixelRatio*this.textureRatio,this.aspectx=this.texsizeY>this.texsizeX?this.texsizeX/this.texsizeY:1,this.aspecty=this.texsizeX>this.texsizeY?this.texsizeY/this.texsizeX:1,this.texsizeX!==s||this.texsizeY!==r){const t=this.gl.createTexture();this.bindFrameBufferTexture(this.targetFrameBuffer,t),this.bindFrambufferAndSetViewport(this.targetFrameBuffer,this.texsizeX,this.texsizeY),this.resampleShader.renderQuadTexture(this.targetTexture),this.targetTexture=t,this.bindFrameBufferTexture(this.prevFrameBuffer,this.prevTexture),this.bindFrameBufferTexture(this.compFrameBuffer,this.compTexture)}this.updateGlobals(),this.frameNum>0&&this.renderToScreen()}setInternalMeshSize(t,e){this.mesh_width=t,this.mesh_height=e,this.updateGlobals()}setOutputAA(t){this.outputFXAA=t}updateGlobals(){const t={pixelRatio:this.pixelRatio,textureRatio:this.textureRatio,texsizeX:this.texsizeX,texsizeY:this.texsizeY,mesh_width:this.mesh_width,mesh_height:this.mesh_height,aspectx:this.aspectx,aspecty:this.aspecty};this.presetEquationRunner.updateGlobals(t),this.prevPresetEquationRunner.updateGlobals(t),this.warpShader.updateGlobals(t),this.prevWarpShader.updateGlobals(t),this.compShader.updateGlobals(t),this.prevCompShader.updateGlobals(t),this.outputShader.updateGlobals(t),this.blurShader1.updateGlobals(t),this.blurShader2.updateGlobals(t),this.blurShader3.updateGlobals(t),this.basicWaveform.updateGlobals(t),this.customWaveforms.forEach(e=>e.updateGlobals(t)),this.customShapes.forEach(e=>e.updateGlobals(t)),this.prevCustomWaveforms.forEach(e=>e.updateGlobals(t)),this.prevCustomShapes.forEach(e=>e.updateGlobals(t)),this.darkenCenter.updateGlobals(t),this.innerBorder.updateGlobals(t),this.outerBorder.updateGlobals(t),this.motionVectors.updateGlobals(t),this.titleText.updateGlobals(t),this.blendPattern.updateGlobals(t),this.warpUVs=new Float32Array((this.mesh_width+1)*(this.mesh_height+1)*2),this.warpColor=new Float32Array((this.mesh_width+1)*(this.mesh_height+1)*4),this.preset.pixel_eqs_initialize_array&&this.preset.pixel_eqs_initialize_array(this.mesh_width,this.mesh_height)}calcTimeAndFPS(t){let e;if(t)e=t;else{const t=performance.now();e=(t-this.lastTime)/1e3,(e>1||e<0||this.frame<2)&&(e=1/30),this.lastTime=t}this.time+=1/this.fps,this.blending&&(this.blendProgress=(this.time-this.blendStartTime)/this.blendDuration,this.blendProgress>1&&(this.blending=!1));const i=this.timeHist[this.timeHist.length-1]+e;this.timeHist.push(i),this.timeHist.length>this.timeHistMax&&this.timeHist.shift();const s=this.timeHist.length/(i-this.timeHist[0]);if(Math.abs(s-this.fps)>3&&this.frame>this.timeHistMax)this.fps=s;else{const t=.93;this.fps=t*this.fps+(1-t)*s}}runPixelEquations(t,e,i,s){const r=this.mesh_width,a=this.mesh_height,o=r+1,h=a+1,A=this.time*e.warpanimspeed,n=1/e.warpscale,l=11.68+4*Math.cos(1.413*A+10),c=8.77+3*Math.cos(1.113*A+7),g=10.54+3*Math.cos(1.233*A+3),m=11.49+4*Math.cos(.933*A+5),u=0/this.texsizeX,f=0/this.texsizeY,d=this.aspectx,p=this.aspecty;let _=0,E=0;if(t.preset.useWASM){const r=t.preset.globalPools.perVertex;if(At.setWasm(r,i,t.globalKeys),At.setWasm(r,t.mdVSQAfterFrame,t.qs),r.zoom.value=e.zoom,r.zoomexp.value=e.zoomexp,r.rot.value=e.rot,r.warp.value=e.warp,r.cx.value=e.cx,r.cy.value=e.cy,r.dx.value=e.dx,r.dy.value=e.dy,r.sx.value=e.sx,r.sy.value=e.sy,t.preset.pixel_eqs_wasm(t.runVertEQs,this.mesh_width,this.mesh_height,this.time,e.warpanimspeed,e.warpscale,this.aspectx,this.aspecty),s){const e=t.preset.pixel_eqs_get_array();let i=0,s=0;for(let t=0;t<h;t++)for(let t=0;t<o;t++){const t=e[i],r=e[i+1];let a=this.blendPattern.vertInfoA[i/2]*this.blendProgress+this.blendPattern.vertInfoC[i/2];a=Math.clamp(a,0,1),this.warpUVs[i]=this.warpUVs[i]*a+t*(1-a),this.warpUVs[i+1]=this.warpUVs[i+1]*a+r*(1-a),this.warpColor[s+0]=1,this.warpColor[s+1]=1,this.warpColor[s+2]=1,this.warpColor[s+3]=a,i+=2,s+=4}}else this.warpUVs=t.preset.pixel_eqs_get_array(),this.warpColor.fill(1)}else{let i=At.cloneVars(e),b=i.warp,x=i.zoom,v=i.zoomexp,T=i.cx,S=i.cy,P=i.sx,w=i.sy,I=i.dx,R=i.dy,y=i.rot;for(let B=0;B<h;B++)for(let h=0;h<o;h++){const o=h/r*2-1,L=B/a*2-1,C=Math.sqrt(o*o*d*d+L*L*p*p);if(t.runVertEQs){let s;s=B===a/2&&h===r/2?0:At.atan2(L*p,o*d),i.x=.5*o*d+.5,i.y=-.5*L*p+.5,i.rad=C,i.ang=s,i.zoom=e.zoom,i.zoomexp=e.zoomexp,i.rot=e.rot,i.warp=e.warp,i.cx=e.cx,i.cy=e.cy,i.dx=e.dx,i.dy=e.dy,i.sx=e.sx,i.sy=e.sy,i=t.runPixelEquations(i),b=i.warp,x=i.zoom,v=i.zoomexp,T=i.cx,S=i.cy,P=i.sx,w=i.sy,I=i.dx,R=i.dy,y=i.rot}const U=1/x**(v**(2*C-1));let M=.5*o*d*U+.5,F=.5*-L*p*U+.5;M=(M-T)/P+T,F=(F-S)/w+S,0!==b&&(M+=.0035*b*Math.sin(.333*A+n*(o*l-L*m)),F+=.0035*b*Math.cos(.375*A-n*(o*g+L*c)),M+=.0035*b*Math.cos(.753*A-n*(o*c-L*g)),F+=.0035*b*Math.sin(.825*A+n*(o*l+L*m)));const Q=M-T,V=F-S,D=Math.cos(y),q=Math.sin(y);if(M=Q*D-V*q+T,F=Q*q+V*D+S,M-=I,F-=R,M=(M-.5)/d+.5,F=(F-.5)/p+.5,M+=u,F+=f,s){let t=this.blendPattern.vertInfoA[_/2]*this.blendProgress+this.blendPattern.vertInfoC[_/2];t=Math.clamp(t,0,1),this.warpUVs[_]=this.warpUVs[_]*t+M*(1-t),this.warpUVs[_+1]=this.warpUVs[_+1]*t+F*(1-t),this.warpColor[E+0]=1,this.warpColor[E+1]=1,this.warpColor[E+2]=1,this.warpColor[E+3]=t}else this.warpUVs[_]=M,this.warpUVs[_+1]=F,this.warpColor[E+0]=1,this.warpColor[E+1]=1,this.warpColor[E+2]=1,this.warpColor[E+3]=1;_+=2,E+=4}this.mdVSVertex=i}}static mixFrameEquations(t,e,i){const s=.5-.5*Math.cos(t*Math.PI),r=1-s,a=.5,o=At.cloneVars(e);return o.decay=s*e.decay+r*i.decay,o.wave_a=s*e.wave_a+r*i.wave_a,o.wave_r=s*e.wave_r+r*i.wave_r,o.wave_g=s*e.wave_g+r*i.wave_g,o.wave_b=s*e.wave_b+r*i.wave_b,o.wave_x=s*e.wave_x+r*i.wave_x,o.wave_y=s*e.wave_y+r*i.wave_y,o.wave_mystery=s*e.wave_mystery+r*i.wave_mystery,o.ob_size=s*e.ob_size+r*i.ob_size,o.ob_r=s*e.ob_r+r*i.ob_r,o.ob_g=s*e.ob_g+r*i.ob_g,o.ob_b=s*e.ob_b+r*i.ob_b,o.ob_a=s*e.ob_a+r*i.ob_a,o.ib_size=s*e.ib_size+r*i.ib_size,o.ib_r=s*e.ib_r+r*i.ib_r,o.ib_g=s*e.ib_g+r*i.ib_g,o.ib_b=s*e.ib_b+r*i.ib_b,o.ib_a=s*e.ib_a+r*i.ib_a,o.mv_x=s*e.mv_x+r*i.mv_x,o.mv_y=s*e.mv_y+r*i.mv_y,o.mv_dx=s*e.mv_dx+r*i.mv_dx,o.mv_dy=s*e.mv_dy+r*i.mv_dy,o.mv_l=s*e.mv_l+r*i.mv_l,o.mv_r=s*e.mv_r+r*i.mv_r,o.mv_g=s*e.mv_g+r*i.mv_g,o.mv_b=s*e.mv_b+r*i.mv_b,o.mv_a=s*e.mv_a+r*i.mv_a,o.echo_zoom=s*e.echo_zoom+r*i.echo_zoom,o.echo_alpha=s*e.echo_alpha+r*i.echo_alpha,o.echo_orient=s*e.echo_orient+r*i.echo_orient,o.wave_dots=s<a?i.wave_dots:e.wave_dots,o.wave_thick=s<a?i.wave_thick:e.wave_thick,o.additivewave=s<a?i.additivewave:e.additivewave,o.wave_brighten=s<a?i.wave_brighten:e.wave_brighten,o.darken_center=s<a?i.darken_center:e.darken_center,o.gammaadj=s<a?i.gammaadj:e.gammaadj,o.wrap=s<a?i.wrap:e.wrap,o.invert=s<a?i.invert:e.invert,o.brighten=s<a?i.brighten:e.brighten,o.darken=s<a?i.darken:e.darken,o.solarize=s<a?i.brighten:e.solarize,o.b1n=s*e.b1n+r*i.b1n,o.b2n=s*e.b2n+r*i.b2n,o.b3n=s*e.b3n+r*i.b3n,o.b1x=s*e.b1x+r*i.b1x,o.b2x=s*e.b2x+r*i.b2x,o.b3x=s*e.b3x+r*i.b3x,o.b1ed=s*e.b1ed+r*i.b1ed,o}static getBlurValues(t){let e=t.b1n,i=t.b2n,s=t.b3n,r=t.b1x,a=t.b2x,o=t.b3x;const h=.1;if(r-e<h){const t=.5*(e+r);e=t-.05,r=t-.05}if(a=Math.min(r,a),i=Math.max(e,i),a-i<h){const t=.5*(i+a);i=t-.05,a=t-.05}if(o=Math.min(a,o),s=Math.max(i,s),o-s<h){const t=.5*(s+o);s=t-.05,o=t-.05}return{blurMins:[e,i,s],blurMaxs:[r,a,o]}}bindFrambufferAndSetViewport(t,e,i){this.gl.bindFramebuffer(this.gl.FRAMEBUFFER,t),this.gl.viewport(0,0,e,i)}bindFrameBufferTexture(t,e){if(this.gl.bindTexture(this.gl.TEXTURE_2D,e),this.gl.pixelStorei(this.gl.UNPACK_ALIGNMENT,1),this.gl.texImage2D(this.gl.TEXTURE_2D,0,this.gl.RGBA,this.texsizeX,this.texsizeY,0,this.gl.RGBA,this.gl.UNSIGNED_BYTE,new Uint8Array(this.texsizeX*this.texsizeY*4)),this.gl.generateMipmap(this.gl.TEXTURE_2D),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_S,this.gl.CLAMP_TO_EDGE),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_T,this.gl.CLAMP_TO_EDGE),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MIN_FILTER,this.gl.LINEAR_MIPMAP_LINEAR),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MAG_FILTER,this.gl.LINEAR),this.anisoExt){const t=this.gl.getParameter(this.anisoExt.MAX_TEXTURE_MAX_ANISOTROPY_EXT);this.gl.texParameterf(this.gl.TEXTURE_2D,this.anisoExt.TEXTURE_MAX_ANISOTROPY_EXT,t)}this.gl.bindFramebuffer(this.gl.FRAMEBUFFER,t),this.gl.framebufferTexture2D(this.gl.FRAMEBUFFER,this.gl.COLOR_ATTACHMENT0,this.gl.TEXTURE_2D,e,0)}render({audioLevels:t,elapsedTime:e}={}){this.calcTimeAndFPS(e),this.frameNum+=1,t?this.audio.updateAudio(t.timeByteArray,t.timeByteArrayL,t.timeByteArrayR):this.audio.sampleAudio(),this.audioLevels.updateAudioLevels(this.fps,this.frameNum);const i={frame:this.frameNum,time:this.time,fps:this.fps,bass:this.audioLevels.bass,bass_att:this.audioLevels.bass_att,mid:this.audioLevels.mid,mid_att:this.audioLevels.mid_att,treb:this.audioLevels.treb,treb_att:this.audioLevels.treb_att,meshx:this.mesh_width,meshy:this.mesh_height,aspectx:this.invAspectx,aspecty:this.invAspecty,pixelsx:this.texsizeX,pixelsy:this.texsizeY},s=Object.assign({},i);this.prevPreset.useWASM||(s.gmegabuf=this.prevPresetEquationRunner.gmegabuf),this.preset.useWASM||(i.gmegabuf=this.presetEquationRunner.gmegabuf,Object.assign(i,this.regVars));const r=this.presetEquationRunner.runFrameEquations(i);let a;this.runPixelEquations(this.presetEquationRunner,r,i,!1),this.preset.useWASM||(Object.assign(this.regVars,At.pick(this.mdVSVertex,this.regs)),Object.assign(i,this.regVars)),this.blending?(this.prevMDVSFrame=this.prevPresetEquationRunner.runFrameEquations(s),this.runPixelEquations(this.prevPresetEquationRunner,this.prevMDVSFrame,s,!0),a=Vt.mixFrameEquations(this.blendProgress,r,this.prevMDVSFrame)):a=r;const o=this.targetTexture;this.targetTexture=this.prevTexture,this.prevTexture=o;const h=this.targetFrameBuffer;this.targetFrameBuffer=this.prevFrameBuffer,this.prevFrameBuffer=h,this.gl.bindTexture(this.gl.TEXTURE_2D,this.prevTexture),this.gl.generateMipmap(this.gl.TEXTURE_2D),this.bindFrambufferAndSetViewport(this.targetFrameBuffer,this.texsizeX,this.texsizeY),this.gl.clear(this.gl.COLOR_BUFFER_BIT),this.gl.enable(this.gl.BLEND),this.gl.blendEquation(this.gl.FUNC_ADD),this.gl.blendFunc(this.gl.SRC_ALPHA,this.gl.ONE_MINUS_SRC_ALPHA);const{blurMins:A,blurMaxs:n}=Vt.getBlurValues(a);this.blending?(this.prevWarpShader.renderQuadTexture(!1,this.prevTexture,this.blurTexture1,this.blurTexture2,this.blurTexture3,A,n,this.prevMDVSFrame,this.prevPresetEquationRunner.mdVSQAfterFrame,this.warpUVs,this.warpColor),this.warpShader.renderQuadTexture(!0,this.prevTexture,this.blurTexture1,this.blurTexture2,this.blurTexture3,A,n,a,this.presetEquationRunner.mdVSQAfterFrame,this.warpUVs,this.warpColor)):this.warpShader.renderQuadTexture(!1,this.prevTexture,this.blurTexture1,this.blurTexture2,this.blurTexture3,A,n,r,this.presetEquationRunner.mdVSQAfterFrame,this.warpUVs,this.warpColor),this.numBlurPasses>0&&(this.blurShader1.renderBlurTexture(this.targetTexture,r,A,n),this.numBlurPasses>1&&(this.blurShader2.renderBlurTexture(this.blurTexture1,r,A,n),this.numBlurPasses>2&&this.blurShader3.renderBlurTexture(this.blurTexture2,r,A,n)),this.bindFrambufferAndSetViewport(this.targetFrameBuffer,this.texsizeX,this.texsizeY)),this.motionVectors.drawMotionVectors(a,this.warpUVs),this.preset.shapes&&this.preset.shapes.length>0&&this.customShapes.forEach((t,e)=>{t.drawCustomShape(this.blending?this.blendProgress:1,i,this.presetEquationRunner,this.preset.shapes[e],this.prevTexture)}),this.preset.waves&&this.preset.waves.length>0&&this.customWaveforms.forEach((t,e)=>{t.drawCustomWaveform(this.blending?this.blendProgress:1,this.audio.timeArrayL,this.audio.timeArrayR,this.audio.freqArrayL,this.audio.freqArrayR,i,this.presetEquationRunner,this.preset.waves[e])}),this.blending&&(this.prevPreset.shapes&&this.prevPreset.shapes.length>0&&this.prevCustomShapes.forEach((t,e)=>{t.drawCustomShape(1-this.blendProgress,s,this.prevPresetEquationRunner,this.prevPreset.shapes[e],this.prevTexture)}),this.prevPreset.waves&&this.prevPreset.waves.length>0&&this.prevCustomWaveforms.forEach((t,e)=>{t.drawCustomWaveform(1-this.blendProgress,this.audio.timeArrayL,this.audio.timeArrayR,this.audio.freqArrayL,this.audio.freqArrayR,s,this.prevPresetEquationRunner,this.prevPreset.waves[e])})),this.basicWaveform.drawBasicWaveform(this.blending,this.blendProgress,this.audio.timeArrayL,this.audio.timeArrayR,a),this.darkenCenter.drawDarkenCenter(a);const l=[a.ob_r,a.ob_g,a.ob_b,a.ob_a];this.outerBorder.drawBorder(l,a.ob_size,0);const c=[a.ib_r,a.ib_g,a.ib_b,a.ib_a];if(this.innerBorder.drawBorder(c,a.ib_size,a.ob_size),this.supertext.startTime>=0){const t=(this.time-this.supertext.startTime)/this.supertext.duration;t>=1&&this.titleText.renderTitle(t,!0,i)}this.globalVars=i,this.mdVSFrame=r,this.mdVSFrameMixed=a,this.renderToScreen()}renderToScreen(){this.outputFXAA?this.bindFrambufferAndSetViewport(this.compFrameBuffer,this.texsizeX,this.texsizeY):this.bindFrambufferAndSetViewport(null,this.width,this.height),this.gl.clear(this.gl.COLOR_BUFFER_BIT),this.gl.enable(this.gl.BLEND),this.gl.blendEquation(this.gl.FUNC_ADD),this.gl.blendFunc(this.gl.SRC_ALPHA,this.gl.ONE_MINUS_SRC_ALPHA);const{blurMins:t,blurMaxs:e}=Vt.getBlurValues(this.mdVSFrameMixed);if(this.blending?(this.prevCompShader.renderQuadTexture(!1,this.targetTexture,this.blurTexture1,this.blurTexture2,this.blurTexture3,t,e,this.prevMDVSFrame,this.prevPresetEquationRunner.mdVSQAfterFrame,this.warpColor),this.compShader.renderQuadTexture(!0,this.targetTexture,this.blurTexture1,this.blurTexture2,this.blurTexture3,t,e,this.mdVSFrameMixed,this.presetEquationRunner.mdVSQAfterFrame,this.warpColor)):this.compShader.renderQuadTexture(!1,this.targetTexture,this.blurTexture1,this.blurTexture2,this.blurTexture3,t,e,this.mdVSFrame,this.presetEquationRunner.mdVSQAfterFrame,this.warpColor),this.supertext.startTime>=0){const t=(this.time-this.supertext.startTime)/this.supertext.duration;this.titleText.renderTitle(t,!1,this.globalVars),t>=1&&(this.supertext.startTime=-1)}this.outputFXAA&&(this.gl.bindTexture(this.gl.TEXTURE_2D,this.compTexture),this.gl.generateMipmap(this.gl.TEXTURE_2D),this.bindFrambufferAndSetViewport(null,this.width,this.height),this.outputShader.renderQuadTexture(this.compTexture))}launchSongTitleAnim(t){this.supertext={startTime:this.time,duration:1.7},this.titleText.generateTitleTexture(t)}toDataURL(){const t=new Uint8Array(this.texsizeX*this.texsizeY*4),e=this.gl.createFramebuffer(),i=this.gl.createTexture();this.bindFrameBufferTexture(e,i);const{blurMins:s,blurMaxs:r}=Vt.getBlurValues(this.mdVSFrameMixed);this.compShader.renderQuadTexture(!1,this.targetTexture,this.blurTexture1,this.blurTexture2,this.blurTexture3,s,r,this.mdVSFrame,this.presetEquationRunner.mdVSQAfterFrame,this.warpColor),this.gl.readPixels(0,0,this.texsizeX,this.texsizeY,this.gl.RGBA,this.gl.UNSIGNED_BYTE,t),Array.from({length:this.texsizeY},(e,i)=>t.slice(i*this.texsizeX*4,(i+1)*this.texsizeX*4)).forEach((e,i)=>t.set(e,(this.texsizeY-i-1)*this.texsizeX*4));const a=document.createElement(\"canvas\");a.width=this.texsizeX,a.height=this.texsizeY;const o=a.getContext(\"2d\",{willReadFrequently:!1}),h=o.createImageData(this.texsizeX,this.texsizeY);return h.data.set(t),o.putImageData(h,0,0),this.gl.deleteTexture(i),this.gl.deleteFramebuffer(e),a.toDataURL()}warpBufferToDataURL(){const t=new Uint8Array(this.texsizeX*this.texsizeY*4);this.gl.bindFramebuffer(this.gl.FRAMEBUFFER,this.targetFrameBuffer),this.gl.readPixels(0,0,this.texsizeX,this.texsizeY,this.gl.RGBA,this.gl.UNSIGNED_BYTE,t);const e=document.createElement(\"canvas\");e.width=this.texsizeX,e.height=this.texsizeY;const i=e.getContext(\"2d\",{willReadFrequently:!1}),s=i.createImageData(this.texsizeX,this.texsizeY);return s.data.set(t),i.putImageData(s,0,0),e.toDataURL()}}class Dt{constructor(t,e,i){this.opts=i,this.rng=gt(i),this.deterministicMode=i.deterministic||i.testMode,this.audio=new at(t);const s=i.width||1200,r=i.height||900;window.OffscreenCanvas?this.internalCanvas=new OffscreenCanvas(s,r):(this.internalCanvas=document.createElement(\"canvas\"),this.internalCanvas.width=s,this.internalCanvas.height=r),this.gl=this.internalCanvas.getContext(\"webgl2\",{alpha:!1,antialias:!1,depth:!1,stencil:!1,premultipliedAlpha:!1}),this.outputGl=e.getContext(\"2d\",{willReadFrequently:!1}),this.baseValsDefaults={decay:.98,gammaadj:2,echo_zoom:2,echo_alpha:0,echo_orient:0,red_blue:0,brighten:0,darken:0,wrap:1,darken_center:0,solarize:0,invert:0,bmotionvectorson:1,fshader:0,b1n:0,b2n:0,b3n:0,b1x:1,b2x:1,b3x:1,b1ed:.25,wave_mode:0,additivewave:0,wave_dots:0,wave_thick:0,wave_a:.8,wave_scale:1,wave_smoothing:.75,wave_mystery:0,modwavealphabyvolume:0,modwavealphastart:.75,modwavealphaend:.95,wave_r:1,wave_g:1,wave_b:1,wave_x:.5,wave_y:.5,wave_brighten:1,mv_x:12,mv_y:9,mv_dx:0,mv_dy:0,mv_l:.9,mv_r:1,mv_g:1,mv_b:1,mv_a:1,warpanimspeed:1,warpscale:1,zoomexp:1,zoom:1,rot:0,cx:.5,cy:.5,dx:0,dy:0,warp:1,sx:1,sy:1,ob_size:.01,ob_r:0,ob_g:0,ob_b:0,ob_a:0,ib_size:.01,ib_r:.25,ib_g:.25,ib_b:.25,ib_a:0},this.shapeBaseValsDefaults={enabled:0,sides:4,additive:0,thickoutline:0,textured:0,num_inst:1,tex_zoom:1,tex_ang:0,x:.5,y:.5,rad:.1,ang:0,r:1,g:0,b:0,a:1,r2:0,g2:1,b2:0,a2:0,border_r:1,border_g:1,border_b:1,border_a:.1},this.waveBaseValsDefaults={enabled:0,samples:512,sep:0,scaling:1,smoothing:.5,r:1,g:1,b:1,a:1,spectrum:0,usedots:0,thick:0,additive:0},this.qs=At.range(1,33).map(t=>`q${t}`),this.ts=At.range(1,9).map(t=>`t${t}`),this.globalPerFrameVars=[\"old_wave_mode\",\"frame\",\"time\",\"fps\",\"bass\",\"bass_att\",\"mid\",\"mid_att\",\"treb\",\"treb_att\",\"meshx\",\"meshy\",\"aspectx\",\"aspecty\",\"pixelsx\",\"pixelsy\",\"rand_start\",\"rand_preset\"],this.globalPerPixelVars=[\"frame\",\"time\",\"fps\",\"bass\",\"bass_att\",\"mid\",\"mid_att\",\"treb\",\"treb_att\",\"meshx\",\"meshy\",\"aspectx\",\"aspecty\",\"pixelsx\",\"pixelsy\",\"rand_start\",\"rand_preset\",\"x\",\"y\",\"rad\",\"ang\"],this.globalShapeVars=[\"frame\",\"time\",\"fps\",\"bass\",\"bass_att\",\"mid\",\"mid_att\",\"treb\",\"treb_att\",\"meshx\",\"meshy\",\"aspectx\",\"aspecty\",\"pixelsx\",\"pixelsy\",\"rand_start\",\"rand_preset\",\"instance\"],this.shapeBaseVars=[\"x\",\"y\",\"rad\",\"ang\",\"r\",\"g\",\"b\",\"a\",\"r2\",\"g2\",\"b2\",\"a2\",\"border_r\",\"border_g\",\"border_b\",\"border_a\",\"thickoutline\",\"textured\",\"tex_zoom\",\"tex_ang\",\"additive\"],this.globalWaveVars=[\"frame\",\"time\",\"fps\",\"bass\",\"bass_att\",\"mid\",\"mid_att\",\"treb\",\"treb_att\",\"meshx\",\"meshy\",\"aspectx\",\"aspecty\",\"pixelsx\",\"pixelsy\",\"rand_start\",\"rand_preset\",\"x\",\"y\",\"sample\",\"value1\",\"value2\"],this.renderer=new Vt(this.gl,this.audio,i)}loseGLContext(){this.gl.getExtension(\"WEBGL_lose_context\").loseContext(),this.outputGl=null}connectAudio(t){this.audioNode=t,this.audio.connectAudio(t)}disconnectAudio(t){this.audio.disconnectAudio(t)}static overrideDefaultVars(t,e){const i={};return Object.keys(t).forEach(s=>{Object.prototype.hasOwnProperty.call(e,s)?i[s]=e[s]:i[s]=t[s]}),i}createQVars(){const t={};return this.qs.forEach(e=>{t[e]=new WebAssembly.Global({value:\"f64\",mutable:!0},0)}),t}createTVars(){const t={};return this.ts.forEach(e=>{t[e]=new WebAssembly.Global({value:\"f64\",mutable:!0},0)}),t}createPerFramePool(t){const e={};return Object.keys(this.baseValsDefaults).forEach(i=>{e[i]=new WebAssembly.Global({value:\"f64\",mutable:!0},t[i])}),this.globalPerFrameVars.forEach(t=>{e[t]=new WebAssembly.Global({value:\"f64\",mutable:!0},0)}),e}createPerPixelPool(t){const e={};return Object.keys(this.baseValsDefaults).forEach(i=>{e[i]=new WebAssembly.Global({value:\"f64\",mutable:!0},t[i])}),this.globalPerPixelVars.forEach(t=>{e[t]=new WebAssembly.Global({value:\"f64\",mutable:!0},0)}),e}createCustomShapePerFramePool(t){const e={};return Object.keys(this.shapeBaseValsDefaults).forEach(i=>{e[i]=new WebAssembly.Global({value:\"f64\",mutable:!0},t[i])}),this.globalShapeVars.forEach(t=>{e[t]=new WebAssembly.Global({value:\"f64\",mutable:!0},0)}),e}createCustomWavePerFramePool(t){const e={};return Object.keys(this.waveBaseValsDefaults).forEach(i=>{e[i]=new WebAssembly.Global({value:\"f64\",mutable:!0},t[i])}),this.globalWaveVars.forEach(t=>{e[t]=new WebAssembly.Global({value:\"f64\",mutable:!0},0)}),e}static makeShapeResetPool(t,e,i){return e.reduce((e,s)=>({...e,[`${s}_${i}`]:t[s]}),{})}static base64ToArrayBuffer(t){for(var e=window.atob(t),i=e.length,s=new Uint8Array(i),r=0;r<i;r++)s[r]=e.charCodeAt(r);return s.buffer}async loadPreset(t,e=0){const i=JSON.parse(JSON.stringify(t));i.baseVals=Dt.overrideDefaultVars(this.baseValsDefaults,i.baseVals);for(let t=0;t<i.shapes.length;t++)i.shapes[t].baseVals=Dt.overrideDefaultVars(this.shapeBaseValsDefaults,i.shapes[t].baseVals);for(let t=0;t<i.waves.length;t++)i.waves[t].baseVals=Dt.overrideDefaultVars(this.waveBaseValsDefaults,i.waves[t].baseVals);const s=i.useJS&&!this.opts.onlyUseWASM;Object.prototype.hasOwnProperty.call(i,\"init_eqs_eel\")&&!s?(i.useWASM=!0,await this.loadWASMPreset(i,e)):this.opts.onlyUseWASM?console.warn(\"Tried to load a preset that doesn't support WASM with onlyUseWASM on\"):Object.prototype.hasOwnProperty.call(i,\"init_eqs_str\")?this.loadJSPreset(i,e):console.warn(\"Tried to load a JS preset that doesn't have converted strings\")}async loadWASMPreset(t,e){const i=this.createQVars(),s=this.createTVars(),r={perFrame:{...i,...this.createPerFramePool(t.baseVals)},perVertex:{...i,...this.createPerPixelPool(t.baseVals)}},a={presetInit:{pool:\"perFrame\",code:t.init_eqs_eel},perFrame:{pool:\"perFrame\",code:t.frame_eqs_eel}};\"\"!==t.pixel_eqs_eel&&(a.perPixel={pool:\"perVertex\",code:t.pixel_eqs_eel});for(let e=0;e<t.shapes.length;e++)r[`shapePerFrame${e}`]={...i,...s,...this.createCustomShapePerFramePool(t.shapes[e].baseVals)},0!==t.shapes[e].baseVals.enabled&&(a[`shapes_${e}_init_eqs`]={pool:`shapePerFrame${e}`,code:t.shapes[e].init_eqs_eel},a[`shapes_${e}_frame_eqs`]={pool:`shapePerFrame${e}`,code:t.shapes[e].frame_eqs_eel});for(let e=0;e<t.waves.length;e++)0!==t.waves[e].baseVals.enabled&&(r[`wavePerFrame${e}`]={...i,...s,...this.createCustomWavePerFramePool(t.waves[e].baseVals)},a[`waves_${e}_init_eqs`]={pool:`wavePerFrame${e}`,code:t.waves[e].init_eqs_eel},a[`waves_${e}_frame_eqs`]={pool:`wavePerFrame${e}`,code:t.waves[e].frame_eqs_eel},t.waves[e].point_eqs_eel&&\"\"!==t.waves[e].point_eqs_eel&&(a[`waves_${e}_point_eqs`]={pool:`wavePerFrame${e}`,code:t.waves[e].point_eqs_eel}));const o=await G.loadModule({pools:r,functions:a,eelVersion:t.version||2}),h=t=>t||(()=>{}),A=await st.instantiate(Dt.base64ToArrayBuffer(\"AGFzbQEAAAABPQpgAABgAXwBfGACfHwBfGACf38AYAR/f39/AGAJf39/f3x8fHx8AGADf399AGABfwF/YAJ/fwF/YAF+AX8CuBWMAQNlbnYFYWJvcnQABAhwaXhlbEVxcwtwZXJQaXhlbEVxcwAADHBpeGVsVmFyUG9vbAR3YXJwA3wBDHBpeGVsVmFyUG9vbAR6b29tA3wBDHBpeGVsVmFyUG9vbAd6b29tZXhwA3wBDHBpeGVsVmFyUG9vbAJjeAN8AQxwaXhlbFZhclBvb2wCY3kDfAEMcGl4ZWxWYXJQb29sAnN4A3wBDHBpeGVsVmFyUG9vbAJzeQN8AQxwaXhlbFZhclBvb2wCZHgDfAEMcGl4ZWxWYXJQb29sAmR5A3wBDHBpeGVsVmFyUG9vbANyb3QDfAEMcGl4ZWxWYXJQb29sA3JhZAN8AQxwaXhlbFZhclBvb2wDYW5nA3wBDHBpeGVsVmFyUG9vbAF4A3wBDHBpeGVsVmFyUG9vbAF5A3wBCHFWYXJQb29sAnExA3wBCHFWYXJQb29sAnEyA3wBCHFWYXJQb29sAnEzA3wBCHFWYXJQb29sAnE0A3wBCHFWYXJQb29sAnE1A3wBCHFWYXJQb29sAnE2A3wBCHFWYXJQb29sAnE3A3wBCHFWYXJQb29sAnE4A3wBCHFWYXJQb29sAnE5A3wBCHFWYXJQb29sA3ExMAN8AQhxVmFyUG9vbANxMTEDfAEIcVZhclBvb2wDcTEyA3wBCHFWYXJQb29sA3ExMwN8AQhxVmFyUG9vbANxMTQDfAEIcVZhclBvb2wDcTE1A3wBCHFWYXJQb29sA3ExNgN8AQhxVmFyUG9vbANxMTcDfAEIcVZhclBvb2wDcTE4A3wBCHFWYXJQb29sA3ExOQN8AQhxVmFyUG9vbANxMjADfAEIcVZhclBvb2wDcTIxA3wBCHFWYXJQb29sA3EyMgN8AQhxVmFyUG9vbANxMjMDfAEIcVZhclBvb2wDcTI0A3wBCHFWYXJQb29sA3EyNQN8AQhxVmFyUG9vbANxMjYDfAEIcVZhclBvb2wDcTI3A3wBCHFWYXJQb29sA3EyOAN8AQhxVmFyUG9vbANxMjkDfAEIcVZhclBvb2wDcTMwA3wBCHFWYXJQb29sA3EzMQN8AQhxVmFyUG9vbANxMzIDfAEIdFZhclBvb2wCdDEDfAEIdFZhclBvb2wCdDIDfAEIdFZhclBvb2wCdDMDfAEIdFZhclBvb2wCdDQDfAEIdFZhclBvb2wCdDUDfAEIdFZhclBvb2wCdDYDfAEIdFZhclBvb2wCdDcDfAEIdFZhclBvb2wCdDgDfAEKc2hhcGVQb29sMAN4XzADfAEKc2hhcGVQb29sMAN5XzADfAEKc2hhcGVQb29sMAVyYWRfMAN8AQpzaGFwZVBvb2wwBWFuZ18wA3wBCnNoYXBlUG9vbDADcl8wA3wBCnNoYXBlUG9vbDADZ18wA3wBCnNoYXBlUG9vbDADYl8wA3wBCnNoYXBlUG9vbDADYV8wA3wBCnNoYXBlUG9vbDAEcjJfMAN8AQpzaGFwZVBvb2wwBGcyXzADfAEKc2hhcGVQb29sMARiMl8wA3wBCnNoYXBlUG9vbDAEYTJfMAN8AQpzaGFwZVBvb2wwCmJvcmRlcl9yXzADfAEKc2hhcGVQb29sMApib3JkZXJfZ18wA3wBCnNoYXBlUG9vbDAKYm9yZGVyX2JfMAN8AQpzaGFwZVBvb2wwCmJvcmRlcl9hXzADfAEKc2hhcGVQb29sMA50aGlja291dGxpbmVfMAN8AQpzaGFwZVBvb2wwCnRleHR1cmVkXzADfAEKc2hhcGVQb29sMAp0ZXhfem9vbV8wA3wBCnNoYXBlUG9vbDAJdGV4X2FuZ18wA3wBCnNoYXBlUG9vbDAKYWRkaXRpdmVfMAN8AQpzaGFwZVBvb2wxA3hfMQN8AQpzaGFwZVBvb2wxA3lfMQN8AQpzaGFwZVBvb2wxBXJhZF8xA3wBCnNoYXBlUG9vbDEFYW5nXzEDfAEKc2hhcGVQb29sMQNyXzEDfAEKc2hhcGVQb29sMQNnXzEDfAEKc2hhcGVQb29sMQNiXzEDfAEKc2hhcGVQb29sMQNhXzEDfAEKc2hhcGVQb29sMQRyMl8xA3wBCnNoYXBlUG9vbDEEZzJfMQN8AQpzaGFwZVBvb2wxBGIyXzEDfAEKc2hhcGVQb29sMQRhMl8xA3wBCnNoYXBlUG9vbDEKYm9yZGVyX3JfMQN8AQpzaGFwZVBvb2wxCmJvcmRlcl9nXzEDfAEKc2hhcGVQb29sMQpib3JkZXJfYl8xA3wBCnNoYXBlUG9vbDEKYm9yZGVyX2FfMQN8AQpzaGFwZVBvb2wxDnRoaWNrb3V0bGluZV8xA3wBCnNoYXBlUG9vbDEKdGV4dHVyZWRfMQN8AQpzaGFwZVBvb2wxCnRleF96b29tXzEDfAEKc2hhcGVQb29sMQl0ZXhfYW5nXzEDfAEKc2hhcGVQb29sMQphZGRpdGl2ZV8xA3wBCnNoYXBlUG9vbDIDeF8yA3wBCnNoYXBlUG9vbDIDeV8yA3wBCnNoYXBlUG9vbDIFcmFkXzIDfAEKc2hhcGVQb29sMgVhbmdfMgN8AQpzaGFwZVBvb2wyA3JfMgN8AQpzaGFwZVBvb2wyA2dfMgN8AQpzaGFwZVBvb2wyA2JfMgN8AQpzaGFwZVBvb2wyA2FfMgN8AQpzaGFwZVBvb2wyBHIyXzIDfAEKc2hhcGVQb29sMgRnMl8yA3wBCnNoYXBlUG9vbDIEYjJfMgN8AQpzaGFwZVBvb2wyBGEyXzIDfAEKc2hhcGVQb29sMgpib3JkZXJfcl8yA3wBCnNoYXBlUG9vbDIKYm9yZGVyX2dfMgN8AQpzaGFwZVBvb2wyCmJvcmRlcl9iXzIDfAEKc2hhcGVQb29sMgpib3JkZXJfYV8yA3wBCnNoYXBlUG9vbDIOdGhpY2tvdXRsaW5lXzIDfAEKc2hhcGVQb29sMgp0ZXh0dXJlZF8yA3wBCnNoYXBlUG9vbDIKdGV4X3pvb21fMgN8AQpzaGFwZVBvb2wyCXRleF9hbmdfMgN8AQpzaGFwZVBvb2wyCmFkZGl0aXZlXzIDfAEKc2hhcGVQb29sMwN4XzMDfAEKc2hhcGVQb29sMwN5XzMDfAEKc2hhcGVQb29sMwVyYWRfMwN8AQpzaGFwZVBvb2wzBWFuZ18zA3wBCnNoYXBlUG9vbDMDcl8zA3wBCnNoYXBlUG9vbDMDZ18zA3wBCnNoYXBlUG9vbDMDYl8zA3wBCnNoYXBlUG9vbDMDYV8zA3wBCnNoYXBlUG9vbDMEcjJfMwN8AQpzaGFwZVBvb2wzBGcyXzMDfAEKc2hhcGVQb29sMwRiMl8zA3wBCnNoYXBlUG9vbDMEYTJfMwN8AQpzaGFwZVBvb2wzCmJvcmRlcl9yXzMDfAEKc2hhcGVQb29sMwpib3JkZXJfZ18zA3wBCnNoYXBlUG9vbDMKYm9yZGVyX2JfMwN8AQpzaGFwZVBvb2wzCmJvcmRlcl9hXzMDfAEKc2hhcGVQb29sMw50aGlja291dGxpbmVfMwN8AQpzaGFwZVBvb2wzCnRleHR1cmVkXzMDfAEKc2hhcGVQb29sMwp0ZXhfem9vbV8zA3wBCnNoYXBlUG9vbDMJdGV4X2FuZ18zA3wBCnNoYXBlUG9vbDMKYWRkaXRpdmVfMwN8AQMZGAgDBwkBAQICAQYFAAAAAAAAAAAAAAAAAAUDAQABBuwMigF8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt/AUEAC3wBRAAAAAAAAAAAC3wBRAAAAAAAAAAAC34BQgALB9kB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\"),{pixelEqs:{perPixelEqs:h(o.exports.perPixel)},pixelVarPool:{warp:r.perVertex.warp,zoom:r.perVertex.zoom,zoomexp:r.perVertex.zoomexp,cx:r.perVertex.cx,cy:r.perVertex.cy,sx:r.perVertex.sx,sy:r.perVertex.sy,dx:r.perVertex.dx,dy:r.perVertex.dy,rot:r.perVertex.rot,x:r.perVertex.x,y:r.perVertex.y,ang:r.perVertex.ang,rad:r.perVertex.rad},qVarPool:i,tVarPool:s,shapePool0:Dt.makeShapeResetPool(r.shapePerFrame0,this.shapeBaseVars,0),shapePool1:Dt.makeShapeResetPool(r.shapePerFrame1,this.shapeBaseVars,1),shapePool2:Dt.makeShapeResetPool(r.shapePerFrame2,this.shapeBaseVars,2),shapePool3:Dt.makeShapeResetPool(r.shapePerFrame3,this.shapeBaseVars,3),console:{logi:t=>{console.log(\"logi: \"+t)},logf:t=>{console.log(\"logf: \"+t)}},env:{abort:()=>{}}});t.globalPools=r,t.init_eqs=h(o.exports.presetInit),t.frame_eqs=h(o.exports.perFrame),t.save_qs=A.exports.saveQs,t.restore_qs=A.exports.restoreQs,t.save_ts=A.exports.saveTs,t.restore_ts=A.exports.restoreTs,o.exports.perPixel&&(t.pixel_eqs=o.exports.perPixel),t.pixel_eqs_initialize_array=(e,i)=>{const s=A.exports.createFloat32Array((e+1)*(i+1)*2);t.pixel_eqs_array=s},t.pixel_eqs_get_array=()=>A.exports.__getFloat32ArrayView(t.pixel_eqs_array),t.pixel_eqs_wasm=(...e)=>A.exports.runPixelEquations(t.pixel_eqs_array,...e);for(let e=0;e<t.shapes.length;e++)0!==t.shapes[e].baseVals.enabled&&(t.shapes[e].init_eqs=h(o.exports[`shapes_${e}_init_eqs`]),t.shapes[e].frame_eqs=o.exports[`shapes_${e}_frame_eqs`],t.shapes[e].frame_eqs_save=()=>A.exports[`shape${e}_save`](),t.shapes[e].frame_eqs_restore=()=>A.exports[`shape${e}_restore`]());for(let e=0;e<t.waves.length;e++)if(0!==t.waves[e].baseVals.enabled){const i={init_eqs:h(o.exports[`waves_${e}_init_eqs`]),frame_eqs:h(o.exports[`waves_${e}_frame_eqs`])};t.waves[e].point_eqs_eel&&\"\"!==t.waves[e].point_eqs_eel?i.point_eqs=o.exports[`waves_${e}_point_eqs`]:i.point_eqs=\"\",t.waves[e]=Object.assign({},t.waves[e],i)}this.renderer.loadPreset(t,e)}loadJSPreset(t,e){if(\"function\"!=typeof t.init_eqs){t.init_eqs=new Function(\"a\",`${t.init_eqs_str} return a;`),t.frame_eqs=new Function(\"a\",`${t.frame_eqs_str} return a;`),t.pixel_eqs_str&&\"\"!==t.pixel_eqs_str?t.pixel_eqs=new Function(\"a\",`${t.pixel_eqs_str} return a;`):t.pixel_eqs=\"\";for(let e=0;e<t.shapes.length;e++)0!==t.shapes[e].baseVals.enabled&&(t.shapes[e]=Object.assign({},t.shapes[e],{init_eqs:new Function(\"a\",`${t.shapes[e].init_eqs_str} return a;`),frame_eqs:new Function(\"a\",`${t.shapes[e].frame_eqs_str} return a;`)}));for(let e=0;e<t.waves.length;e++)if(0!==t.waves[e].baseVals.enabled){const i={init_eqs:new Function(\"a\",`${t.waves[e].init_eqs_str} return a;`),frame_eqs:new Function(\"a\",`${t.waves[e].frame_eqs_str} return a;`)};t.waves[e].point_eqs_str&&\"\"!==t.waves[e].point_eqs_str?i.point_eqs=new Function(\"a\",`${t.waves[e].point_eqs_str} return a;`):i.point_eqs=\"\",t.waves[e]=Object.assign({},t.waves[e],i)}}this.renderer.loadPreset(t,e)}loadExtraImages(t){this.renderer.loadExtraImages(t)}setRendererSize(t,e,i={}){this.internalCanvas.width=t,this.internalCanvas.height=e,this.renderer.setRendererSize(t,e,i)}setInternalMeshSize(t,e){this.renderer.setInternalMeshSize(t,e)}setOutputAA(t){this.renderer.setOutputAA(t)}setCanvas(t){this.outputGl=t.getContext(\"2d\",{willReadFrequently:!1})}render(t){const e=this.renderer.render(t);return this.outputGl&&this.outputGl.drawImage(this.internalCanvas,0,0),e}launchSongTitleAnim(t){this.renderer.launchSongTitleAnim(t)}toDataURL(){return this.renderer.toDataURL()}warpBufferToDataURL(){return this.renderer.warpBufferToDataURL()}}class qt{static createVisualizer(t,e,i){return new Dt(t,e,i)}}export{qt as default};\n//# sourceMappingURL=butterchurn.min.js.map\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"base\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"base\"] = factory();\n\telse\n\t\troot[\"base\"] = factory();\n})(self, function() {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ \"./base.js\":\n/*!*****************!*\\\n  !*** ./base.js ***!\n  \\*****************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": () => __WEBPACK_DEFAULT_EXPORT__\n/* harmony export */ });\n/* eslint-disable max-len */\nvar presets = {};\npresets[\"_Aderrasi - Wanderer in Curved Space - mash0000 - faclempt kibitzing meshuggana schmaltz (Geiss color mix)\"] = __webpack_require__(/*! ./presets/converted/_Aderrasi - Wanderer in Curved Space - mash0000 - faclempt kibitzing meshuggana schmaltz (Geiss color mix).json */ \"./presets/converted/_Aderrasi - Wanderer in Curved Space - mash0000 - faclempt kibitzing meshuggana schmaltz (Geiss color mix).json\");\npresets[\"_Geiss - Artifact 01\"] = __webpack_require__(/*! ./presets/converted/_Geiss - Artifact 01.json */ \"./presets/converted/_Geiss - Artifact 01.json\");\npresets[\"_Geiss - Desert Rose 2\"] = __webpack_require__(/*! ./presets/converted/_Geiss - Desert Rose 2.json */ \"./presets/converted/_Geiss - Desert Rose 2.json\");\npresets[\"_Geiss - untitled\"] = __webpack_require__(/*! ./presets/converted/_Geiss - untitled.json */ \"./presets/converted/_Geiss - untitled.json\");\npresets[\"_Mig_049\"] = __webpack_require__(/*! ./presets/converted/_Mig_049.json */ \"./presets/converted/_Mig_049.json\");\npresets[\"_Mig_085\"] = __webpack_require__(/*! ./presets/converted/_Mig_085.json */ \"./presets/converted/_Mig_085.json\");\npresets[\"_Rovastar + Geiss - Hurricane Nightmare (Posterize Mix)\"] = __webpack_require__(/*! ./presets/converted/_Rovastar + Geiss - Hurricane Nightmare (Posterize Mix).json */ \"./presets/converted/_Rovastar + Geiss - Hurricane Nightmare (Posterize Mix).json\");\npresets[\"$$$ Royal - Mashup (197)\"] = __webpack_require__(/*! ./presets/converted/$$$ Royal - Mashup (197).json */ \"./presets/converted/$$$ Royal - Mashup (197).json\");\npresets[\"$$$ Royal - Mashup (220)\"] = __webpack_require__(/*! ./presets/converted/$$$ Royal - Mashup (220).json */ \"./presets/converted/$$$ Royal - Mashup (220).json\");\npresets[\"$$$ Royal - Mashup (431)\"] = __webpack_require__(/*! ./presets/converted/$$$ Royal - Mashup (431).json */ \"./presets/converted/$$$ Royal - Mashup (431).json\");\npresets[\"AdamFx 2 Geiss, Zylot and Flexi - Reaction Diffusion 3 (Overload Mix 2) EATIT4 hypno\"] = __webpack_require__(/*! ./presets/converted/AdamFx 2 Geiss, Zylot and Flexi - Reaction Diffusion 3 (Overload Mix 2) EATIT4 hypno.json */ \"./presets/converted/AdamFx 2 Geiss, Zylot and Flexi - Reaction Diffusion 3 (Overload Mix 2) EATIT4 hypno.json\");\npresets[\"Aderrasi - Potion of Spirits\"] = __webpack_require__(/*! ./presets/converted/Aderrasi - Potion of Spirits.json */ \"./presets/converted/Aderrasi - Potion of Spirits.json\");\npresets[\"Aderrasi - Storm of the Eye (Thunder) - mash0000 - quasi pseudo meta concentrics\"] = __webpack_require__(/*! ./presets/converted/Aderrasi - Storm of the Eye (Thunder) - mash0000 - quasi pseudo meta concentrics.json */ \"./presets/converted/Aderrasi - Storm of the Eye (Thunder) - mash0000 - quasi pseudo meta concentrics.json\");\npresets[\"Aderrasi + Geiss - Airhandler (Kali Mix) - Canvas Mix\"] = __webpack_require__(/*! ./presets/converted/Aderrasi + Geiss - Airhandler (Kali Mix) - Canvas Mix.json */ \"./presets/converted/Aderrasi + Geiss - Airhandler (Kali Mix) - Canvas Mix.json\");\npresets[\"An AdamFX n Martin Infusion 2 flexi - Why The Sky Looks Diffrent Today - AdamFx n Martin Infusion - Tack Tile Disfunction B\"] = __webpack_require__(/*! ./presets/converted/An AdamFX n Martin Infusion 2 flexi - Why The Sky Looks Diffrent Today - AdamFx n Martin Infusion - Tack Tile Disfunction B.json */ \"./presets/converted/An AdamFX n Martin Infusion 2 flexi - Why The Sky Looks Diffrent Today - AdamFx n Martin Infusion - Tack Tile Disfunction B.json\");\npresets[\"Cope - The Neverending Explosion of Red Liquid Fire\"] = __webpack_require__(/*! ./presets/converted/Cope - The Neverending Explosion of Red Liquid Fire.json */ \"./presets/converted/Cope - The Neverending Explosion of Red Liquid Fire.json\");\npresets[\"cope + flexi - colorful marble (ghost mix)\"] = __webpack_require__(/*! ./presets/converted/cope + flexi - colorful marble (ghost mix).json */ \"./presets/converted/cope + flexi - colorful marble (ghost mix).json\");\npresets[\"cope + martin - mother-of-pearl\"] = __webpack_require__(/*! ./presets/converted/cope + martin - mother-of-pearl.json */ \"./presets/converted/cope + martin - mother-of-pearl.json\");\npresets[\"Eo.S. - glowsticks v2 05 and proton lights (+Krash′s beat code) _Phat_remix02b\"] = __webpack_require__(/*! ./presets/converted/Eo.S. - glowsticks v2 05 and proton lights (+Krash′s beat code) _Phat_remix02b.json */ \"./presets/converted/Eo.S. - glowsticks v2 05 and proton lights (+Krash′s beat code) _Phat_remix02b.json\");\npresets[\"Eo.S. + Zylot - skylight (Stained Glass Majesty mix)\"] = __webpack_require__(/*! ./presets/converted/Eo.S. + Zylot - skylight (Stained Glass Majesty mix).json */ \"./presets/converted/Eo.S. + Zylot - skylight (Stained Glass Majesty mix).json\");\npresets[\"fiShbRaiN + Flexi - witchcraft 2.0\"] = __webpack_require__(/*! ./presets/converted/fiShbRaiN + Flexi - witchcraft 2.0.json */ \"./presets/converted/fiShbRaiN + Flexi - witchcraft 2.0.json\");\npresets[\"Flexi - alien fish pond\"] = __webpack_require__(/*! ./presets/converted/Flexi - alien fish pond.json */ \"./presets/converted/Flexi - alien fish pond.json\");\npresets[\"Flexi - area 51\"] = __webpack_require__(/*! ./presets/converted/Flexi - area 51.json */ \"./presets/converted/Flexi - area 51.json\");\npresets[\"flexi - bouncing balls [double mindblob neon mix]\"] = __webpack_require__(/*! ./presets/converted/flexi - bouncing balls [double mindblob neon mix].json */ \"./presets/converted/flexi - bouncing balls [double mindblob neon mix].json\");\npresets[\"Flexi - infused with the spiral\"] = __webpack_require__(/*! ./presets/converted/Flexi - infused with the spiral.json */ \"./presets/converted/Flexi - infused with the spiral.json\");\npresets[\"Flexi - mindblob [shiny mix]\"] = __webpack_require__(/*! ./presets/converted/Flexi - mindblob [shiny mix].json */ \"./presets/converted/Flexi - mindblob [shiny mix].json\");\npresets[\"Flexi - mindblob mix\"] = __webpack_require__(/*! ./presets/converted/Flexi - mindblob mix.json */ \"./presets/converted/Flexi - mindblob mix.json\");\npresets[\"flexi - mom, why the sky looks different today\"] = __webpack_require__(/*! ./presets/converted/flexi - mom, why the sky looks different today.json */ \"./presets/converted/flexi - mom, why the sky looks different today.json\");\npresets[\"flexi - patternton, district of media, capitol of the united abstractions of fractopia\"] = __webpack_require__(/*! ./presets/converted/flexi - patternton, district of media, capitol of the united abstractions of fractopia.json */ \"./presets/converted/flexi - patternton, district of media, capitol of the united abstractions of fractopia.json\");\npresets[\"Flexi - predator-prey-spirals\"] = __webpack_require__(/*! ./presets/converted/Flexi - predator-prey-spirals.json */ \"./presets/converted/Flexi - predator-prey-spirals.json\");\npresets[\"Flexi - smashing fractals [acid etching mix]\"] = __webpack_require__(/*! ./presets/converted/Flexi - smashing fractals [acid etching mix].json */ \"./presets/converted/Flexi - smashing fractals [acid etching mix].json\");\npresets[\"flexi - swing out on the spiral\"] = __webpack_require__(/*! ./presets/converted/flexi - swing out on the spiral.json */ \"./presets/converted/flexi - swing out on the spiral.json\");\npresets[\"Flexi - truly soft piece of software - this is generic texturing (Jelly) \"] = __webpack_require__(/*! ./presets/converted/Flexi - truly soft piece of software - this is generic texturing (Jelly) .json */ \"./presets/converted/Flexi - truly soft piece of software - this is generic texturing (Jelly) .json\");\npresets[\"flexi - what is the matrix\"] = __webpack_require__(/*! ./presets/converted/flexi - what is the matrix.json */ \"./presets/converted/flexi - what is the matrix.json\");\npresets[\"flexi + amandio c - organic [random mashup]\"] = __webpack_require__(/*! ./presets/converted/flexi + amandio c - organic [random mashup].json */ \"./presets/converted/flexi + amandio c - organic [random mashup].json\");\npresets[\"flexi + amandio c - organic12-3d-2.milk\"] = __webpack_require__(/*! ./presets/converted/flexi + amandio c - organic12-3d-2.json */ \"./presets/converted/flexi + amandio c - organic12-3d-2.json\");\npresets[\"Flexi + amandio c - piercing 05 - Kopie (2) - Kopie\"] = __webpack_require__(/*! ./presets/converted/Flexi + amandio c - piercing 05 - Kopie (2) - Kopie.json */ \"./presets/converted/Flexi + amandio c - piercing 05 - Kopie (2) - Kopie.json\");\npresets[\"flexi + fishbrain - neon mindblob grafitti\"] = __webpack_require__(/*! ./presets/converted/flexi + fishbrain - neon mindblob grafitti.json */ \"./presets/converted/flexi + fishbrain - neon mindblob grafitti.json\");\npresets[\"flexi + geiss - pogo cubes vs. tokamak vs. game of life [stahls jelly 4.5 finish]\"] = __webpack_require__(/*! ./presets/converted/flexi + geiss - pogo cubes vs. tokamak vs. game of life [stahls jelly 4.5 finish].json */ \"./presets/converted/flexi + geiss - pogo cubes vs. tokamak vs. game of life [stahls jelly 4.5 finish].json\");\npresets[\"Flexi + Martin - astral projection\"] = __webpack_require__(/*! ./presets/converted/Flexi + Martin - astral projection.json */ \"./presets/converted/Flexi + Martin - astral projection.json\");\npresets[\"Flexi + Martin - cascading decay swing\"] = __webpack_require__(/*! ./presets/converted/Flexi + Martin - cascading decay swing.json */ \"./presets/converted/Flexi + Martin - cascading decay swing.json\");\npresets[\"Flexi + stahlregen - jelly showoff parade\"] = __webpack_require__(/*! ./presets/converted/Flexi + stahlregen - jelly showoff parade.json */ \"./presets/converted/Flexi + stahlregen - jelly showoff parade.json\");\npresets[\"Flexi, fishbrain, Geiss + Martin - tokamak witchery\"] = __webpack_require__(/*! ./presets/converted/Flexi, fishbrain, Geiss + Martin - tokamak witchery.json */ \"./presets/converted/Flexi, fishbrain, Geiss + Martin - tokamak witchery.json\");\npresets[\"Flexi, martin + geiss - dedicated to the sherwin maxawow\"] = __webpack_require__(/*! ./presets/converted/Flexi, martin + geiss - dedicated to the sherwin maxawow.json */ \"./presets/converted/Flexi, martin + geiss - dedicated to the sherwin maxawow.json\");\npresets[\"Fumbling_Foo + En D & Martin - Mandelverse\"] = __webpack_require__(/*! ./presets/converted/Fumbling_Foo + En D & Martin - Mandelverse.json */ \"./presets/converted/Fumbling_Foo + En D & Martin - Mandelverse.json\");\npresets[\"Geiss - Cauldron - painterly 2 (saturation remix)\"] = __webpack_require__(/*! ./presets/converted/Geiss - Cauldron - painterly 2 (saturation remix).json */ \"./presets/converted/Geiss - Cauldron - painterly 2 (saturation remix).json\");\npresets[\"Geiss - Reaction Diffusion 2\"] = __webpack_require__(/*! ./presets/converted/Geiss - Reaction Diffusion 2.json */ \"./presets/converted/Geiss - Reaction Diffusion 2.json\");\npresets[\"Geiss - Spiral Artifact\"] = __webpack_require__(/*! ./presets/converted/Geiss - Spiral Artifact.json */ \"./presets/converted/Geiss - Spiral Artifact.json\");\npresets[\"Geiss - Thumb Drum\"] = __webpack_require__(/*! ./presets/converted/Geiss - Thumb Drum.json */ \"./presets/converted/Geiss - Thumb Drum.json\");\npresets[\"Geiss + Flexi + Martin - disconnected\"] = __webpack_require__(/*! ./presets/converted/Geiss + Flexi + Martin - disconnected.json */ \"./presets/converted/Geiss + Flexi + Martin - disconnected.json\");\npresets[\"Geiss, Flexi + Stahlregen - Thumbdrum Tokamak [crossfiring aftermath jelly mashup]\"] = __webpack_require__(/*! ./presets/converted/Geiss, Flexi + Stahlregen - Thumbdrum Tokamak [crossfiring aftermath jelly mashup].json */ \"./presets/converted/Geiss, Flexi + Stahlregen - Thumbdrum Tokamak [crossfiring aftermath jelly mashup].json\");\npresets[\"Goody - The Wild Vort\"] = __webpack_require__(/*! ./presets/converted/Goody - The Wild Vort.json */ \"./presets/converted/Goody - The Wild Vort.json\");\npresets[\"gunthry is out back bloodying up the pine trees - adm atomising (v) the disintigrate (n)\"] = __webpack_require__(/*! ./presets/converted/gunthry is out back bloodying up the pine trees - adm atomising (v) the disintigrate (n).json */ \"./presets/converted/gunthry is out back bloodying up the pine trees - adm atomising (v) the disintigrate (n).json\");\npresets[\"Halfbreak - Funny Madness\"] = __webpack_require__(/*! ./presets/converted/Halfbreak - Funny Madness.json */ \"./presets/converted/Halfbreak - Funny Madness.json\");\npresets[\"Halfbreak - Light of Breakers\"] = __webpack_require__(/*! ./presets/converted/Halfbreak - Light of Breakers.json */ \"./presets/converted/Halfbreak - Light of Breakers.json\");\npresets[\"Hexcollie, Pieturp, Orb, Flexi, Geiss n Demon Lord - Premeditative Urination Clause\"] = __webpack_require__(/*! ./presets/converted/Hexcollie, Pieturp, Orb, Flexi, Geiss n Demon Lord - Premeditative Urination Clause.json */ \"./presets/converted/Hexcollie, Pieturp, Orb, Flexi, Geiss n Demon Lord - Premeditative Urination Clause.json\");\npresets[\"high-altitude basket unraveling - singh grooves nitrogen argon nz+\"] = __webpack_require__(/*! ./presets/converted/high-altitude basket unraveling - singh grooves nitrogen argon nz+.json */ \"./presets/converted/high-altitude basket unraveling - singh grooves nitrogen argon nz+.json\");\npresets[\"LuxXx - Play v3 (the war within all of us)\"] = __webpack_require__(/*! ./presets/converted/LuxXx - Play v3 (the war within all of us).json */ \"./presets/converted/LuxXx - Play v3 (the war within all of us).json\");\npresets[\"Martin - acid wiring\"] = __webpack_require__(/*! ./presets/converted/Martin - acid wiring.json */ \"./presets/converted/Martin - acid wiring.json\");\npresets[\"martin - angel flight\"] = __webpack_require__(/*! ./presets/converted/martin - angel flight.json */ \"./presets/converted/martin - angel flight.json\");\npresets[\"martin - another kind of groove\"] = __webpack_require__(/*! ./presets/converted/martin - another kind of groove.json */ \"./presets/converted/martin - another kind of groove.json\");\npresets[\"martin - bombyx mori\"] = __webpack_require__(/*! ./presets/converted/martin - bombyx mori.json */ \"./presets/converted/martin - bombyx mori.json\");\npresets[\"martin - castle in the air\"] = __webpack_require__(/*! ./presets/converted/martin - castle in the air.json */ \"./presets/converted/martin - castle in the air.json\");\npresets[\"martin - chain breaker\"] = __webpack_require__(/*! ./presets/converted/martin - chain breaker.json */ \"./presets/converted/martin - chain breaker.json\");\npresets[\"Martin - charisma\"] = __webpack_require__(/*! ./presets/converted/Martin - charisma.json */ \"./presets/converted/Martin - charisma.json\");\npresets[\"martin - disco mix 4\"] = __webpack_require__(/*! ./presets/converted/martin - disco mix 4.json */ \"./presets/converted/martin - disco mix 4.json\");\npresets[\"martin - extreme heat\"] = __webpack_require__(/*! ./presets/converted/martin - extreme heat.json */ \"./presets/converted/martin - extreme heat.json\");\npresets[\"martin - frosty caves 2\"] = __webpack_require__(/*! ./presets/converted/martin - frosty caves 2.json */ \"./presets/converted/martin - frosty caves 2.json\");\npresets[\"martin - fruit machine\"] = __webpack_require__(/*! ./presets/converted/martin - fruit machine.json */ \"./presets/converted/martin - fruit machine.json\");\npresets[\"martin - glass corridor\"] = __webpack_require__(/*! ./presets/converted/martin - glass corridor.json */ \"./presets/converted/martin - glass corridor.json\");\npresets[\"Martin - liquid arrows\"] = __webpack_require__(/*! ./presets/converted/Martin - liquid arrows.json */ \"./presets/converted/Martin - liquid arrows.json\");\npresets[\"martin - mandelbox explorer - high speed demo version\"] = __webpack_require__(/*! ./presets/converted/martin - mandelbox explorer - high speed demo version.json */ \"./presets/converted/martin - mandelbox explorer - high speed demo version.json\");\npresets[\"martin - mucus cervix\"] = __webpack_require__(/*! ./presets/converted/martin - mucus cervix.json */ \"./presets/converted/martin - mucus cervix.json\");\npresets[\"martin - reflections on black tiles\"] = __webpack_require__(/*! ./presets/converted/martin - reflections on black tiles.json */ \"./presets/converted/martin - reflections on black tiles.json\");\npresets[\"martin - stormy sea (2010 update)\"] = __webpack_require__(/*! ./presets/converted/martin - stormy sea (2010 update).json */ \"./presets/converted/martin - stormy sea (2010 update).json\");\npresets[\"martin - The Bridge of Khazad-Dum\"] = __webpack_require__(/*! ./presets/converted/martin - The Bridge of Khazad-Dum.json */ \"./presets/converted/martin - The Bridge of Khazad-Dum.json\");\npresets[\"martin - witchcraft reloaded\"] = __webpack_require__(/*! ./presets/converted/martin - witchcraft reloaded.json */ \"./presets/converted/martin - witchcraft reloaded.json\");\npresets[\"martin [shadow harlequins shape code] - fata morgana\"] = __webpack_require__(/*! ./presets/converted/martin [shadow harlequins shape code] - fata morgana.json */ \"./presets/converted/martin [shadow harlequins shape code] - fata morgana.json\");\npresets[\"martin + flexi - diamond cutter [prismaticvortex.com] - camille - i wish i wish i wish i was constrained\"] = __webpack_require__(/*! ./presets/converted/martin + flexi - diamond cutter [prismaticvortex.com] - camille - i wish i wish i wish i was constrained.json */ \"./presets/converted/martin + flexi - diamond cutter [prismaticvortex.com] - camille - i wish i wish i wish i was constrained.json\");\npresets[\"martin, flexi, fishbrain + sto - enterstate [random mashup]\"] = __webpack_require__(/*! ./presets/converted/martin, flexi, fishbrain + sto - enterstate [random mashup].json */ \"./presets/converted/martin, flexi, fishbrain + sto - enterstate [random mashup].json\");\npresets[\"Milk Artist At our Best - FED - SlowFast Ft AdamFX n Martin - HD CosmoFX\"] = __webpack_require__(/*! ./presets/converted/Milk Artist At our Best - FED - SlowFast Ft AdamFX n Martin - HD CosmoFX.json */ \"./presets/converted/Milk Artist At our Best - FED - SlowFast Ft AdamFX n Martin - HD CosmoFX.json\");\npresets[\"MilkDrop2077.R002\"] = __webpack_require__(/*! ./presets/converted/MilkDrop2077.R002.json */ \"./presets/converted/MilkDrop2077.R002.json\");\npresets[\"MilkDrop2077.R033\"] = __webpack_require__(/*! ./presets/converted/MilkDrop2077.R033.json */ \"./presets/converted/MilkDrop2077.R033.json\");\npresets[\"ORB - Waaa\"] = __webpack_require__(/*! ./presets/converted/ORB - Waaa.json */ \"./presets/converted/ORB - Waaa.json\");\npresets[\"Phat+fiShbRaiN+Eo.S_Mandala_Chasers_remix\"] = __webpack_require__(/*! ./presets/converted/Phat+fiShbRaiN+Eo.S_Mandala_Chasers_remix.json */ \"./presets/converted/Phat+fiShbRaiN+Eo.S_Mandala_Chasers_remix.json\");\npresets[\"Rovastar - Oozing Resistance\"] = __webpack_require__(/*! ./presets/converted/Rovastar - Oozing Resistance.json */ \"./presets/converted/Rovastar - Oozing Resistance.json\");\npresets[\"Rovastar + Loadus + Geiss - FractalDrop (Triple Mix)\"] = __webpack_require__(/*! ./presets/converted/Rovastar + Loadus + Geiss - FractalDrop (Triple Mix).json */ \"./presets/converted/Rovastar + Loadus + Geiss - FractalDrop (Triple Mix).json\");\npresets[\"sawtooth grin roam\"] = __webpack_require__(/*! ./presets/converted/sawtooth grin roam.json */ \"./presets/converted/sawtooth grin roam.json\");\npresets[\"ShadowHarlequin - LovelyShinySquares [ liquid starburst rmx ] - unchained + rovaster - luckless - martin - starfield sector\"] = __webpack_require__(/*! ./presets/converted/ShadowHarlequin - LovelyShinySquares [ liquid starburst rmx ] - unchained + rovaster - luckless - martin - starfield sector.json */ \"./presets/converted/ShadowHarlequin - LovelyShinySquares [ liquid starburst rmx ] - unchained + rovaster - luckless - martin - starfield sector.json\");\npresets[\"shifter - dark tides bdrv mix 2\"] = __webpack_require__(/*! ./presets/converted/shifter - dark tides bdrv mix 2.json */ \"./presets/converted/shifter - dark tides bdrv mix 2.json\");\npresets[\"shifter - escape (sigur ros)\"] = __webpack_require__(/*! ./presets/converted/shifter - escape (sigur ros).json */ \"./presets/converted/shifter - escape (sigur ros).json\");\npresets[\"shifter - liquid circuitry - conjugoth\"] = __webpack_require__(/*! ./presets/converted/shifter - liquid circuitry - conjugoth.json */ \"./presets/converted/shifter - liquid circuitry - conjugoth.json\");\npresets[\"suksma - ed geining hateops - squeakers\"] = __webpack_require__(/*! ./presets/converted/suksma - ed geining hateops - squeakers.json */ \"./presets/converted/suksma - ed geining hateops - squeakers.json\");\npresets[\"suksma - heretical crosscut playpen\"] = __webpack_require__(/*! ./presets/converted/suksma - heretical crosscut playpen.json */ \"./presets/converted/suksma - heretical crosscut playpen.json\");\npresets[\"suksma - Hexcollie - Julian Carnival - shimmy dumb grid\"] = __webpack_require__(/*! ./presets/converted/suksma - Hexcollie - Julian Carnival - shimmy dumb grid.json */ \"./presets/converted/suksma - Hexcollie - Julian Carnival - shimmy dumb grid.json\");\npresets[\"suksma - Rovastar - Sunflower Passion (Enlightment Mix)_Phat_edit + flexi und martin shaders - circumflex in character classes in regular expression\"] = __webpack_require__(/*! ./presets/converted/suksma - Rovastar - Sunflower Passion (Enlightment Mix)_Phat_edit + flexi und martin shaders - circumflex in character classes in regular expression.json */ \"./presets/converted/suksma - Rovastar - Sunflower Passion (Enlightment Mix)_Phat_edit + flexi und martin shaders - circumflex in character classes in regular expression.json\");\npresets[\"suksma - uninitialized variabowl (hydroponic chronic)\"] = __webpack_require__(/*! ./presets/converted/suksma - uninitialized variabowl (hydroponic chronic).json */ \"./presets/converted/suksma - uninitialized variabowl (hydroponic chronic).json\");\npresets[\"suksma - vector exp 1 - couldn′t not\"] = __webpack_require__(/*! ./presets/converted/suksma - vector exp 1 - couldn′t not.json */ \"./presets/converted/suksma - vector exp 1 - couldn′t not.json\");\npresets[\"TonyMilkdrop - Leonardo Da Vinci's Balloon [Flexi - merry-go-round + techstyle]\"] = __webpack_require__(/*! ./presets/converted/TonyMilkdrop - Leonardo Da Vinci's Balloon [Flexi - merry-go-round + techstyle].json */ \"./presets/converted/TonyMilkdrop - Leonardo Da Vinci's Balloon [Flexi - merry-go-round + techstyle].json\");\npresets[\"TonyMilkdrop - Magellan's Nebula [Flexi - you enter first + multiverse]\"] = __webpack_require__(/*! ./presets/converted/TonyMilkdrop - Magellan's Nebula [Flexi - you enter first + multiverse].json */ \"./presets/converted/TonyMilkdrop - Magellan's Nebula [Flexi - you enter first + multiverse].json\");\npresets[\"Unchained - Rewop\"] = __webpack_require__(/*! ./presets/converted/Unchained - Rewop.json */ \"./presets/converted/Unchained - Rewop.json\");\npresets[\"Unchained - Unified Drag 2\"] = __webpack_require__(/*! ./presets/converted/Unchained - Unified Drag 2.json */ \"./presets/converted/Unchained - Unified Drag 2.json\");\npresets[\"yin - 191 - Temporal singularities\"] = __webpack_require__(/*! ./presets/converted/yin - 191 - Temporal singularities.json */ \"./presets/converted/yin - 191 - Temporal singularities.json\");\npresets[\"yin - 393 - Artificial Inspiration (music driven - outward)\"] = __webpack_require__(/*! ./presets/converted/yin - 393 - Artificial Inspiration (music driven - outward).json */ \"./presets/converted/yin - 393 - Artificial Inspiration (music driven - outward).json\");\npresets[\"Zylot - Paint Spill (Music Reactive Paint Mix)\"] = __webpack_require__(/*! ./presets/converted/Zylot - Paint Spill (Music Reactive Paint Mix).json */ \"./presets/converted/Zylot - Paint Spill (Music Reactive Paint Mix).json\");\npresets[\"Zylot - Star Ornament\"] = __webpack_require__(/*! ./presets/converted/Zylot - Star Ornament.json */ \"./presets/converted/Zylot - Star Ornament.json\");\npresets[\"Zylot - True Visionary (Final Mix)\"] = __webpack_require__(/*! ./presets/converted/Zylot - True Visionary (Final Mix).json */ \"./presets/converted/Zylot - True Visionary (Final Mix).json\");\n/* eslint-enable max-len */\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (presets);\n\n/***/ }),\n\n/***/ \"./presets/converted/$$$ Royal - Mashup (197).json\":\n/*!*********************************************************!*\\\n  !*** ./presets/converted/$$$ Royal - Mashup (197).json ***!\n  \\*********************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":3,\\\"decay\\\":0.5,\\\"echo_zoom\\\":1,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":3,\\\"wrap\\\":0,\\\"darken_center\\\":1,\\\"solarize\\\":1,\\\"wave_a\\\":0.001,\\\"zoom\\\":0.97,\\\"rot\\\":-6.27999,\\\"warp\\\":0.00052,\\\"wave_r\\\":0,\\\"wave_g\\\":0,\\\"wave_b\\\":0,\\\"ob_r\\\":1,\\\"ob_g\\\":1,\\\"ob_b\\\":1,\\\"mv_r\\\":0.8,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"textured\\\":1,\\\"x\\\":0.75,\\\"y\\\":0.75,\\\"rad\\\":0.7417,\\\"tex_zoom\\\":0.22746,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":0.1,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"tex_saw = 0.4;\\\",\\\"frame_eqs_eel\\\":\\\"ang = q1*0.2;\\\\n\\\\ntex_capture = above(q3,1);\\\\ntex_zoom = 0.6;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"textured\\\":1,\\\"x\\\":0.25,\\\"y\\\":0.75,\\\"rad\\\":4.44708,\\\"tex_zoom\\\":0.22746,\\\"r\\\":0,\\\"a\\\":0.1,\\\"g2\\\":0,\\\"a2\\\":0.2,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"tex_saw = 0.4;\\\",\\\"frame_eqs_eel\\\":\\\"ang = q1*0.2;\\\\n//x = 0.5 + 0.2*sin(q2);\\\\n//y = 0.5 + (0.3*sin(q2));\\\\n\\\\ntex_capture = above(q3,1);\\\\ntex_zoom = 0.6;\\\"},{\\\"baseVals\\\":{\\\"textured\\\":1,\\\"rad\\\":6.621,\\\"tex_zoom\\\":0.22746,\\\"g\\\":1,\\\"b\\\":1,\\\"a\\\":0.2,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"tex_saw = 0.4;\\\",\\\"frame_eqs_eel\\\":\\\"ang = q1*0.2;\\\\n//x = 0.5 + 0.2*sin(q2);\\\\n//y = 0.5 + (0.3*sin(q2));\\\\n\\\\ntex_capture = above(q3,2);\\\\ntex_zoom = 0.6;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"thick\\\":1,\\\"smoothing\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"//q1 = state;\\\\n//q2 = basstime;\\\\n\\\\nq1 = 0;\\\\nspeed = bass_att*0.8;\\\\nv = sample*1000000 + value2*bass*0.1;\\\\n\\\\n//state 0 elipse\\\\nxs = xs + sin(v)*speed*atan(v*1.51);\\\\nys = ys + sin(v)*speed*atan((v*10));\\\\n\\\\nx = 0.5 + 0.5*sin(xs*0.1)*cos(time*0.2 + xs);\\\\ny = 0.5 + 0.5*sin(ys*0.12)*cos(time*0.1 + xs);\\\\n\\\\nx = x*0.8 + 0.1;\\\\ny = y*0.8 + 0.1;\\\\n\\\\nr = 0.5 + 0.5*sin(time*1.22) + 0.1;\\\\ng = 0.4 + 0.4*sin(time*1.307 + 2*y);\\\\nb = 0.4 + 0.4*sin(time*1.959 + x*2);\\\\n\\\\nxs = if(above(xs,1000),0 ,xs);\\\\nys = if(above(ys,1000),0 ,ys);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"thick\\\":1,\\\"smoothing\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"//q1 = state;\\\\n//q2 = basstime;\\\\n\\\\nq1 = 0;\\\\nspeed = bass_att*0.8;\\\\nv = sample*1000000 + value2*bass*0.1;\\\\n\\\\n//state 0 elipse\\\\nxs = xs + sin(v)*speed*atan(v*1.51);\\\\nys = ys + sin(v)*speed*atan((v*10));\\\\n\\\\nx = 0.5 + 0.5*sin(xs*0.1)*cos(time*0.2 + xs);\\\\ny = 0.5 + 0.5*sin(ys*0.14)*cos(time*0.1 + xs);\\\\n\\\\nx = x*0.8 + 0.1;\\\\ny = y*0.8 + 0.1;\\\\nx = x*0.6 + 0.2;\\\\ny = y*0.6 + 0.2;\\\\n\\\\nr = 0.5 + 0.5*sin(time*1.322) + 0.1;\\\\ng = 0.4 + 0.4*sin(time*1.5407 + 2*y);\\\\nb = 0.4 + 0.4*sin(time*1.759 + x*2);\\\\n\\\\nxs = if(above(xs,1000),0 ,xs);\\\\nys = if(above(ys,1000),0 ,ys);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"thick\\\":1,\\\"smoothing\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"//q1 = state;\\\\n//q2 = basstime;\\\\n\\\\nq1 = 0;\\\\nspeed = bass_att*0.8;\\\\nv = sample*1000000 + value2*bass*0.1;\\\\n\\\\n//state 0 elipse\\\\nxs = xs + sin(v)*speed*atan(v*1.51);\\\\nys = ys + sin(v)*speed*atan((v*10));\\\\n\\\\nx = 0.5 + 0.5*sin(xs*0.1)*cos(time*0.2 + xs);\\\\ny = 0.5 + 0.5*sin(ys*0.14)*cos(time*0.1 + xs);\\\\n\\\\nx = x*0.8 + 0.1;\\\\ny = y*0.8 + 0.1;\\\\nx = x*0.25 + 0.375;\\\\ny = y*0.25 + 0.375;\\\\n\\\\nr = 0.5 + 0.5*sin(time*1.622) + 0.1;\\\\ng = 0.4 + 0.4*sin(time*1.2407 + 2*y);\\\\nb = 0.4 + 0.4*sin(time*1.359 + x*2);\\\\n\\\\nxs = if(above(xs,1000),0 ,xs);\\\\nys = if(above(ys,1000),0 ,ys);\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"additive\\\":1,\\\"smoothing\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"//q1 = state;\\\\n//q2 = basstime;\\\\n\\\\nq1 = 0;\\\\nspeed = bass_att*0.8;\\\\nv = sample*10000 + value2*bass*0.1;\\\\n\\\\n//state 0 elipse\\\\nxs = xs + (equal(0,q1))*sin(v*1)*speed*atan(v*1.51);\\\\nys = ys + (equal(0,q1))*sin(v*1)*speed;\\\\n\\\\n\\\\nx = 0.5 + 0.5*sin(xs*0.1)*cos(time*2 + xs);\\\\ny = 0.5 + 0.5*sin(ys*0.1)*cos(time*2.1 + xs);\\\\n\\\\nx = -x*0.6 + 1;\\\\ny = y*0.9 + 0.05 + bass*0.08;\\\\ny = y*0.8;\\\\n\\\\nr = 0.5 + 0.5*sin(time*1.789) + 0.1;\\\\ng = 0.4 + 0.4*sin(time*1.478);\\\\nb = 0.4 + 0.4*sin(time*1.125);\\\\n\\\\nxs = if(above(xs,1000),0 ,xs);\\\\nys = if(above(ys,1000),0 ,ys);\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"basstime = basstime + bass*0.03;\\\\nq1 = basstime*4;\\\\n\\\\n//start in most active range\\\\nbasstime = if(below(basstime,1000),1000,basstime);\\\\n//basstime = if(above(basstime,495),450,basstime);\\\\n\\\\nbasstime = basstime + bass_att*0.03;\\\\nvol = pow(bass+mid+treb,2);\\\\nbasssum = vol;\\\\n\\\\nstickybit = time%2;\\\\n\\\\n//avg vol\\\\n//buffer 1\\\\nvolAvg = volAvg + vol*equal(stickybit,1);\\\\n//number of samples 1 or framerate\\\\nsample1 = sample1 + equal(stickybit,1);\\\\n//buffer 2\\\\nvolAvg2 = volAvg2 + vol*equal(stickybit,0);\\\\n//number of samples 2\\\\nsample2 = sample2 + equal(stickybit,0);\\\\n\\\\n//transision\\\\nedge = bnot(equal(bit2,stickybit));\\\\n\\\\nvolAvg = volAvg - volAvg*edge*stickybit;\\\\nvolAvg2 = volAvg2 - volAvg2*edge*equal(stickybit,0);\\\\n\\\\nsample1 = sample1  - sample1*edge*stickybit;\\\\nsample2 = sample2  - sample2*edge*equal(stickybit,0);\\\\n\\\\n//test vol against avg buffer lvl\\\\ndiff = if(equal(stickybit,1), (basssum/(volAvg2/sample2)) , 0);\\\\ndiff = if(equal(stickybit,0), (basssum/(volAvg/sample1)), diff);\\\\n\\\\nq3 = diff;\\\\n\\\\nbit2 = time%2;\\\\n\\\\ndifftime = difftime + diff*0.03;\\\\nq2 = difftime;\\\\n\\\\n//fix a strange error\\\\ndifftime = if(above(difftime,2000),0, difftime);\\\\n\\\\nmonitor = abs(cos(time))*3.14;\\\\n\\\\n\\\\nmv_a = above(diff,10);\\\",\\\"pixel_eqs_eel\\\":\\\"zoom = 1 + 0.05*q3*rad;\\\\n\\\\ndecay_r = 0.2*rad*sin(q2*0.35) + 0.85 + 0.1*sin(q2);\\\\ndecay_g = 0.2*rad*sin(q2*0.5) + 0.85 + 0.1*sin(0.7*q2);\\\\ndecay_b = 0.2*rad*sin(q2*0.4) + 0.85 + 0.1*sin(0.8*q2);\\\\n\\\\nrot = 0;\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec3 ret_1;\\\\n  vec2 tmpvar_2;\\\\n  tmpvar_2 = (vec2(1.0, 0.0) * texsize.z);\\\\n  vec2 tmpvar_3;\\\\n  tmpvar_3 = (vec2(0.0, 1.0) * texsize.z);\\\\n  ret_1 = (((\\\\n    (texture (sampler_main, (uv + tmpvar_2)).xyz + texture (sampler_main, (uv + tmpvar_2)).xyz)\\\\n   * 0.5) + (\\\\n    (texture (sampler_main, (uv + tmpvar_3)).xyz + texture (sampler_main, (uv + tmpvar_3)).xyz)\\\\n   * 0.5)) - texture (sampler_main, ((\\\\n    (uv - 0.5)\\\\n   * 0.9) + 0.5)).xyz);\\\\n  ret_1 = (ret_1 - 0.4);\\\\n  vec4 tmpvar_4;\\\\n  tmpvar_4.w = 1.0;\\\\n  tmpvar_4.xyz = ret_1;\\\\n  ret = tmpvar_4.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec3 ret_1;\\\\n  vec2 tmpvar_2;\\\\n  tmpvar_2 = ((0.5 - uv) + 0.5);\\\\n  ret_1 = (mix (texture (sampler_main, uv).xyz, texture (sampler_main, tmpvar_2).xyz, vec3(0.5, 0.5, 0.5)) * 2.0);\\\\n  ret_1 = (((\\\\n    ((texture (sampler_blur3, uv).xyz * scale3) + bias3)\\\\n   * 2.0) + (\\\\n    ((texture (sampler_blur3, tmpvar_2).xyz * scale3) + bias3)\\\\n   * 2.0)) + ret_1);\\\\n  vec4 tmpvar_3;\\\\n  tmpvar_3.w = 1.0;\\\\n  tmpvar_3.xyz = ret_1;\\\\n  ret = tmpvar_3.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/$$$ Royal - Mashup (220).json\":\n/*!*********************************************************!*\\\n  !*** ./presets/converted/$$$ Royal - Mashup (220).json ***!\n  \\*********************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":3,\\\"gammaadj\\\":1.07,\\\"decay\\\":0.95,\\\"echo_zoom\\\":1,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":1,\\\"wave_mode\\\":7,\\\"additivewave\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"brighten\\\":1,\\\"darken\\\":1,\\\"invert\\\":1,\\\"wave_a\\\":4.1,\\\"wave_scale\\\":1.286,\\\"wave_smoothing\\\":0.63,\\\"modwavealphastart\\\":0.71,\\\"modwavealphaend\\\":1.3,\\\"warpscale\\\":1.331,\\\"zoom\\\":0.99951,\\\"warp\\\":0.01,\\\"wave_r\\\":0.65,\\\"wave_g\\\":0.65,\\\"wave_b\\\":0.65,\\\"ob_size\\\":0.5,\\\"ob_r\\\":0.01,\\\"ib_size\\\":0.26,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"spectrum\\\":1,\\\"thick\\\":1},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"sp = sample*6.28*8*8*4;\\\\nvol = (bass_att + mid_att + treb_att)*0.33;\\\\nvol = 0.2 + 0.5*(value1 + value2);\\\\nvol = .2;\\\\n\\\\nmod = if(below(mid_att,1.8),mid_att+.2,2);\\\\n\\\\nox = 0.5*sin(sp)*sin(sample*3.14)*vol;\\\\noy = (sample - 0)*mod;\\\\noz = 0.5*cos(sp)*sin(sample*3.14)*vol;\\\\n\\\\nxang = time*0.672;\\\\naxang = 0;\\\\nyang = time*-1.351;\\\\nayang = 0;\\\\nzang = time*-0.401;\\\\nazang = 0;\\\\nfov = 0.6 + 0.2*sin(time);\\\\nfov = .5;\\\\n\\\\nmx = ox*cos(zang) - oy*sin(zang);\\\\nmy = ox*sin(zang) + oy*cos(zang);\\\\nox = mx;\\\\noy = my;\\\\nmx = ox*cos(yang) + oz*sin(yang);\\\\nmz = - ox*sin(yang) + oz*cos(yang);\\\\nox = mx;\\\\noz = mz;\\\\nmy = oy*cos(xang) - oz*sin(xang);\\\\nmz = oy*sin(xang) + oz*cos(xang);\\\\noy = my;\\\\noz = mz;\\\\n\\\\noz = abs(oz) - 2;\\\\nx = ox*fov/oz + 0.5;\\\\nx = (x-.5)*0.75 + 0.5;\\\\ny = oy*fov/oz + 0.5;\\\\n\\\\nr = 1 + sin(sp);\\\\nb = 0.5 + 0.5*sin(sample*1.57);\\\\ng = 0.5 + 0.5*cos(sample*1.57);\\\\na = 0.5 + (oz + 2)*0.25;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"spectrum\\\":1,\\\"thick\\\":1},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"sp = sample*6.28*8*8*4;\\\\nvol = (bass_att + mid_att + treb_att)*0.33;\\\\nvol = 0.2 + 0.5*(value1 + value2);\\\\nvol = .2;\\\\n\\\\nmod = if(below(bass_att,1.8),bass_att+.2,2);\\\\n\\\\nox = 0.5*sin(sp)*sin(sample*3.14)*vol;\\\\noy = (sample - 0)*mod;\\\\noz = 0.5*cos(sp)*sin(sample*3.14)*vol;\\\\n\\\\nxang = time*-0.321;\\\\naxang = 0;\\\\nyang = time*1.531;\\\\nayang = 0;\\\\nzang = time*-0.101;\\\\nazang = 0;\\\\nfov = 0.6 + 0.2*sin(time);\\\\nfov = .5;\\\\n\\\\nmx = ox*cos(zang) - oy*sin(zang);\\\\nmy = ox*sin(zang) + oy*cos(zang);\\\\nox = mx;\\\\noy = my;\\\\nmx = ox*cos(yang) + oz*sin(yang);\\\\nmz = - ox*sin(yang) + oz*cos(yang);\\\\nox = mx;\\\\noz = mz;\\\\nmy = oy*cos(xang) - oz*sin(xang);\\\\nmz = oy*sin(xang) + oz*cos(xang);\\\\noy = my;\\\\noz = mz;\\\\n\\\\noz = abs(oz) - 2;\\\\nx = ox*fov/oz + 0.5;\\\\nx = (x-.5)*0.75 + 0.5;\\\\ny = oy*fov/oz + 0.5;\\\\n\\\\ng = 1 + sin(sp);\\\\nr = 0.5 + 0.5*sin(sample*1.57);\\\\nb = 0.5 + 0.5*cos(sample*1.57);\\\\na = 0.5 + (oz + 2)*0.25;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"spectrum\\\":1,\\\"thick\\\":1},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"sp = sample*6.28*8*8*4;\\\\nvol = (bass_att + mid_att + treb_att)*0.33;\\\\nvol = 0.2 + 0.5*(value1 + value2);\\\\nvol = .2;\\\\n\\\\nmod = if(below(treb_att,1.8),treb_att+.2,2);\\\\n\\\\nox = 0.5*sin(sp)*sin(sample*3.14)*vol;\\\\noy = (sample - 0)*mod;\\\\noz = 0.5*cos(sp)*sin(sample*3.14)*vol;\\\\n\\\\nxang = time*0.221;\\\\naxang = 0;\\\\nyang = time*-0.411;\\\\nayang = 0;\\\\nzang = time*1.201;\\\\nazang = 0;\\\\nfov = 0.6 + 0.2*sin(time);\\\\nfov = .5;\\\\n\\\\nmx = ox*cos(zang) - oy*sin(zang);\\\\nmy = ox*sin(zang) + oy*cos(zang);\\\\nox = mx;\\\\noy = my;\\\\nmx = ox*cos(yang) + oz*sin(yang);\\\\nmz = - ox*sin(yang) + oz*cos(yang);\\\\nox = mx;\\\\noz = mz;\\\\nmy = oy*cos(xang) - oz*sin(xang);\\\\nmz = oy*sin(xang) + oz*cos(xang);\\\\noy = my;\\\\noz = mz;\\\\n\\\\noz = abs(oz) - 2;\\\\nx = ox*fov/oz + 0.5;\\\\nx = (x-.5)*0.75 + 0.5;\\\\ny = oy*fov/oz + 0.5;\\\\n\\\\nb = 1+sin(sp);\\\\ng = 0.5 + 0.5*sin(sample*1.57);\\\\nr = 0.5 + 0.5*cos(sample*1.57);\\\\na = 0.5 + (oz + 2)*0.25;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"wave_a = 0;\\\",\\\"pixel_eqs_eel\\\":\\\"it = 0.3*sin(time*0.2);\\\\nradm = rad*0.5;\\\\nrot = 0.02*sin((radm+it)*20);\\\\nmod = sin(ang*5);\\\\nmod = mod*mod*mod*mod*mod;\\\\nzoom = 1 + abs(0.01*mod);\\\\n\\\\nzoom *= min(1.05,max(1,max(bass,treb)));\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec3 xfer_1;\\\\n  vec3 ret_2;\\\\n  vec4 tmpvar_3;\\\\n  vec2 tmpvar_4;\\\\n  tmpvar_4 = (uv - 0.5);\\\\n  tmpvar_3 = texture (sampler_main, (tmpvar_4 + 0.5));\\\\n  ret_2 = (tmpvar_3.xyz / ((tmpvar_3.x + tmpvar_3.y) + tmpvar_3.z));\\\\n  ret_2 = texture (sampler_main, ((tmpvar_4 * dot (ret_2, vec3(1.0, 0.975, 0.95))) + 0.5)).xyz;\\\\n  vec3 tmpvar_5;\\\\n  tmpvar_5 = clamp (((ret_2 - 0.05) * 99.0), 0.0, 1.0);\\\\n  xfer_1.x = tmpvar_5.x;\\\\n  xfer_1.yz = (tmpvar_5.yz * clamp ((\\\\n    (0.1 - ret_2.xy)\\\\n   * 99.0), 0.0, 1.0));\\\\n  ret_2 = (ret_2 + (vec3(-0.014, 0.014, 0.0) * tmpvar_5.xxx));\\\\n  ret_2 = (ret_2 + (vec3(0.0, -0.08, 0.08) * xfer_1.yyy));\\\\n  ret_2 = (ret_2 + (vec3(0.0, 0.0, -0.02) * xfer_1.zzz));\\\\n  ret_2 = (ret_2 + (vec3(5.0, 15.0, 40.0) * (\\\\n    (texture (sampler_noise_lq, (((uv_orig * texsize.xy) * texsize_noise_lq.zw) + rand_frame.xy)).xyz - 0.5)\\\\n   / 256.0)));\\\\n  vec4 tmpvar_6;\\\\n  tmpvar_6.w = 1.0;\\\\n  tmpvar_6.xyz = ret_2;\\\\n  ret = tmpvar_6.xyz;\\\\n }\\\",\\\"comp\\\":\\\"\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/$$$ Royal - Mashup (431).json\":\n/*!*********************************************************!*\\\n  !*** ./presets/converted/$$$ Royal - Mashup (431).json ***!\n  \\*********************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":2,\\\"gammaadj\\\":1,\\\"wave_mode\\\":7,\\\"additivewave\\\":1,\\\"wave_thick\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":0.958,\\\"wave_smoothing\\\":0.45,\\\"modwavealphastart\\\":0,\\\"modwavealphaend\\\":1.32,\\\"warpanimspeed\\\":30.965,\\\"warpscale\\\":2.572,\\\"zoom\\\":1.00901,\\\"warp\\\":0.00054,\\\"wave_r\\\":0,\\\"wave_g\\\":0,\\\"wave_b\\\":0,\\\"mv_x\\\":25.6,\\\"mv_y\\\":9.6,\\\"mv_l\\\":0,\\\"mv_r\\\":0.5,\\\"mv_g\\\":0.5,\\\"mv_b\\\":0.5,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"textured\\\":1,\\\"x\\\":0.09,\\\"y\\\":0.9,\\\"rad\\\":0.22437,\\\"tex_zoom\\\":1.76002,\\\"r2\\\":1,\\\"g2\\\":0,\\\"a2\\\":0.6,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"additive\\\":1,\\\"x\\\":0.26,\\\"y\\\":0.2,\\\"rad\\\":0.39317,\\\"tex_zoom\\\":6.19589,\\\"r\\\":0,\\\"g\\\":0.55,\\\"b\\\":0.5,\\\"g2\\\":0.4,\\\"b2\\\":0.4,\\\"a2\\\":0.07,\\\"border_r\\\":0.3,\\\"border_g\\\":0.7,\\\"border_b\\\":0.8,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":44,\\\"additive\\\":1,\\\"x\\\":0.503,\\\"rad\\\":0.03886,\\\"tex_zoom\\\":0.60986,\\\"g\\\":0.1,\\\"a\\\":0.9,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"rad\\\":0.01,\\\"tex_zoom\\\":0.49981,\\\"r\\\":0,\\\"g2\\\":0,\\\"border_r\\\":0.2,\\\"border_g\\\":0.7,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"samples\\\":282,\\\"sep\\\":20,\\\"usedots\\\":1,\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":3.91581,\\\"smoothing\\\":0.1,\\\"r\\\":0.2,\\\"g\\\":0.3,\\\"a\\\":0.6,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"usedots\\\":1,\\\"thick\\\":1,\\\"scaling\\\":0.89152,\\\"smoothing\\\":0.82,\\\"a\\\":0.1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"scaling\\\":0.89152,\\\"smoothing\\\":0.82,\\\"r\\\":0,\\\"g\\\":0.2,\\\"b\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"spectrum\\\":1,\\\"usedots\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"wave_r = 0.85 + 0.25*sin(0.437*time+1);\\\\nwave_g = 0.85 + 0.25*sin(0.544*time+2);\\\\nwave_b = 0.85 + 0.25*sin(0.751*time+3);\\\\nrot = rot + 0.010*( 0.60*sin(0.381*time) + 0.40*sin(0.579*time) );\\\\ncx = cx + 0.210*( 0.60*sin(0.374*time) + 0.40*sin(0.294*time) );\\\\ncy = cy + 0.210*( 0.60*sin(0.393*time) + 0.40*sin(0.223*time) );\\\\ndx = dx + 0.003*( 0.60*sin(0.234*time) + 0.40*sin(0.277*time) );\\\\ndy = dy + 0.003*( 0.60*sin(0.284*time) + 0.40*sin(0.247*time) );\\\\ndecay = decay - 0.01*equal(frame%6,0);\\\\ndx = dx + dx_residual;\\\\ndy = dy + dy_residual;\\\\nbass_thresh = above(bass_att,bass_thresh)*2 + (1-above(bass_att,bass_thresh))*((bass_thresh-1.3)*0.96+1.3);\\\\ndx_residual = equal(bass_thresh,2.13)*0.016*sin(time*7) + (1-equal(bass_thresh,2.13))*dx_residual;\\\\ndy_residual = equal(bass_thresh,2.13)*0.012*sin(time*9) + (1-equal(bass_thresh,2.13))*dy_residual;\\\\nwave_x = wave_x - dx_residual*7;\\\\nwave_y = wave_y - dy_residual*7;\\\\nwave_mystery = time*0.03;\\\\n\\\\n//zoom = zoom + 0.005*( 0.60*sin(0.1934*time+3) + 0.40*sin(0.307*time+9) );\\\\n//zoom = zoom + max(0,bass_att-1.1)*0.2;\\\\n//warp = warp + max(0,treb_att-1.1)*1.0;\\\\n\\\\n// this is a great way to respond to beats:\\\\n// once you get one, let it decay at a constant rate!!\\\\nrg = max(rg*0.77, 0.02 + 0.5*min(2,max(0,mid_att-1)*1.3));\\\\nq9 = rg;\\\\n\\\\nzoom = zoom + q9*0.1;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec3 ret_1;\\\\n  ret_1 = texture (sampler_main, uv).xyz;\\\\n  ret_1 = (ret_1 + ((ret_1 - \\\\n    ((((\\\\n      (texture (sampler_blur1, uv).xyz * scale1)\\\\n     + bias1) * 0.3) + ((\\\\n      (texture (sampler_blur2, uv).xyz * scale2)\\\\n     + bias2) * 0.4)) + (((texture (sampler_blur3, uv).xyz * scale3) + bias3) * 0.3))\\\\n  ) * 0.3));\\\\n  ret_1 = (ret_1 * 0.9);\\\\n  ret_1 = (ret_1 + ((\\\\n    ((texture (sampler_noise_lq, ((\\\\n      (uv_orig * texsize.xy)\\\\n     * \\\\n      (texsize_noise_lq.zw * 0.4)\\\\n    ) + rand_frame.xy)).xyz - 0.5) / 256.0)\\\\n   * 122.0) * (\\\\n    (clamp ((treb_att - 1.0), 0.0, 1.0) * 0.4)\\\\n   + 0.3)));\\\\n  ret_1 = mix (ret_1, vec3(dot (ret_1, vec3(0.32, 0.49, 0.29))), vec3(0.2, 0.2, 0.2));\\\\n  vec4 tmpvar_2;\\\\n  tmpvar_2.w = 1.0;\\\\n  tmpvar_2.xyz = ret_1;\\\\n  ret = tmpvar_2.xyz;\\\\n }\\\",\\\"comp\\\":\\\"vec2 xlat_mutabledz;\\\\nvec3 xlat_mutableret1;\\\\nvec2 xlat_mutableuv3;\\\\n shader_body { \\\\n  vec2 tmpvar_1;\\\\n  tmpvar_1.y = 0.0;\\\\n  tmpvar_1.x = texsize.z;\\\\n  vec2 tmpvar_2;\\\\n  tmpvar_2.x = 0.0;\\\\n  tmpvar_2.y = texsize.w;\\\\n  vec2 uv_3;\\\\n  float inten_4;\\\\n  float dist_5;\\\\n  vec2 uv1_6;\\\\n  vec3 ret_7;\\\\n  vec2 tmpvar_8;\\\\n  tmpvar_8 = ((uv - 0.5) * aspect.xy);\\\\n  float tmpvar_9;\\\\n  tmpvar_9 = (time / 18.0);\\\\n  dist_5 = (1.0 - fract((0.25 + tmpvar_9)));\\\\n  inten_4 = ((sqrt(dist_5) * (1.0 - dist_5)) * 4.0);\\\\n  uv_3 = (tmpvar_8 * aspect.yx);\\\\n  xlat_mutableuv3 = (vec2(0.51, 0.55) + (uv_3 * dist_5));\\\\n  xlat_mutabledz.x = (inten_4 * ((2.0 * \\\\n    dot (texture (sampler_main, (xlat_mutableuv3 + tmpvar_1)).xyz, vec3(0.32, 0.49, 0.29))\\\\n  ) - (2.0 * \\\\n    dot (texture (sampler_main, (xlat_mutableuv3 - tmpvar_1)).xyz, vec3(0.32, 0.49, 0.29))\\\\n  )));\\\\n  xlat_mutabledz.y = (inten_4 * ((2.0 * \\\\n    dot (texture (sampler_main, (xlat_mutableuv3 + tmpvar_2)).xyz, vec3(0.32, 0.49, 0.29))\\\\n  ) - (2.0 * \\\\n    dot (texture (sampler_main, (xlat_mutableuv3 - tmpvar_2)).xyz, vec3(0.32, 0.49, 0.29))\\\\n  )));\\\\n  xlat_mutableret1 = max (vec3(0.0, 0.0, 0.0), (texture (sampler_main, xlat_mutableuv3).xyz * inten_4));\\\\n  dist_5 = (1.0 - fract((0.5 + tmpvar_9)));\\\\n  inten_4 = ((sqrt(dist_5) * (1.0 - dist_5)) * 4.0);\\\\n  uv_3 = (tmpvar_8 * aspect.yx);\\\\n  xlat_mutableuv3 = (vec2(0.49, 0.55) + (uv_3 * dist_5));\\\\n  xlat_mutabledz.x = (xlat_mutabledz.x + (inten_4 * (\\\\n    (2.0 * dot (texture (sampler_main, (xlat_mutableuv3 + tmpvar_1)).xyz, vec3(0.32, 0.49, 0.29)))\\\\n   - \\\\n    (2.0 * dot (texture (sampler_main, (xlat_mutableuv3 - tmpvar_1)).xyz, vec3(0.32, 0.49, 0.29)))\\\\n  )));\\\\n  xlat_mutabledz.y = (xlat_mutabledz.y + (inten_4 * (\\\\n    (2.0 * dot (texture (sampler_main, (xlat_mutableuv3 + tmpvar_2)).xyz, vec3(0.32, 0.49, 0.29)))\\\\n   - \\\\n    (2.0 * dot (texture (sampler_main, (xlat_mutableuv3 - tmpvar_2)).xyz, vec3(0.32, 0.49, 0.29)))\\\\n  )));\\\\n  xlat_mutableret1 = max (xlat_mutableret1, (texture (sampler_main, xlat_mutableuv3).xyz * inten_4));\\\\n  dist_5 = (1.0 - fract((0.75 + tmpvar_9)));\\\\n  inten_4 = ((sqrt(dist_5) * (1.0 - dist_5)) * 4.0);\\\\n  uv_3 = (tmpvar_8 * aspect.yx);\\\\n  xlat_mutableuv3 = (vec2(0.51, 0.55) + (uv_3 * dist_5));\\\\n  xlat_mutabledz.x = (xlat_mutabledz.x + (inten_4 * (\\\\n    (2.0 * dot (texture (sampler_main, (xlat_mutableuv3 + tmpvar_1)).xyz, vec3(0.32, 0.49, 0.29)))\\\\n   - \\\\n    (2.0 * dot (texture (sampler_main, (xlat_mutableuv3 - tmpvar_1)).xyz, vec3(0.32, 0.49, 0.29)))\\\\n  )));\\\\n  xlat_mutabledz.y = (xlat_mutabledz.y + (inten_4 * (\\\\n    (2.0 * dot (texture (sampler_main, (xlat_mutableuv3 + tmpvar_2)).xyz, vec3(0.32, 0.49, 0.29)))\\\\n   - \\\\n    (2.0 * dot (texture (sampler_main, (xlat_mutableuv3 - tmpvar_2)).xyz, vec3(0.32, 0.49, 0.29)))\\\\n  )));\\\\n  xlat_mutableret1 = max (xlat_mutableret1, (texture (sampler_main, xlat_mutableuv3).xyz * inten_4));\\\\n  dist_5 = (1.0 - fract((1.0 + tmpvar_9)));\\\\n  inten_4 = ((sqrt(dist_5) * (1.0 - dist_5)) * 4.0);\\\\n  uv_3 = (tmpvar_8 * aspect.yx);\\\\n  xlat_mutableuv3 = (vec2(0.49, 0.55) + (uv_3 * dist_5));\\\\n  xlat_mutabledz.x = (xlat_mutabledz.x + (inten_4 * (\\\\n    (2.0 * dot (texture (sampler_main, (xlat_mutableuv3 + tmpvar_1)).xyz, vec3(0.32, 0.49, 0.29)))\\\\n   - \\\\n    (2.0 * dot (texture (sampler_main, (xlat_mutableuv3 - tmpvar_1)).xyz, vec3(0.32, 0.49, 0.29)))\\\\n  )));\\\\n  xlat_mutabledz.y = (xlat_mutabledz.y + (inten_4 * (\\\\n    (2.0 * dot (texture (sampler_main, (xlat_mutableuv3 + tmpvar_2)).xyz, vec3(0.32, 0.49, 0.29)))\\\\n   - \\\\n    (2.0 * dot (texture (sampler_main, (xlat_mutableuv3 - tmpvar_2)).xyz, vec3(0.32, 0.49, 0.29)))\\\\n  )));\\\\n  xlat_mutableret1 = max (xlat_mutableret1, (texture (sampler_main, xlat_mutableuv3).xyz * inten_4));\\\\n  xlat_mutabledz = (xlat_mutabledz * (0.5 + rand_preset.z));\\\\n  vec2 tmpvar_10;\\\\n  tmpvar_10 = (2.0 * (rand_preset.xy - 0.5));\\\\n  uv1_6 = (4.0 * tmpvar_8);\\\\n  vec2 tmpvar_11;\\\\n  tmpvar_11 = sin(((uv1_6 + xlat_mutabledz) + tmpvar_10));\\\\n  vec2 tmpvar_12;\\\\n  tmpvar_12 = sin(((uv1_6 + \\\\n    (xlat_mutabledz * 1.4)\\\\n  ) + tmpvar_10));\\\\n  vec2 tmpvar_13;\\\\n  tmpvar_13 = sin(((uv1_6 + \\\\n    (xlat_mutabledz * 1.8)\\\\n  ) + tmpvar_10));\\\\n  vec3 tmpvar_14;\\\\n  tmpvar_14.x = inversesqrt(dot (tmpvar_11, tmpvar_11));\\\\n  tmpvar_14.y = inversesqrt(dot (tmpvar_12, tmpvar_12));\\\\n  tmpvar_14.z = inversesqrt(dot (tmpvar_13, tmpvar_13));\\\\n  ret_7 = (((\\\\n    (tmpvar_14 * ((vec3(0.01, 0.01, 0.01) * (1.0 + \\\\n      (rand_preset.xyz / 2.0)\\\\n    )) * (0.5 + rand_preset.y)))\\\\n   * \\\\n    ((((rand_preset.x - 0.5) * 4.0) * xlat_mutableret1) + (8.0 * (1.0 + rand_preset)).xyz)\\\\n  ) - (xlat_mutableret1.x * 0.5)) + ((xlat_mutableret1.y + xlat_mutableret1.z) / 3.0));\\\\n  ret_7 = (ret_7 - ((slow_roam_sin.wzy * roam_cos.zxy) * 0.4));\\\\n  ret_7 = (ret_7 * (1.0 + ret_7));\\\\n  vec4 tmpvar_15;\\\\n  tmpvar_15.w = 1.0;\\\\n  tmpvar_15.xyz = ret_7;\\\\n  ret = tmpvar_15.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/AdamFx 2 Geiss, Zylot and Flexi - Reaction Diffusion 3 (Overload Mix 2) EATIT4 hypno.json\":\n/*!*********************************************************************************************************************!*\\\n  !*** ./presets/converted/AdamFx 2 Geiss, Zylot and Flexi - Reaction Diffusion 3 (Overload Mix 2) EATIT4 hypno.json ***!\n  \\*********************************************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":1,\\\"gammaadj\\\":1.9,\\\"echo_zoom\\\":1.169,\\\"wave_a\\\":0.001,\\\"warpanimspeed\\\":30.965,\\\"warpscale\\\":2.572,\\\"zoomexp\\\":1.94773,\\\"zoom\\\":1.00901,\\\"warp\\\":0.00054,\\\"wave_r\\\":0,\\\"wave_g\\\":0,\\\"wave_b\\\":0,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"textured\\\":1,\\\"x\\\":0.75,\\\"y\\\":0.75,\\\"rad\\\":0.7418,\\\"tex_zoom\\\":0.22746,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"tex_saw = 0.4;\\\",\\\"frame_eqs_eel\\\":\\\"ang = q1*0.2;\\\\n\\\\ntex_capture = above(q3,2);\\\\ntex_zoom = 0.6;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"additive\\\":1,\\\"rad\\\":0.0444,\\\"tex_zoom\\\":0.22746,\\\"r\\\":0,\\\"g\\\":0.3,\\\"g2\\\":0,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"tex_saw = 0.4;\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"rad\\\":0.22167,\\\"border_a\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"border_r = 0.5 + 0.5*sin(q1*10);\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"a = above(q3,2);\\\\na2 = above(q3,2)*0.8;\\\\n\\\\nxx = if(above(q3,6),xx,int(rand(100))*0.01);\\\\nyy = if(above(q3,6),yy,int(rand(100))*0.01);\\\\nradi = if(above(q3,5),radi,int(rand(100))*0.01);\\\\n\\\\nrad = radi;\\\\n\\\\nx = xx;\\\\ny = yy;\\\\n\\\\n\\\\nr = 0.5 + 0.5*sin(q1*1.22) + 0.1;\\\\ng = 0.4 + 0.4*sin(q1*1.307);\\\\nb = 0.4 + 0.4*sin(q1*1.959);\\\\n\\\\n\\\\nr2 = 0.5 + 0.5*sin(q1*1.622) + 0.1;\\\\ng2 = 0.4 + 0.4*sin(q1*1.507);\\\\nb2 = 0.4 + 0.4*sin(q1*1.6559);\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"a\\\":0.5},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"//init\\\\nzs = if(below(zs,1),9,zs);\\\\n\\\\nzs = if(above(zs, 1100),1, zs);\\\\n\\\\nspeed = bass*0.002;\\\\n\\\\n//sum\\\\nzs = zs + tan(q1*0.015)*speed;\\\\n\\\\nzd = zd + 2;\\\\n\\\\n\\\\n\\\\n//project\\\\nx = 0.5 + 0.1*cos(q1*zs);\\\\ny = 0.5 + 0.1*sin(q1*zs);\\\\n\\\\nr = 0.5 + 0.5*sin(q1*1.2 + x + x);\\\\ng = 0.5 + 0.5*sin(q1*1.5 + x + y);\\\\nb = 0.5 + 0.5*sin(q1*1.36 + y + y);\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"rot = -0.001;\\\\n//rot = rot + 0.010*( 0.60*sin(0.381*time) + 0.40*sin(0.579*time) );\\\\n\\\\nzoom =1.01;// + bass*0.05 - treb*0.015;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec2 uv_1;\\\\n  vec3 ret_2;\\\\n  uv_1 = (uv + (vec2(1.0, 0.0) * texsize.zw));\\\\n  ret_2 = texture (sampler_main, uv_1).xyz;\\\\n  ret_2.xz = (ret_2.xz + ((\\\\n    (ret_2.xz - mix (((texture (sampler_blur2, uv_1).xyz * scale2) + bias2), ((texture (sampler_blur1, uv_1).xyz * scale1) + bias1), uv_orig.xxx).xz)\\\\n   * 0.3) - (0.00666 * \\\\n    (((bass + treb) + mid) - 0.5)\\\\n  )));\\\\n  ret_2.xz = (ret_2.xz * 0.95);\\\\n  ret_2.xz = (ret_2.xz + ((\\\\n    ((texture (sampler_noise_lq, ((\\\\n      (uv_orig * texsize.xy)\\\\n     * \\\\n      (texsize_noise_lq.zw * 0.4)\\\\n    ) + rand_frame.xy)).xz - 0.5) / 256.0)\\\\n   * 122.0) * clamp (\\\\n    (treb_att - 1.0)\\\\n  , 0.0, 1.0)));\\\\n  ret_2.x = mix (ret_2.x, dot (ret_2.xxx, vec3(0.32, 0.49, 0.29)), 0.2);\\\\n  vec2 tmpvar_3;\\\\n  tmpvar_3 = (texsize.zw * 12.0);\\\\n  vec3 tmpvar_4;\\\\n  tmpvar_4 = (((texture (sampler_blur2, \\\\n    (uv_orig + (vec2(1.0, 0.0) * tmpvar_3))\\\\n  ).xyz * scale2) + bias2) - ((texture (sampler_blur2, \\\\n    (uv_orig - (vec2(1.0, 0.0) * tmpvar_3))\\\\n  ).xyz * scale2) + bias2));\\\\n  vec3 tmpvar_5;\\\\n  tmpvar_5 = (((texture (sampler_blur2, \\\\n    (uv_orig + (vec2(0.0, 1.0) * tmpvar_3))\\\\n  ).xyz * scale2) + bias2) - ((texture (sampler_blur2, \\\\n    (uv_orig - (vec2(0.0, 1.0) * tmpvar_3))\\\\n  ).xyz * scale2) + bias2));\\\\n  vec2 tmpvar_6;\\\\n  tmpvar_6.x = tmpvar_4.x;\\\\n  tmpvar_6.y = tmpvar_5.x;\\\\n  vec2 tmpvar_7;\\\\n  tmpvar_7.x = tmpvar_4.y;\\\\n  tmpvar_7.y = tmpvar_5.y;\\\\n  vec2 tmpvar_8;\\\\n  tmpvar_8.x = tmpvar_4.z;\\\\n  tmpvar_8.y = tmpvar_5.z;\\\\n  vec2 tmpvar_9;\\\\n  tmpvar_9 = (((uv_orig + \\\\n    (tmpvar_6 * 0.005)\\\\n  ) + (tmpvar_7 * 0.005)) - (tmpvar_8 * 0.005));\\\\n  ret_2.y = (texture (sampler_main, tmpvar_9).y - 0.04);\\\\n  ret_2.y = (ret_2.y + ((\\\\n    (ret_2.y - (((texture (sampler_blur1, tmpvar_9).xyz * scale1) + bias1).y * 1.5))\\\\n   + 0.4) * 0.1));\\\\n  vec4 tmpvar_10;\\\\n  tmpvar_10.w = 1.0;\\\\n  tmpvar_10.xyz = ret_2;\\\\n  ret = tmpvar_10.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  float ang2_1;\\\\n  vec2 uv2_2;\\\\n  ang2_1 = ((ang * 0.1591549) + (time * 0.025));\\\\n  ang2_1 = (fract((ang2_1 * 9.0)) / 9.0);\\\\n  ang2_1 = (abs((ang2_1 - 0.05555556)) * 6.283185);\\\\n  vec2 tmpvar_3;\\\\n  tmpvar_3.x = cos(ang2_1);\\\\n  tmpvar_3.y = sin(ang2_1);\\\\n  uv2_2 = (0.5 + ((\\\\n    (0.4 * (rad * sqrt(dot (texsize.xy, texsize.xy))))\\\\n   * tmpvar_3) * texsize.zw));\\\\n  vec4 tmpvar_4;\\\\n  tmpvar_4.w = 1.0;\\\\n  tmpvar_4.xyz = (((texture (sampler_main, uv2_2).y * vec3(0.6, 0.2, 1.5)) + (texture (sampler_fw_main, uv2_2).x * vec3(1.0, 0.66, 0.0))) - (texture (sampler_main, uv2_2).z * vec3(-0.6, 1.0, 2.0)));\\\\n  ret = tmpvar_4.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Aderrasi + Geiss - Airhandler (Kali Mix) - Canvas Mix.json\":\n/*!**************************************************************************************!*\\\n  !*** ./presets/converted/Aderrasi + Geiss - Airhandler (Kali Mix) - Canvas Mix.json ***!\n  \\**************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":2.001,\\\"decay\\\":0.95,\\\"echo_zoom\\\":0.9996,\\\"wave_mode\\\":1,\\\"wrap\\\":0,\\\"wave_a\\\":3.072644,\\\"wave_scale\\\":1.285746,\\\"wave_smoothing\\\":0,\\\"modwavealphastart\\\":0.71,\\\"modwavealphaend\\\":1.3,\\\"warpscale\\\":1.331,\\\"zoom\\\":0.999513,\\\"warp\\\":0.0101,\\\"wave_r\\\":0.65,\\\"wave_g\\\":0.65,\\\"wave_b\\\":0.65,\\\"ob_size\\\":0.005,\\\"ob_a\\\":0.8,\\\"ib_size\\\":0,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"wave_r = wave_r + 0.5*sin(time*1.13);\\\\nwave_g = wave_g + 0.5*sin(time*1.23);\\\\nwave_b = wave_b + 0.5*sin(time*1.33);\\\",\\\"pixel_eqs_eel\\\":\\\"zoom = zoom + 0.05*(sin(6*ang) + sin(sin(time*2*sin(time)*rad))*0.3 - cos(rad)*0.1);\\\\nrot = rot + 0.5*sin(0.5-rad)*cos(0.02*(0.5-rad)+time);\\\\nsx = sx + 0.01*(0.99*1-rad)*sin(0.733*time)*below(sin(time),0);\\\\nsy = sy + 0.01*(0.99*1-rad)*cos(0.953*time)*above(sin(time),0);\\\\nzoom = zoom - 0.05*(1-rad)*below(rad,0.5);\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec4 tmpvar_1;\\\\n  tmpvar_1.w = 1.0;\\\\n  tmpvar_1.xyz = (texture (sampler_main, (uv + (\\\\n    (texture (sampler_main, (uv + texsize.zw)).xy - 0.37)\\\\n   * 0.03))).xyz - 0.004);\\\\n  ret = tmpvar_1.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec2 uv_1;\\\\n  vec3 ret_2;\\\\n  uv_1 = (0.03 + (0.94 * uv));\\\\n  vec2 tmpvar_3;\\\\n  tmpvar_3 = (texsize.zw * 0.7);\\\\n  ret_2 = (texture (sampler_main, (uv_1 + (tmpvar_3 * vec2(3.5, 0.0)))).xyz * 3.0);\\\\n  ret_2 = (ret_2 + (texture (sampler_main, (uv_1 + \\\\n    (tmpvar_3 * vec2(0.0, 3.5))\\\\n  )).xyz * 3.0));\\\\n  ret_2 = (ret_2 + (texture (sampler_main, (uv_1 + \\\\n    (tmpvar_3 * vec2(0.0, -3.5))\\\\n  )).xyz * -2.0));\\\\n  ret_2 = (ret_2 + (texture (sampler_main, (uv_1 + \\\\n    (tmpvar_3 * vec2(-3.5, 0.0))\\\\n  )).xyz * -2.0));\\\\n  ret_2 = (ret_2 / 2.0);\\\\n  ret_2 = (ret_2 * (1.0 + (0.15 * \\\\n    ((texture (sampler_noise_lq, (rand_frame.xy + (\\\\n      (uv_1 * texsize.xy)\\\\n     * texsize_noise_lq.zw))).xxx * 2.0) - 1.0)\\\\n  )));\\\\n  vec3 tmpvar_4;\\\\n  tmpvar_4 = pow (ret_2, vec3(0.5, 0.8, 1.0));\\\\n  ret_2 = tmpvar_4;\\\\n  vec4 tmpvar_5;\\\\n  tmpvar_5.w = 1.0;\\\\n  tmpvar_5.xyz = tmpvar_4;\\\\n  ret = tmpvar_5.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Aderrasi - Potion of Spirits.json\":\n/*!*************************************************************!*\\\n  !*** ./presets/converted/Aderrasi - Potion of Spirits.json ***!\n  \\*************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":1,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1.42,\\\"decay\\\":1,\\\"echo_zoom\\\":0.999823,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":1,\\\"wave_mode\\\":5,\\\"wave_thick\\\":1,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":0.001185,\\\"wave_scale\\\":0.325446,\\\"wave_smoothing\\\":0.9,\\\"modwavealphastart\\\":0.5,\\\"modwavealphaend\\\":1,\\\"warpanimspeed\\\":2.630064,\\\"warpscale\\\":3.209168,\\\"zoomexp\\\":1.000158,\\\"dx\\\":0.00001,\\\"dy\\\":0.00001,\\\"warp\\\":0.01,\\\"wave_r\\\":0.5,\\\"wave_g\\\":0.5,\\\"wave_b\\\":0.5,\\\"ob_size\\\":0.005,\\\"ob_a\\\":0.5,\\\"ib_size\\\":0,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"ib_a\\\":0.1,\\\"mv_x\\\":6.4,\\\"mv_y\\\":4.8,\\\"mv_l\\\":5,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"wave_r = 0.5 + 0.5*sin(1.6*time);\\\\nwave_g = 0.5 + 0.5*sin(4.1*time);\\\\nwave_b = -1 + (1-wave_r + 1-wave_g);\\\\nwarp = 2;\\\\n\\\\nob_r = ob_r+wave_b*above(sin(0.1*time),0);\\\\nob_b = ob_b+wave_g*above(sin(0.1*time),0);\\\\nob_g = ob_g+wave_r*above(sin(0.1*time),0);\\\\nob_r = ob_r+wave_g*below(sin(0.1*time),0);\\\\nob_b = ob_b+wave_r*below(sin(0.1*time),0);\\\\nob_g = ob_g+wave_b*below(sin(0.1*time),0);\\\",\\\"pixel_eqs_eel\\\":\\\"thresh = above(bass_att,thresh)*2+(1-above(bass_att,thresh))*((thresh-1.3)*0.96+1.3);\\\\ndx_r = equal(thresh,2)*0.05*sin(5*time)+(1-equal(thresh,2))*dx_r;\\\\ndy_r = equal(thresh,2)*0.056*sin(6*time)+(1-equal(thresh,2))*dy_r;\\\\ntg1 = abs(sin(time));\\\\ntg2 = 22*above(tg1,0.75) + 12*below(tg1,0.25) + 18*above(tg1,0.25)*below(tg1,0.5)+\\\\n12*above(tg1,0.5)*below(tg1,0.75);\\\\ntg3 = if(equal(thresh,2),tg2,tg3);\\\\n\\\\nsix = sin(x);\\\\n\\\\ndx = dx + dx_r*sin(abs(tg3*y))*sin(time);\\\\ndy = dy + dy_r*sin(abs(tg3*x))*cos(time);\\\\ndx = dx + dx_r*pow(rad,y*2)*sin(time);\\\\ndy = dy + dy_r*pow(rad,x*2)*sin(time);\\\\nzoom = zoom - 0.0825*pow(rad,x*6)*cos(ang*6);\\\\nrot = rot - 0.0525*(0.75*sin(1.25*time)*pow(rad,x)*sin(1.45*time))*sin(time);\\\",\\\"warp\\\":\\\"\\\",\\\"comp\\\":\\\"\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Aderrasi - Storm of the Eye (Thunder) - mash0000 - quasi pseudo meta concentrics.json\":\n/*!*****************************************************************************************************************!*\\\n  !*** ./presets/converted/Aderrasi - Storm of the Eye (Thunder) - mash0000 - quasi pseudo meta concentrics.json ***!\n  \\*****************************************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":0,\\\"gammaadj\\\":1,\\\"decay\\\":0.97,\\\"echo_zoom\\\":1,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":3,\\\"wave_mode\\\":2,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"wave_a\\\":100,\\\"wave_scale\\\":0.797,\\\"wave_smoothing\\\":0.5,\\\"modwavealphastart\\\":0.5,\\\"modwavealphaend\\\":1,\\\"dx\\\":0.00001,\\\"dy\\\":0.00001,\\\"warp\\\":0.01,\\\"wave_r\\\":0.5,\\\"wave_g\\\":0.5,\\\"wave_b\\\":0.5,\\\"ob_size\\\":0.005,\\\"ob_a\\\":1,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"ib_a\\\":0.1,\\\"mv_x\\\":0,\\\"mv_y\\\":0,\\\"mv_l\\\":1,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"warp = 0;\\\\n\\\\nob_r = ob_r + 0.8*sin(1.1*time) + 1.1*cos(2*time);\\\\nob_b = ob_b + 0.9*sin(1.2*time) + cos(1.5*time);\\\\nob_g = ob_g + 0.7*sin(time) + sin(0.4*time);\\\\nwave_r = abs(ob_r+0.2);\\\\nwave_g = abs(ob_g+0.2);\\\\nwave_b = abs(ob_b+0.2);\\\\nib_b = ib_b + 0.44*cos(1.5*time) + 0.7*tan(time);\\\\nib_g = ib_g + 2*sin(time*bass_att);\\\\nib_r = ib_r + 0.8*sin(1.2*time) + 1.3*cos(1.8*time);\\\",\\\"pixel_eqs_eel\\\":\\\"thresh = above(bass_att,thresh)*2+(1-above(bass_att,thresh))*((thresh-1.3)*0.96+1.3);\\\\ndx_r = equal(thresh,2)*0.015*sin(5*time)+(1-equal(thresh,2))*dx_r;\\\\ndy_r = equal(thresh,2)*0.015*sin(6*time)+(1-equal(thresh,2))*dy_r;\\\\nzoom = zoom + 0.07*treb*(abs(sin(time*rad)))*(0.3-rad);\\\\ndy = dy + dy_r*below(rad,0.5 - (0.2*time));\\\\ndx = dx + dx_r*below(rad,0.5 - (0.2*time));\\\\nrot = rot + (0.7*bass_att*sin(abs(dx_r*(1-rad)*2*time+cos(rad*12))))*0.2;\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec3 ret_1;\\\\n  vec4 tmpvar_2;\\\\n  tmpvar_2 = texture (sampler_main, uv);\\\\n  ret_1 = (tmpvar_2.xyz + ((tmpvar_2.xyz - \\\\n    ((texture (sampler_blur1, uv).xyz * scale1) + bias1)\\\\n  ) * 0.3));\\\\n  ret_1 = (ret_1 * 0.9);\\\\n  ret_1 = (ret_1 + ((\\\\n    (texture (sampler_noise_lq, ((uv_orig * texsize.xy) * (texsize_noise_lq.zw * 0.1))).xyz - 0.5)\\\\n   / 256.0) * 28.0));\\\\n  vec3 tmpvar_3;\\\\n  tmpvar_3 = mix (ret_1, vec3(dot (ret_1, vec3(0.32, 0.49, 0.29))), vec3(0.04, 0.04, 0.04));\\\\n  ret_1 = tmpvar_3;\\\\n  vec4 tmpvar_4;\\\\n  tmpvar_4.w = 1.0;\\\\n  tmpvar_4.xyz = tmpvar_3;\\\\n  ret = tmpvar_4.xyz;\\\\n }\\\",\\\"comp\\\":\\\"\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/An AdamFX n Martin Infusion 2 flexi - Why The Sky Looks Diffrent Today - AdamFx n Martin Infusion - Tack Tile Disfunction B.json\":\n/*!************************************************************************************************************************************************************!*\\\n  !*** ./presets/converted/An AdamFX n Martin Infusion 2 flexi - Why The Sky Looks Diffrent Today - AdamFx n Martin Infusion - Tack Tile Disfunction B.json ***!\n  \\************************************************************************************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":4,\\\"gammaadj\\\":1,\\\"decay\\\":1,\\\"echo_zoom\\\":1,\\\"echo_alpha\\\":0.5,\\\"additivewave\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_a\\\":0.009,\\\"wave_scale\\\":2.713,\\\"wave_smoothing\\\":0,\\\"modwavealphastart\\\":1.2,\\\"modwavealphaend\\\":1.2,\\\"warpanimspeed\\\":1.459,\\\"warpscale\\\":2.007,\\\"zoom\\\":0.9999,\\\"warp\\\":0.01,\\\"sx\\\":0.9999,\\\"wave_r\\\":0.44,\\\"wave_g\\\":0.4,\\\"ob_size\\\":0.015,\\\"ob_b\\\":1,\\\"ib_size\\\":0.26,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0.85,\\\"mv_r\\\":0.5,\\\"mv_g\\\":0.5,\\\"mv_b\\\":0.5,\\\"mv_a\\\":0,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":3,\\\"additive\\\":1,\\\"num_inst\\\":175,\\\"rad\\\":0.20065,\\\"ang\\\":0.75398,\\\"tex_ang\\\":3.14159,\\\"tex_zoom\\\":0.99979,\\\"r\\\":0,\\\"g2\\\":0,\\\"border_r\\\":0.01,\\\"border_g\\\":0,\\\"border_a\\\":1},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"//lorenz-attractor calc\\\\nxx1 = if(equal(instance,0),q11,xx1);\\\\nyy1 = if(equal(instance,0),q12,yy1);\\\\nzz1 = if(equal(instance,0),q13,zz1);\\\\n\\\\ndx1 = q14*(yy1-xx1);\\\\ndy1 = xx1*(q15-zz1)-yy1;\\\\ndz1 = xx1*yy1-q16*zz1;\\\\ndd = sqrt(dx1*dx1+dy1*dy1+dz1*dz1);\\\\nxx1 = xx1 + q17*dx1/dd;\\\\nyy1 = yy1 + q17*dy1/dd;\\\\nzz1 = zz1 + q17*dz1/dd;\\\\n\\\\n\\\\n// 3D object model coordinates\\\\nmy_x = xx1*0.1;\\\\nmy_y = yy1*0.1;\\\\nmy_z = zz1*0.1 - 3;\\\\n\\\\n\\\\nd = 4.75; // camera distance\\\\nzoom = .55+0.25*sin(.5*q32);\\\\n\\\\n// solid angles\\\\nw1 = q3;\\\\nw2 = q4;\\\\nw3 = q5;\\\\n\\\\n// 3D rotation\\\\nx1 = cos(w1)*my_x + sin(w1)*my_y;\\\\ny1 = -sin(w1)*my_x + cos(w1)*my_y;\\\\nz1 = my_z;\\\\n\\\\nx2 = cos(w2)*x1 + sin(w2)*z1;\\\\nz2 = -sin(w2)*x1 + cos(w2)*z1;\\\\ny2 = y1;\\\\n\\\\ny3 = cos(w3)*y2 + sin(w3)*z2;\\\\nz3 = -sin(w3)*y2 + cos(w3)*z2;\\\\nx3 = x2;\\\\n\\\\n// perspective calculation\\\\n\\\\nl = sqrt(x3*x3 + y3*y3);\\\\nw = atan2(x3,y3);\\\\np = tan(asin(1) + atan2(d+z3,l));\\\\nd = sqrt(x3*x3 + y3*y3 + (z3+d)*(z3+d));\\\\n\\\\nmy_x = zoom*sin(w)*p;\\\\nmy_y = zoom*cos(w)*p;\\\\n\\\\nx = 0.5 + my_x;\\\\ny = 0.5 + my_y;\\\\n\\\\nrad = rad/d;\\\\nang = ang-instance/num_inst*asin(1)*8;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":12,\\\"additive\\\":1,\\\"num_inst\\\":512,\\\"y\\\":0.55,\\\"rad\\\":0.0986,\\\"tex_zoom\\\":0.7874,\\\"r\\\":0.2,\\\"g\\\":0.03,\\\"b\\\":0.55,\\\"g2\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"started = 0;\\\\nt1 = 0.412; //seeds for pseudo random generator\\\\nt2 = 0.4563;\\\\nt3 = 0.6452;\\\\nt4 = 0.2565;\\\",\\\"frame_eqs_eel\\\":\\\"rnd1 = if(equal(instance,0),t1,rnd1);\\\\nrnd2 = if(equal(instance,0),t2,rnd2);\\\\nrnd3 = if(equal(instance,0),t3,rnd3);\\\\nrnd4 = if(equal(instance,0),t4,rnd4);\\\\nrnd1 = 4*rnd1*(1-rnd1);\\\\nrnd2 = 4*rnd2*(1-rnd2);\\\\nrnd3 = 4*rnd3*(1-rnd3);\\\\nrnd4 = 4*rnd4*(1-rnd4);\\\\nt = .6;\\\\nt =  (rnd1+time*t) - int(rnd1+time*t);\\\\nt = t + rnd2*0.1;\\\\nwh = rnd4*asin(1)*4;\\\\nwv = 0.25 + rnd3*0.1;\\\\n\\\\nd = 6; // makes the perspective impact\\\\nzoom = 1;\\\\nl = 1;\\\\n\\\\n// Kardan angles\\\\n\\\\nw1 = q3; // first rotation: clockwise in the desktop pane\\\\nw2 = q4; // rotation around vertical axis\\\\nw3 = q5; // rotation around horizontal axis\\\\n\\\\n\\\\n// definition of the 3D shape\\\\n\\\\ni = instance;\\\\n\\\\nmy_x = t *(cos(wh)*sin(wv)*l)*2;\\\\nmy_z = -(-0.5 +(t-0.75)*(t-0.75))*cos(wv)*l*2;\\\\nmy_y = t*(sin(wh)*sin(wv)*l)*2;\\\\n\\\\n\\\\n\\\\n// 3D rotations\\\\n\\\\nx1 = cos(w1)*my_x + sin(w1)*my_y;\\\\ny1 = -sin(w1)*my_x + cos(w1)*my_y;\\\\nz1 = my_z;\\\\n\\\\nx2 = cos(w2)*x1 + sin(w2)*z1;\\\\nz2 = -sin(w2)*x1 + cos(w2)*z1;\\\\ny2 = y1;\\\\n\\\\ny3 = cos(w3)*y2 + sin(w3)*z2;\\\\nz3 = -sin(w3)*y2 + cos(w3)*z2;\\\\nx3 = x2;\\\\n\\\\n// perspective calculation\\\\n\\\\np = tan(asin(1) + atan2(d+z3,sqrt(x3*x3 + y3*y3)));\\\\nd = sqrt(x3*x3 + y3*y3 + (z3+d)*(z3+d));\\\\n\\\\nrad = rad/d;\\\\nmy_x = zoom*sin(atan2(x3,y3))*p;\\\\nmy_y = zoom*cos(atan2(x3,y3))*p;\\\\n\\\\nx = 0.5 + my_x;\\\\ny = 0.5 + my_y;\\\\n\\\\nx = 0.5 + (x-0.5)/q2;\\\\ny = 0.5 + (y-0.5)/q1;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":12,\\\"additive\\\":1,\\\"num_inst\\\":512,\\\"y\\\":0.55,\\\"rad\\\":0.2667,\\\"tex_zoom\\\":0.7874,\\\"r\\\":0,\\\"g\\\":0.1,\\\"b\\\":0.55,\\\"g2\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"started = 0;\\\\nt1 = 0.412; //seeds for pseudo random generator\\\\nt2 = 0.4563;\\\\nt3 = 0.6452;\\\\nt4 = 0.2565;\\\",\\\"frame_eqs_eel\\\":\\\"rnd1 = if(equal(instance,0),t1,rnd1);\\\\nrnd2 = if(equal(instance,0),t2,rnd2);\\\\nrnd3 = if(equal(instance,0),t3,rnd3);\\\\nrnd4 = if(equal(instance,0),t4,rnd4);\\\\nrnd1 = 4*rnd1*(1-rnd1);\\\\nrnd2 = 4*rnd2*(1-rnd2);\\\\nrnd3 = 4*rnd3*(1-rnd3);\\\\nrnd4 = 4*rnd4*(1-rnd4);\\\\nt = .6;\\\\nt =  (rnd1+time*t) - int(rnd1+time*t);\\\\nt = t + rnd2*0.1;\\\\nwh = rnd4*asin(1)*4;\\\\nwv = 0.25 + rnd3*0.1;\\\\n\\\\nd = 6; // makes the perspective impact\\\\nzoom = 1;\\\\nl = 1;\\\\n\\\\n// Kardan angles\\\\n\\\\nw1 = q3; // first rotation: clockwise in the desktop pane\\\\nw2 = q4; // rotation around vertical axis\\\\nw3 = q5; // rotation around horizontal axis\\\\n\\\\n\\\\n// definition of the 3D shape\\\\n\\\\ni = instance;\\\\n\\\\nmy_x = t *(cos(wh)*sin(wv)*l)*4;\\\\nmy_z = (-0.5 +(t-0.75)*(t-0.75))*cos(wv)*l*4;\\\\nmy_y = t*(sin(wh)*sin(wv)*l)*4;\\\\n\\\\n\\\\n// 3D rotations\\\\n\\\\nx1 = cos(w1)*my_x + sin(w1)*my_y;\\\\ny1 = -sin(w1)*my_x + cos(w1)*my_y;\\\\nz1 = my_z;\\\\n\\\\nx2 = cos(w2)*x1 + sin(w2)*z1;\\\\nz2 = -sin(w2)*x1 + cos(w2)*z1;\\\\ny2 = y1;\\\\n\\\\ny3 = cos(w3)*y2 + sin(w3)*z2;\\\\nz3 = -sin(w3)*y2 + cos(w3)*z2;\\\\nx3 = x2;\\\\n\\\\n// perspective calculation\\\\n\\\\np = tan(asin(1) + atan2(d+z3,sqrt(x3*x3 + y3*y3)));\\\\nd = sqrt(x3*x3 + y3*y3 + (z3+d)*(z3+d));\\\\n\\\\nrad = rad/d;\\\\nmy_x = zoom*sin(atan2(x3,y3))*p;\\\\nmy_y = zoom*cos(atan2(x3,y3))*p;\\\\n\\\\nx = 0.5 + my_x;\\\\ny = 0.5 + my_y;\\\\n\\\\nx = 0.5 + (x-0.5)/q2;\\\\ny = 0.5 + (y-0.5)/q1;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":12,\\\"additive\\\":1,\\\"num_inst\\\":512,\\\"y\\\":0.55,\\\"rad\\\":0.05012,\\\"tex_zoom\\\":0.7874,\\\"r\\\":0,\\\"g\\\":0.02,\\\"b\\\":0.11,\\\"g2\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"started = 0;\\\\nt1 = 0.412; //seeds for pseudo random generator\\\\nt2 = 0.4563;\\\\nt3 = 0.6452;\\\\nt4 = 0.2565;\\\",\\\"frame_eqs_eel\\\":\\\"rnd1 = if(equal(instance,0),t1,rnd1);\\\\nrnd2 = if(equal(instance,0),t2,rnd2);\\\\nrnd3 = if(equal(instance,0),t3,rnd3);\\\\nrnd4 = if(equal(instance,0),t4,rnd4);\\\\nrnd1 = 4*rnd1*(1-rnd1);\\\\nrnd2 = 4*rnd2*(1-rnd2);\\\\nrnd3 = 4*rnd3*(1-rnd3);\\\\nrnd4 = 4*rnd4*(1-rnd4);\\\\nt = .6;\\\\nt =  (rnd1+time*t) - int(rnd1+time*t);\\\\nt = t + rnd2*0.1;\\\\nwh = rnd4*asin(1)*4;\\\\nwv = 0.25 + rnd3*0.1;\\\\n\\\\nd = 1.4; // makes the perspective impact\\\\nzoom = 1;\\\\nl = 1;\\\\n\\\\n// Kardan angles\\\\n\\\\nw1 = q3; // first rotation: clockwise in the desktop pane\\\\nw2 = q4; // rotation around vertical axis\\\\nw3 = q5; // rotation around horizontal axis\\\\n\\\\n\\\\n// definition of the 3D shape\\\\n\\\\ni = instance;\\\\n\\\\nmy_x = t *(cos(wh)*sin(wv)*l);\\\\nmy_y = (-0.5 +(t-0.75)*(t-0.75))*cos(wv)*l;\\\\nmy_z = t*(sin(wh)*sin(wv)*l);\\\\n\\\\n\\\\n// 3D rotations\\\\n\\\\nx1 = cos(w1)*my_x + sin(w1)*my_y;\\\\ny1 = -sin(w1)*my_x + cos(w1)*my_y;\\\\nz1 = my_z;\\\\n\\\\nx2 = cos(w2)*x1 + sin(w2)*z1;\\\\nz2 = -sin(w2)*x1 + cos(w2)*z1;\\\\ny2 = y1;\\\\n\\\\ny3 = cos(w3)*y2 + sin(w3)*z2;\\\\nz3 = -sin(w3)*y2 + cos(w3)*z2;\\\\nx3 = x2;\\\\n\\\\n// perspective calculation\\\\n\\\\np = tan(asin(1) + atan2(d+z3,sqrt(x3*x3 + y3*y3)));\\\\nd = sqrt(x3*x3 + y3*y3 + (z3+d)*(z3+d));\\\\n\\\\nrad = rad/d;\\\\nmy_x = zoom*sin(atan2(x3,y3))*p;\\\\nmy_y = zoom*cos(atan2(x3,y3))*p;\\\\n\\\\nx = 0.5 + my_x;\\\\ny = 0.5 + my_y;\\\\n\\\\nx = 0.5 + (x-0.5)/q2;\\\\ny = 0.5 + (y-0.5)/q1;\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"samples\\\":495,\\\"sep\\\":4,\\\"spectrum\\\":1,\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":100,\\\"smoothing\\\":1,\\\"a\\\":0.21,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\nab = 1;\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"// lorenz-attractor calc\\\\nxx1 = if(equal(sample,0),q11,xx1);\\\\nyy1 = if(equal(sample,0),q12,yy1);\\\\nzz1 = if(equal(sample,0),q13,zz1);\\\\ndx1 = q14*(yy1-xx1);\\\\ndy1 = xx1*(q15-zz1)-yy1;\\\\ndz1 = xx1*yy1-q16*zz1;\\\\nxx1 = xx1 + q17*dx1;\\\\nyy1 = yy1 + q17*dy1;\\\\nzz1 = zz1 + q17*dz1;\\\\n\\\\n// 3D model coordinates\\\\nmy_x = xx1*0.1;\\\\nmy_y = yy1*0.1;\\\\nmy_z = zz1*0.1 - 3;\\\\n\\\\n\\\\nd = 5; // distance of the camera (on the z-axis) to the origin\\\\nzoom = 0.4;\\\\n\\\\n// solid angles\\\\nw1 = q2;\\\\nw2 = q3;\\\\nw3 = q4;\\\\n\\\\n// rotations\\\\nx1 = cos(w1)*my_x + sin(w1)*my_y;\\\\ny1 = -sin(w1)*my_x + cos(w1)*my_y;\\\\nz1 = my_z;\\\\n\\\\nx2 = cos(w2)*x1 + sin(w2)*z1;\\\\nz2 = -sin(w2)*x1 + cos(w2)*z1;\\\\ny2 = y1;\\\\n\\\\ny3 = cos(w3)*y2 + sin(w3)*z2;\\\\nz3 = -sin(w3)*y2 + cos(w3)*z2;\\\\nx3 = x2;\\\\n\\\\n// perspective calculation\\\\n\\\\nl = sqrt(x3*x3 + y3*y3);\\\\nw = atan2(x3,y3);\\\\np = tan(asin(1) + atan2(d+z3,l));\\\\nd = sqrt(x3*x3 + y3*y3 + (z3+d)*(z3+d));\\\\n\\\\nmy_x = zoom*sin(w)*p;\\\\nmy_y = zoom*cos(w)*p;\\\\n\\\\nx = 0.5 + my_x;\\\\ny = 0.5 + my_y;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"xx1 = if(equal(sample,0),q11,xx1);\\\\nyy1 = if(equal(sample,0),q12,yy1);\\\\nzz1 = if(equal(sample,0),q13,zz1);\\\\n\\\\ndx1 = q14*(yy1-xx1);\\\\ndy1 = xx1*(q15-zz1)-yy1;\\\\ndz1 = xx1*yy1-q16*zz1;\\\\nxx1 = xx1 + q17*dx1;\\\\nyy1 = yy1 + q17*dy1;\\\\nzz1 = zz1 + q17*dz1;\\\\n\\\\nmy_x = xx1*0.02;\\\\nmy_y = yy1*0.02;\\\\nmy_z = zz1*0.02;\\\\n\\\\nx = 0.5 + my_x;\\\\ny = 0.5 + my_y;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"step = 0;\\\",\\\"frame_eqs_eel\\\":\\\"dec_med = pow (0.9, 30/fps);\\\\ndec_slow = pow (0.96, 30/fps);\\\\ndec_fast = pow (0.6, 30/fps);\\\\nbeat = max (max (bass, mid), treb); \\\\navg = avg*dec_slow + beat*(1-dec_slow);\\\\nis_beat = above(beat, 0+avg+peak) * above (time, t0+.1);\\\\nt0 = is_beat*time + (1-is_beat)*t0;\\\\npeak = is_beat * beat + (1-is_beat)*peak*dec_med;\\\\nindex = (index + is_beat) %16;\\\\nindex2 = (index2 + is_beat*bnot(index))%8;\\\\n\\\\nq20 = avg;\\\\nq21 = beat;\\\\nq22 = peak;\\\\nq24 = is_beat;\\\\nvol = bass_att + mid_att + treb_att;\\\\nvol_ = dec_med * vol_ + (1-dec_med)* vol;\\\\nvol__ = dec_med * vol__ + (1-dec_med)* vol_;\\\\nq27 = index + 1;\\\\nq28 = index2 + 1;\\\\nq23 = q22 -0.1/q22;\\\\nq23 = max(q23,1);\\\\n\\\\nk1 =  is_beat*equal(index%8,0);\\\\np1 =  k1*(p1+1) + (1-k1)*p1;\\\\np2 = dec_fast * p2+ (1-dec_fast)*p1;\\\\nrott = p2 * 3.1416/4;\\\\n\\\\nq1 = cos(rott);\\\\nq2 = sin(rott);\\\\nq3 = -q2;\\\\nq4 = q1;\\\\n\\\\ntrig = q24 * bnot(index%2);\\\\nvx = vx*bnot(trig) + trig* (int(rand(100))/100-.5);\\\\nvy = vy*bnot(trig) + trig* (int(rand(100))/100-.5);\\\\nq10 = 0.2+vy*vy*2;\\\\nq11 = sin(time/9)/2+.4;\\\\nmovz = movz-1/fps*(.3+vx);\\\\nq9 = movz;\\\\n\\\\nq12 = min(q22,6)*2;\\\\nq13 = min(2,1+abs(8*vy*vx));\\\\n//dir_ = dec_med*dir_ + (1-dec_med)*(index2%2-.5);\\\\ndir_ =  bass-1;\\\\n\\\\ntrig = bnot(index%4) * q24;\\\\ndir = bnot(trig)*dir + trig*(int(rand(10))-5);\\\\n\\\\ntrel = trel + .1/fps*dir;\\\\ntrel_ = dec_med*trel_ + (1-dec_med)*trel;\\\\n\\\\nq5 = cos(trel_);\\\\nq6 = sin(trel_+0*q27*(q28%2));\\\\nq7 = -q6;\\\\nq8 = q5;\\\\n\\\\nzoom = 1.02;\\\\nrot = .5*sin(bnot(q28%2)*q28) ;\\\\nrot = .0*sin(time/3);\\\\ndx = .0;\\\\n\\\\nmonitor = q11;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec2 tmpvar_1;\\\\n  tmpvar_1 = ((uv * texsize.xy) * 0.08);\\\\n  vec3 tmpvar_2;\\\\n  tmpvar_2 = (texture (sampler_main, (uv - (\\\\n    ((sin(tmpvar_1) / cos(tmpvar_1)) * texsize.zw)\\\\n   * 3.0))).xyz + (vec3(dot (texture (sampler_noise_lq, \\\\n    ((((texsize.xy * texsize_noise_lq.zw).x * uv) * 0.02) + (0.1 * rand_frame).xy)\\\\n  ), vec4(0.32, 0.49, 0.29, 0.0))) / 30.0));\\\\n  vec4 tmpvar_3;\\\\n  tmpvar_3.w = 1.0;\\\\n  tmpvar_3.xyz = ((mix (tmpvar_2, \\\\n    (1.0 - tmpvar_2.zyx)\\\\n  , vec3(0.01, 0.01, 0.01)) - 0.03) - (0.2 * pow (\\\\n    (1.0 - rad)\\\\n  , 18.0)));\\\\n  ret = tmpvar_3.xyz;\\\\n }\\\",\\\"comp\\\":\\\"vec3 xlat_mutableneu;\\\\nvec2 xlat_mutablers0;\\\\nvec2 xlat_mutablerss;\\\\nvec2 xlat_mutableuv2;\\\\n shader_body { \\\\n  vec2 uv_1;\\\\n  vec2 ofs_2;\\\\n  vec3 ret1_3;\\\\n  uv_1 = ((uv - 0.5) * aspect.xy);\\\\n  vec2 tmpvar_4;\\\\n  tmpvar_4.x = q5;\\\\n  tmpvar_4.y = q6;\\\\n  uv_1 = (uv_1 + (tmpvar_4 / 4.0));\\\\n  mat2 tmpvar_5;\\\\n  tmpvar_5[uint(0)] = _qb.xy;\\\\n  tmpvar_5[1u] = _qb.zw;\\\\n  uv_1 = (uv_1 * tmpvar_5);\\\\n  float tmpvar_6;\\\\n  float tmpvar_7;\\\\n  tmpvar_7 = (min (abs(\\\\n    (uv_1.y / uv_1.x)\\\\n  ), 1.0) / max (abs(\\\\n    (uv_1.y / uv_1.x)\\\\n  ), 1.0));\\\\n  float tmpvar_8;\\\\n  tmpvar_8 = (tmpvar_7 * tmpvar_7);\\\\n  tmpvar_8 = (((\\\\n    ((((\\\\n      ((((-0.01213232 * tmpvar_8) + 0.05368138) * tmpvar_8) - 0.1173503)\\\\n     * tmpvar_8) + 0.1938925) * tmpvar_8) - 0.3326756)\\\\n   * tmpvar_8) + 0.9999793) * tmpvar_7);\\\\n  tmpvar_8 = (tmpvar_8 + (float(\\\\n    (abs((uv_1.y / uv_1.x)) > 1.0)\\\\n  ) * (\\\\n    (tmpvar_8 * -2.0)\\\\n   + 1.570796)));\\\\n  tmpvar_6 = (tmpvar_8 * sign((uv_1.y / uv_1.x)));\\\\n  if ((abs(uv_1.x) > (1e-08 * abs(uv_1.y)))) {\\\\n    if ((uv_1.x < 0.0)) {\\\\n      if ((uv_1.y >= 0.0)) {\\\\n        tmpvar_6 += 3.141593;\\\\n      } else {\\\\n        tmpvar_6 = (tmpvar_6 - 3.141593);\\\\n      };\\\\n    };\\\\n  } else {\\\\n    tmpvar_6 = (sign(uv_1.y) * 1.570796);\\\\n  };\\\\n  xlat_mutablers0.x = (((tmpvar_6 / 3.1416) * 6.0) * q28);\\\\n  xlat_mutablers0.y = inversesqrt(dot (uv_1, uv_1));\\\\n  vec2 tmpvar_9;\\\\n  tmpvar_9.x = (xlat_mutablers0.x + (q9 * 8.0));\\\\n  tmpvar_9.y = (xlat_mutablers0.y + ((q9 * q28) * 4.0));\\\\n  xlat_mutablerss = (tmpvar_9 / 12.0);\\\\n  vec2 tmpvar_10;\\\\n  tmpvar_10.x = q5;\\\\n  tmpvar_10.y = q6;\\\\n  ofs_2 = (0.1 * tmpvar_10.yx);\\\\n  float tmpvar_11;\\\\n  float tmpvar_12;\\\\n  tmpvar_12 = -(q9);\\\\n  tmpvar_11 = fract(tmpvar_12);\\\\n  mat2 tmpvar_13;\\\\n  tmpvar_13[uint(0)].x = 1.0;\\\\n  tmpvar_13[uint(0)].y = -0.0;\\\\n  tmpvar_13[1u].x = 0.0;\\\\n  tmpvar_13[1u].y = 1.0;\\\\n  xlat_mutableuv2 = ((uv_1 * (\\\\n    (q13 * tmpvar_11)\\\\n   * tmpvar_13)) * aspect.yx);\\\\n  vec2 tmpvar_14;\\\\n  tmpvar_14 = fract(((xlat_mutableuv2 + 0.5) + ofs_2));\\\\n  xlat_mutableneu = (texture (sampler_main, tmpvar_14).xyz + ((texture (sampler_blur1, tmpvar_14).xyz * scale1) + bias1));\\\\n  ret1_3 = max (vec3(0.0, 0.0, 0.0), ((xlat_mutableneu * \\\\n    (1.0 - (tmpvar_11 * tmpvar_11))\\\\n  ) * 2.0));\\\\n  float tmpvar_15;\\\\n  tmpvar_15 = fract((tmpvar_12 + 0.3333333));\\\\n  mat2 tmpvar_16;\\\\n  tmpvar_16[uint(0)].x = -0.4990803;\\\\n  tmpvar_16[uint(0)].y = -0.8665558;\\\\n  tmpvar_16[1u].x = 0.8665558;\\\\n  tmpvar_16[1u].y = -0.4990803;\\\\n  xlat_mutableuv2 = ((uv_1 * (\\\\n    (q13 * tmpvar_15)\\\\n   * tmpvar_16)) * aspect.yx);\\\\n  vec2 tmpvar_17;\\\\n  tmpvar_17 = fract(((xlat_mutableuv2 + 0.5) + ofs_2));\\\\n  xlat_mutableneu = (texture (sampler_main, tmpvar_17).xyz + ((texture (sampler_blur1, tmpvar_17).xyz * scale1) + bias1));\\\\n  ret1_3 = max (ret1_3, ((xlat_mutableneu * \\\\n    (1.0 - (tmpvar_15 * tmpvar_15))\\\\n  ) * 2.0));\\\\n  float tmpvar_18;\\\\n  tmpvar_18 = fract((tmpvar_12 + 0.6666667));\\\\n  mat2 tmpvar_19;\\\\n  tmpvar_19[uint(0)].x = -0.5018377;\\\\n  tmpvar_19[uint(0)].y = 0.8649619;\\\\n  tmpvar_19[1u].x = -0.8649619;\\\\n  tmpvar_19[1u].y = -0.5018377;\\\\n  xlat_mutableuv2 = ((uv_1 * (\\\\n    (q13 * tmpvar_18)\\\\n   * tmpvar_19)) * aspect.yx);\\\\n  vec2 tmpvar_20;\\\\n  tmpvar_20 = fract(((xlat_mutableuv2 + 0.5) + ofs_2));\\\\n  xlat_mutableneu = (texture (sampler_main, tmpvar_20).xyz + ((texture (sampler_blur1, tmpvar_20).xyz * scale1) + bias1));\\\\n  ret1_3 = max (ret1_3, ((xlat_mutableneu * \\\\n    (1.0 - (tmpvar_18 * tmpvar_18))\\\\n  ) * 2.0));\\\\n  float tmpvar_21;\\\\n  tmpvar_21 = fract((tmpvar_12 + 1.0));\\\\n  mat2 tmpvar_22;\\\\n  tmpvar_22[uint(0)].x = 0.9999949;\\\\n  tmpvar_22[uint(0)].y = 0.003185092;\\\\n  tmpvar_22[1u].x = -0.003185092;\\\\n  tmpvar_22[1u].y = 0.9999949;\\\\n  xlat_mutableuv2 = ((uv_1 * (\\\\n    (q13 * tmpvar_21)\\\\n   * tmpvar_22)) * aspect.yx);\\\\n  vec2 tmpvar_23;\\\\n  tmpvar_23 = fract(((xlat_mutableuv2 + 0.5) + ofs_2));\\\\n  xlat_mutableneu = (texture (sampler_main, tmpvar_23).xyz + ((texture (sampler_blur1, tmpvar_23).xyz * scale1) + bias1));\\\\n  ret1_3 = max (ret1_3, ((xlat_mutableneu * \\\\n    (1.0 - (tmpvar_21 * tmpvar_21))\\\\n  ) * 2.0));\\\\n  vec2 tmpvar_24;\\\\n  tmpvar_24.x = (ret1_3.x + ret1_3.z);\\\\n  tmpvar_24.y = (ret1_3.x - ret1_3.y);\\\\n  vec4 tmpvar_25;\\\\n  tmpvar_25.w = 1.0;\\\\n  tmpvar_25.xyz = ((ret1_3 + (\\\\n    ((bass_att * 0.004) / sqrt(dot (uv_1, uv_1)))\\\\n   * roam_sin).xyz) + ((2.0 * \\\\n    (bass_att * ((texture (sampler_blur1, fract(\\\\n      (xlat_mutablerss + (tmpvar_24 / 2.0))\\\\n    )).xyz * scale1) + bias1).zxy)\\\\n  ) * clamp (\\\\n    (1.0 - (ret1_3 * 4.0))\\\\n  , 0.0, 1.0)));\\\\n  ret = tmpvar_25.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Cope - The Neverending Explosion of Red Liquid Fire.json\":\n/*!************************************************************************************!*\\\n  !*** ./presets/converted/Cope - The Neverending Explosion of Red Liquid Fire.json ***!\n  \\************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":0,\\\"gammaadj\\\":1.14,\\\"decay\\\":1,\\\"echo_zoom\\\":1,\\\"wave_mode\\\":1,\\\"wave_thick\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":0.179,\\\"wave_smoothing\\\":0,\\\"wave_mystery\\\":0.3,\\\"modwavealphastart\\\":0.71,\\\"modwavealphaend\\\":1.3,\\\"warpscale\\\":1.331,\\\"zoomexp\\\":0.8195,\\\"zoom\\\":1.0697,\\\"dy\\\":0.006,\\\"warp\\\":0.01,\\\"sx\\\":0.9996,\\\"wave_g\\\":0,\\\"wave_b\\\":0,\\\"ob_a\\\":0.8,\\\"ib_size\\\":0,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"ib_a\\\":1,\\\"mv_x\\\":0,\\\"mv_y\\\":0,\\\"mv_l\\\":1,\\\"mv_g\\\":0.91,\\\"mv_b\\\":0.71,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"sides\\\":63,\\\"rad\\\":0.01,\\\"ang\\\":3.4054,\\\"tex_ang\\\":3.1415,\\\"tex_zoom\\\":1.6446,\\\"r\\\":0,\\\"a\\\":0.4,\\\"g2\\\":0,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"rad = rad + 0.1*q3;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":34,\\\"textured\\\":1,\\\"rad\\\":0.18167,\\\"tex_ang\\\":3.1415,\\\"tex_zoom\\\":5.42789,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":54,\\\"x\\\":0,\\\"y\\\":0.6,\\\"rad\\\":0.13478,\\\"r\\\":0.7,\\\"g\\\":0.6,\\\"b\\\":0.7,\\\"r2\\\":0.6,\\\"g2\\\":0.6,\\\"b2\\\":0.6,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"//r = r + 0.3*(0.6*sin(time*1.87) + 0.4*sin(1.98*time));\\\\n//b = b + 0.3*(0.6*sin(time*1.3434) + 0.4*sin(1.78*time));\\\\n//g = g + 0.3*(0.6*sin(time*1.9887) + 0.4*sin(1.6*time));\\\\nr=0;\\\\nb=0;\\\\ng=0;\\\\nr2=r;\\\\nb2=b;\\\\ng2=g;\\\"},{\\\"baseVals\\\":{\\\"x\\\":0,\\\"y\\\":0.2,\\\"rad\\\":0.20068,\\\"r\\\":0,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"scaling\\\":0.3696,\\\"r\\\":0,\\\"g\\\":0,\\\"b\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"bass_thresh = above(bass_att,bass_thresh)*2 + (1-above(bass_att,bass_thresh))*((bass_thresh-1.3)*0.91+1.3);\\\\n\\\\nwave_r = 0.5 + 0.5*(0.6*sin(time*1.3) + 0.4*sin(0.98*time));\\\\nwave_b = 0.5 + 0.5*(0.6*sin(time*1.1) + 0.4*sin(0.78*time));\\\\nwave_g = 0.5 + 0.5*(0.6*sin(time*1.2) + 0.4*sin(0.6*time));\\\\n\\\\nq8=wave_r;\\\\nq7=wave_b;\\\\nq6=wave_g;\\\\n\\\\nwr = 0.5+0.4*(0.6*sin(time*0.2) + 0.4*sin(0.8*time));\\\\nwb = 0.5+0.4*(0.6*sin(time*0.377) + 0.4*sin(0.5*time));\\\\nwg = 0.5+0.4*(0.6*sin(time*0.7) + 0.4*sin(0.4*time));\\\\n\\\\nq10=wr;//*above(bass_thresh, 1.9)*1;\\\\nq11=wb;//*above(bass_thresh, 1.9)*1;\\\\nq12=wg;//*above(bass_thresh, 1.9)*1;\\\\n\\\\nq10=0.8;\\\\nq11=0.2;\\\\nq12=0.1;\\\\n\\\\n\\\\nq18 = 0.01*sin(mtime*0.1);\\\\nq17 = -0.01*sin(mtime*0.254);\\\\nq2=bass_thresh;\\\\n\\\\nvol=(bass+mid+treb)*0.25;\\\\nvol=vol*vol;\\\\nq3=vol;\\\\nq5=vol*0.5;\\\\nmtime=mtime+vol*0.01;\\\\nq2=mtime*0.25;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec3 noise2_1;\\\\n  vec3 ret_2;\\\\n  vec3 tmpvar_3;\\\\n  tmpvar_3 = (((texture (sampler_blur1, uv).xyz * scale1) + bias1) + texture (sampler_main, uv).xyz);\\\\n  vec2 tmpvar_4;\\\\n  tmpvar_4 = (0.5 + ((uv - 0.5) * (1.0 + \\\\n    (tmpvar_3.y * 0.05)\\\\n  )));\\\\n  vec2 tmpvar_5;\\\\n  tmpvar_5.x = (tmpvar_4.x + pow (tmpvar_3.x, q17));\\\\n  tmpvar_5.y = (tmpvar_4.y + pow (tmpvar_3.x, q18));\\\\n  vec4 tmpvar_6;\\\\n  tmpvar_6 = texture (sampler_fc_main, fract(tmpvar_5));\\\\n  vec3 tmpvar_7;\\\\n  tmpvar_7.x = q10;\\\\n  tmpvar_7.y = q11;\\\\n  tmpvar_7.z = q12;\\\\n  noise2_1 = (texture (sampler_noise_lq, ((\\\\n    (uv_orig * texsize.xy)\\\\n   * texsize_noise_lq.zw) + rand_frame.xy)).xyz + ((tmpvar_7 * vec3(rad)) * vol));\\\\n  vec3 a_8;\\\\n  a_8 = (1.0 - tmpvar_6.xyz);\\\\n  ret_2 = (tmpvar_6.xyz + (0.3 * clamp (\\\\n    ((a_8.yzx * noise2_1.zxy) - (a_8.zxy * noise2_1.yzx))\\\\n  , 0.0, 1.0)));\\\\n  ret_2 = (ret_2 * 0.97);\\\\n  vec4 tmpvar_9;\\\\n  tmpvar_9.w = 1.0;\\\\n  tmpvar_9.xyz = ret_2;\\\\n  ret = tmpvar_9.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec3 ret_1;\\\\n  ret_1 = (texture (sampler_main, uv).xyz * vec3(0.9, 0.3, 0.5));\\\\n  ret_1 = (ret_1 * 1.34);\\\\n  ret_1 = (ret_1 * ret_1);\\\\n  vec4 tmpvar_2;\\\\n  tmpvar_2.w = 1.0;\\\\n  tmpvar_2.xyz = ret_1;\\\\n  ret = tmpvar_2.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Eo.S. + Zylot - skylight (Stained Glass Majesty mix).json\":\n/*!*************************************************************************************!*\\\n  !*** ./presets/converted/Eo.S. + Zylot - skylight (Stained Glass Majesty mix).json ***!\n  \\*************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":1,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"decay\\\":0.95,\\\"echo_zoom\\\":1.006596,\\\"echo_orient\\\":1,\\\"wave_mode\\\":2,\\\"wave_dots\\\":1,\\\"wave_brighten\\\":0,\\\"wave_a\\\":0.019788,\\\"wave_scale\\\":0.011726,\\\"wave_smoothing\\\":0.9,\\\"warpanimspeed\\\":0.010284,\\\"warpscale\\\":0.01,\\\"fshader\\\":1,\\\"warp\\\":0.01,\\\"wave_r\\\":0.5,\\\"wave_g\\\":0.4,\\\"wave_b\\\":0.3,\\\"ob_size\\\":0,\\\"ob_r\\\":0.11,\\\"ob_b\\\":0.1,\\\"ib_size\\\":0.005,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"ib_a\\\":1,\\\"mv_x\\\":31.999994,\\\"mv_y\\\":24.000004,\\\"mv_dx\\\":0.02,\\\"mv_dy\\\":-0.02,\\\"mv_l\\\":1,\\\"mv_r\\\":0.49,\\\"mv_g\\\":0.48,\\\"mv_b\\\":0.300001,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"textured\\\":1,\\\"rad\\\":1.670888,\\\"tex_ang\\\":0.942478,\\\"tex_zoom\\\":0.534261,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0.17},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"flux=q5*9;\\\\nfluxs=max(flux,0);\\\\nfluxs=min(fluxs,1);\\\\nadvflux=(q3*fluxs) + (-q3 * (1-fluxs));\\\\nadv=adv+advflux;\\\\nadvs=adv/256;\\\\n\\\\n\\\\nang=advs;\\\\nrad=1.671 + q3/25\\\"},{\\\"baseVals\\\":{\\\"sides\\\":3,\\\"x\\\":0.35,\\\"g\\\":1,\\\"b\\\":1,\\\"g2\\\":0,\\\"b2\\\":0.1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"y=0.1 + q2*0.4;\\\\nrad=q2/2;\\\\nang=-q2*2\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":3,\\\"x\\\":0.59,\\\"rad\\\":0.444842,\\\"r\\\":0,\\\"r2\\\":0.1,\\\"g2\\\":0.05,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"dir = 3;\\\\nmover = 0;\\\\nrotator = .255\\\",\\\"frame_eqs_eel\\\":\\\"ang = rotator;\\\\nx = if(equal(dir,1),1 - mover,if(equal(dir,1.5),.15,if(equal(dir,2),0,if(equal(dir,2.5),0, if(equal(dir,3),0+mover,if(equal(dir,3.5),1,if(equal(dir,4),1,1)))))));\\\\ny = if(equal(dir,1),1,if(equal(dir,1.5),1,if(equal(dir,2),1 - mover,if(equal(dir,2.5),0, if(equal(dir,3),0,if(equal(dir,3.5),0,if(equal(dir,4),0+mover,1)))))));\\\\nmover = if(equal(dir,1),mover + .005,if(equal(dir,1.5),0,if(equal(dir,2),mover + .005,if(equal(dir,2.5),0, if(equal(dir,3),mover+.005,if(equal(dir,3.5),0,if(equal(dir,4),mover+.005,0)))))));\\\\ndir = if(equal(dir,1),if(above(mover,.995),1.5,dir),if(equal(dir,1.5),if(below(rotator,-1.29),2,dir), if(equal(dir,2),if(above(mover,.995),2.5,dir),if(equal(dir,2.5),if(below(rotator,-2.85),3,dir), if(equal(dir,3),if(above(mover,.995),3.5,dir),if(equal(dir,3.5),if(below(rotator,-4.44),4,dir), if(equal(dir,4),if(above(mover,.995),4.5,dir),if(equal(dir,4.5),if(below(rotator,-5.94),1,dir),dir))))))));\\\\nrotator = if(equal(dir,1.5),if(above(rotator,-1.31),rotator - .05,rotator),if(equal(dir,2),-1.3, if(equal(dir,2.5),if(above(rotator,-2.87),rotator-.05,rotator),if(equal(dir,3),-2.86, if(equal(dir,3.5),if(above(rotator,-4.46),rotator-.05,rotator),if(equal(dir,4),-4.45, if(equal(dir,4.5),if(above(rotator,-5.97),rotator-.05,rotator),if(equal(dir,4),-5.96,.26))))))));\\\\n\\\\n//Ok, enough with the crazy ifs, we got our tram moving, now for some reaction.\\\\n\\\\nb = above(mid,1.5);\\\\nr2 = above(mid,1.5);\\\\ng2 = above(mid,1.5);\\\\nb2 = above(mid,1.5);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":3,\\\"additive\\\":1,\\\"x\\\":0.84,\\\"r\\\":0.98,\\\"g\\\":1,\\\"b\\\":0.98,\\\"a\\\":0.3,\\\"g2\\\":0.09,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x=sin(time/2)*0.4 + 0.5;\\\\ny=sin(time)*0.4+0.5;\\\\nrad=(q1*q1)/2;;\\\\nang=q1*4;\\\\n\\\\nr=0.70 + (sin(time/2))*0.50;\\\\ng=0.70 + (sin(time/2 + 2)) * 0.50;\\\\nb=0.70 + (sin(time/2 + 4)) * 0.5\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"mv_x=64;mv_y=48;\\\\nnut=0;\\\\nstp=0;stq=0;\\\\nrtp=0;rtq=0;\\\\nwvr=0;\\\\ndecay=0;\\\\ndcsp=0;\\\\nq1=0;q2=0;q3=0\\\",\\\"frame_eqs_eel\\\":\\\"decay=1;\\\\nzoom=1.000;\\\\nspeed=0.80;\\\\nspeedinv=1-speed;\\\\nq1=(qa*speed + bass*speedinv);\\\\nq2=(qb*speed + mid *speedinv);\\\\nq3=(qc*speed + treb*speedinv);\\\\nqa=q1;\\\\nqb=q2;\\\\nqc=q3;\\\\nflux=sin(time/2);\\\\nq4=flux * 0.5 + 0.5;\\\\nq5=flux\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\"\\\",\\\"comp\\\":\\\"\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Eo.S. - glowsticks v2 05 and proton lights (+Krash′s beat code) _Phat_remix02b.json\":\n/*!***************************************************************************************************************!*\\\n  !*** ./presets/converted/Eo.S. - glowsticks v2 05 and proton lights (+Krash′s beat code) _Phat_remix02b.json ***!\n  \\***************************************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":1,\\\"baseVals\\\":{\\\"rating\\\":0,\\\"gammaadj\\\":1.21,\\\"decay\\\":0.96,\\\"echo_zoom\\\":0.99663,\\\"echo_orient\\\":1,\\\"wave_mode\\\":2,\\\"wave_dots\\\":1,\\\"wave_brighten\\\":0,\\\"brighten\\\":1,\\\"invert\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":0.011726,\\\"wave_smoothing\\\":0.9,\\\"warpanimspeed\\\":0.037492,\\\"warpscale\\\":0.014889,\\\"warp\\\":0.033004,\\\"wave_r\\\":0.5,\\\"wave_g\\\":0.4,\\\"wave_b\\\":0.3,\\\"ob_size\\\":0.055,\\\"ob_r\\\":1,\\\"ob_g\\\":1,\\\"ob_b\\\":1,\\\"ob_a\\\":1,\\\"ib_size\\\":0,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"mv_x\\\":0,\\\"mv_y\\\":43.199997,\\\"mv_l\\\":1,\\\"mv_g\\\":0.91,\\\"mv_b\\\":0.71,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"sides\\\":5,\\\"textured\\\":1,\\\"rad\\\":1.06779,\\\"ang\\\":0.753982,\\\"tex_zoom\\\":0.779769,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ang=sin(q1*0.15);\\\\nx=sin(q1*0.5) * 0.05 + 0.5;\\\\ny=cos(q1*0.63)* 0.05 + 0.5\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":5,\\\"additive\\\":1,\\\"rad\\\":0.038091,\\\"g\\\":1,\\\"b\\\":1,\\\"g2\\\":0.6,\\\"b2\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"tm=q1;\\\\n\\\\nxp=0;\\\\nyp=0.1;\\\\nzp=0;\\\\n\\\\n//wrist movement;\\\\nang=sin(tm*2 )*0.5 +0.5;\\\\n\\\\nxq=xp;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nyq=yp*sinang + zp*cosang;\\\\nzq=yp*cosang - zp*sinang;\\\\nyq=yp;\\\\nzq=zp;\\\\n\\\\nang=tm*8;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxp=xq*sinang + yq*cosang;\\\\nyp=xq*cosang - yq*sinang;\\\\nzp=zq;\\\\n\\\\n//forearm movement;\\\\nzp=zp-0.3;\\\\nang=3.14 + sin(tm*2 - 0.5)*1.5;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxq=xp;\\\\nyq=yp*sinang + zp*cosang;\\\\nzq=yp*cosang - zp*sinang;\\\\n\\\\n//upper arm twist\\\\nang=-1.0 + cos(tm*3.1 + 0.5);\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxp=xq*sinang + yq*cosang;\\\\nyp=xq*cosang - yq*sinang;\\\\nzp=zq;\\\\n\\\\n//upper arm outward;\\\\nzp=zp-0.35;\\\\nang=cos(tm*2.3)*1.75 - 1.05;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxq=xp*sinang + zp*cosang;\\\\nyq=yp;\\\\nzq=xp*cosang - zp*sinang;\\\\n\\\\n//upper arm up down;\\\\nang=cos(tm)*0.5 - 0.5;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxp=xq;\\\\nyp=yq*cosang - zq*sinang;\\\\nzp=yq*sinang + zq*cosang;\\\\n\\\\n//xp=xq;yp=yq;zp=zq;\\\\n\\\\n\\\\n//project into screenspace and draw on screen\\\\nzp=zp+2;\\\\nxs=xp/zp;\\\\nys=yp/zp;\\\\n\\\\nx=xs+0.5;\\\\ny=ys*1.3+0.5;\\\\n\\\\n\\\\n\\\\n\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"r\\\":0.1,\\\"b\\\":0.7},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"t1=sin(time)*0.5+0.5;\\\\nt2=sin(time+2.1)*0.5+0.5;\\\\nt3=sin(time+4.2)*0.5+0.5;\\\\n\\\\nt4=sin(time+1.1)*0.5+0.5;\\\\nt5=sin(time+3.1)*0.5+0.5;\\\\nt6=sin(time+5.2)*0.5+0.5;\\\",\\\"point_eqs_eel\\\":\\\"n=sample*6.283;\\\\nphs=-sample * 0.2;\\\\ntm=q1 + phs;\\\\n\\\\nflip=flip+1;\\\\nflip=flip*below(flip,2);\\\\n\\\\nxp=0;\\\\nyp=flip*0.1 + (sin(tm)*0.5 + 0.5)*0.2;\\\\nzp=0;\\\\n\\\\n//wrist movement;\\\\nang=sin(tm*2 )*0.5 +0.5;\\\\n\\\\nxq=xp;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nyq=yp*sinang + zp*cosang;\\\\nzq=yp*cosang - zp*sinang;\\\\nyq=yp;\\\\nzq=zp;\\\\n\\\\nang=tm*8;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxp=xq*sinang + yq*cosang;\\\\nyp=xq*cosang - yq*sinang;\\\\nzp=zq;\\\\n\\\\n//forearm movement;\\\\nzp=zp-0.3;\\\\nang=3.14 + sin(tm*2 - 0.5)*1.5;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxq=xp;\\\\nyq=yp*sinang + zp*cosang;\\\\nzq=yp*cosang - zp*sinang;\\\\n\\\\n//upper arm twist\\\\nang=-1.0 + cos(tm*3.1 + 0.5);\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxp=xq*sinang + yq*cosang;\\\\nyp=xq*cosang - yq*sinang;\\\\nzp=zq;\\\\n\\\\n//upper arm outward;\\\\nzp=zp-0.35;\\\\nang=cos(tm*2.3)*1.75 - 1.05;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxq=xp*sinang + zp*cosang;\\\\nyq=yp;\\\\nzq=xp*cosang - zp*sinang;\\\\n\\\\n//upper arm up down;\\\\nang=cos(tm)*0.5 - 0.5;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxp=xq;\\\\nyp=yq*cosang - zq*sinang;\\\\nzp=yq*sinang + zq*cosang;\\\\n\\\\n//xp=xq;yp=yq;zp=zq;\\\\n\\\\n\\\\n//project into screenspace and draw on screen\\\\nzp=zp+2;\\\\nxs=xp/zp;\\\\nys=yp/zp;\\\\n\\\\nx=xs+0.5;\\\\ny=ys*1.3+0.5;\\\\n\\\\n\\\\na=if( equal(q8,1) , (1-sample) , sample);\\\\na=a*a;\\\\n\\\\nb=b+pow(1-sample,2)*0.3;\\\\n\\\\n\\\\n\\\\nr1=t1;\\\\ng1=t2;\\\\nb1=t3;\\\\nr2=t4;\\\\ng2=t5;\\\\nb2=t6;\\\\n\\\\nr=r1*flip + r2*(1-flip);\\\\ng=g1*flip + g2*(1-flip);\\\\nb=b1*flip + b2*(1-flip);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"r\\\":0.2,\\\"b\\\":0.6},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"t1=sin(time)*0.5+0.5;\\\\nt2=sin(time+2.1)*0.5+0.5;\\\\nt3=sin(time+4.2)*0.5+0.5;\\\\n\\\\nt4=sin(time+1.1)*0.5+0.5;\\\\nt5=sin(time+3.1)*0.5+0.5;\\\\nt6=sin(time+5.2)*0.5+0.5;\\\",\\\"point_eqs_eel\\\":\\\"n=sample*6.283;\\\\nphs=-sample * 0.2;\\\\ntm=q1 + phs;\\\\n\\\\nflip=flip+1;\\\\nflip=flip*below(flip,2);\\\\n\\\\nxp=0;\\\\nyp=flip*0.1 + (sin(tm)*0.5 + 0.5)*0.2 +0.1;\\\\nyp=-yp;\\\\nzp=0;\\\\n\\\\n//wrist movement;\\\\nang=sin(tm*2)*0.5 +0.5;\\\\n\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxq=xp;\\\\nyq=yp*sinang + zp*cosang;\\\\nzq=yp*cosang - zp*sinang;\\\\nyq=yp;\\\\nzq=zp;\\\\n\\\\nang=tm*8;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxp=xq*sinang + yq*cosang;\\\\nyp=xq*cosang - yq*sinang;\\\\nzp=zq;\\\\n\\\\n//forearm movement;\\\\nzp=zp-0.3;\\\\nang=3.14 + sin(tm*2 - 0.5)*1.5;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxq=xp;\\\\nyq=yp*sinang + zp*cosang;\\\\nzq=yp*cosang - zp*sinang;\\\\n\\\\n//upper arm twist\\\\nang=-1.0 + cos(tm*3.1 + 0.5);\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxp=xq*sinang + yq*cosang;\\\\nyp=xq*cosang - yq*sinang;\\\\nzp=zq;\\\\n\\\\n//upper arm outward;\\\\nzp=zp-0.35;\\\\nang=cos(tm*2.3)*1.75 - 1.05;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxq=xp*sinang + zp*cosang;\\\\nyq=yp;\\\\nzq=xp*cosang - zp*sinang;\\\\n\\\\n//upper arm up down;\\\\nang=cos(tm)*0.5 - 0.5;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxp=xq;\\\\nyp=yq*cosang - zq*sinang;\\\\nzp=yq*sinang + zq*cosang;\\\\n\\\\n//xp=xq;yp=yq;zp=zq;\\\\n\\\\n\\\\n//project into screenspace and draw on screen\\\\nzp=zp+2;\\\\nxs=xp/zp;\\\\nys=yp/zp;\\\\n\\\\nx=xs+0.5;\\\\ny=ys*1.3+0.5;\\\\n\\\\n\\\\na=if( equal(q8,1) , (1-sample) , sample);\\\\na=a*a;\\\\n\\\\n\\\\nb=b+pow(1-sample,2)*0.3;\\\\n\\\\nr1=t1;\\\\ng1=t2;\\\\nb1=t3;\\\\nr2=t4;\\\\ng2=t5;\\\\nb2=t6;\\\\n\\\\nr=r1*flip + r2*(1-flip);\\\\ng=g1*flip + g2*(1-flip);\\\\nb=b1*flip + b2*(1-flip);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"usedots\\\":1,\\\"thick\\\":1,\\\"additive\\\":1,\\\"g\\\":0.6,\\\"b\\\":0.1},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"t1=sin(time)*0.5+0.5;\\\\nt2=sin(time+2.1)*0.5+0.5;\\\\nt3=sin(time+4.2)*0.5+0.5;\\\\n\\\\nt4=sin(time+1.1)*0.5+0.5;\\\\nt5=sin(time+3.1)*0.5+0.5;\\\\nt6=sin(time+5.2)*0.5+0.5;\\\\n\\\\n\\\\nt8= int( sin(time*2)*2 + 3);\\\",\\\"point_eqs_eel\\\":\\\"n=sample*6.283;\\\\nphs=-sample * 0.2;\\\\ntm=q1 + phs;\\\\n\\\\nflip=flip+1;\\\\nflip=flip*below(flip,2);\\\\n\\\\nxp=0;\\\\nyp=flip*0.1 + (sin(tm)*0.5 + 0.5)*0.2;\\\\nzp=0;\\\\n\\\\n//wrist movement;\\\\nang=sin(tm*2)*0.5 +0.5;\\\\n\\\\nxq=xp;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nyq=yp*sinang + zp*cosang;\\\\nzq=yp*cosang - zp*sinang;\\\\nyq=yp;\\\\nzq=zp;\\\\n\\\\nang=tm*8 + 1;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxp=xq*sinang + yq*cosang;\\\\nyp=xq*cosang - yq*sinang;\\\\nzp=zq;\\\\n\\\\n//forearm movement;\\\\nzp=zp-0.3;\\\\nang=3.14 + sin(tm*2 - 0.5)*1.5;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxq=xp;\\\\nyq=yp*sinang + zp*cosang;\\\\nzq=yp*cosang - zp*sinang;\\\\n\\\\n//upper arm twist\\\\nang=-1.0 + cos(tm*3.1 + 0.5);\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxp=xq*sinang + yq*cosang;\\\\nyp=xq*cosang - yq*sinang;\\\\nzp=zq;\\\\n\\\\n//upper arm outward;\\\\nzp=zp-0.35;\\\\nang=cos(tm*2.3)*1.75 - 1.05;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxq=xp*sinang + zp*cosang;\\\\nyq=yp;\\\\nzq=xp*cosang - zp*sinang;\\\\n\\\\n//upper arm up down;\\\\nang=cos(tm)*0.5 - 0.5;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxp=xq;\\\\nyp=yq*cosang - zq*sinang;\\\\nzp=yq*sinang + zq*cosang;\\\\n\\\\n//xp=xq;yp=yq;zp=zq;\\\\n\\\\n\\\\n//project into screenspace and draw on screen\\\\nzp=zp+2;\\\\nxs=xp/zp;\\\\nys=yp/zp;\\\\n\\\\nx=xs+0.5;\\\\ny=ys*1.3+0.5;\\\\n\\\\na=if( equal(q8,1) , (1-sample) , sample);\\\\n\\\\n\\\\na=a* above( sin(tm*128*t8) , 0 );\\\\n\\\\n\\\\nr=t4;\\\\ng=t5;\\\\nb=t6;\\\\n\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"usedots\\\":1,\\\"thick\\\":1,\\\"additive\\\":1,\\\"g\\\":0.3,\\\"b\\\":0.1},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"t1=sin(time)*0.5+0.5;\\\\nt2=sin(time+2.1)*0.5+0.5;\\\\nt3=sin(time+4.2)*0.5+0.5;\\\\n\\\\nt4=sin(time+1.1)*0.5+0.5;\\\\nt5=sin(time+3.1)*0.5+0.5;\\\\nt6=sin(time+5.2)*0.5+0.5;\\\\n\\\\n\\\\nt8= int( sin(time*2)*2 + 3);\\\",\\\"point_eqs_eel\\\":\\\"n=sample*6.283;\\\\nphs=-sample * 0.2;\\\\ntm=q1 + phs;\\\\n\\\\nflip=flip+1;\\\\nflip=flip*below(flip,2);\\\\n\\\\nxp=0;\\\\nyp=flip*0.1 + (sin(tm)*0.5 + 0.5)*0.2 +0.1;\\\\nyp=-yp;\\\\nzp=0;\\\\n\\\\n//wrist movement;\\\\nang=sin(tm*2)*0.5 +0.5;\\\\n\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxq=xp;\\\\nyq=yp*sinang + zp*cosang;\\\\nzq=yp*cosang - zp*sinang;\\\\nyq=yp;\\\\nzq=zp;\\\\n\\\\nang=tm*8+1;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxp=xq*sinang + yq*cosang;\\\\nyp=xq*cosang - yq*sinang;\\\\nzp=zq;\\\\n\\\\n//forearm movement;\\\\nzp=zp-0.3;\\\\nang=3.14 + sin(tm*2 - 0.5)*1.5;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxq=xp;\\\\nyq=yp*sinang + zp*cosang;\\\\nzq=yp*cosang - zp*sinang;\\\\n\\\\n//upper arm twist\\\\nang=-1.0 + cos(tm*3.1 + 0.5);\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxp=xq*sinang + yq*cosang;\\\\nyp=xq*cosang - yq*sinang;\\\\nzp=zq;\\\\n\\\\n//upper arm outward;\\\\nzp=zp-0.35;\\\\nang=cos(tm*2.3)*1.75 - 1.05;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxq=xp*sinang + zp*cosang;\\\\nyq=yp;\\\\nzq=xp*cosang - zp*sinang;\\\\n\\\\n//upper arm up down;\\\\nang=cos(tm)*0.5 - 0.5;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxp=xq;\\\\nyp=yq*cosang - zq*sinang;\\\\nzp=yq*sinang + zq*cosang;\\\\n\\\\n//xp=xq;yp=yq;zp=zq;\\\\n\\\\n\\\\n//project into screenspace and draw on screen\\\\nzp=zp+2;\\\\nxs=xp/zp;\\\\nys=yp/zp;\\\\n\\\\nx=xs+0.5;\\\\ny=ys*1.3+0.5;\\\\n\\\\n\\\\na=if( equal(q8,1) , (1-sample) , sample);\\\\na=a*a;\\\\n\\\\na=a* above( sin(tm*128*t8) , 0 );\\\\n\\\\n\\\\nr=t4;\\\\ng=t5;\\\\nb=t6;\\\"}],\\\"init_eqs_eel\\\":\\\"mv_x=64;mv_y=48;\\\\nnut=0;\\\\nstp=0;stq=0;\\\\nrtp=0;rtq=0;\\\\nwvr=0;\\\\ndecay=0;\\\\ndcsp=0;\\\\nwarp=0\\\",\\\"frame_eqs_eel\\\":\\\"//krash's beat detection code\\\\nvolume = 0.3*(bass+mid+att);\\\\nbeatrate = equal(beatrate,0) + (1-equal(beatrate,0))*(below(volume,0.01) + (1-below(volume,0.01))*beatrate);\\\\nlastbeat = lastbeat + equal(lastbeat,0)*time;\\\\nmeanbass_att = 0.1*(meanbass_att*9 + bass_att);\\\\npeakbass_att = max(bass_att,peakbass_att);\\\\nbeatrate = max(if(beat,if(below(time-lastbeat,2*beatrate),0.1*(beatrate*9 + time - lastbeat),beatrate),beatrate),0.1);\\\\npeakbass_att = beat*bass_att + (1-beat)*peakbass_att*(above(time - lastbeat, 2*beatrate)*0.95 + (1-above(time - lastbeat, 2*beatrate))*0.995);\\\\nlastbeat = beat*time + (1-beat)*lastbeat;\\\\npeakbass_att = max(peakbass_att,1.1*meanbass_att);\\\\nbeat = above(volume,0.8)*below(peakbass_att - bass_att, 0.05*peakbass_att)*above(time - lastbeat, 0.1 + 0.5*(beatrate - 0.1));\\\\nbeatcounter = beatcounter + beat;\\\\nmode = if(beat*equal(beatcounter%2,0),1-mode,mode);\\\\nflip = 2*mode-1;\\\\nmonitor=flip;\\\\nq8=flip;\\\\n\\\\n\\\\ndecay=1;\\\\nzoom=1.002;\\\\n\\\\nvol=(bass_att+mid_att+treb_att)*0.25;\\\\nvol=vol*vol;\\\\nmtime=mtime+vol*0.1*flip*(55/fps);\\\\n\\\\nq1=mtime*0.4;\\\\n\\\\nwarp=0.0\\\",\\\"pixel_eqs_eel\\\":\\\"//tm=time+(sin(time)*rad);\\\\nvar=tan(time)*treb*treb;\\\\n\\\\nzoom=1+(rad/40)+(var/40);\\\\n//rot=((rad/100)*var)*sin(time);\\\",\\\"warp\\\":\\\"\\\",\\\"comp\\\":\\\"\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Flexi + Martin - astral projection.json\":\n/*!*******************************************************************!*\\\n  !*** ./presets/converted/Flexi + Martin - astral projection.json ***!\n  \\*******************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":4,\\\"gammaadj\\\":1,\\\"decay\\\":0.9,\\\"echo_zoom\\\":1,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":5.715,\\\"wave_smoothing\\\":0.9,\\\"modwavealphastart\\\":1,\\\"modwavealphaend\\\":1,\\\"warpanimspeed\\\":0.162,\\\"warpscale\\\":5.582,\\\"zoomexp\\\":0.32104,\\\"zoom\\\":0.9901,\\\"warp\\\":0.11563,\\\"wave_r\\\":0,\\\"wave_g\\\":0,\\\"wave_b\\\":0,\\\"ob_size\\\":0,\\\"ib_size\\\":0,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"ib_a\\\":1,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0,\\\"mv_b\\\":0,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"rad\\\":0.05343,\\\"tex_zoom\\\":12.77228,\\\"g\\\":1,\\\"b\\\":1,\\\"a\\\":0,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_g\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"vx = 0;\\\\nvy = 0;\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"textured\\\":1,\\\"y\\\":0.75,\\\"rad\\\":0.46753,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"w = -atan2(0.5,q1)*4+asin(1)*4;\\\\nang = w;\\\\nx = 0.5 +sin(w)*0.19;\\\\ny = 0.5 +cos(w)*0.26;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"textured\\\":1,\\\"y\\\":0.75,\\\"rad\\\":0.46753,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"w = -atan2(0.5,q1)*4+asin(1)*4 + asin(1)*2/3;\\\\nang = w;\\\\nx = 0.5 +sin(w)*0.19;\\\\ny = 0.5 +cos(w)*0.26;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"textured\\\":1,\\\"y\\\":0.75,\\\"rad\\\":0.46753,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"w = -atan2(0.5,q1)*4+asin(1)*4 - asin(1)*2/3;\\\\nang = w;\\\\nx = 0.5 +sin(w)*0.19;\\\\ny = 0.5 +cos(w)*0.26;\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"usedots\\\":1,\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":2.44415,\\\"smoothing\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\ncl = 0;\\\",\\\"frame_eqs_eel\\\":\\\"t1 = 0;\\\\nv = 0.01;\\\\nj = j + (bass)*0.01;\\\\nj2 = j2 + (mid_att)*0.01;\\\\nj3 = j3 + (treb_att)*0.01;\\\\nt2 = j;\\\\nt3 = j2;\\\\nt4 = j3;\\\\n//t5 = 0;\\\\nk = k*0.99 + 10*mid/fps;\\\\nt5 = -k;\\\\n\\\\ncl1 = cl1 - 0.0005 - bass*0.003;\\\\ncl1 = if(above(cl1,1),0,cl1);\\\\ncl1 = if(below(cl1,0),1,cl1);\\\\nt8 = cl1;\\\\n\\\\ncl2 = cl2 +0.0001 + mid*0.001 - bass*0.0005 -treb*0.0005;\\\\ncl2 = if(above(cl2,1),0,cl2);\\\\ncl2 = if(below(cl2,0),1,cl2);\\\\nt7 = cl2;\\\\n\\\\ncl3 = cl3 +0.0001+ treb*0.001 - bass*0.0005 - mid*0.0005;\\\\ncl3 = if(above(cl3,1),0,cl3);\\\\ncl3 = if(below(cl3,0),1,cl3);\\\\nt6 = cl3;\\\",\\\"point_eqs_eel\\\":\\\"xx = ((sample*0983624912364)%10000000+100)/10000000;\\\\nyy = ((xx*1896575575)%10000000+100)/10000000;\\\\nzz = ((yy*58652340875)%10000000+100)/10000000;\\\\n\\\\n\\\\nd = sqrt(sqr(xx)+sqr(yy)+sqr(zz));\\\\n\\\\nzz = zz + t8 - if(above(zz+t8,1),1,0) - 0.5;\\\\nxx = xx + t7 - if(above(xx+t7,1),1,0) - 0.5;\\\\nyy = yy + t6 - if(above(yy+t6,1),1,0) - 0.5;\\\\n\\\\nv = 0.001;\\\\n\\\\nw = 1;// (sample*sin(time*0.3)*0.01-1);\\\\nbb = d*d*0.5;\\\\nn= 0.3;\\\\ns1 = sin(sin(t2*w+bb)*n);\\\\ns2 = sin(sin(t3*w+bb)*n);\\\\ns3 = sin(sin(t4*w+bb)*n);\\\\nc1 = cos(sin(t2*w+bb)*n);\\\\nc2 = cos(sin(t3*w+bb)*n);\\\\nc3 = cos(sin(t4*w+bb)*n);\\\\n\\\\nz = (c3*s1*c2 + s3*s2)*xx - (c3*s1*s2-s3*c2)*yy + c3*c1*zz;\\\\nx1 = (c1*c2*xx + c1*s2*yy - s1*zz);\\\\ny1 = ((s3*s1*c2 - c3*s2)*xx + (s3*s1*s2+c3*c2)*yy + s3*c1*zz);\\\\n\\\\nzoom = .5*(1/(z+0.5));\\\\nx = 0.5 + zoom*x1 + sin(time*0.1)*0;;\\\\ny = 0.5 + zoom*y1 + cos(time*0.16801)*0;\\\\n\\\\npi3 = 3.1415*2*0.3333;\\\\nt = z*2+t2*1;\\\\nc=3;\\\\nr = sin(t)*c;\\\\n\\\\ng = sin(t+pi3)*c;\\\\n\\\\nb = sin(t-pi3)*c;\\\\n\\\\n\\\\nr = if(above(r,1),1,r);\\\\nr = if(below(r,0),0,r);\\\\ng = if(above(g,1),1,g);\\\\ng = if(below(g,0),0,g);\\\\nb = if(above(b,1),1,b);\\\\nb = if(below(b,0),0,b);\\\\n\\\\na = -z+0.7;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"thick\\\":1,\\\"scaling\\\":2.44415,\\\"smoothing\\\":0,\\\"a\\\":0.05},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\ncl = 0;\\\",\\\"frame_eqs_eel\\\":\\\"t8 = 1;\\\",\\\"point_eqs_eel\\\":\\\"t8 = -t8;\\\\ny = sample*0.48;\\\\nx = 0.5 + t8*0.04 - t8*sample*0.02 + (sqr(sample*2-1)-1)*q1*0.5;\\\\n\\\\npi3 = 3.1415*2*0.3333;\\\\nt = -(q4-q6)*10+sample*asin(1)*4.01;\\\\nc=9;\\\\nr = sin(t)*c;\\\\n\\\\ng = sin(t+pi3)*c;\\\\n\\\\nb = sin(t-pi3)*c;\\\\n\\\\n\\\\nr = if(above(r,1),1,r);\\\\nr = if(below(r,0),0,r);\\\\ng = if(above(g,1),1,g);\\\\ng = if(below(g,0),0,g);\\\\nb = if(above(b,1),1,b);\\\\nb = if(below(b,0),0,b);\\\\n\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"samples\\\":49,\\\"scaling\\\":2.44415,\\\"smoothing\\\":0,\\\"r\\\":0,\\\"g\\\":0,\\\"b\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\ncl = 0;\\\",\\\"frame_eqs_eel\\\":\\\"t8 = 1;\\\",\\\"point_eqs_eel\\\":\\\"t8 = -1;\\\\ny = sample*0.48;\\\\nx = 0.5 + t8*0.04 - t8*sample*0.02 + (sqr(sample*2-1)-1)*q1*0.5;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"samples\\\":49,\\\"scaling\\\":2.44415,\\\"smoothing\\\":0,\\\"r\\\":0,\\\"g\\\":0,\\\"b\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\ncl = 0;\\\",\\\"frame_eqs_eel\\\":\\\"t8 = 1;\\\",\\\"point_eqs_eel\\\":\\\"t8 = 1;\\\\ny = sample*0.48;\\\\nx = 0.5 + t8*0.04 - t8*sample*0.02 + (sqr(sample*2-1)-1)*q1*0.5;\\\"}],\\\"init_eqs_eel\\\":\\\"x1 = 0;\\\\ny1 = 0;\\\",\\\"frame_eqs_eel\\\":\\\"zoom = 1.0;\\\\n\\\\nq1 = .1*(bass-treb);\\\\n\\\\nvvb = if(below(vvb,0),0,vvb);\\\\nvvm = if(below(vvm,0),0,vvm);\\\\nvvt = if(below(vvt,0),0,vvt);\\\\nvb = vb*0.85 + (1-vb)*pow(bass,2)*0.001;\\\\nvvb = vvb*0.95 + (1-vvb)*vb*0.2;\\\\nvm = vm*0.85 + (1-vm)*pow(mid,2)*0.01;\\\\nvvm = vvm*0.95 + (1-vvm)*vm*0.2;\\\\nvt = vt*0.85 + (1-vt)*pow(treb,2)*0.001;\\\\nvvt = vvt*0.95 + (1-vvt)*vt*0.2;\\\\n\\\\nq1 = (vvb-vvt)*vvm;//0.5 + vb - vvb;\\\\nq2 = vvm;//0.5 + vm - vvm;\\\\nq3 = vvt;//0.5 + vt - vvt;\\\\n\\\\nv=0.2;\\\\nd = 0;//v*0.2;\\\\nbb = bb + vvb*v - d;\\\\nmm = mm + vvm*v - d;\\\\ntt = tt + vvt*v - d;\\\\nq4 = bb;\\\\nq5 = mm;\\\\nq6 = tt;\\\\n\\\\n\\\\nq4 = if(above(abs(q1),0.02),0.99,1);\\\\nq9 = 0.5 + 0.5*sin(time*0.14);\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec4 tmpvar_1;\\\\n  tmpvar_1.w = 1.0;\\\\n  tmpvar_1.xyz = (texture (sampler_fc_main, uv) * q4).xyz;\\\\n  ret = tmpvar_1.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec2 tmpvar_1;\\\\n  tmpvar_1.x = 0.5;\\\\n  tmpvar_1.y = (1.0 - q9);\\\\n  vec2 tmpvar_2;\\\\n  tmpvar_2 = (uv_orig - tmpvar_1);\\\\n  float tmpvar_3;\\\\n  tmpvar_3 = (3.0 / tmpvar_2.y);\\\\n  vec2 tmpvar_4;\\\\n  tmpvar_4.x = ((tmpvar_2.x * tmpvar_3) * q9);\\\\n  tmpvar_4.y = (tmpvar_3 * q9);\\\\n  vec4 tmpvar_5;\\\\n  tmpvar_5 = texture (sampler_main, fract(((1.0 - \\\\n    abs(((fract(\\\\n      ((tmpvar_2 + vec2(0.5, 1.0)) * 0.5)\\\\n    ) * 2.0) - 1.0))\\\\n  ) - (\\\\n    ((texture (sampler_noise_hq, ((tmpvar_4 * 0.05) + (vec2(0.1, -0.05) * time))) - 0.5) * float(int((tmpvar_2.y > 0.0))))\\\\n  .xy * 0.025))));\\\\n  vec4 tmpvar_6;\\\\n  tmpvar_6.w = 1.0;\\\\n  tmpvar_6.xyz = (((tmpvar_5.xyz * tmpvar_5.xyz) * 1.4) - 0.04);\\\\n  ret = tmpvar_6.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Flexi + Martin - cascading decay swing.json\":\n/*!***********************************************************************!*\\\n  !*** ./presets/converted/Flexi + Martin - cascading decay swing.json ***!\n  \\***********************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1.56,\\\"decay\\\":1,\\\"echo_zoom\\\":0.362,\\\"echo_orient\\\":1,\\\"wave_thick\\\":1,\\\"wave_brighten\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":1.599,\\\"wave_smoothing\\\":0,\\\"wave_mystery\\\":-0.5,\\\"modwavealphastart\\\":2,\\\"modwavealphaend\\\":2,\\\"warpscale\\\":0.107,\\\"zoomexp\\\":0.1584,\\\"fshader\\\":1,\\\"warp\\\":0.01,\\\"wave_r\\\":0.51,\\\"wave_g\\\":0.5,\\\"ob_size\\\":0,\\\"ob_a\\\":1,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"ib_a\\\":1,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0.5,\\\"mv_r\\\":0,\\\"mv_g\\\":0,\\\"mv_b\\\":0,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"thickoutline\\\":1,\\\"rad\\\":0.50126,\\\"tex_zoom\\\":0.99996,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"g2\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = 0.5+sin(time*0.618)*0.2;\\\\ny = 0.5+cos(time*1.618)*0.2;\\\\nrad = bass*0.05;\\\\nborder_r = 1-(sin(time*1.25)*0.3+0.7);\\\\nborder_g = 1-(sin(time)*0.3+0.3);\\\\nborder_b = 1-(sin(time/3)*0.5+0.5);\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"thickoutline\\\":1,\\\"rad\\\":0.50126,\\\"g\\\":1,\\\"b\\\":1,\\\"g2\\\":0,\\\"b2\\\":1,\\\"border_g\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = 0.5+sin(time*2.618)*0.3;\\\\ny = 0.5+cos(time*3.14)*0.3;\\\\nrad = bass*0.05;\\\\nborder_r = 1-(sin(time*1.25)*0.3+0.7);\\\\nborder_g = 1-(sin(time)*0.3+0.3);\\\\nborder_b = 1-(sin(time/3)*0.5+0.5);\\\\n\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"thickoutline\\\":1,\\\"rad\\\":0.50126,\\\"tex_zoom\\\":0.9998,\\\"g\\\":1,\\\"b\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = 0.5+sin(-time*2.618)*0.4;\\\\ny = 0.5+cos(-time*1.14)*0.4;\\\\nrad = bass*0.05;\\\\nborder_r = 1-(sin(time*1.25)*0.3+0.7);\\\\nborder_g = 1-(sin(time)*0.3+0.3);\\\\nborder_b = 1-(sin(time/3)*0.5+0.5);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"scaling\\\":0.16188,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":25.12601,\\\"smoothing\\\":1,\\\"a\\\":0.1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"//zoom = 0.99;\\\\nib_r = sin(time*1.25*4)*0.3+0.7;\\\\nib_g = sin(time*4)*0.3+0.3;\\\\nib_b = sin(time/3*4)*0.5+0.5;\\\\n\\\\nxx1 = xx1*0.9 + (bass)*0.01;\\\\nxx2 = xx2*0.9 + (treb)*0.01;\\\\nyy1 = yy1*0.94 + (treb+bass)*0.0075;\\\\n\\\\nx1 = 0.5 + (xx1-xx2)*2;\\\\ny1 = 0.4 + yy1;\\\\n\\\\nx1 = max(0,min(1,x1)); y1 = max(0,min(1,y1));\\\\n\\\\nspring = 10;\\\\ngrav = .5;\\\\nresist = 1;\\\\nbounce = 0.75;\\\\ndt = 0.0002*(60/fps);\\\\n\\\\nvx2 = vx2*(1-resist*dt) + dt*((x1+x3-2*x2)*spring);\\\\nvy2 = vy2*(1-resist*dt) + dt*((y1+y3-2*y2)*spring-grav);\\\\nvx3 = vx3*(1-resist*dt) + dt*((x2+x4-2*x3)*spring);\\\\nvy3 = vy3*(1-resist*dt) + dt*((y2+y4-2*y3)*spring-grav);\\\\nvx4 = vx4*(1-resist*dt) + dt*((x3-x4)*spring);\\\\nvy4 = vy4*(1-resist*dt) + dt*((y3-y4)*spring-grav);\\\\n\\\\nx2 = x2 + vx2;\\\\ny2 = y2 + vy2;\\\\nx3 = x3 + vx3;\\\\ny3 = y3 + vy3;\\\\nx4 = x4 + vx4;\\\\ny4 = y4 + vy4;\\\\n\\\\nvx2 = if(above(x2,0),vx2,abs(vx2)*bounce);\\\\nvx2 = if(below(x2,1),vx2,-abs(vx2)*bounce);\\\\nvx3 = if(above(x3,0),vx3,abs(vx3)*bounce);\\\\nvx3 = if(below(x3,1),vx3,-abs(vx3)*bounce);\\\\nvx4 = if(above(x4,0),vx4,abs(vx4)*bounce);\\\\nvx4 = if(below(x4,1),vx4,-abs(vx4)*bounce);\\\\nvy2 = if(above(y2,0),vy2,abs(vy2)*bounce);\\\\nvy2 = if(below(y2,1),vy2,-abs(vy2)*bounce);\\\\nvy3 = if(above(y3,0),vy3,abs(vy3)*bounce);\\\\nvy3 = if(below(y3,1),vy3,-abs(vy3)*bounce);\\\\nvy4 = if(above(y4,0),vy4,abs(vy4)*bounce);\\\\nvy4 = if(below(y4,1),vy4,-abs(vy4)*bounce);\\\\nq4 = x4;\\\\nq8 = y4;\\\\n\\\\nq1 = aspectx;\\\\nq2 = aspecty;\\\\n\\\\nzoom = 1;\\\\nwarp = 0;\\\\nbb = bb*0.99 + bass*0.02;\\\\nmm = mm*0.99 + mid*0.02;\\\\ntt = tt*0.99 + treb*0.02;\\\\n\\\\nmx = max(max(bb,mm),tt);\\\\nmn = min(min(bb,mm),tt);\\\\n\\\\nob_r = (bb-mn)/(mx-mn);\\\\nob_b = (mm-mn)/(mx-mn);\\\\nob_g = (tt-mn)/(mx-mn);\\\\nq6 = atan2(vx4,vy4);\\\\nq5 = sqrt(vx4*vx4 + vy4*vy4);\\\\n\\\\na = a*0.95 + q5;\\\\n\\\\ns = s*0.9 + a;\\\\nq3 = s*0.1;\\\\nmonitor = s;\\\\n\\\\nwave_a = 0;\\\",\\\"pixel_eqs_eel\\\":\\\"x = 0.5 + (x-0.5)*q1;\\\\ny = 0.5 + (y-0.5)*q2;\\\\n\\\\ndir = -q6*1 + asin(1)*0;\\\\n\\\\nb1 = 0.1; // distance\\\\nm1 = q5*25;//-0.6 + q5*200; // size\\\\nt1 = 0.05; // velocity\\\\n\\\\nxx = q4;\\\\nyy = 1-q8;\\\\n\\\\ndx = 0; dy = 0;\\\\n\\\\nd = sqrt((x-xx)*(x-xx)+(y-yy)*(y-yy));\\\\n\\\\nr = 0.05;\\\\nv = -35*q5;\\\\ndx = v*sin(dir)*(r-d)*(1-sigmoid(d-r,200))*q2;\\\\ndy = v*cos(dir)*(r-d)*(1-sigmoid(d-r,200))*q1;\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec4 tmpvar_1;\\\\n  tmpvar_1.w = 1.0;\\\\n  vec4 tmpvar_2;\\\\n  tmpvar_2 = texture (sampler_main, uv);\\\\n  tmpvar_1.xyz = ((texture (sampler_main, clamp (\\\\n    (uv - (((vec2(0.0, 32.0) * texsize.zw) * dot (\\\\n      (tmpvar_2.xyz - 0.35)\\\\n    , vec3(0.32, 0.49, 0.29))) * (dot (tmpvar_2.xyz, vec3(0.32, 0.49, 0.29)) - 0.4)))\\\\n  , 0.0, 1.0)).xyz - 0.0011) + ((texture (sampler_noise_lq, \\\\n    (((uv_orig * texsize.xy) * (texsize_noise_lq.zw * 1.5)) + rand_frame.xy)\\\\n  ) - 0.5) * 0.0038).xyz);\\\\n  ret = tmpvar_1.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec2 uv1_1;\\\\n  vec2 tmpvar_2;\\\\n  tmpvar_2.y = 0.0;\\\\n  tmpvar_2.x = texsize.z;\\\\n  vec2 tmpvar_3;\\\\n  tmpvar_3.x = 0.0;\\\\n  tmpvar_3.y = texsize.w;\\\\n  vec2 tmpvar_4;\\\\n  tmpvar_4.x = (texture (sampler_main, (uv - tmpvar_2)).xyz - texture (sampler_main, (uv + tmpvar_2)).xyz).x;\\\\n  tmpvar_4.y = (texture (sampler_main, (uv - tmpvar_3)).xyz - texture (sampler_main, (uv + tmpvar_3)).xyz).x;\\\\n  uv1_1 = ((0.3 * cos(\\\\n    ((uv - 0.5) * 2.0)\\\\n  )) - tmpvar_4);\\\\n  float tmpvar_5;\\\\n  tmpvar_5 = clamp ((0.04 / sqrt(\\\\n    dot (uv1_1, uv1_1)\\\\n  )), 0.0, 1.0);\\\\n  uv1_1 = ((0.3 * cos(\\\\n    (uv1_1 * 12.0)\\\\n  )) - (9.0 * tmpvar_4));\\\\n  vec4 tmpvar_6;\\\\n  tmpvar_6.w = 1.0;\\\\n  tmpvar_6.xyz = (tmpvar_5 + ((texture (sampler_main, uv).xyz * 12.0) * vec3(clamp (\\\\n    (0.04 / sqrt(dot (uv1_1, uv1_1)))\\\\n  , 0.0, 1.0))));\\\\n  ret = tmpvar_6.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Flexi + amandio c - piercing 05 - Kopie (2) - Kopie.json\":\n/*!************************************************************************************!*\\\n  !*** ./presets/converted/Flexi + amandio c - piercing 05 - Kopie (2) - Kopie.json ***!\n  \\************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":4,\\\"gammaadj\\\":1.9,\\\"echo_zoom\\\":1.169,\\\"echo_orient\\\":1,\\\"wave_mode\\\":5,\\\"additivewave\\\":1,\\\"wave_a\\\":0,\\\"wave_scale\\\":0.9,\\\"wave_smoothing\\\":0.63,\\\"wave_mystery\\\":1,\\\"modwavealphastart\\\":2,\\\"modwavealphaend\\\":2,\\\"warpscale\\\":2.853,\\\"rot\\\":0.006,\\\"warp\\\":0,\\\"wave_r\\\":0.65,\\\"wave_g\\\":0.65,\\\"wave_b\\\":0.65,\\\"ob_size\\\":0.005,\\\"mv_x\\\":0,\\\"mv_y\\\":48,\\\"mv_dx\\\":-0.941,\\\"mv_dy\\\":0.426,\\\"mv_l\\\":5,\\\"mv_r\\\":0.316,\\\"mv_g\\\":0.078,\\\"mv_b\\\":0.942,\\\"mv_a\\\":0,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"textured\\\":1,\\\"rad\\\":0.78903,\\\"ang\\\":0.62832,\\\"tex_zoom\\\":1.02009,\\\"r\\\":0,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":0.7,\\\"b2\\\":1,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"vx = 0;\\\\nvy = 0;\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"c_x = 0.5;\\\\nc_y = 0.5;\\\",\\\"frame_eqs_eel\\\":\\\"sx=1+.01*(8*bass%8)*equal(time%(int(24-2*bass)),0);\\\\nsy=1+.01*(8*mid%8) *equal(time%(12+int(24-2*bass)),0);\\\\n\\\\nq1 = aspectx;\\\\nq2 = aspecty;\\\\nrot = 0;\\\\nzoom = 1;\\\\nwarp = 0;\\\\n\\\\n\\\\nvol = bass*8 + mid*4 + treb*2;\\\\nvol = vol*above(vol,17);\\\\nmonitor = vol;\\\\nbeat = above(vol,res);\\\\ndiff = (1-beat)*diff + beat*(vol-res);\\\\nres = beat*(vol+2*diff) + (1-beat)*(res - (diff*0.04 + 0.12)*60/fps);\\\\nres = max(0,res);\\\\nmonitor = res;\\\\n\\\\nr = if(beat, 0.01*(rand(200)-100)*0.01,r);\\\\nrot = r;\\\\n\\\\nc_x = if(beat,0.5 + 0.5*(rand(200)-100)*0.01, c_x);\\\\nc_y = if(beat,0.5 + 0.5*(rand(200)-100)*0.01, c_y);\\\\n\\\\n\\\\nq23 = c_x;\\\\nq24 = c_y;\\\\n\\\\n// elastic thread code by Flexi\\\\n\\\\nxx1 = xx1*0.9 + (bass)*0.01;\\\\nxx2 = xx2*0.9 + (treb)*0.01;\\\\nyy1 = yy1*0.94 + (treb+bass)*0.0075;\\\\nx1 = 0.5 + (xx1-xx2)*2;\\\\ny1 = 0.4 + yy1*1.5;\\\\ndt = 0.03/fps;\\\\nvx2 = vx2*(1-2*dt) + dt*((x1+x3-2*x2)*10);\\\\nvy2 = vy2*(1-2*dt) + dt*((y1+y3-2*y2)*10-0.5);\\\\nvx3 = vx3*(1-2*dt) + dt*((x2+x4-2*x3)*10);\\\\nvy3 = vy3*(1-2*dt) + dt*((y2+y4-2*y3)*10-0.5);\\\\nvx4 = vx4*(1-2*dt) + dt*((x3-x4)*10);\\\\nvy4 = vy4*(1-2*dt) + dt*((y3-y4)*10-0.5);\\\\nx2 = x2 + vx2; y2 = y2 + vy2;\\\\nx3 = x3 + vx3; y3 = y3 + vy3;\\\\nx4 = x4 + vx4; y4 = y4 + vy4;\\\\nvx2 = if(above(x2,0),vx2,abs(vx2)*0.5);\\\\nvx2 = if(below(x2,1),vx2,-abs(vx2)*0.5);\\\\nvx3 = if(above(x3,0),vx3,abs(vx3)*0.5);\\\\nvx3 = if(below(x3,1),vx3,-abs(vx3)*0.5);\\\\nvx4 = if(above(x4,0),vx4,abs(vx4)*0.5);\\\\nvx4 = if(below(x4,1),vx4,-abs(vx4)*0.5);\\\\nvy2 = if(above(y2,0),vy2,abs(vy2)*0.5);\\\\nvy2 = if(below(y2,1),vy2,-abs(vy2)*0.5);\\\\nvy3 = if(above(y3,0),vy3,abs(vy3)*0.5);\\\\nvy3 = if(below(y3,1),vy3,-abs(vy3)*0.5);\\\\nvy4 = if(above(y4,0),vy4,abs(vy4)*0.5);\\\\nvy4 = if(below(y4,1),vy4,-abs(vy4)*0.5);\\\\nq1 = x1;q2 = x2;q3 = x3;q4 = x4;\\\\nq5 = y1;q6 = y2;q7 = y3;q8 = y4;\\\\nq9 = 1/aspectx;\\\\nq10 = 1/aspecty;\\\\nq11 = aspectx;\\\\nq12 = aspecty;\\\\nq13 = sqrt(vx4*vx4 + vy4*vy4)*0.8;\\\\nq14 = atan2(vx4,vy4);\\\",\\\"pixel_eqs_eel\\\":\\\"d = (pow(sqrt(sqr(x-q3)+sqr(y-q4)),2)-0);\\\\nv = 0.03;\\\\ndx = v*(x-q23)*d;\\\\ndy = v*(y-q24)*d;\\\\n\\\\n\\\\nx = 0.5 + (x-0.5)*q11;\\\\ny = 0.5 + (y-0.5)*q12;\\\\ndir = -q14*1 + asin(1)*1;\\\\n\\\\nvelocity = q13;\\\\nstrength = 100;\\\\nsize = 0.07;\\\\n\\\\nxx = q4;\\\\nyy = 1-q8;\\\\n\\\\n\\\\nx1 = xx   +cos(dir+1.5708)*size;\\\\ny1 = yy -sin(dir+1.5708)*size;\\\\n\\\\nx2 = xx   -cos(dir+1.5708)*size;\\\\ny2 = yy +sin(dir+1.5708)*size;\\\\n\\\\nd1 = sqrt((x1-x)*(x1-x)+(y1-y)*(y1-y))-size*2;\\\\nsi1 = 1- 1/(1+pow(2,-d1*100));\\\\n\\\\nd2 = sqrt((x2-x)*(x2-x)+(y2-y)*(y2-y))-size*2;\\\\nsi2 = 1- 1/(1+pow(2,-d2*100));\\\\n\\\\ndx += (si1*sin(y1-y)*d1  - si2*sin(y2-y)*d2)*strength*velocity;\\\\ndy += (-si1*sin(x1-x)*d1 + si2*sin(x2-x)*d2)*strength*velocity;\\\",\\\"warp\\\":\\\"vec2 xlat_mutabled;\\\\nvec3 xlat_mutabledx;\\\\nvec3 xlat_mutabledy;\\\\n shader_body { \\\\n  vec3 ret_1;\\\\n  vec3 tmpvar_2;\\\\n  tmpvar_2 = (texture (sampler_noise_lq, ((\\\\n    (uv_orig * texsize.xy)\\\\n   * texsize_noise_lq.zw) + rand_frame.xy)).xyz - 0.5);\\\\n  xlat_mutabled = (texsize.zw * 4.0);\\\\n  xlat_mutabledx = (((texture (sampler_blur1, \\\\n    (uv_orig + (vec2(1.0, 0.0) * xlat_mutabled))\\\\n  ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n    (uv_orig - (vec2(1.0, 0.0) * xlat_mutabled))\\\\n  ).xyz * scale1) + bias1));\\\\n  xlat_mutabledy = (((texture (sampler_blur1, \\\\n    (uv_orig + (vec2(0.0, 1.0) * xlat_mutabled))\\\\n  ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n    (uv_orig - (vec2(0.0, 1.0) * xlat_mutabled))\\\\n  ).xyz * scale1) + bias1));\\\\n  xlat_mutabled = uv;\\\\n  vec2 tmpvar_3;\\\\n  tmpvar_3.x = xlat_mutabledx.y;\\\\n  tmpvar_3.y = xlat_mutabledy.y;\\\\n  vec2 tmpvar_4;\\\\n  tmpvar_4.x = xlat_mutabledx.z;\\\\n  tmpvar_4.y = xlat_mutabledy.z;\\\\n  vec4 tmpvar_5;\\\\n  tmpvar_5 = texture (sampler_main, uv_orig);\\\\n  ret_1.y = ((texture (sampler_main, (uv - \\\\n    ((tmpvar_3 * texsize.zw) * 6.0)\\\\n  )).y - 0.008) + ((1.0 - tmpvar_5.x) * 0.018));\\\\n  ret_1.z = ((texture (sampler_main, (uv - \\\\n    ((tmpvar_4 * texsize.zw) * 6.0)\\\\n  )).z - 0.008) + (tmpvar_5.x * 0.018));\\\\n  ret_1.x = texture (sampler_fc_main, (uv + ((tmpvar_2.xy * texsize.zw) * 0.5))).x;\\\\n  ret_1.x = (ret_1.x + ((\\\\n    (ret_1.x - ((texture (sampler_blur3, uv).xyz * scale3) + bias3).x)\\\\n   * 0.15) + (tmpvar_2 * 0.0042)).x);\\\\n  vec4 tmpvar_6;\\\\n  tmpvar_6.w = 1.0;\\\\n  tmpvar_6.xyz = ret_1;\\\\n  ret = tmpvar_6.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec2 tmpvar_1;\\\\n  tmpvar_1.x = q3;\\\\n  tmpvar_1.y = q4;\\\\n  vec2 tmpvar_2;\\\\n  tmpvar_2.x = q6;\\\\n  tmpvar_2.y = q7;\\\\n  vec2 tmpvar_3;\\\\n  tmpvar_3.x = q9;\\\\n  tmpvar_3.y = q10;\\\\n  vec2 tmpvar_4;\\\\n  tmpvar_4.x = q12;\\\\n  tmpvar_4.y = q13;\\\\n  vec2 tmpvar_5;\\\\n  tmpvar_5 = (texsize.zw * 1.25);\\\\n  vec3 tmpvar_6;\\\\n  tmpvar_6 = (texture (sampler_main, (uv + (vec2(1.0, 0.0) * tmpvar_5))).xyz - texture (sampler_main, (uv - (vec2(1.0, 0.0) * tmpvar_5))).xyz);\\\\n  vec3 tmpvar_7;\\\\n  tmpvar_7 = (texture (sampler_main, (uv + (vec2(0.0, 1.0) * tmpvar_5))).xyz - texture (sampler_main, (uv - (vec2(0.0, 1.0) * tmpvar_5))).xyz);\\\\n  vec2 tmpvar_8;\\\\n  tmpvar_8.x = dot (tmpvar_6, vec3(0.32, 0.49, 0.29));\\\\n  tmpvar_8.y = dot (tmpvar_7, vec3(0.32, 0.49, 0.29));\\\\n  vec2 x_9;\\\\n  x_9 = ((uv - (tmpvar_8 * 8.0)) - tmpvar_1);\\\\n  vec2 tmpvar_10;\\\\n  tmpvar_10.x = dot (tmpvar_6, vec3(0.32, 0.49, 0.29));\\\\n  tmpvar_10.y = dot (tmpvar_7, vec3(0.32, 0.49, 0.29));\\\\n  vec2 x_11;\\\\n  x_11 = ((uv - (tmpvar_10 * 8.0)) - tmpvar_2);\\\\n  vec2 tmpvar_12;\\\\n  tmpvar_12.x = dot (tmpvar_6, vec3(0.32, 0.49, 0.29));\\\\n  tmpvar_12.y = dot (tmpvar_7, vec3(0.32, 0.49, 0.29));\\\\n  vec2 x_13;\\\\n  x_13 = ((uv - (tmpvar_12 * 8.0)) - tmpvar_3);\\\\n  vec2 tmpvar_14;\\\\n  tmpvar_14.x = dot (tmpvar_6, vec3(0.32, 0.49, 0.29));\\\\n  tmpvar_14.y = dot (tmpvar_7, vec3(0.32, 0.49, 0.29));\\\\n  vec2 x_15;\\\\n  x_15 = ((uv - (tmpvar_14 * 8.0)) - tmpvar_4);\\\\n  vec4 tmpvar_16;\\\\n  tmpvar_16.w = 1.0;\\\\n  tmpvar_16.xyz = mix (texture (sampler_main, uv).xyz, max (max (\\\\n    (vec3((1.0 - pow (sqrt(\\\\n      dot (x_9, x_9)\\\\n    ), 0.2))) * vec3(2.0, 1.0, -1.0))\\\\n  , \\\\n    (vec3((1.0 - pow (sqrt(\\\\n      dot (x_11, x_11)\\\\n    ), 0.2))) * vec3(2.0, -1.0, 1.0))\\\\n  ), max (\\\\n    (vec3((1.0 - pow (sqrt(\\\\n      dot (x_13, x_13)\\\\n    ), 0.2))) * vec3(-1.0, 1.0, 2.0))\\\\n  , \\\\n    (vec3((1.0 - pow (sqrt(\\\\n      dot (x_15, x_15)\\\\n    ), 0.2))) * vec3(1.0, -1.0, 2.0))\\\\n  )), vec3(0.5, 0.5, 0.5));\\\\n  ret = tmpvar_16.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Flexi + stahlregen - jelly showoff parade.json\":\n/*!**************************************************************************!*\\\n  !*** ./presets/converted/Flexi + stahlregen - jelly showoff parade.json ***!\n  \\**************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1,\\\"decay\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_a\\\":0.207,\\\"wave_scale\\\":0.397,\\\"wave_smoothing\\\":0,\\\"wave_mystery\\\":0.24,\\\"modwavealphaend\\\":1.17,\\\"warpscale\\\":16.016,\\\"zoomexp\\\":11.56276,\\\"zoom\\\":1.05971,\\\"warp\\\":0.13126,\\\"ob_size\\\":0.005,\\\"ob_a\\\":1,\\\"ib_size\\\":0,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0,\\\"mv_r\\\":0.35,\\\"mv_g\\\":0.35,\\\"mv_b\\\":0.35,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"decay = 1;\\\\nxx1 = xx1*0.9 + (bass)*0.01;\\\\nxx2 = xx2*0.9 + (treb)*0.01;\\\\nyy1 = yy1*0.94 + (treb+bass)*0.0075;\\\\n\\\\nx1 = 0.5 + (xx1-xx2)*1.5;\\\\ny1 = 0.5 + yy1;\\\\n\\\\n//x2 = 0;y2 = 0;x3 = 0;y3 = 0;x4 = 0;y4 = 0;\\\\n\\\\nspring = 18;\\\\ngrav = 1;\\\\nresist = 5;\\\\nbounce = 0.9;\\\\ndt = 0.0003;\\\\n\\\\nvx2 = vx2*(1-resist*dt) + dt*((x1+x3-2*x2)*spring);\\\\nvy2 = vy2*(1-resist*dt) + dt*((y1+y3-2*y2)*spring-grav);\\\\nvx3 = vx3*(1-resist*dt) + dt*((x2+x4-2*x3)*spring);\\\\nvy3 = vy3*(1-resist*dt) + dt*((y2+y4-2*y3)*spring-grav);\\\\nvx4 = vx4*(1-resist*dt) + dt*((x3-x4)*spring);\\\\nvy4 = vy4*(1-resist*dt) + dt*((y3-y4)*spring-grav);\\\\n\\\\nx2 = x2 + vx2;\\\\ny2 = y2 + vy2;\\\\nx3 = x3 + vx3;\\\\ny3 = y3 + vy3;\\\\nx4 = x4 + vx4;\\\\ny4 = y4 + vy4;\\\\n\\\\nvx2 = if(above(x2,0),vx2,abs(vx2)*bounce);\\\\nvx2 = if(below(x2,1),vx2,-abs(vx2)*bounce);\\\\nvx3 = if(above(x3,0),vx3,abs(vx3)*bounce);\\\\nvx3 = if(below(x3,1),vx3,-abs(vx3)*bounce);\\\\nvx4 = if(above(x4,0),vx4,abs(vx4)*bounce);\\\\nvx4 = if(below(x4,1),vx4,-abs(vx4)*bounce);\\\\n\\\\nvy2 = if(above(y2,0),vy2,abs(vy2)*bounce);\\\\nvy2 = if(below(y2,1),vy2,-abs(vy2)*bounce);\\\\nvy3 = if(above(y3,0),vy3,abs(vy3)*bounce);\\\\nvy3 = if(below(y3,1),vy3,-abs(vy3)*bounce);\\\\nvy4 = if(above(y4,0),vy4,abs(vy4)*bounce);\\\\nvy4 = if(below(y4,1),vy4,-abs(vy4)*bounce);\\\\n\\\\n\\\\nq1 = x1;\\\\nq2 = x2;\\\\nq3 = x3;\\\\nq4 = x4;\\\\n\\\\nq5 = y1;\\\\nq6 = y2;\\\\nq7 = y3;\\\\nq8 = y4;\\\\n\\\\nq6 = atan2(vx4,vy4);\\\\nq5 = sqrt(vx4*vx4 + vy4*vy4);\\\\n\\\\nzoom = 1.001;\\\\nrot = 0.00;\\\\nwarp = 0.2;\\\\nwave_a = 0;\\\",\\\"pixel_eqs_eel\\\":\\\"r = 0.2;\\\\ncx1 = q4;\\\\ncy1 = q5;\\\\nd = sqrt((x-cx1)*(x-cx1)+(y-cy1)*(y-cy1));\\\\ndir = -(r*r-d*d)*q3;\\\\nx1 = if( above(d,r),0,  sin(y-cy1)*dir);\\\\ny1 = if( above(d,r),0, -sin(x-cx1)*dir);\\\\nv = 1;\\\\ndx = (x1)*v;\\\\ndy = (y1)*v;\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec2 uv_1;\\\\n  vec3 ret_2;\\\\n  uv_1 = (0.5 + ((uv - 0.5) * 1.002));\\\\n  vec2 tmpvar_3;\\\\n  tmpvar_3 = (texsize.zw * 8.0);\\\\n  vec3 tmpvar_4;\\\\n  tmpvar_4 = (((texture (sampler_blur1, \\\\n    (uv_1 + (vec2(1.0, 0.0) * tmpvar_3))\\\\n  ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n    (uv_1 - (vec2(1.0, 0.0) * tmpvar_3))\\\\n  ).xyz * scale1) + bias1));\\\\n  vec3 tmpvar_5;\\\\n  tmpvar_5 = (((texture (sampler_blur1, \\\\n    (uv_1 + (vec2(0.0, 1.0) * tmpvar_3))\\\\n  ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n    (uv_1 - (vec2(0.0, 1.0) * tmpvar_3))\\\\n  ).xyz * scale1) + bias1));\\\\n  vec2 tmpvar_6;\\\\n  tmpvar_6.x = tmpvar_4.x;\\\\n  tmpvar_6.y = tmpvar_5.x;\\\\n  vec2 tmpvar_7;\\\\n  tmpvar_7 = fract(((0.5 + \\\\n    (uv_1 - 0.5)\\\\n  ) - (tmpvar_6 * texsize.zw)));\\\\n  ret_2.x = texture (sampler_main, tmpvar_7).x;\\\\n  ret_2.x = (ret_2.x + ((\\\\n    (ret_2.x - ((texture (sampler_blur2, tmpvar_7).xyz * scale2) + bias2))\\\\n  .x * 0.4) + 0.006));\\\\n  vec2 tmpvar_8;\\\\n  tmpvar_8.x = tmpvar_5.x;\\\\n  tmpvar_8.y = -(tmpvar_4.x);\\\\n  vec2 tmpvar_9;\\\\n  tmpvar_9.x = tmpvar_4.z;\\\\n  tmpvar_9.y = tmpvar_5.z;\\\\n  ret_2.z = max ((clamp (\\\\n    (((texture (sampler_blur1, uv_1).xyz * scale1) + bias1).x - 0.3)\\\\n  , 0.0, 1.0) * 2.0), (texture (sampler_fc_main, (\\\\n    (uv_1 - ((tmpvar_8 * texsize.zw) * 8.0))\\\\n   + \\\\n    ((tmpvar_9 * texsize.zw) * 4.0)\\\\n  )).z - 0.008));\\\\n  vec2 tmpvar_10;\\\\n  tmpvar_10.x = tmpvar_4.y;\\\\n  tmpvar_10.y = tmpvar_5.y;\\\\n  ret_2.y = max (ret_2.x, (texture (sampler_fc_main, (uv_1 + \\\\n    (tmpvar_10 * texsize.zw)\\\\n  )).y - 0.016));\\\\n  vec4 tmpvar_11;\\\\n  tmpvar_11.w = 1.0;\\\\n  tmpvar_11.xyz = ret_2;\\\\n  ret = tmpvar_11.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec3 ret_1;\\\\n  vec2 tmpvar_2;\\\\n  tmpvar_2 = (texsize.zw * 6.0);\\\\n  vec3 tmpvar_3;\\\\n  tmpvar_3 = (((texture (sampler_blur1, \\\\n    (uv + (vec2(1.0, 0.0) * tmpvar_2))\\\\n  ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n    (uv - (vec2(1.0, 0.0) * tmpvar_2))\\\\n  ).xyz * scale1) + bias1));\\\\n  vec3 tmpvar_4;\\\\n  tmpvar_4 = (((texture (sampler_blur1, \\\\n    (uv + (vec2(0.0, 1.0) * tmpvar_2))\\\\n  ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n    (uv - (vec2(0.0, 1.0) * tmpvar_2))\\\\n  ).xyz * scale1) + bias1));\\\\n  vec2 tmpvar_5;\\\\n  tmpvar_5.x = dot (tmpvar_3, vec3(0.32, 0.49, 0.29));\\\\n  tmpvar_5.y = dot (tmpvar_4, vec3(0.32, 0.49, 0.29));\\\\n  vec2 tmpvar_6;\\\\n  tmpvar_6 = (uv - (0.25 * tmpvar_5));\\\\n  vec2 tmpvar_7;\\\\n  tmpvar_7.x = dot (tmpvar_3, vec3(0.32, 0.49, 0.29));\\\\n  tmpvar_7.y = dot (tmpvar_4, vec3(0.32, 0.49, 0.29));\\\\n  vec2 tmpvar_8;\\\\n  tmpvar_8 = (uv + (0.25 * tmpvar_7));\\\\n  ret_1 = ((0.8 * (\\\\n    (texture (sampler_blur3, tmpvar_6).xyz * scale3)\\\\n   + bias3)) - ((texture (sampler_blur1, tmpvar_6).xyz * scale1) + bias1));\\\\n  ret_1 = (ret_1 + (0.6 * (\\\\n    (texture (sampler_blur1, uv).xyz * scale1)\\\\n   + bias1)));\\\\n  ret_1 = (ret_1 - ((\\\\n    (texture (sampler_blur2, tmpvar_8).xyz * scale2)\\\\n   + bias2) - (\\\\n    (texture (sampler_blur1, tmpvar_8).xyz * scale1)\\\\n   + bias1)));\\\\n  ret_1 = (ret_1 + ((1.2 * texture (sampler_main, tmpvar_8).xyz) + (0.15 * \\\\n    ((texture (sampler_blur1, tmpvar_8).xyz * scale1) + bias1)\\\\n  )));\\\\n  ret_1 = (ret_1 + 1.0);\\\\n  float tmpvar_9;\\\\n  tmpvar_9 = dot (ret_1, vec3(0.32, 0.49, 0.29));\\\\n  ret_1 = (mix (vec3(tmpvar_9), (\\\\n    (0.75 * vec3(tmpvar_9))\\\\n   * \\\\n    dot ((((0.6 * \\\\n      ((texture (sampler_blur3, tmpvar_6).xyz * scale3) + bias3)\\\\n    ) - (0.7 * texture (sampler_main, uv).xyz)) - (0.3 * (\\\\n      (texture (sampler_blur1, tmpvar_8).xyz * scale1)\\\\n     + bias1))), vec3(0.32, 0.49, 0.29))\\\\n  ), pow (hue_shader, vec3(tmpvar_9))) * 0.9);\\\\n  ret_1 = (ret_1 * ret_1);\\\\n  vec3 tmpvar_10;\\\\n  tmpvar_10 = sqrt(ret_1);\\\\n  ret_1 = tmpvar_10;\\\\n  vec4 tmpvar_11;\\\\n  tmpvar_11.w = 1.0;\\\\n  tmpvar_11.xyz = tmpvar_10;\\\\n  ret = tmpvar_11.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Flexi - alien fish pond.json\":\n/*!********************************************************!*\\\n  !*** ./presets/converted/Flexi - alien fish pond.json ***!\n  \\********************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":4,\\\"gammaadj\\\":1,\\\"wave_thick\\\":1,\\\"wrap\\\":0,\\\"wave_a\\\":0.004,\\\"wave_scale\\\":9.731,\\\"wave_smoothing\\\":0,\\\"wave_mystery\\\":1,\\\"modwavealphastart\\\":1,\\\"modwavealphaend\\\":1,\\\"warpanimspeed\\\":0.442,\\\"warpscale\\\":7.315,\\\"zoomexp\\\":1.50374,\\\"warp\\\":0.08563,\\\"wave_y\\\":0.04,\\\"ob_size\\\":0,\\\"ob_g\\\":1,\\\"ob_a\\\":1,\\\"ib_size\\\":0,\\\"ib_r\\\":1,\\\"ib_g\\\":0,\\\"ib_b\\\":0.75,\\\"ib_a\\\":1,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0,\\\"mv_b\\\":0,\\\"mv_a\\\":0,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"sides\\\":41,\\\"additive\\\":1,\\\"num_inst\\\":50,\\\"rad\\\":0.01,\\\"ang\\\":3.20442,\\\"tex_zoom\\\":6.23873,\\\"g\\\":1,\\\"b\\\":1,\\\"a\\\":0,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_a\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"index = instance*q32;\\\\n\\\\nx = gmegabuf(index);\\\\ny = gmegabuf(index+1);\\\\n\\\\nang = gmegabuf(index+9);\\\\nrad = gmegabuf(index+4)*2;\\\\n\\\\nr = gmegabuf(index+5);\\\\ng = gmegabuf(index+6);\\\\nb = gmegabuf(index+7);\\\\n\\\\nr2 = r; g2 = g; b2 = b;\\\\n\\\\n\\\\nx = 0.5 + (x-0.5)/q2;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":23,\\\"additive\\\":1,\\\"num_inst\\\":50,\\\"x\\\":0.74,\\\"y\\\":0.27,\\\"rad\\\":0.01,\\\"tex_zoom\\\":0.81948,\\\"g\\\":1,\\\"b\\\":1,\\\"g2\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"vx = 0\\\",\\\"frame_eqs_eel\\\":\\\"sample = instance/(num_inst-1);\\\\n\\\\nx1 = 0.5;\\\\ny1 = 0.5 + (q3-0.5)*0.01;\\\\ny2 = 0.5;\\\\nx = x1 + (sample-0.5)*0.2;\\\\ny = y2*sample + y1*(1-sample);\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"additive\\\":1,\\\"rad\\\":0.0999,\\\"tex_zoom\\\":0.73458,\\\"r\\\":0,\\\"g\\\":1,\\\"a\\\":0,\\\"border_a\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"vx = 0\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":3,\\\"additive\\\":1,\\\"num_inst\\\":400,\\\"rad\\\":0.16283,\\\"tex_zoom\\\":0.73458,\\\"g\\\":1,\\\"b\\\":1,\\\"a\\\":0.5,\\\"g2\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"i3 = 0;\\\\ni4 = 0;\\\",\\\"frame_eqs_eel\\\":\\\"i3 = if(equal(instance,0),0,i3);\\\\ni4 = if(equal(instance,0),0,i4);\\\\nppo = 8;\\\\nindex = i4*q32;\\\\nsample = i3 % ppo;\\\\n\\\\nsize = gmegabuf(index+4)*40;\\\\n\\\\nx = gmegabuf(index);\\\\ny = gmegabuf(index+1);\\\\n\\\\nang = gmegabuf(index+9);\\\\nrad = size*0.05;\\\\n\\\\nr = gmegabuf(index+5);\\\\ng = gmegabuf(index+6);\\\\nb = gmegabuf(index+7);\\\\n\\\\n\\\\nsample = sample/ppo;\\\\nbending = gmegabuf(index + 12)*5 + gmegabuf(index + 10)*5;\\\\ndir = -ang + (sample-0.4)*bending;\\\\n\\\\n ang =  asin(1)*1.5 - dir + bending*0.05;\\\\n\\\\nx = x + ((sample-0.3)*0.06*cos(dir)*size + sin(dir)*size*bending*0.01);\\\\ny = y + ((sample-0.3)*0.06*sin(dir)*size - cos(dir)*size*bending*0.01);\\\\n\\\\nx = 0.5 + (x-0.5)/q2;\\\\n\\\\nrad = rad*1.5 - sample*0.05*size;\\\\n\\\\ni3 = i3 + 1;\\\\ni4 = if( equal(i3%ppo,0), i4 +1, i4);\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"samples\\\":452,\\\"additive\\\":1,\\\"scaling\\\":2.44415,\\\"smoothing\\\":0,\\\"a\\\":0.15,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\ncl = 0;\\\",\\\"frame_eqs_eel\\\":\\\"t1 = 0;\\\\nt2 = 0;\\\",\\\"point_eqs_eel\\\":\\\"ppo = 9;\\\\nindex = t2*q32;\\\\nsample = t1 % ppo;\\\\n\\\\nnindex = gmegabuf(index + q30); // the next neighbor's index\\\\nnnindex = gmegabuf(index + q30+1); // the next neighbor's index\\\\nnnnindex = gmegabuf(index + q30+2); // the next neighbor's index\\\\n\\\\nx = gmegabuf(index);\\\\ny = gmegabuf(index+1);\\\\nr = 0.5 + gmegabuf(index+5)*0.5;\\\\ng = 0.5 + gmegabuf(index+6)*0.5;\\\\nb = 0.5 + gmegabuf(index+7)*0.5;\\\\n\\\\nnx = gmegabuf(nindex);\\\\nny = gmegabuf(nindex+1);\\\\nnnx = gmegabuf(nnindex);\\\\nnny = gmegabuf(nnindex+1);\\\\nnnnx = gmegabuf(nnnindex);\\\\nnnny = gmegabuf(nnnindex+1);\\\\n\\\\nx = 0.5 + (x-0.5)/q2;\\\\ny = 0.5 + (y-0.5)/q2;\\\\nnx = 0.5 + (nx-0.5)/q2;\\\\nny = 0.5 + (ny-0.5)/q2;\\\\nnnx = 0.5 + (nnx-0.5)/q2;\\\\nnny = 0.5 + (nny-0.5)/q2;\\\\nnnnx = 0.5 + (nnnx-0.5)/q2;\\\\nnnny = 0.5 + (nnny-0.5)/q2;\\\\n\\\\nx = if( equal(sample,2), nx, x);\\\\ny = if( equal(sample,2), ny, y);\\\\nx = if( equal(sample,4), nnx, x);\\\\ny = if( equal(sample,4), nny, y);\\\\nx = if( equal(sample,6), nnnx, x);\\\\ny = if( equal(sample,6), nnny, y);\\\\n\\\\na = above(sample,1)*below(sample,ppo-1)*a;\\\\n\\\\nt1 = t1 + 1;\\\\nt2 = if( equal(t1%ppo,0), t2 +1, t2);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"samples\\\":65,\\\"spectrum\\\":1,\\\"usedots\\\":1,\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":0.33408,\\\"smoothing\\\":0,\\\"a\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\ncl = 0;\\\",\\\"frame_eqs_eel\\\":\\\"t8 = 1;\\\\n\\\\nt1 = 0.5;\\\\nt2 = 0.9;\\\",\\\"point_eqs_eel\\\":\\\"d = 0;//d*0.85 + (value1)*1;\\\\n\\\\ny = 0.2 + value1+value2;\\\\nx = 0.9 - sample*0.8;\\\\n\\\\ngmegabuf((sample*64-1)*q32 + 14) = value1 + value2;\\\"},{\\\"baseVals\\\":{\\\"samples\\\":280,\\\"additive\\\":1,\\\"scaling\\\":5.92556,\\\"smoothing\\\":0,\\\"a\\\":0.5,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"t1 = 0;\\\\nt2 = 0;\\\\n\\\\n\\\",\\\"point_eqs_eel\\\":\\\"// q32 number of attributes\\\\n// q31 number of objects\\\\n\\\\nppo = 7; // number of points used for each object\\\\nindex = t2*q32; // object's index\\\\n\\\\nx = 0.5 +(gmegabuf(index)-0.5)/q2;\\\\ny = 0.5 + (gmegabuf(index+1)-0.5)/q2;\\\\n\\\\n// collecting pairs of index and distance to the current object in a local buffer\\\\ni = 0;\\\\nj = 0;\\\\nloop(q31,\\\\n     d = sqrt( sqr(gmegabuf(index)-gmegabuf(i)) + sqr(gmegabuf(index+1)-gmegabuf(i+1)));\\\\n     d = if( equal(d,0), 1, d);\\\\n     megabuf(j)   = i; // store index/distance pairs\\\\n     megabuf(j+1) = d;\\\\n     j = j+2;\\\\n     i = i+q32;\\\\n    );\\\\n\\\\n// sort that buffer, but only 5 cycles for the 5 nearest objects\\\\ni = 0;\\\\nloop( 5,\\\\n      j = i;\\\\n      smallestfind = 100;\\\\n      findindex = 0;\\\\n      loop( q31-j,\\\\n            distance =megabuf(j*2+1);\\\\n            smaller = above( smallestfind, distance);\\\\n            smallestfind = if(smaller, distance, smallestfind);\\\\n            findindex = if( smaller, j*2, findindex);\\\\n            j = j + 1;\\\\n          );\\\\n\\\\n      // now that the nearest object was found, swap it to the buffer's top\\\\n\\\\n      j = megabuf(i);\\\\n      d = megabuf(i+1);\\\\n\\\\n      megabuf(i)   = megabuf(findindex);\\\\n      megabuf(i+1) = megabuf(findindex+1);\\\\n      megabuf(findindex)   = j;\\\\n      megabuf(findindex+1) = d;\\\\n\\\\n      i = i+1;\\\\n    );\\\\n\\\\n\\\\nindex2 = (t1)%ppo;\\\\ni = megabuf(index2-2);\\\\nxx = 0.5 + (gmegabuf(i)-0.5)/q2;\\\\nyy = 0.5 + (gmegabuf(i+1)-0.5)/q2;\\\\nw = asin(1)*index2/4;\\\\n//xx = x + sin(w)*0.1;\\\\n//yy = y + cos(w)*0.1;\\\\nx = if( equal(index2%2,0), x, xx);\\\\ny = if( equal(index2%2,0), y, yy);\\\\n\\\\n\\\\na = below(index2,ppo-1)*above(index2,1)*a;\\\\nr = 0.5 + gmegabuf(index + 5)*0.5;\\\\ng = 0.5 + gmegabuf(index + 6)*0.5;\\\\nb = 0.5 + gmegabuf(index + 7)*0.5;\\\\n\\\\n\\\\nt2 = t2 + equal(t1%ppo,ppo-1);\\\\nt1 = t1 + 1;\\\\n\\\\n//a = above(t1,128);\\\"},{\\\"baseVals\\\":{\\\"samples\\\":15,\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":5.92556,\\\"smoothing\\\":0,\\\"a\\\":0.4,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0\\\",\\\"frame_eqs_eel\\\":\\\"t1 = 0;\\\\nt2 = 0;\\\\nt3 = 0;\\\\nt4 = 0.5;\\\",\\\"point_eqs_eel\\\":\\\"ppo = 5;\\\\n\\\\nindex = t2*q32;\\\\nneighbor = 1;\\\\nneighbor = gmegabuf(index+10+neighbor);\\\\nx = 0.5 + (gmegabuf(index)-0.5)/q2;\\\\ny = 0.5 + (gmegabuf(index+1)-0.5)/q2;\\\\nxx = 0.5 + ( gmegabuf(neighbor) - 0.5)/q2;\\\\nyy = 0.5 + ( gmegabuf(neighbor+1) - 0.5)/q2;\\\\n\\\\nx = if( equal(t1 % 2, 0), x, xx);\\\\ny = if( equal(t1 % 2, 0), y, yx);\\\\n\\\\n\\\\nt2 = t2 + equal(t1,ppo);\\\\nt1 = if(above(t1,ppo),t1-ppo,t1) + 1;\\\\n\\\"}],\\\"init_eqs_eel\\\":\\\"// clear buffer\\\\ni = 0; loop(1024*1024, gmegabuf(i) = 0; i = i+1;);\\\\n\\\\ncount = 50;\\\\nattributes = 32;\\\\nnListStart = 24; // starting index of neighbor list\\\\n\\\\nminradius = 0.004;\\\\nmaxradius = 0.04;\\\\nv = 0.0;\\\\n\\\\n// randomize initial coordinates\\\\nindex = 0;\\\\nloop(count,\\\\n     gmegabuf(index*attributes) = rand(1000)/1000;\\\\n     gmegabuf(index*attributes+1) = rand(1000)/1000;\\\\n     gmegabuf(index*attributes+2) = v*(rand(1000)/1000-0.5);\\\\n     gmegabuf(index*attributes+3) = v*(rand(1000)/1000-0.5);\\\\n     gmegabuf(index*attributes+4) = minradius + (maxradius-minradius)*(index+1)/count;\\\\n     gmegabuf(index*attributes+5) = 0;\\\\n     gmegabuf(index*attributes+6) = 1;\\\\n     gmegabuf(index*attributes+7) = 1;\\\\n     gmegabuf(index*attributes+8) = pow(gmegabuf(index*attributes+4),3) ;\\\\n     gmegabuf(index*attributes+9) = 4*asin(1)*rand(1000)/1000;\\\\n     gmegabuf(index*attributes+10) = 0;\\\\n     gmegabuf(index*attributes+13) = index/(count-1);\\\\n     gmegabuf(index*attributes+14) = 0;\\\\n     index = index+1;\\\\n    );\\\\n\\\\nq30 = nListStart;\\\\nq31 = count;\\\\nq32 = attributes;\\\\n\\\\n// 0, x\\\\n// 1, y\\\\n// 2, vx\\\\n// 3, vy\\\\n// 4, radius\\\\n// 5, red\\\\n// 6, green\\\\n// 7, blue\\\\n// 8, mass\\\\n// 9, angle\\\\n// 10, rotation\\\\n// 11, bend force\\\\n// 12, bending\\\\n// 13, sample\\\\n// 14, spectrum\\\",\\\"frame_eqs_eel\\\":\\\"dt = 1/fps;\\\\n\\\\nwarp = 0;\\\\nzoom = 1;\\\\nwave_a = 0;\\\\n\\\\ngravity = 0.0015*dt*0;\\\\ndampening = 0;\\\\nfriction = 2048*dt;\\\\nshock = 0.002;\\\\npi2 = asin(1);\\\\n\\\\nnn = 3; // number of nearest neighbors to search, reduce if not needed\\\\n        // provide enough attributes, otherwise the next object's coordinate will be overwritten\\\\n        // collision detection is based on nearest neighbors, so keep it at least at 1.\\\\n\\\\ncheck = 2; // how many neighbors will be checked for a possible collision. may not be above nn.\\\\n           // raise to avoid odd behavior in clusters of touching objects.\\\\n\\\\nbouncefactor = 0.1;\\\\nrotatefactor = 0; // relation between angular and translative momentum, when object hits a border. this is an empirical value for a convincing impression\\\\n\\\\n\\\\n\\\\nh = (aspecty-1)*0.5; w = (aspectx-1)*0.5;\\\\nindex = 0; index2 = 0;\\\\nloop(count,\\\\n\\\\n     random = rand(1000)/1000;\\\\n     sample = gmegabuf(index+13);\\\\n\\\\n     // bend force\\\\n     gmegabuf(index + 11) = gmegabuf(index + 11)*0.92 - 4*gmegabuf(index+12)*dt + 2*(random-0.5)*dt*gmegabuf(index+14);\\\\n\\\\n     // bend\\\\n     gmegabuf(index + 12) += 60*gmegabuf(index + 11)*dt;\\\\n\\\\n     v = sqrt( sqr( gmegabuf(index + 2) ) + sqr( gmegabuf(index + 3) ) );\\\\n\\\\n     // apply friction\\\\n     fric = max(0,1 - sqr(v*friction) - v*2);\\\\n     gmegabuf(index + 2) *= fric;\\\\n     gmegabuf(index + 3) *= fric;\\\\n\\\\n     // apply direction change\\\\n     gmegabuf(index + 10) = gmegabuf(index + 10)*fric +  v*gmegabuf(index +12)*0;\\\\n\\\\n     // apply acceleration force\\\\n     acceleration = random*0.000 + abs(gmegabuf(index+11))*0.003;\\\\n     direction = gmegabuf(index + 9) - pi2;\\\\n     gmegabuf(index + 2) += sin(direction)*acceleration;\\\\n     gmegabuf(index + 3) += cos(direction)*acceleration;\\\\n\\\\n     // adding velocity vectors\\\\n     gmegabuf(index) = gmegabuf(index) + gmegabuf(index+2)*60*dt;\\\\n     gmegabuf(index+1) = gmegabuf(index+1) + gmegabuf(index+3)*60*dt;\\\\n     gmegabuf(index+9) = gmegabuf(index+9) + gmegabuf(index+10)*0.5;\\\\n\\\\n     // applying gravity\\\\n     gmegabuf(index+3) = gmegabuf(index+3) - gravity;\\\\n\\\\n     vr = sin(gmegabuf(index+10))*gmegabuf(index+4); // rotation speed at the surface\\\\n\\\\n     // bounce off ceiling\\\\n     bounce = above( gmegabuf(index+1), 1 - gmegabuf(index+4) + w);\\\\n     gmegabuf(index+2) = if( bounce, gmegabuf(index+2) + (vr+gmegabuf(index+2))*rotatefactor, gmegabuf(index+2));\\\\n     gmegabuf(index+3) = if( bounce, -abs(gmegabuf(index+3))*dampening - shock, gmegabuf(index+3));\\\\n     vr = if( bounce, vr - (gmegabuf(index+2) + vr)*(1-rotatefactor), vr);\\\\n\\\\n     // bounce off floor\\\\n     bounce = below( gmegabuf(index+1), gmegabuf(index+4) - w);\\\\n     gmegabuf(index+2) = if( bounce, gmegabuf(index+2) + (vr-gmegabuf(index+2))*rotatefactor, gmegabuf(index+2));\\\\n     gmegabuf(index+3) = if( bounce, abs(gmegabuf(index+3))*dampening + shock, gmegabuf(index+3));\\\\n     vr = if( bounce, vr + (gmegabuf(index+2) - vr)*(1-rotatefactor), vr);\\\\n\\\\n     // bounce off right border\\\\n     bounce = above( gmegabuf(index), 1 - gmegabuf(index+4) + h);\\\\n     gmegabuf(index+2) = if( bounce, -abs(gmegabuf(index+2))*dampening - shock, gmegabuf(index+2));\\\\n     gmegabuf(index+3) = if( bounce, gmegabuf(index+3) + (vr-gmegabuf(index+3))*rotatefactor, gmegabuf(index+3));\\\\n     vr = if( bounce, vr + (gmegabuf(index+3) - vr)*(1-rotatefactor), vr);\\\\n\\\\n     // bounce off left border\\\\n     bounce = below( gmegabuf(index), gmegabuf(index+4) - h);\\\\n     gmegabuf(index+2) = if( bounce, abs(gmegabuf(index+2))*dampening + shock, gmegabuf(index+2));\\\\n     gmegabuf(index+3) = if( bounce, gmegabuf(index+3) - (vr+gmegabuf(index+3))*rotatefactor, gmegabuf(index+3));\\\\n     vr = if( bounce, vr - (gmegabuf(index+3) + vr)*(1-rotatefactor), vr);\\\\n\\\\n     gmegabuf(index+10) = asin(vr/gmegabuf(index+4));\\\\n\\\\n     i = 0; j = 0; // collecting pairs of index and distance to the current object in a local buffer\\\\n     loop( count,\\\\n           d = sqrt( sqr(gmegabuf(index)-gmegabuf(i)) + sqr(gmegabuf(index+1)-gmegabuf(i+1)));\\\\n           d = if( equal(d,0), 10, d); // leave out comparison with itself (where d == 0, set d to a high value)\\\\n           d = d - (gmegabuf(index+4)+gmegabuf(i+4))*0.5; // subtract radius (surface to surface distance)\\\\n           megabuf(j)   = i; // store index/distance pairs\\\\n           megabuf(j+1) = d;\\\\n           j = j+2;\\\\n           i = i+attributes; );\\\\n     i = 0; // sort that buffer, but only as many cycles as needed for the _nn_ nearest neighbors\\\\n     loop( nn,\\\\n           j = i; smallestfind = 10; findindex = -1;\\\\n           loop( count-j,\\\\n                 distance =megabuf(j*2+1);\\\\n                 smaller = above( smallestfind, distance);\\\\n                 smallestfind = if(smaller, distance, smallestfind);\\\\n                 findindex = if( smaller, j*2, findindex);\\\\n                 j = j + 1; );\\\\n           j = megabuf(i*2); d = megabuf(i*2+1);\\\\n           megabuf(i*2)   = megabuf(findindex);\\\\n           megabuf(i*2+1) = megabuf(findindex+1);\\\\n           megabuf(findindex)   = j;\\\\n           megabuf(findindex+1) = d;\\\\n           i = i+1;\\\\n         );\\\\n     i = 0; // storing the indexes of the nearest neighbors in the list\\\\n     loop( nn,\\\\n           gmegabuf(index + nListStart + i) = megabuf(i*2);\\\\n           i = i +1;\\\\n         );\\\\n     i = 0; // collision detection and impulse transmission below\\\\n     loop( check,\\\\n           index2 = megabuf(i);\\\\n           hit = below( sqrt( sqr( gmegabuf(index) - gmegabuf(index2)) +\\\\n                              sqr( gmegabuf(index+1) - gmegabuf(index2+1))),\\\\n                        gmegabuf(index + 4) + gmegabuf(index2 + 4)\\\\n                      )\\\\n                 *\\\\n                 above( sqrt( sqr( gmegabuf(index)   - gmegabuf(index2))+\\\\n                        sqr( gmegabuf(index+1) - gmegabuf(index2+1))),\\\\n                        sqrt( sqr( gmegabuf(index+0) - gmegabuf(index2+0)+\\\\n                                   gmegabuf(index+2) - gmegabuf(index2+2))+\\\\n                              sqr( gmegabuf(index+1) - gmegabuf(index2+1)+\\\\n                                   gmegabuf(index+3) - gmegabuf(index2+3)) ) );\\\\n           ref_ang = atan2( gmegabuf(index2)-gmegabuf(index), // calculating the angle of the common tangent\\\\n                            gmegabuf(index2 + 1)-gmegabuf(index + 1)) + pi2;\\\\n           v1 = sqrt(sqr( gmegabuf(index + 2)) + sqr( gmegabuf(index + 3))); // velocity of object1\\\\n           v2 = sqrt(sqr( gmegabuf(index2 + 2)) + sqr( gmegabuf(index2 + 3)));  // velocity of object2\\\\n           w1 = atan2( gmegabuf(index + 2), gmegabuf(index + 3));   // object1 motion angle\\\\n           w2 = atan2( gmegabuf(index2 + 2), gmegabuf(index2 + 3)); // object2 motion angle\\\\n           vr2 = sin(gmegabuf(index2 + 10))*gmegabuf(index2+4); // the other object's surface velocity\\\\n           m1 = gmegabuf(index + 8); m2 = gmegabuf(index2 + 8);\\\\n           vv1 = ((m1-m2)*v1 + 2*m2*v2)/(m1+m2); vv2 = ((m2-m1)*v2 + 2*m1*v1)/(m1+m2);\\\\n           vrr = ((m1-m2)*vr + 2*m2*vr2)/(m1+m2); vrr2 = ((m2-m1)*vr2 + 2*m1*vr)/(m1+m2);\\\\n\\\\n           gmegabuf( index + 2) = if( hit, sin(ref_ang)*v1*cos(w1-ref_ang) + ((vr-vr2)-sin(ref_ang)*v1*cos(w1-ref_ang))*0.1\\\\n                                         + cos(ref_ang)*vv1*sin(w2-ref_ang),\\\\n                                                  gmegabuf( index + 2) );\\\\n\\\\n           gmegabuf( index + 3) = if( hit, cos(ref_ang)*v1*cos(w1-ref_ang) + ((vr-vr2)-cos(ref_ang)*v1*cos(w1-ref_ang))*0.1\\\\n                                         - sin(ref_ang)*vv1*sin(w2-ref_ang),\\\\n                                                 gmegabuf( index + 3) );\\\\n\\\\n           gmegabuf( index2 + 2) = if( hit, sin(ref_ang)*v2*cos(w2-ref_ang) + ((vr2-vr)-sin(ref_ang)*v2*cos(w2-ref_ang))*0.1\\\\n                                          + cos(ref_ang)*vv2*sin(w1-ref_ang),\\\\n                                                  gmegabuf( index2 + 2) );\\\\n\\\\n           gmegabuf( index2 + 3) = if( hit, cos(ref_ang)*v2*cos(w2-ref_ang) + ((vr2-vr)-cos(ref_ang)*v2*cos(w2-ref_ang))*0.1\\\\n                                          - sin(ref_ang)*vv2*sin(w1-ref_ang),\\\\n                                                  gmegabuf( index2 + 3) );\\\\n\\\\n           vr = if( hit, vr + (cos(w1-ref_ang)*(v1-v2)-vr) , vr);\\\\n           gmegabuf( index + 10) = asin( vr / gmegabuf(index+4) );\\\\n\\\\n           vr2 = if( hit, vr2 + (cos(w2-ref_ang)*(v2-v1)-vr2) , vr2);\\\\n           gmegabuf( index2 + 10) = asin( vr2 / gmegabuf(index2+4) );\\\\n\\\\n           i=i+2;\\\\n         );\\\\n     index = index+attributes;\\\\n    );\\\\n\\\\n\\\\nq1 = aspectx;\\\\nq2 = aspecty;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec3 ret_1;\\\\n  ret_1.z = (texture (sampler_main, uv).z * 0.5);\\\\n  vec2 tmpvar_2;\\\\n  tmpvar_2 = ((uv_orig * texsize.xy) * texsize_noise_lq.zw);\\\\n  vec2 tmpvar_3;\\\\n  tmpvar_3 = (texsize.zw * 4.0);\\\\n  vec2 tmpvar_4;\\\\n  tmpvar_4.x = (((2.0 * \\\\n    ((texture (sampler_blur1, (uv_orig + (vec2(1.0, 0.0) * tmpvar_3))).xyz * scale1) + bias1)\\\\n  ) - (2.0 * \\\\n    ((texture (sampler_blur1, (uv_orig - (vec2(1.0, 0.0) * tmpvar_3))).xyz * scale1) + bias1)\\\\n  )).y * 0.5);\\\\n  tmpvar_4.y = (((2.0 * \\\\n    ((texture (sampler_blur1, (uv_orig + (vec2(0.0, 1.0) * tmpvar_3))).xyz * scale1) + bias1)\\\\n  ) - (2.0 * \\\\n    ((texture (sampler_blur1, (uv_orig - (vec2(0.0, 1.0) * tmpvar_3))).xyz * scale1) + bias1)\\\\n  )).y * 0.5);\\\\n  ret_1.y = texture (sampler_fw_main, clamp ((uv_orig + (\\\\n    (tmpvar_4 * texsize.zw)\\\\n   * 4.0)), 0.0, 1.0)).y;\\\\n  ret_1.y = (ret_1.y + ((\\\\n    (ret_1 - ((texture (sampler_blur1, uv_orig).xyz * scale1) + bias1))\\\\n  .y * 0.025) + -0.014));\\\\n  ret_1.y = (ret_1.y + ((texture (sampler_noise_lq, tmpvar_2).y - 0.5) * 0.02));\\\\n  vec2 tmpvar_5;\\\\n  tmpvar_5.x = (((2.0 * \\\\n    ((texture (sampler_blur1, (uv_orig + (vec2(1.0, 0.0) * tmpvar_3))).xyz * scale1) + bias1)\\\\n  ) - (2.0 * \\\\n    ((texture (sampler_blur1, (uv_orig - (vec2(1.0, 0.0) * tmpvar_3))).xyz * scale1) + bias1)\\\\n  )).x * 0.5);\\\\n  tmpvar_5.y = (((2.0 * \\\\n    ((texture (sampler_blur1, (uv_orig + (vec2(0.0, 1.0) * tmpvar_3))).xyz * scale1) + bias1)\\\\n  ) - (2.0 * \\\\n    ((texture (sampler_blur1, (uv_orig - (vec2(0.0, 1.0) * tmpvar_3))).xyz * scale1) + bias1)\\\\n  )).x * 0.5);\\\\n  ret_1.x = ((texture (sampler_main, (uv - \\\\n    ((tmpvar_5 * texsize.zw) * 4.0)\\\\n  )).x - (ret_1.y * 0.01)) + 0.004);\\\\n  ret_1.x = (ret_1.x + ((\\\\n    (texture (sampler_noise_lq, tmpvar_2).x - 0.5)\\\\n   * 0.01) + (ret_1.z * 0.14)));\\\\n  vec4 tmpvar_6;\\\\n  tmpvar_6.w = 1.0;\\\\n  tmpvar_6.xyz = ret_1;\\\\n  ret = tmpvar_6.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec3 ret_1;\\\\n  vec2 tmpvar_2;\\\\n  tmpvar_2 = (texsize.zw * 4.0);\\\\n  vec2 tmpvar_3;\\\\n  tmpvar_3.x = (((2.0 * \\\\n    ((texture (sampler_blur1, (uv + (vec2(1.0, 0.0) * tmpvar_2))).xyz * scale1) + bias1)\\\\n  ) - (2.0 * \\\\n    ((texture (sampler_blur1, (uv - (vec2(1.0, 0.0) * tmpvar_2))).xyz * scale1) + bias1)\\\\n  )) * 0.5).y;\\\\n  tmpvar_3.y = (((2.0 * \\\\n    ((texture (sampler_blur1, (uv + (vec2(0.0, 1.0) * tmpvar_2))).xyz * scale1) + bias1)\\\\n  ) - (2.0 * \\\\n    ((texture (sampler_blur1, (uv - (vec2(0.0, 1.0) * tmpvar_2))).xyz * scale1) + bias1)\\\\n  )) * 0.5).y;\\\\n  vec2 tmpvar_4;\\\\n  tmpvar_4 = (uv - ((tmpvar_3 * texsize.zw) * 128.0));\\\\n  vec4 tmpvar_5;\\\\n  tmpvar_5 = texture (sampler_main, uv);\\\\n  ret_1 = (((\\\\n    ((texture (sampler_blur2, tmpvar_4).xyz * scale2) + bias2)\\\\n  .x * \\\\n    clamp ((1.0 - tmpvar_5.y), 0.0, 1.0)\\\\n  ) * pow (hue_shader.yxz, vec3(8.0, 8.0, 8.0))) * 3.0);\\\\n  ret_1 = (mix (mix (ret_1, \\\\n    (pow (hue_shader.yzx, vec3(8.0, 8.0, 8.0)) * 1.4)\\\\n  , vec3(\\\\n    ((texture (sampler_main, tmpvar_4).x * 0.8) + ((texture (sampler_blur1, tmpvar_4).xyz * scale1) + bias1).x)\\\\n  )), vec3(1.0, 1.0, 1.0), (\\\\n    (pow (hue_shader, vec3(8.0, 8.0, 8.0)) * texture (sampler_main, clamp (uv, 0.0, 1.0)).y)\\\\n   * 1.2)) * clamp ((1.0 - tmpvar_5.z), 0.0, 1.0));\\\\n  vec4 tmpvar_6;\\\\n  tmpvar_6.w = 1.0;\\\\n  tmpvar_6.xyz = ret_1;\\\\n  ret = tmpvar_6.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Flexi - area 51.json\":\n/*!************************************************!*\\\n  !*** ./presets/converted/Flexi - area 51.json ***!\n  \\************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1,\\\"decay\\\":0.995,\\\"echo_zoom\\\":1.007,\\\"echo_orient\\\":3,\\\"wave_thick\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_a\\\":0.9,\\\"wave_scale\\\":2.997,\\\"wave_smoothing\\\":0,\\\"wave_mystery\\\":-0.5,\\\"modwavealphastart\\\":1,\\\"modwavealphaend\\\":1,\\\"warpanimspeed\\\":0.274,\\\"warpscale\\\":7.98,\\\"zoom\\\":0.99951,\\\"warp\\\":0.20929,\\\"wave_r\\\":0.02,\\\"wave_g\\\":0.02,\\\"wave_b\\\":0,\\\"ob_size\\\":0.5,\\\"ob_r\\\":1,\\\"ob_g\\\":0.12,\\\"ob_b\\\":1,\\\"ob_a\\\":0.37,\\\"ib_size\\\":0,\\\"ib_a\\\":1,\\\"mv_x\\\":0,\\\"mv_y\\\":0,\\\"mv_l\\\":5,\\\"mv_a\\\":0,\\\"b1ed\\\":0.2},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"sides\\\":99,\\\"textured\\\":1,\\\"x\\\":1,\\\"y\\\":0.63,\\\"rad\\\":1.3,\\\"tex_zoom\\\":0.763,\\\"g\\\":1,\\\"b\\\":1,\\\"a\\\":0.97,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"textured\\\":1,\\\"y\\\":0.55,\\\"rad\\\":0.225,\\\"g\\\":1,\\\"b\\\":1,\\\"a\\\":0.97,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"textured\\\":1,\\\"x\\\":0.85,\\\"y\\\":0,\\\"rad\\\":1.3,\\\"tex_zoom\\\":2.068,\\\"g\\\":1,\\\"b\\\":1,\\\"a\\\":0.97,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":0.97,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":3,\\\"textured\\\":1,\\\"x\\\":0.02,\\\"rad\\\":0.733,\\\"ang\\\":1.319,\\\"tex_zoom\\\":100,\\\"g\\\":1,\\\"b\\\":1,\\\"a\\\":0.97,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":0.97,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"sep\\\":60,\\\"scaling\\\":0.08,\\\"smoothing\\\":0.4,\\\"r\\\":0,\\\"g\\\":0,\\\"b\\\":0,\\\"a\\\":0.97,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sep\\\":20,\\\"scaling\\\":0.07,\\\"smoothing\\\":0.65,\\\"r\\\":0.3,\\\"g\\\":0.3,\\\"b\\\":0.3,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sep\\\":30,\\\"scaling\\\":0.07,\\\"r\\\":0.3,\\\"g\\\":0.3,\\\"b\\\":0.3,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sep\\\":60,\\\"r\\\":0,\\\"g\\\":0,\\\"b\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"x1 = 0;\\\\ny1= .001;\\\\nz1 = 0;\\\",\\\"frame_eqs_eel\\\":\\\"zoom = 1;\\\\nwave_a = 0;\\\\n\\\\nstartx = 0.3;\\\\nstarty = 0.3;\\\\n\\\\na = 0.55;\\\\nb = 0.05;\\\\nd = 0.09;\\\\n\\\\nq1 = aspectx;\\\\nq2 = aspecty;\\\\nq5 = a;\\\\nq6 = b;\\\\nq7 = d;\\\\n\\\\n\\\\n// coloring borders\\\\nbb = bb*0.99 + bass*0.02;\\\\nmm = mm*0.99 + mid*0.02;\\\\ntt = tt*0.99 + treb*0.02;\\\\n\\\\nmx = max(max(bb,mm),tt);\\\\nmn = min(min(bb,mm),tt);\\\\n\\\\nh1 = (bb-mn)/(mx-mn);\\\\nh2 = (mm-mn)/(mx-mn);\\\\nh3 = (tt-mn)/(mx-mn);\\\\n\\\\nv = 0.1333/fps;\\\\nbm = bm + (h1-h2)*v;\\\\nmt = mt + (h2-h3)*v;\\\\nbt = bt + (h1-h3)*v;\\\\n\\\\nw = bm*2;\\\\nq3 = sin(w);\\\\nq4 = cos(w);\\\\n\\\\n\\\\nq10 = bm;\\\\nq11 = mt;\\\\nq12 = bt;\\\",\\\"pixel_eqs_eel\\\":\\\"x = 0.5 + (x-0.51)*q1;\\\\ny = 0.5 - (y-0.5)*q2;\\\\ndx = (x*(1-x)-q5*x*y/(x+q6));\\\\ndy = -q7*y*(1-y/x);\\\\n\\\\ndx = -dx*0.02/q1;\\\\ndy = -dy*0.02/q2;\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec2 my_uv2_1;\\\\n  vec2 dz_2;\\\\n  vec3 ret_3;\\\\n  vec2 tmpvar_4;\\\\n  tmpvar_4 = (texsize.zw * 4.0);\\\\n  vec3 tmpvar_5;\\\\n  tmpvar_5 = ((2.0 * (\\\\n    (texture (sampler_blur1, (uv + (vec2(1.0, 0.0) * tmpvar_4))).xyz * scale1)\\\\n   + bias1)) - (2.0 * (\\\\n    (texture (sampler_blur1, (uv - (vec2(1.0, 0.0) * tmpvar_4))).xyz * scale1)\\\\n   + bias1)));\\\\n  vec3 tmpvar_6;\\\\n  tmpvar_6 = ((2.0 * (\\\\n    (texture (sampler_blur1, (uv + (vec2(0.0, 1.0) * tmpvar_4))).xyz * scale1)\\\\n   + bias1)) - (2.0 * (\\\\n    (texture (sampler_blur1, (uv - (vec2(0.0, 1.0) * tmpvar_4))).xyz * scale1)\\\\n   + bias1)));\\\\n  vec2 tmpvar_7;\\\\n  tmpvar_7.x = tmpvar_5.x;\\\\n  tmpvar_7.y = tmpvar_6.x;\\\\n  vec2 tmpvar_8;\\\\n  tmpvar_8 = (tmpvar_7 * texsize.zw);\\\\n  ret_3.x = (texture (sampler_fw_main, (uv - tmpvar_8)).x - ((\\\\n    (texture (sampler_blur3, uv).xyz * scale3)\\\\n   + bias3).x - (\\\\n    (texture (sampler_blur1, (uv + tmpvar_8)).xyz * scale1)\\\\n   + bias1).x));\\\\n  vec2 tmpvar_9;\\\\n  tmpvar_9.x = tmpvar_5.y;\\\\n  tmpvar_9.y = tmpvar_6.y;\\\\n  dz_2 = (-(tmpvar_9) * texsize.zw);\\\\n  ret_3.y = ((texture (sampler_fw_main, (uv - dz_2)).y - 0.06) - ((\\\\n    ((texture (sampler_blur2, uv).xyz * scale2) + bias2)\\\\n  .y - \\\\n    ((texture (sampler_blur1, (uv + dz_2)).xyz * scale1) + bias1)\\\\n  .y) * 1.3));\\\\n  vec2 tmpvar_10;\\\\n  tmpvar_10 = ((uv_orig - 0.5) * (1.8 - (\\\\n    (bass_att - treb_att)\\\\n   * 0.015)));\\\\n  vec2 tmpvar_11;\\\\n  tmpvar_11.x = ((tmpvar_10.x * tmpvar_10.x) - (tmpvar_10.y * tmpvar_10.y));\\\\n  tmpvar_11.y = ((2.0 * tmpvar_10.x) * tmpvar_10.y);\\\\n  my_uv2_1 = (tmpvar_11 + vec2(0.28, 0.4));\\\\n  vec2 tmpvar_12;\\\\n  tmpvar_12.x = ((2.0 * (\\\\n    (texture (sampler_blur1, (my_uv2_1 + (vec2(1.0, 0.0) * tmpvar_4))).xyz * scale1)\\\\n   + bias1)) - (2.0 * (\\\\n    (texture (sampler_blur1, (my_uv2_1 - (vec2(1.0, 0.0) * tmpvar_4))).xyz * scale1)\\\\n   + bias1))).z;\\\\n  tmpvar_12.y = ((2.0 * (\\\\n    (texture (sampler_blur1, (my_uv2_1 + (vec2(0.0, 1.0) * tmpvar_4))).xyz * scale1)\\\\n   + bias1)) - (2.0 * (\\\\n    (texture (sampler_blur1, (my_uv2_1 - (vec2(0.0, 1.0) * tmpvar_4))).xyz * scale1)\\\\n   + bias1))).z;\\\\n  dz_2 = (tmpvar_12 * texsize.zw);\\\\n  ret_3.z = (texture (sampler_main, clamp ((my_uv2_1 + dz_2), 0.0, 1.0)).z - 0.014);\\\\n  vec4 tmpvar_13;\\\\n  tmpvar_13.w = 1.0;\\\\n  tmpvar_13.xyz = ret_3;\\\\n  ret = tmpvar_13.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec3 dy_1;\\\\n  vec3 dx_2;\\\\n  vec2 mirror_uv_3;\\\\n  vec3 ret_4;\\\\n  vec2 tmpvar_5;\\\\n  tmpvar_5 = ((uv - 0.5) * aspect.xy);\\\\n  vec2 tmpvar_6;\\\\n  tmpvar_6.x = ((q4 * tmpvar_5.x) - (q3 * tmpvar_5.y));\\\\n  tmpvar_6.y = ((q3 * tmpvar_5.x) + (q4 * tmpvar_5.y));\\\\n  vec2 tmpvar_7;\\\\n  tmpvar_7 = (0.5 - (tmpvar_6 * 2.0));\\\\n  vec2 numerator_8;\\\\n  numerator_8 = (tmpvar_7 - vec2(0.0, 0.5));\\\\n  vec2 denominator_9;\\\\n  denominator_9 = (tmpvar_7 - vec2(1.0, 0.5));\\\\n  vec2 tmpvar_10;\\\\n  tmpvar_10.x = ((numerator_8.x * denominator_9.x) + (numerator_8.y * denominator_9.y));\\\\n  tmpvar_10.y = ((numerator_8.y * denominator_9.x) - (numerator_8.x * denominator_9.y));\\\\n  vec2 tmpvar_11;\\\\n  tmpvar_11 = (((tmpvar_10 / \\\\n    ((denominator_9.x * denominator_9.x) + (denominator_9.y * denominator_9.y))\\\\n  ) + 0.5) - vec2(0.5, 0.5));\\\\n  float tmpvar_12;\\\\n  tmpvar_12 = sqrt(dot (tmpvar_11, tmpvar_11));\\\\n  float tmpvar_13;\\\\n  float tmpvar_14;\\\\n  tmpvar_14 = (min (abs(\\\\n    (tmpvar_11.x / tmpvar_11.y)\\\\n  ), 1.0) / max (abs(\\\\n    (tmpvar_11.x / tmpvar_11.y)\\\\n  ), 1.0));\\\\n  float tmpvar_15;\\\\n  tmpvar_15 = (tmpvar_14 * tmpvar_14);\\\\n  tmpvar_15 = (((\\\\n    ((((\\\\n      ((((-0.01213232 * tmpvar_15) + 0.05368138) * tmpvar_15) - 0.1173503)\\\\n     * tmpvar_15) + 0.1938925) * tmpvar_15) - 0.3326756)\\\\n   * tmpvar_15) + 0.9999793) * tmpvar_14);\\\\n  tmpvar_15 = (tmpvar_15 + (float(\\\\n    (abs((tmpvar_11.x / tmpvar_11.y)) > 1.0)\\\\n  ) * (\\\\n    (tmpvar_15 * -2.0)\\\\n   + 1.570796)));\\\\n  tmpvar_13 = (tmpvar_15 * sign((tmpvar_11.x / tmpvar_11.y)));\\\\n  if ((abs(tmpvar_11.y) > (1e-08 * abs(tmpvar_11.x)))) {\\\\n    if ((tmpvar_11.y < 0.0)) {\\\\n      if ((tmpvar_11.x >= 0.0)) {\\\\n        tmpvar_13 += 3.141593;\\\\n      } else {\\\\n        tmpvar_13 = (tmpvar_13 - 3.141593);\\\\n      };\\\\n    };\\\\n  } else {\\\\n    tmpvar_13 = (sign(tmpvar_11.x) * 1.570796);\\\\n  };\\\\n  vec2 tmpvar_16;\\\\n  tmpvar_16.x = (tmpvar_13 * 0.1591549);\\\\n  tmpvar_16.y = tmpvar_12;\\\\n  vec2 tmpvar_17;\\\\n  tmpvar_17.x = ((tmpvar_16.x * 2.0) + q11);\\\\n  tmpvar_17.y = ((0.3 * log(tmpvar_12)) + q12);\\\\n  vec2 tmpvar_18;\\\\n  tmpvar_18 = (0.5 + (0.5 - abs(\\\\n    ((fract((tmpvar_17 * 0.5)) * 2.0) - 1.0)\\\\n  )));\\\\n  vec2 tmpvar_19;\\\\n  tmpvar_19 = (texsize.zw * 3.0);\\\\n  vec3 tmpvar_20;\\\\n  tmpvar_20 = ((2.0 * (\\\\n    (texture (sampler_blur1, (tmpvar_18 + (vec2(1.0, 0.0) * tmpvar_19))).xyz * scale1)\\\\n   + bias1)) - (2.0 * (\\\\n    (texture (sampler_blur1, (tmpvar_18 - (vec2(1.0, 0.0) * tmpvar_19))).xyz * scale1)\\\\n   + bias1)));\\\\n  vec3 tmpvar_21;\\\\n  tmpvar_21 = ((2.0 * (\\\\n    (texture (sampler_blur1, (tmpvar_18 + (vec2(0.0, 1.0) * tmpvar_19))).xyz * scale1)\\\\n   + bias1)) - (2.0 * (\\\\n    (texture (sampler_blur1, (tmpvar_18 - (vec2(0.0, 1.0) * tmpvar_19))).xyz * scale1)\\\\n   + bias1)));\\\\n  vec2 tmpvar_22;\\\\n  tmpvar_22.x = tmpvar_20.x;\\\\n  tmpvar_22.y = tmpvar_21.x;\\\\n  mirror_uv_3 = (tmpvar_18 + ((tmpvar_22 * texsize.zw) * 4.0));\\\\n  ret_4 = ((mix (ret_4, vec3(1.0, 1.0, 1.0), \\\\n    ((((texture (sampler_blur1, mirror_uv_3).xyz * scale1) + bias1).x * (1.0 - (\\\\n      (texture (sampler_blur2, mirror_uv_3).xyz * scale2)\\\\n     + bias2).x)) * (pow (hue_shader, vec3(4.0, 4.0, 4.0)) * 1.4))\\\\n  ) * texture (sampler_main, mirror_uv_3).xxx) + ((\\\\n    (1.0 - texture (sampler_main, mirror_uv_3).x)\\\\n   * \\\\n    ((texture (sampler_blur1, mirror_uv_3).xyz * scale1) + bias1)\\\\n  .x) * vec3(3.0, 3.0, 3.0)));\\\\n  vec2 tmpvar_23;\\\\n  tmpvar_23.x = tmpvar_20.x;\\\\n  tmpvar_23.y = tmpvar_21.x;\\\\n  mirror_uv_3 = (mirror_uv_3 - ((tmpvar_23 * texsize.zw) * 24.0));\\\\n  dx_2 = ((2.0 * (\\\\n    (texture (sampler_blur1, (mirror_uv_3 + (vec2(1.0, 0.0) * tmpvar_19))).xyz * scale1)\\\\n   + bias1)) - (2.0 * (\\\\n    (texture (sampler_blur1, (mirror_uv_3 - (vec2(1.0, 0.0) * tmpvar_19))).xyz * scale1)\\\\n   + bias1)));\\\\n  dy_1 = ((2.0 * (\\\\n    (texture (sampler_blur1, (mirror_uv_3 + (vec2(0.0, 1.0) * tmpvar_19))).xyz * scale1)\\\\n   + bias1)) - (2.0 * (\\\\n    (texture (sampler_blur1, (mirror_uv_3 - (vec2(0.0, 1.0) * tmpvar_19))).xyz * scale1)\\\\n   + bias1)));\\\\n  vec2 tmpvar_24;\\\\n  tmpvar_24.x = -(dx_2.y);\\\\n  tmpvar_24.y = dy_1.y;\\\\n  vec2 tmpvar_25;\\\\n  tmpvar_25 = (tmpvar_24 * 0.25);\\\\n  vec3 tmpvar_26;\\\\n  tmpvar_26 = mix (ret_4, vec3(1.0, 1.0, 1.0), (mix (vec3(1.0, 0.7, 0.2), vec3(0.15, 0.0, 0.5), vec3(\\\\n    ((((\\\\n      ((mirror_uv_3.x * 0.8) - mirror_uv_3.y)\\\\n     + 0.75) + tmpvar_25.x) + tmpvar_25.y) - 0.1)\\\\n  )) * texture (sampler_main, mirror_uv_3).y));\\\\n  vec2 tmpvar_27;\\\\n  vec2 tmpvar_28;\\\\n  tmpvar_28 = ((0.5 + (\\\\n    (uv - 0.5)\\\\n   * aspect.wz)) - vec2(0.5, 0.5));\\\\n  vec2 tmpvar_29;\\\\n  tmpvar_29.x = ((q4 * tmpvar_28.x) - (q3 * tmpvar_28.y));\\\\n  tmpvar_29.y = ((q3 * tmpvar_28.x) + (q4 * tmpvar_28.y));\\\\n  tmpvar_27 = (vec2(0.5, 0.5) + tmpvar_29);\\\\n  mirror_uv_3 = tmpvar_27.yx;\\\\n  vec2 tmpvar_30;\\\\n  tmpvar_30 = (vec2(1.0, 0.0) * texsize.zw);\\\\n  dx_2 = ((2.0 * texture (sampler_main, (tmpvar_27.yx + tmpvar_30)).xyz) - (2.0 * texture (sampler_main, (tmpvar_27.yx - tmpvar_30)).xyz));\\\\n  vec2 tmpvar_31;\\\\n  tmpvar_31 = (vec2(0.0, 1.0) * texsize.zw);\\\\n  dy_1 = ((2.0 * texture (sampler_main, (tmpvar_27.yx + tmpvar_31)).xyz) - (2.0 * texture (sampler_main, (tmpvar_27.yx - tmpvar_31)).xyz));\\\\n  vec2 tmpvar_32;\\\\n  tmpvar_32.x = dx_2.z;\\\\n  tmpvar_32.y = dy_1.z;\\\\n  vec3 tmpvar_33;\\\\n  tmpvar_33 = mix (tmpvar_26, vec3(0.9, 0.9, 1.0), vec3((1.0 - texture (sampler_main, (tmpvar_27.yx - tmpvar_32)).z)));\\\\n  ret_4 = tmpvar_33;\\\\n  vec4 tmpvar_34;\\\\n  tmpvar_34.w = 1.0;\\\\n  tmpvar_34.xyz = tmpvar_33;\\\\n  ret = tmpvar_34.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Flexi - infused with the spiral.json\":\n/*!****************************************************************!*\\\n  !*** ./presets/converted/Flexi - infused with the spiral.json ***!\n  \\****************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1,\\\"decay\\\":0.5,\\\"echo_zoom\\\":1.03,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":0.01,\\\"wave_smoothing\\\":0,\\\"modwavealphastart\\\":1,\\\"modwavealphaend\\\":1,\\\"warpscale\\\":0.107,\\\"zoomexp\\\":4.28632,\\\"fshader\\\":1,\\\"warp\\\":0.01743,\\\"wave_r\\\":0,\\\"wave_g\\\":0,\\\"wave_b\\\":0,\\\"ob_size\\\":0,\\\"ob_g\\\":1,\\\"ob_a\\\":1,\\\"ib_size\\\":0,\\\"ib_r\\\":1,\\\"ib_g\\\":1,\\\"ib_b\\\":1,\\\"ib_a\\\":1,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":5,\\\"mv_a\\\":0,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"textured\\\":1,\\\"rad\\\":0.789,\\\"ang\\\":0.6283,\\\"tex_zoom\\\":1.17257,\\\"r\\\":0,\\\"g\\\":1,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"vx = 0;\\\\nvy = 0;\\\",\\\"frame_eqs_eel\\\":\\\"rad = 0.65 + bass*0.1;\\\\n\\\\nan = an*0.99 + (bass-treb)*0.1;\\\\nang = an*0.1 + 0.6;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"rad\\\":0.40271,\\\"tex_zoom\\\":2.23888,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":0.08,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"textured\\\":1,\\\"rad\\\":1.21525,\\\"tex_ang\\\":2.57611,\\\"tex_zoom\\\":0.55595,\\\"g\\\":1,\\\"b\\\":1,\\\"g2\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":34,\\\"x\\\":0.99,\\\"y\\\":0.99,\\\"rad\\\":0.02558,\\\"r\\\":0,\\\"g\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"samples\\\":495,\\\"sep\\\":4,\\\"spectrum\\\":1,\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":100,\\\"smoothing\\\":1,\\\"r\\\":0,\\\"g\\\":0.04,\\\"b\\\":0,\\\"a\\\":0.99},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\nab = 1;\\\",\\\"frame_eqs_eel\\\":\\\"t1 = q1;\\\\nt2 = q2;\\\\nt3 = q3;\\\\nt4 = q4;\\\\nt5 = q5;\\\\nt6 = q6;\\\\nt8 = .07;\\\\nt7 = 1;\\\",\\\"point_eqs_eel\\\":\\\"t7 = -t7;\\\\npi = asin(1);\\\\nn = 180;\\\\nrd = 0.075;//+(value1*10+1)*((sample*512)%2)*0.02;\\\\nmy_x = sin(sample*pi*4+(t7+1)*t8)*0.5 + cos(sample*pi*n)*rd*sin(sample*pi*4+(t7+1)*t8);\\\\nmy_y = cos(sample*pi*4+(t7+1)*t8)*0.5 + cos(sample*pi*n)*rd*cos(sample*pi*4+(t7+1)*t8);\\\\nmy_z = sin(sample*pi*n)*rd;\\\\n\\\\n\\\\n\\\\nd = 1.4; // makes the perspective impact\\\\nzoom = 0.65;\\\\n\\\\nw1 = q2;\\\\nw2 = q3;\\\\nw3 = q4;\\\\n\\\\nx1 = cos(w1)*my_x + sin(w1)*my_y;\\\\ny1 = -sin(w1)*my_x + cos(w1)*my_y;\\\\nz1 = my_z;\\\\n\\\\nx2 = cos(w2)*x1 + sin(w2)*z1;\\\\nz2 = -sin(w2)*x1 + cos(w2)*z1;\\\\ny2 = y1;\\\\n\\\\ny3 = cos(w3)*y2 + sin(w3)*z2;\\\\nz3 = -sin(w3)*y2 + cos(w3)*z2;\\\\nx3 = x2;\\\\n\\\\n// perspective calculation\\\\n\\\\nl = sqrt(x3*x3 + y3*y3);\\\\nw = atan2(x3,y3);\\\\np = tan(asin(1) + atan2(d+z3,l));\\\\nd = sqrt(x3*x3 + y3*y3 + (z3+d)*(z3+d));\\\\n\\\\nmy_x = zoom*sin(w)*p;\\\\nmy_y = zoom*cos(w)*p;\\\\n\\\\nx = 0.5 + my_x;\\\\ny = 0.5 + my_y;\\\\n\\\\nb = -z3 + 0.5;\\\\nb = min(1,max(0,b))*0.5;\\\\nr = 1-b*2\\\\n//b = (1 - r)*0.1;\\\\n//a =  7/(d*16) - 0.1;\\\"},{\\\"baseVals\\\":{\\\"samples\\\":445,\\\"sep\\\":4,\\\"spectrum\\\":1,\\\"usedots\\\":1,\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":100,\\\"smoothing\\\":1,\\\"a\\\":0.99,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\nab = 1;\\\",\\\"frame_eqs_eel\\\":\\\"t1 = q1;\\\\nt2 = q2;\\\\nt3 = q3;\\\\nt4 = q4;\\\\nt5 = q5;\\\\nt6 = q6;\\\\nt8 = .09;\\\\nt7 = 1;\\\",\\\"point_eqs_eel\\\":\\\"t7 = -t7;\\\\npi = asin(1);\\\\nn = 160;\\\\nrd = 0.075;//+(value1*10+1)*((sample*512)%2)*0.02;\\\\nxx = sin(sample*pi*4+(t7+1)*t8)*0.5 + cos(sample*pi*n)*rd*sin(sample*pi*4);\\\\nyy = cos(sample*pi*4+(t7+1)*t8)*0.5 + cos(sample*pi*n)*rd*cos(sample*pi*4);\\\\nzz = sin(sample*pi*n)*rd;\\\\n\\\\nd = sqrt( xx*xx + yy*yy + zz*zz);\\\\nd1 = 1;\\\\nxx = xx*d1;\\\\nyy = yy*d1;\\\\nzz = zz*d1;\\\\n\\\\nw = -d*t5;\\\\ns1 = sin(t2*1+w);\\\\ns2 = sin(t3*1+w);\\\\ns3 = sin(t4*1+w);\\\\nc1 = cos(t2*1+w);\\\\nc2 = cos(t3*1+w);\\\\nc3 = cos(t4*1+w);\\\\n\\\\nz = (c3*s1*c2 + s3*s2)*xx - (c3*s1*s2-s3*c2)*yy + c3*c1*zz;\\\\nx1 = (c1*c2*xx + c1*s2*yy - s1*zz);\\\\ny1 = ((s3*s1*c2 - c3*s2)*xx + (s3*s1*s2+c3*c2)*yy + s3*c1*zz);\\\\n\\\\na = 0.75;\\\\nzoom = 0.5*atan2(a,a+z);//0.5*(1/(z+a));\\\\nx = 0.5 + zoom*x1;\\\\ny = 0.5 + zoom*y1;\\\\n\\\\npi3 = 3.1415*2*0.3333;\\\\nt = sample*pi*4-2*time;\\\\nc=1.6;\\\\nr = sin(t)*c;\\\\n\\\\ng = sin(t+pi3)*c;\\\\n\\\\nb = sin(t-pi3)*c;\\\\n\\\\nj = 0.71;\\\\n//r = 0.5+xx*j;\\\\n//g = 0.5+yy*j;\\\\n//b = 0.5+zz*j;\\\\n\\\\nr = if(above(r,1),1,r);\\\\nr = if(below(r,0),0,r);\\\\ng = if(above(g,1),1,g);\\\\ng = if(below(g,0),0,g);\\\\nb = if(above(b,1),1,b);\\\\nb = if(below(b,0),0,b);\\\\na = 1-(z + a)/2;\\\\n\\\"},{\\\"baseVals\\\":{\\\"sep\\\":4,\\\"scaling\\\":0.09348,\\\"smoothing\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\nab = 1;\\\",\\\"frame_eqs_eel\\\":\\\"t1 = q1;\\\\nt2 = q2;\\\\nt3 = q3;\\\\nt4 = q4;\\\\nt5 = q5;\\\\nt6 = q6;\\\",\\\"point_eqs_eel\\\":\\\"s8 = sample*383;\\\\n\\\\ns = 100;//0.3;\\\\nxx = sin(sample*s);//((sample*343)%7 - 3.5)*s;\\\\nzz = cos(sample*s);//((sample*49)%7 - 3.5)*s;\\\\nyy = (sample-0.5);//((sample*7)%7 - 3.5)*s;\\\\n\\\\nd = sqrt( xx*xx + yy*yy + zz*zz);\\\\nd1 = 1/d;\\\\nxx = xx*d1;\\\\nyy = yy*d1;\\\\nzz = zz*d1;\\\\n\\\\nw = 1+0*(d)*(t6);//(sample*sin(time*0.3)*0.02-1);\\\\ns1 = sin(t2*w);\\\\ns2 = sin(t3*w);\\\\ns3 = sin(t4*w);\\\\nc1 = cos(t2*w);\\\\nc2 = cos(t3*w);\\\\nc3 = cos(t4*w);\\\\n\\\\nz = (c3*s1*c2 + s3*s2)*xx - (c3*s1*s2-s3*c2)*yy + c3*c1*zz;\\\\nx1 = (c1*c2*xx + c1*s2*yy - s1*zz);\\\\ny1 = ((s3*s1*c2 - c3*s2)*xx + (s3*s1*s2+c3*c2)*yy + s3*c1*zz);\\\\n\\\\na = 2;\\\\nzoom = 0.3*atan2(a-z,a);//0.5*(1/(z+a));\\\\nx = 0.5 + zoom*x1;\\\\ny = 0.5 + zoom*y1;\\\\n\\\\npi3 = 3.1415*2*0.3333;\\\\nt = -z*13+t5*20;\\\\nc = 10;\\\\nr = sin(t)*c;\\\\n\\\\ng = sin(t+pi3)*c;\\\\n\\\\nb = sin(t-pi3)*c;\\\\n\\\\nj = 0.71;\\\\n//r = 0.5+xx*j;\\\\n//g = 0.5+yy*j;\\\\n//b = 0.5+zz*j;\\\\n\\\\nr = if(above(r,1),1,r);\\\\nr = if(below(r,0),0,r);\\\\ng = if(above(g,1),1,g);\\\\ng = if(below(g,0),0,g);\\\\nb = if(above(b,1),1,b);\\\\nb = if(below(b,0),0,b);\\\\n\\\\n\\\\na = sigmoid(-z,10)*1.0+0.0;\\\"},{\\\"baseVals\\\":{\\\"samples\\\":484,\\\"sep\\\":4,\\\"usedots\\\":1,\\\"scaling\\\":9.94125,\\\"smoothing\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\nab = 1;\\\",\\\"frame_eqs_eel\\\":\\\"t1 = q1;\\\\nt2 = q2;\\\\nt3 = q3;\\\\nt4 = q4;\\\\nt5 = q5;\\\\nt6 = q6;\\\",\\\"point_eqs_eel\\\":\\\"s8 = sample*383;\\\\n\\\\ns = 0.25;\\\\nxx = ((sample*(465))%15 - 8)*s*2;\\\\nyy = ((sample*31)%31 - 16)*s;\\\\nzz = 0;\\\\n\\\\nd = sqrt( xx*xx + yy*yy + zz*zz);\\\\nw = 1;\\\\n\\\\ns1 = sin(t2*1);\\\\ns2 = sin(t3*0);\\\\ns3 = sin(t4*1);\\\\nc1 = cos(t2*1);\\\\nc2 = cos(t3*0);\\\\nc3 = cos(t4*1);\\\\n\\\\n\\\\nz = (c3*s1*c2 + s3*s2)*xx - (c3*s1*s2-s3*c2)*yy + c3*c1*zz;\\\\nx1 = (c1*c2*xx + c1*s2*yy - s1*zz);\\\\ny1 = ((s3*s1*c2 - c3*s2)*xx + (s3*s1*s2+c3*c2)*yy + s3*c1*zz);\\\\n\\\\na = 500;\\\\nzoom = 0.05*atan2(a-z,a);//0.5*(1/(z+a));\\\\nx = 0.5 + zoom*x1;\\\\ny = 0.5 + zoom*y1;\\\\n\\\\npi3 = 3.1415*2*0.3333;\\\\nt = -z*5+t5;\\\\nc = 10;\\\\nr = sin(t)*c;\\\\n\\\\ng = sin(t+pi3)*c;\\\\n\\\\nb = sin(t-pi3)*c;\\\\n\\\\nj = 0.71;\\\\n//r = 0.5+xx*j;\\\\n//g = 0.5+yy*j;\\\\n//b = 0.5+zz*j;\\\\n\\\\nr = if(above(r,1),1,r);\\\\nr = if(below(r,0),0,r);\\\\ng = if(above(g,1),1,g);\\\\ng = if(below(g,0),0,g);\\\\nb = if(above(b,1),1,b);\\\\nb = if(below(b,0),0,b);\\\\n\\\\n\\\\na = sigmoid(z,5);\\\"}],\\\"init_eqs_eel\\\":\\\"x1 = 0;\\\\ny1 = 0;\\\",\\\"frame_eqs_eel\\\":\\\"q1 = 0;\\\\nv = 0.4;\\\\nj1 = j1*0.95 + sqr(bass*4)*v;\\\\nj2 = j2*0.95 + sqr(mid*4)*v;\\\\nj3 = j3*0.95 + sqr(treb*4)*v;\\\\n\\\\nn = n + j1*0.0052;\\\\nn1 = n1 + j2*0.0052;\\\\nn2 = n2 + j3*0.0052;\\\\n\\\\n\\\\nq2 = n*0.01;\\\\nq3 = n1*0.01;\\\\nq4 = n2*0.01;\\\\n\\\\nk = k*0.99 + sqr(mid_att*2);\\\\nq5 = k*0.00;\\\\n\\\\nzoom = 1.0016;\\\\nwarp = 0;\\\\n\\\\nrot = -0.00;\\\\n\\\\nq9 = aspectx;\\\\nq10 = aspecty;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec3 ret_1;\\\\n  vec2 tmpvar_2;\\\\n  tmpvar_2 = (texsize.zw * 4.0);\\\\n  vec2 tmpvar_3;\\\\n  tmpvar_3.x = (((texture (sampler_blur2, \\\\n    (uv + (vec2(0.0, 1.0) * tmpvar_2))\\\\n  ).xyz * scale2) + bias2) - ((texture (sampler_blur2, \\\\n    (uv - (vec2(0.0, 1.0) * tmpvar_2))\\\\n  ).xyz * scale2) + bias2)).z;\\\\n  tmpvar_3.y = -(((\\\\n    (texture (sampler_blur2, (uv + (vec2(1.0, 0.0) * tmpvar_2))).xyz * scale2)\\\\n   + bias2) - (\\\\n    (texture (sampler_blur2, (uv - (vec2(1.0, 0.0) * tmpvar_2))).xyz * scale2)\\\\n   + bias2)).z);\\\\n  vec2 tmpvar_4;\\\\n  tmpvar_4 = (uv + ((tmpvar_3 * texsize.zw) * 60.0));\\\\n  vec2 x_5;\\\\n  x_5 = (tmpvar_4 - uv);\\\\n  vec4 tmpvar_6;\\\\n  tmpvar_6 = texture (sampler_main, uv);\\\\n  vec4 tmpvar_7;\\\\n  tmpvar_7 = texture (sampler_blur1, uv);\\\\n  ret_1.z = (((texture (sampler_main, tmpvar_4).z + \\\\n    (((tmpvar_6.z - (\\\\n      (tmpvar_7.xyz * scale1)\\\\n     + bias1).z) * 200.0) * sqrt(dot (x_5, x_5)))\\\\n  ) * 0.96) - 0.02);\\\\n  vec2 tmpvar_8;\\\\n  tmpvar_8.x = (((texture (sampler_blur1, \\\\n    (uv + (vec2(1.0, 0.0) * tmpvar_2))\\\\n  ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n    (uv - (vec2(1.0, 0.0) * tmpvar_2))\\\\n  ).xyz * scale1) + bias1)).y;\\\\n  tmpvar_8.y = (((texture (sampler_blur1, \\\\n    (uv + (vec2(0.0, 1.0) * tmpvar_2))\\\\n  ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n    (uv - (vec2(0.0, 1.0) * tmpvar_2))\\\\n  ).xyz * scale1) + bias1)).y;\\\\n  ret_1.y = ((texture (sampler_main, (uv_orig + \\\\n    ((tmpvar_8 * texsize.zw) * 6.0)\\\\n  )).y + (\\\\n    (tmpvar_6.y - ((tmpvar_7.xyz * scale1) + bias1).y)\\\\n   * 0.1)) - 0.016);\\\\n  vec4 tmpvar_9;\\\\n  tmpvar_9.w = 1.0;\\\\n  tmpvar_9.xyz = ret_1;\\\\n  ret = tmpvar_9.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec3 ret_1;\\\\n  vec2 tmpvar_2;\\\\n  tmpvar_2 = (texsize.zw * 8.0);\\\\n  vec3 tmpvar_3;\\\\n  tmpvar_3 = (((texture (sampler_blur1, \\\\n    (uv + (vec2(1.0, 0.0) * tmpvar_2))\\\\n  ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n    (uv - (vec2(1.0, 0.0) * tmpvar_2))\\\\n  ).xyz * scale1) + bias1));\\\\n  vec3 tmpvar_4;\\\\n  tmpvar_4 = (((texture (sampler_blur1, \\\\n    (uv + (vec2(0.0, 1.0) * tmpvar_2))\\\\n  ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n    (uv - (vec2(0.0, 1.0) * tmpvar_2))\\\\n  ).xyz * scale1) + bias1));\\\\n  vec2 tmpvar_5;\\\\n  tmpvar_5.x = tmpvar_3.z;\\\\n  tmpvar_5.y = tmpvar_4.z;\\\\n  vec2 tmpvar_6;\\\\n  tmpvar_6.x = tmpvar_3.y;\\\\n  tmpvar_6.y = tmpvar_4.y;\\\\n  ret_1 = (mix (vec3(0.2, 0.0, 0.1), vec3(0.8, 0.6, 0.0), texture (sampler_main, (uv - \\\\n    (tmpvar_5 * 0.2)\\\\n  )).yyy) * ((\\\\n    (-(tmpvar_3.y) + tmpvar_4.y)\\\\n   + 1.0) + (\\\\n    (-(tmpvar_3.z) + tmpvar_4.z)\\\\n   * 2.0)));\\\\n  vec3 tmpvar_7;\\\\n  tmpvar_7 = mix (mix (ret_1, vec3(0.2, 0.0, 0.4), vec3((\\\\n    ((texture (sampler_blur1, (uv - (tmpvar_6 * 0.04))).xyz * scale1) + bias1)\\\\n  .x * 1.4))), vec3(1.0, 0.9, 0.8), texture (sampler_main, uv).zzz);\\\\n  ret_1 = tmpvar_7;\\\\n  vec4 tmpvar_8;\\\\n  tmpvar_8.w = 1.0;\\\\n  tmpvar_8.xyz = tmpvar_7;\\\\n  ret = tmpvar_8.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Flexi - mindblob [shiny mix].json\":\n/*!*************************************************************!*\\\n  !*** ./presets/converted/Flexi - mindblob [shiny mix].json ***!\n  \\*************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":1,\\\"gammaadj\\\":1,\\\"decay\\\":1,\\\"echo_zoom\\\":1,\\\"echo_alpha\\\":0.5,\\\"additivewave\\\":1,\\\"wave_thick\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"wave_a\\\":2.789,\\\"wave_scale\\\":0.292,\\\"wave_smoothing\\\":0,\\\"wave_mystery\\\":0.12,\\\"modwavealphastart\\\":1,\\\"modwavealphaend\\\":1,\\\"warpanimspeed\\\":0.01,\\\"warpscale\\\":100,\\\"zoomexp\\\":0.92178,\\\"zoom\\\":0.9901,\\\"warp\\\":0.01,\\\"wave_g\\\":0,\\\"ob_size\\\":0,\\\"ob_r\\\":0.2,\\\"ob_a\\\":0.1,\\\"ib_size\\\":0,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"ib_a\\\":1,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0,\\\"mv_b\\\":0,\\\"mv_a\\\":0,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"additive\\\":1,\\\"thickoutline\\\":1,\\\"rad\\\":0.71426,\\\"tex_ang\\\":0.12566,\\\"tex_zoom\\\":1.51878,\\\"a\\\":0,\\\"g2\\\":0,\\\"border_r\\\":0.1,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"additive\\\":1,\\\"thickoutline\\\":1,\\\"x\\\":0.43,\\\"y\\\":0.42,\\\"rad\\\":0.15799,\\\"ang\\\":0.1885,\\\"tex_zoom\\\":0.87865,\\\"r\\\":0,\\\"g\\\":1,\\\"g2\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = q4;\\\\ny = q8;\\\"},{\\\"baseVals\\\":{\\\"thickoutline\\\":1,\\\"x\\\":1,\\\"rad\\\":3.0054,\\\"tex_ang\\\":0.12566,\\\"tex_zoom\\\":1.51878,\\\"r\\\":0,\\\"g\\\":1,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thickoutline\\\":1,\\\"x\\\":1,\\\"rad\\\":0.39872,\\\"tex_ang\\\":0.12566,\\\"tex_zoom\\\":1.51878,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"usedots\\\":1,\\\"scaling\\\":2.44415,\\\"smoothing\\\":0,\\\"a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\ncl = 0;\\\",\\\"frame_eqs_eel\\\":\\\"t1 = 0;\\\\nv = 0.01;\\\\nj = j + (bass)*0.01;\\\\nj2 = j2 + (mid_att)*0.01;\\\\nj3 = j3 + (treb_att)*0.01;\\\\nt2 = j;\\\\nt3 = j2;\\\\nt4 = j3;\\\\n//t5 = 0;\\\\nk = k*0.99 + 10*mid/fps;\\\\nt5 = -k;\\\\n\\\\ncl1 = cl1 + 0.002;\\\\ncl1 = if(above(cl1,1),0,cl1);\\\\ncl1 = if(below(cl1,0),1,cl1);\\\\nt8 = cl1;\\\\n\\\\ncl2 = cl2 -1*q1;\\\\ncl2 = if(above(cl2,1),0,cl2);\\\\ncl2 = if(below(cl2,0),1,cl2);\\\\nt7 = cl2;\\\\n\\\\ncl3 = cl3 +0.001;\\\\ncl3 = if(above(cl3,1),0,cl3);\\\\ncl3 = if(below(cl3,0),1,cl3);\\\\nt6 = cl3;\\\",\\\"point_eqs_eel\\\":\\\"xx = ((sample*0983624912364)%10000000+100)/10000000;\\\\nyy = ((xx*1896575575)%10000000+100)/10000000;\\\\nzz = ((yy*58652340875)%10000000+100)/10000000;\\\\n\\\\n\\\\nd = sqrt(sqr(xx)+sqr(yy)+sqr(zz));\\\\n\\\\nzz = zz + t8 - if(above(zz+t8,1),1,0) - 0.5;\\\\nxx = xx + t7 - if(above(xx+t7,1),1,0) - 0.5;\\\\nyy = yy + t6 - if(above(yy+t6,1),1,0) - 0.5;\\\\n\\\\nv = 0.001;\\\\n\\\\nw = 1;// (sample*sin(time*0.3)*0.01-1);\\\\nbb = d*d*0.5;\\\\nn= 0.3;\\\\ns1 = sin(sin(t2*w+bb)*n);\\\\ns2 = sin(sin(t3*w+bb)*n);\\\\ns3 = sin(sin(t4*w+bb)*n);\\\\nc1 = cos(sin(t2*w+bb)*n);\\\\nc2 = cos(sin(t3*w+bb)*n);\\\\nc3 = cos(sin(t4*w+bb)*n);\\\\n\\\\nz = (c3*s1*c2 + s3*s2)*xx - (c3*s1*s2-s3*c2)*yy + c3*c1*zz;\\\\nx1 = (c1*c2*xx + c1*s2*yy - s1*zz);\\\\ny1 = ((s3*s1*c2 - c3*s2)*xx + (s3*s1*s2+c3*c2)*yy + s3*c1*zz);\\\\n\\\\nzoom = .5*(1/(z+0.5));\\\\nx = 0.5 + zoom*x1 + sin(time*0.1)*0;;\\\\ny = 0.5 + zoom*y1 + cos(time*0.16801)*0;\\\\n\\\\npi3 = 3.1415*2*0.3333;\\\\nt = z*2+t2*1;\\\\nc=3;\\\\n//r = sin(t)*c;\\\\n\\\\n//g = sin(t+pi3)*c;\\\\n\\\\n//b = sin(t-pi3)*c;\\\\n\\\\n\\\\nr = if(above(r,1),1,r);\\\\nr = if(below(r,0),0,r);\\\\ng = if(above(g,1),1,g);\\\\ng = if(below(g,0),0,g);\\\\nb = if(above(b,1),1,b);\\\\nb = if(below(b,0),0,b);\\\\n\\\\na = 0.4;\\\"},{\\\"baseVals\\\":{\\\"scaling\\\":2.44415,\\\"smoothing\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\ncl = 0;\\\",\\\"frame_eqs_eel\\\":\\\"t8 = 1;\\\",\\\"point_eqs_eel\\\":\\\"t8 = -t8;\\\\ny = sample;\\\\nx = 0.5 + t8*0.005;\\\\n\\\\npi3 = 3.1415*2*0.3333;\\\\nt = time + sample*2;\\\\nc=2;\\\\n\\\\nr = sin(t)*c;\\\\ng = sin(t+pi3)*c;\\\\n\\\\nb = sin(t-pi3)*c;\\\\n\\\\n\\\\nr = if(above(r,1),1,r);\\\\nr = if(below(r,0),0,r);\\\\ng = if(above(g,1),1,g);\\\\ng = if(below(g,0),0,g);\\\\nb = if(above(b,1),1,b);\\\\nb = if(below(b,0),0,b);\\\\n\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":100,\\\"smoothing\\\":0.6,\\\"r\\\":0,\\\"g\\\":0.4,\\\"a\\\":0.3,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"t1 = q1;\\\\nt2 = q2;\\\\nt3 = q3;\\\\nt4 = q4;\\\\nt5 = q5;\\\\nt6 = q6;\\\\nt7 = q7;\\\\nt8 = q8;\\\",\\\"point_eqs_eel\\\":\\\"sample = 1-sample;\\\\nxxx = xx;\\\\nyyy = yy;\\\\nxx = pow(sample,5)*t1 + 5*pow(sample,4)*(1-sample)*t1 + 10*pow(sample,3)*sqr(1-sample)*t2\\\\n+ 10*sqr(sample)*pow(1-sample,3)*t3 + 5*pow(1-sample,4)*sample*t4 + pow(1-sample,5)*t4;\\\\n\\\\nyy = pow(sample,5)*t5 + 5*pow(sample,4)*(1-sample)*t5 + 10*pow(sample,3)*sqr(1-sample)*t6\\\\n+ 10*sqr(sample)*pow(1-sample,3)*t7 + 5*pow(1-sample,4)*sample*t8 + pow(1-sample,5)*t8;\\\\nd = 1/sqrt(sqr(xx-xxx)+sqr(yy-yyy));\\\\nx = xx + sample*(1-sample)*(value1-value2)*(yy-yyy)*d;\\\\ny = yy - sample*(1-sample)*(value1-value2)*(xx-xxx)*d;\\\"},{\\\"baseVals\\\":{\\\"usedots\\\":1,\\\"scaling\\\":2.44415,\\\"smoothing\\\":0,\\\"r\\\":0,\\\"g\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\ncl = 0;\\\",\\\"frame_eqs_eel\\\":\\\"t8 = 1;\\\",\\\"point_eqs_eel\\\":\\\"t8 = -t8;\\\\ny = (1+t8)*0.01;\\\\nx = sample;\\\"}],\\\"init_eqs_eel\\\":\\\"x1 = 0.9;\\\\ny1 = 0.5;\\\\n\\\\nx2 = 0.5; y2 = 0.5;\\\\nx3 = 0.5; y3 = 0.5;\\\\nx4 = 0.5; y4 = 0.5;\\\",\\\"frame_eqs_eel\\\":\\\"decay = 1;\\\\nxx1 = xx1*0.9 + (bass)*0.01;\\\\nxx2 = xx2*0.9 + (treb)*0.01;\\\\nyy1 = yy1*0.94 + (treb+bass)*0.0075;\\\\n\\\\nx1 = 0.5 + xx1-xx2;\\\\ny1 = 0.5 + yy1;\\\\n\\\\n//x2 = 0;y2 = 0;x3 = 0;y3 = 0;x4 = 0;y4 = 0;\\\\n\\\\nspring = 18;\\\\ngrav = 1;\\\\nresist = 0.2;\\\\nbounce = 0.9;\\\\ndt = 0.0003;\\\\n\\\\nvx2 = vx2*(1-resist*dt) + dt*((x1+x3-2*x2)*spring);\\\\nvy2 = vy2*(1-resist*dt) + dt*((y1+y3-2*y2)*spring-grav);\\\\nvx3 = vx3*(1-resist*dt) + dt*((x2+x4-2*x3)*spring);\\\\nvy3 = vy3*(1-resist*dt) + dt*((y2+y4-2*y3)*spring-grav);\\\\nvx4 = vx4*(1-resist*dt) + dt*((x3-x4)*spring);\\\\nvy4 = vy4*(1-resist*dt) + dt*((y3-y4)*spring-grav);\\\\n\\\\nx2 = x2 + vx2;\\\\ny2 = y2 + vy2;\\\\nx3 = x3 + vx3;\\\\ny3 = y3 + vy3;\\\\nx4 = x4 + vx4;\\\\ny4 = y4 + vy4;\\\\n\\\\nvx2 = if(above(x2,0),vx2,abs(vx2)*bounce);\\\\nvx2 = if(below(x2,1),vx2,-abs(vx2)*bounce);\\\\nvx3 = if(above(x3,0),vx3,abs(vx3)*bounce);\\\\nvx3 = if(below(x3,1),vx3,-abs(vx3)*bounce);\\\\nvx4 = if(above(x4,0),vx4,abs(vx4)*bounce);\\\\nvx4 = if(below(x4,1),vx4,-abs(vx4)*bounce);\\\\n\\\\nvy2 = if(above(y2,0),vy2,abs(vy2)*bounce);\\\\nvy2 = if(below(y2,1),vy2,-abs(vy2)*bounce);\\\\nvy3 = if(above(y3,0),vy3,abs(vy3)*bounce);\\\\nvy3 = if(below(y3,1),vy3,-abs(vy3)*bounce);\\\\nvy4 = if(above(y4,0),vy4,abs(vy4)*bounce);\\\\nvy4 = if(below(y4,1),vy4,-abs(vy4)*bounce);\\\\n\\\\n\\\\nq1 = x1;\\\\nq2 = x2;\\\\nq3 = x3;\\\\nq4 = x4;\\\\n\\\\nq5 = y1;\\\\nq6 = y2;\\\\nq7 = y3;\\\\nq8 = y4;\\\\n\\\\n\\\\nzoom = 1.004;\\\\n\\\\nq6 = atan2(vx4,vy4);\\\\nq5 = sqrt(vx4*vx4 + vy4*vy4);\\\",\\\"pixel_eqs_eel\\\":\\\"dir = -q6*1 + asin(1)*1;\\\\n\\\\nb1 = 0.08; // distance\\\\nm1 = q5*45;//-0.6 + q5*200; // size\\\\nt1 = 0.5; // velocity\\\\n\\\\nxx = 0.5 + (q4-0.5)/aspectx;\\\\nyy = 1-(0.5 + (q8-0.5)/aspecty);\\\\n\\\\n\\\\nx1 = xx   +cos(dir+1.5708)*b1;\\\\ny1 = yy -sin(dir+1.5708)*b1;\\\\n\\\\nx2 = xx   -cos(dir+1.5708)*b1;\\\\ny2 = yy +sin(dir+1.5708)*b1;\\\\n\\\\nd1 = sqrt((x1-x)*(x1-x)+(y1-y)*(y1-y))-b1*2;\\\\nsi1 = 1- 1/(1+pow(2,-d1*100));\\\\n\\\\nd2 = sqrt((x2-x)*(x2-x)+(y2-y)*(y2-y))-b1*2;\\\\nsi2 = 1- 1/(1+pow(2,-d2*100));\\\\n\\\\nsi3 = -pow(q5,3)*00;\\\\n\\\\ndx = (si1*sin(y1-y)*m1*d1  - si2*sin(y2-y)*m1*d2 + si3*cos(dir)*t1)*2/aspectx;\\\\ndy = (-si1*sin(x1-x)*m1*d1 + si2*sin(x2-x)*m1*d2 - si3*sin(dir)*t1)*2/aspecty;\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec3 ret_1;\\\\n  vec2 tmpvar_2;\\\\n  tmpvar_2 = (texsize.zw * 8.0);\\\\n  vec2 tmpvar_3;\\\\n  tmpvar_3.x = (((texture (sampler_blur1, \\\\n    (uv + (vec2(1.0, 0.0) * tmpvar_2))\\\\n  ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n    (uv - (vec2(1.0, 0.0) * tmpvar_2))\\\\n  ).xyz * scale1) + bias1)).x;\\\\n  tmpvar_3.y = (((texture (sampler_blur1, \\\\n    (uv + (vec2(0.0, 1.0) * tmpvar_2))\\\\n  ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n    (uv - (vec2(0.0, 1.0) * tmpvar_2))\\\\n  ).xyz * scale1) + bias1)).x;\\\\n  vec2 tmpvar_4;\\\\n  tmpvar_4 = (uv - ((tmpvar_3 * texsize.zw) * 0.5));\\\\n  ret_1.x = texture (sampler_fw_main, tmpvar_4).x;\\\\n  ret_1.x = (ret_1.x + ((\\\\n    (ret_1.x - ((texture (sampler_blur3, tmpvar_4).xyz * scale3) + bias3).x)\\\\n   * 0.2) - 0.004));\\\\n  ret_1.y = ((texture (sampler_fw_main, uv_orig).y * 0.98) - 0.004);\\\\n  vec4 tmpvar_5;\\\\n  tmpvar_5.w = 1.0;\\\\n  tmpvar_5.xyz = ret_1;\\\\n  ret = tmpvar_5.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec2 tmpvar_1;\\\\n  tmpvar_1 = (texsize.zw * 4.0);\\\\n  vec2 tmpvar_2;\\\\n  tmpvar_2.x = (((texture (sampler_blur1, \\\\n    (uv + (vec2(1.0, 0.0) * tmpvar_1))\\\\n  ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n    (uv - (vec2(1.0, 0.0) * tmpvar_1))\\\\n  ).xyz * scale1) + bias1)).x;\\\\n  tmpvar_2.y = (((texture (sampler_blur1, \\\\n    (uv + (vec2(0.0, 1.0) * tmpvar_1))\\\\n  ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n    (uv - (vec2(0.0, 1.0) * tmpvar_1))\\\\n  ).xyz * scale1) + bias1)).x;\\\\n  vec4 tmpvar_3;\\\\n  tmpvar_3.w = 1.0;\\\\n  tmpvar_3.xyz = mix ((vec3(0.0, 0.0, 1.0) * texture (sampler_main, uv).x), vec3(1.0, 0.0, 0.0), texture (sampler_main, (uv - tmpvar_2)).yyy);\\\\n  ret = tmpvar_3.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Flexi - mindblob mix.json\":\n/*!*****************************************************!*\\\n  !*** ./presets/converted/Flexi - mindblob mix.json ***!\n  \\*****************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":1,\\\"gammaadj\\\":1,\\\"decay\\\":1,\\\"echo_zoom\\\":1,\\\"echo_alpha\\\":0.5,\\\"wave_thick\\\":1,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"wave_a\\\":0.004,\\\"wave_scale\\\":0.01,\\\"wave_smoothing\\\":0,\\\"wave_mystery\\\":-0.44,\\\"modwavealphastart\\\":1,\\\"modwavealphaend\\\":1,\\\"warpanimspeed\\\":0.137,\\\"warpscale\\\":13.125,\\\"zoom\\\":0.99951,\\\"warp\\\":0.99213,\\\"wave_y\\\":0.04,\\\"ob_size\\\":0.015,\\\"ob_r\\\":0.1,\\\"ob_g\\\":0.25,\\\"ob_a\\\":1,\\\"ib_size\\\":0,\\\"ib_b\\\":1,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0,\\\"mv_b\\\":0,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"thickoutline\\\":1,\\\"rad\\\":0.02015,\\\"tex_ang\\\":0.12566,\\\"tex_zoom\\\":1.51878,\\\"r\\\":0,\\\"a\\\":0.1,\\\"g2\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thickoutline\\\":1,\\\"x\\\":1,\\\"rad\\\":0.39872,\\\"tex_ang\\\":0.12566,\\\"tex_zoom\\\":1.51878,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thickoutline\\\":1,\\\"x\\\":1,\\\"rad\\\":3.0054,\\\"tex_ang\\\":0.12566,\\\"tex_zoom\\\":1.51878,\\\"r\\\":0,\\\"g\\\":1,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thickoutline\\\":1,\\\"x\\\":1,\\\"rad\\\":0.39872,\\\"tex_ang\\\":0.12566,\\\"tex_zoom\\\":1.51878,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"usedots\\\":1,\\\"scaling\\\":2.44415,\\\"smoothing\\\":0,\\\"a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\ncl = 0;\\\",\\\"frame_eqs_eel\\\":\\\"t1 = 0;\\\\nv = 0.01;\\\\nj = j + (bass)*0.01;\\\\nj2 = j2 + (mid_att)*0.01;\\\\nj3 = j3 + (treb_att)*0.01;\\\\nt2 = j;\\\\nt3 = j2;\\\\nt4 = j3;\\\\n//t5 = 0;\\\\nk = k*0.99 + 10*mid/fps;\\\\nt5 = -k;\\\\n\\\\ncl1 = cl1 + 0.002;\\\\ncl1 = if(above(cl1,1),0,cl1);\\\\ncl1 = if(below(cl1,0),1,cl1);\\\\nt8 = cl1;\\\\n\\\\ncl2 = cl2 -1*q1;\\\\ncl2 = if(above(cl2,1),0,cl2);\\\\ncl2 = if(below(cl2,0),1,cl2);\\\\nt7 = cl2;\\\\n\\\\ncl3 = cl3 +0.001;\\\\ncl3 = if(above(cl3,1),0,cl3);\\\\ncl3 = if(below(cl3,0),1,cl3);\\\\nt6 = cl3;\\\",\\\"point_eqs_eel\\\":\\\"xx = ((sample*0983624912364)%10000000+100)/10000000;\\\\nyy = ((xx*1896575575)%10000000+100)/10000000;\\\\nzz = ((yy*58652340875)%10000000+100)/10000000;\\\\n\\\\n\\\\nd = sqrt(sqr(xx)+sqr(yy)+sqr(zz));\\\\n\\\\nzz = zz + t8 - if(above(zz+t8,1),1,0) - 0.5;\\\\nxx = xx + t7 - if(above(xx+t7,1),1,0) - 0.5;\\\\nyy = yy + t6 - if(above(yy+t6,1),1,0) - 0.5;\\\\n\\\\nv = 0.001;\\\\n\\\\nw = 1;// (sample*sin(time*0.3)*0.01-1);\\\\nbb = d*d*0.5;\\\\nn= 0.3;\\\\ns1 = sin(sin(t2*w+bb)*n);\\\\ns2 = sin(sin(t3*w+bb)*n);\\\\ns3 = sin(sin(t4*w+bb)*n);\\\\nc1 = cos(sin(t2*w+bb)*n);\\\\nc2 = cos(sin(t3*w+bb)*n);\\\\nc3 = cos(sin(t4*w+bb)*n);\\\\n\\\\nz = (c3*s1*c2 + s3*s2)*xx - (c3*s1*s2-s3*c2)*yy + c3*c1*zz;\\\\nx1 = (c1*c2*xx + c1*s2*yy - s1*zz);\\\\ny1 = ((s3*s1*c2 - c3*s2)*xx + (s3*s1*s2+c3*c2)*yy + s3*c1*zz);\\\\n\\\\nzoom = .5*(1/(z+0.5));\\\\nx = 0.5 + zoom*x1 + sin(time*0.1)*0;\\\\ny = 0.5 + zoom*y1 + cos(time*0.16801)*0;\\\\n\\\\npi3 = 3.1415*2*0.3333;\\\\nt = z*2+t2*1;\\\\nc=3;\\\\n//r = sin(t)*c;\\\\n\\\\n//g = sin(t+pi3)*c;\\\\n\\\\n//b = sin(t-pi3)*c;\\\\n\\\\n\\\\nr = if(above(r,1),1,r);\\\\nr = if(below(r,0),0,r);\\\\ng = if(above(g,1),1,g);\\\\ng = if(below(g,0),0,g);\\\\nb = if(above(b,1),1,b);\\\\nb = if(below(b,0),0,b);\\\\n\\\\na = 0.4;\\\"},{\\\"baseVals\\\":{\\\"scaling\\\":2.44415,\\\"smoothing\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\ncl = 0;\\\",\\\"frame_eqs_eel\\\":\\\"t8 = 1;\\\",\\\"point_eqs_eel\\\":\\\"t8 = -t8;\\\\ny = sample;\\\\nx = 0.5 + t8*0.005;\\\\n\\\\npi3 = 3.1415*2*0.3333;\\\\nt = time + sample*2;\\\\nc=2;\\\\n\\\\nr = sin(t)*c;\\\\ng = sin(t+pi3)*c;\\\\n\\\\nb = sin(t-pi3)*c;\\\\n\\\\n\\\\nr = if(above(r,1),1,r);\\\\nr = if(below(r,0),0,r);\\\\ng = if(above(g,1),1,g);\\\\ng = if(below(g,0),0,g);\\\\nb = if(above(b,1),1,b);\\\\nb = if(below(b,0),0,b);\\\\n\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":100,\\\"smoothing\\\":0.6,\\\"r\\\":0,\\\"g\\\":0.4,\\\"a\\\":0.3,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"t1 = q1;\\\\nt2 = q2;\\\\nt3 = q3;\\\\nt4 = q4;\\\\nt5 = q5;\\\\nt6 = q6;\\\\nt7 = q7;\\\\nt8 = q8;\\\",\\\"point_eqs_eel\\\":\\\"sample = 1-sample;\\\\nxxx = xx;\\\\nyyy = yy;\\\\nxx = pow(sample,5)*t1 + 5*pow(sample,4)*(1-sample)*t1 + 10*pow(sample,3)*sqr(1-sample)*t2\\\\n+ 10*sqr(sample)*pow(1-sample,3)*t3 + 5*pow(1-sample,4)*sample*t4 + pow(1-sample,5)*t4;\\\\n\\\\nyy = pow(sample,5)*t5 + 5*pow(sample,4)*(1-sample)*t5 + 10*pow(sample,3)*sqr(1-sample)*t6\\\\n+ 10*sqr(sample)*pow(1-sample,3)*t7 + 5*pow(1-sample,4)*sample*t8 + pow(1-sample,5)*t8;\\\\nd = 1/sqrt(sqr(xx-xxx)+sqr(yy-yyy));\\\\nx = xx + sample*(1-sample)*(value1-value2)*(yy-yyy)*d;\\\\ny = yy - sample*(1-sample)*(value1-value2)*(xx-xxx)*d;\\\"},{\\\"baseVals\\\":{\\\"usedots\\\":1,\\\"scaling\\\":2.44415,\\\"smoothing\\\":0,\\\"r\\\":0,\\\"g\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\ncl = 0;\\\",\\\"frame_eqs_eel\\\":\\\"t8 = 1;\\\",\\\"point_eqs_eel\\\":\\\"t8 = -t8;\\\\ny = (1+t8)*0.01;\\\\nx = sample;\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"warp = 0;\\\\nwave_a = 0;\\\\n// elastic thread code\\\\n\\\\nxx1 = xx1*0.9 + (bass)*0.01;\\\\nxx2 = xx2*0.9 + (treb)*0.01;\\\\nyy1 = yy1*0.94 + (treb+bass)*0.0075;\\\\nx1 = 0.5 + (xx1-xx2)*2;\\\\ny1 = 0.4 + yy1*1.5;\\\\ndt = 0.03/fps;\\\\nvx2 = vx2*(1-2*dt) + dt*((x1+x3-2*x2)*10);\\\\nvy2 = vy2*(1-2*dt) + dt*((y1+y3-2*y2)*10-0.5);\\\\nvx3 = vx3*(1-2*dt) + dt*((x2+x4-2*x3)*10);\\\\nvy3 = vy3*(1-2*dt) + dt*((y2+y4-2*y3)*10-0.5);\\\\nvx4 = vx4*(1-2*dt) + dt*((x3-x4)*10);\\\\nvy4 = vy4*(1-2*dt) + dt*((y3-y4)*10-0.5);\\\\nx2 = x2 + vx2; y2 = y2 + vy2;\\\\nx3 = x3 + vx3; y3 = y3 + vy3;\\\\nx4 = x4 + vx4; y4 = y4 + vy4;\\\\nvx2 = if(above(x2,0),vx2,abs(vx2)*0.5);\\\\nvx2 = if(below(x2,1),vx2,-abs(vx2)*0.5);\\\\nvx3 = if(above(x3,0),vx3,abs(vx3)*0.5);\\\\nvx3 = if(below(x3,1),vx3,-abs(vx3)*0.5);\\\\nvx4 = if(above(x4,0),vx4,abs(vx4)*0.5);\\\\nvx4 = if(below(x4,1),vx4,-abs(vx4)*0.5);\\\\nvy2 = if(above(y2,0),vy2,abs(vy2)*0.5);\\\\nvy2 = if(below(y2,1),vy2,-abs(vy2)*0.5);\\\\nvy3 = if(above(y3,0),vy3,abs(vy3)*0.5);\\\\nvy3 = if(below(y3,1),vy3,-abs(vy3)*0.5);\\\\nvy4 = if(above(y4,0),vy4,abs(vy4)*0.5);\\\\nvy4 = if(below(y4,1),vy4,-abs(vy4)*0.5);\\\\nq1 = x1;q2 = x2;q3 = x3;q4 = x4;\\\\nq5 = y1;q6 = y2;q7 = y3;q8 = y4;\\\\nq9 = 1/aspectx;\\\\nq10 = 1/aspecty;\\\\nq11 = aspectx;\\\\nq12 = aspecty;\\\\nq13 = sqrt(vx4*vx4 + vy4*vy4);\\\\nq14 = atan2(vx4,vy4);\\\\nq15 = sin(q14);\\\\nq16 = cos(q14);\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec2 uv_1;\\\\n  vec2 my_uv_2;\\\\n  vec3 ret_3;\\\\n  vec2 tmpvar_4;\\\\n  tmpvar_4.x = q4;\\\\n  tmpvar_4.y = (1.0 - q8);\\\\n  vec2 tmpvar_5;\\\\n  tmpvar_5.x = -(q15);\\\\n  tmpvar_5.y = q16;\\\\n  vec2 domain_6;\\\\n  vec2 uv_rot_7;\\\\n  domain_6 = (uv - tmpvar_4);\\\\n  domain_6 = (domain_6 * aspect.xy);\\\\n  float tmpvar_8;\\\\n  tmpvar_8 = (1.0/((1.0 + exp(\\\\n    ((sqrt(dot (domain_6, domain_6)) - 0.07) * 50.0)\\\\n  ))));\\\\n  domain_6 = (domain_6 + ((tmpvar_5 * q13) * (aspect.wz * tmpvar_8)));\\\\n  float tmpvar_9;\\\\n  tmpvar_9 = sin(tmpvar_8);\\\\n  float tmpvar_10;\\\\n  tmpvar_10 = cos(tmpvar_8);\\\\n  uv_rot_7.x = ((tmpvar_10 * domain_6.x) - (tmpvar_9 * domain_6.y));\\\\n  uv_rot_7.y = ((tmpvar_9 * domain_6.x) + (tmpvar_10 * domain_6.y));\\\\n  uv_rot_7 = (uv_rot_7 * aspect.zw);\\\\n  uv_rot_7 = (uv_rot_7 + tmpvar_4);\\\\n  uv_1 = (clamp ((tmpvar_4 + \\\\n    ((uv_rot_7 - tmpvar_4) * mix (1.0, 4.0, tmpvar_8))\\\\n  ), 0.0, 1.0) + (texsize.zw * vec2(0.0, 0.15)));\\\\n  vec2 tmpvar_11;\\\\n  tmpvar_11 = mix (uv_orig, uv_1, vec2(0.2, 0.2));\\\\n  uv_1 = tmpvar_11;\\\\n  vec2 tmpvar_12;\\\\n  tmpvar_12 = (vec2(1280.0, 1024.0) * texsize.zw);\\\\n  float tmpvar_13;\\\\n  tmpvar_13 = (((\\\\n    (texture (sampler_blur2, (tmpvar_11 + vec2(0.005, 0.0))).xyz * scale2)\\\\n   + bias2) - (\\\\n    (texture (sampler_blur2, (tmpvar_11 - vec2(0.005, 0.0))).xyz * scale2)\\\\n   + bias2)).x * tmpvar_12.x);\\\\n  float tmpvar_14;\\\\n  tmpvar_14 = (((\\\\n    (texture (sampler_blur2, (tmpvar_11 + vec2(0.0, 0.005))).xyz * scale2)\\\\n   + bias2) - (\\\\n    (texture (sampler_blur2, (tmpvar_11 - vec2(0.0, 0.005))).xyz * scale2)\\\\n   + bias2)).x * tmpvar_12.y);\\\\n  vec2 tmpvar_15;\\\\n  tmpvar_15.x = tmpvar_13;\\\\n  tmpvar_15.y = tmpvar_14;\\\\n  vec2 tmpvar_16;\\\\n  tmpvar_16.x = (((\\\\n    (texture (sampler_blur2, (tmpvar_11 + vec2(0.005, 0.0))).xyz * scale2)\\\\n   + bias2) - (\\\\n    (texture (sampler_blur2, (tmpvar_11 - vec2(0.005, 0.0))).xyz * scale2)\\\\n   + bias2)).x * tmpvar_12.x);\\\\n  tmpvar_16.y = (((\\\\n    (texture (sampler_blur2, (tmpvar_11 + vec2(0.0, 0.005))).xyz * scale2)\\\\n   + bias2) - (\\\\n    (texture (sampler_blur2, (tmpvar_11 - vec2(0.0, 0.005))).xyz * scale2)\\\\n   + bias2)).x * tmpvar_12.y);\\\\n  ret_3.x = texture (sampler_fw_main, ((tmpvar_11 - (tmpvar_15 * 0.006)) + (tmpvar_16 * 0.003))).x;\\\\n  ret_3.x = (ret_3.x + ((ret_3.x - \\\\n    ((texture (sampler_blur3, tmpvar_11).xyz * scale3) + bias3)\\\\n  .x) * 0.1));\\\\n  ret_3.x = (ret_3.x + 0.004);\\\\n  vec2 tmpvar_17;\\\\n  tmpvar_17.x = tmpvar_14;\\\\n  tmpvar_17.y = -(tmpvar_13);\\\\n  my_uv_2 = (uv_orig + ((tmpvar_17 * 0.05) * (1.2 - \\\\n    ((texture (sampler_blur3, uv_orig).xyz * scale3) + bias3)\\\\n  .y)));\\\\n  ret_3.z = texture (sampler_fw_main, my_uv_2).z;\\\\n  vec2 x_18;\\\\n  x_18 = (my_uv_2 - uv_orig);\\\\n  ret_3.z = (ret_3.z + ((\\\\n    ((ret_3.z - ((texture (sampler_blur1, uv_orig).xyz * scale1) + bias1).z) * sqrt(dot (x_18, x_18)))\\\\n   * 180.0) / sqrt(\\\\n    dot (tmpvar_12, tmpvar_12)\\\\n  )));\\\\n  ret_3.z = (ret_3.z * 0.85);\\\\n  ret_3.z = (ret_3.z + 0.008);\\\\n  vec2 tmpvar_19;\\\\n  tmpvar_19.x = -(tmpvar_14);\\\\n  tmpvar_19.y = tmpvar_13;\\\\n  my_uv_2 = (tmpvar_19 * 0.045);\\\\n  vec2 tmpvar_20;\\\\n  tmpvar_20.x = (((\\\\n    (texture (sampler_blur2, (tmpvar_11 + vec2(0.01, 0.0))).xyz * scale2)\\\\n   + bias2) - (\\\\n    (texture (sampler_blur2, (tmpvar_11 - vec2(0.01, 0.0))).xyz * scale2)\\\\n   + bias2)).y * tmpvar_12.x);\\\\n  tmpvar_20.y = (((\\\\n    (texture (sampler_blur2, (tmpvar_11 + vec2(0.0, 0.01))).xyz * scale2)\\\\n   + bias2) - (\\\\n    (texture (sampler_blur2, (tmpvar_11 - vec2(0.0, 0.01))).xyz * scale2)\\\\n   + bias2)).y * tmpvar_12.y);\\\\n  my_uv_2 = (my_uv_2 + (tmpvar_11 - (tmpvar_20 * 0.03)));\\\\n  ret_3.y = texture (sampler_fw_main, my_uv_2).y;\\\\n  ret_3.y = (ret_3.y + ((\\\\n    (ret_3.y - ((texture (sampler_blur3, my_uv_2).xyz * scale3) + bias3).y)\\\\n   * 0.1) + 0.03));\\\\n  vec4 tmpvar_21;\\\\n  tmpvar_21.w = 1.0;\\\\n  tmpvar_21.xyz = ret_3;\\\\n  ret = tmpvar_21.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec2 dz_1;\\\\n  vec3 dy_2;\\\\n  vec3 dx_3;\\\\n  vec2 d_4;\\\\n  vec3 ret_5;\\\\n  vec2 tmpvar_6;\\\\n  vec2 tmpvar_7;\\\\n  tmpvar_7 = (vec2(1.0, 0.0) * texsize.zw);\\\\n  tmpvar_6.x = (texture (sampler_main, (uv + tmpvar_7)).xyz - texture (sampler_main, (uv - tmpvar_7)).xyz).y;\\\\n  vec2 tmpvar_8;\\\\n  tmpvar_8 = (vec2(0.0, 1.0) * texsize.zw);\\\\n  tmpvar_6.y = (texture (sampler_main, (uv + tmpvar_8)).xyz - texture (sampler_main, (uv - tmpvar_8)).xyz).y;\\\\n  d_4 = (texsize.zw * 2.0);\\\\n  dx_3 = (((texture (sampler_blur1, \\\\n    (uv + (vec2(1.0, 0.0) * d_4))\\\\n  ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n    (uv - (vec2(1.0, 0.0) * d_4))\\\\n  ).xyz * scale1) + bias1));\\\\n  dy_2 = (((texture (sampler_blur1, \\\\n    (uv + (vec2(0.0, 1.0) * d_4))\\\\n  ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n    (uv - (vec2(0.0, 1.0) * d_4))\\\\n  ).xyz * scale1) + bias1));\\\\n  vec2 tmpvar_9;\\\\n  tmpvar_9.x = dx_3.y;\\\\n  tmpvar_9.y = dy_2.y;\\\\n  dz_1 = ((tmpvar_6 * 3.0) + tmpvar_9);\\\\n  ret_5 = (vec3(((\\\\n    pow ((sqrt(dot (dz_1, dz_1)) * 0.8), 0.7)\\\\n   + \\\\n    (((texture (sampler_blur2, uv).xyz * scale2) + bias2).y * 0.4)\\\\n  ) - 0.1)) * vec3(0.3, 0.5, 0.7));\\\\n  vec2 tmpvar_10;\\\\n  tmpvar_10.x = dx_3.x;\\\\n  tmpvar_10.y = dy_2.x;\\\\n  vec3 tmpvar_11;\\\\n  tmpvar_11 = mix (mix (ret_5, vec3(0.2, 0.1, 0.0), vec3((texture (sampler_main, \\\\n    (uv + ((tmpvar_10 * texsize.zw) * 18.0))\\\\n  ).x * 6.0))), vec3(1.0, 1.0, 1.0), texture (sampler_main, uv).zzz);\\\\n  ret_5 = tmpvar_11;\\\\n  vec4 tmpvar_12;\\\\n  tmpvar_12.w = 1.0;\\\\n  tmpvar_12.xyz = tmpvar_11;\\\\n  ret = tmpvar_12.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Flexi - predator-prey-spirals.json\":\n/*!**************************************************************!*\\\n  !*** ./presets/converted/Flexi - predator-prey-spirals.json ***!\n  \\**************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":1,\\\"gammaadj\\\":1.28,\\\"decay\\\":0.8,\\\"echo_zoom\\\":1,\\\"echo_orient\\\":3,\\\"wave_mode\\\":7,\\\"additivewave\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"brighten\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":1.286,\\\"wave_smoothing\\\":0.63,\\\"modwavealphastart\\\":0.71,\\\"modwavealphaend\\\":1.3,\\\"warpanimspeed\\\":0.01,\\\"warpscale\\\":100,\\\"zoomexp\\\":0.92178,\\\"zoom\\\":0.9901,\\\"warp\\\":0.01,\\\"wave_r\\\":0.65,\\\"wave_g\\\":0.65,\\\"wave_b\\\":0.65,\\\"ob_size\\\":0.005,\\\"ob_g\\\":1,\\\"ob_a\\\":1,\\\"ib_size\\\":0,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"ib_a\\\":1,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0,\\\"mv_a\\\":0,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"sides\\\":39,\\\"additive\\\":1,\\\"num_inst\\\":126,\\\"rad\\\":0.06989,\\\"tex_ang\\\":0.62832,\\\"r2\\\":1,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ma=ma+(above(bass,1)*3.1415*.01*bass);\\\\nma=ma-(above(treb,1)*3.1415*.01*treb);\\\\n\\\\nmx=mx+(.0002*cos(ma));\\\\nmy=my+(.0002*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.8));\\\"},{\\\"baseVals\\\":{\\\"sides\\\":41,\\\"additive\\\":1,\\\"num_inst\\\":239,\\\"rad\\\":0.06989,\\\"tex_ang\\\":0.62832,\\\"r\\\":0,\\\"g\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ma=ma+(above(bass,1)*3.1415*.05*bass);\\\\nma=ma-(above(mid,1)*3.1415*.05*mid);\\\\n\\\\nmx=mx+(.0001*cos(ma));\\\\nmy=my+(.0001*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.1));\\\"},{\\\"baseVals\\\":{\\\"sides\\\":43,\\\"additive\\\":1,\\\"num_inst\\\":32,\\\"rad\\\":0.06989,\\\"tex_ang\\\":0.62832,\\\"r\\\":0,\\\"b\\\":1,\\\"g2\\\":0,\\\"b2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ma=ma+(above(mid,1)*3.1415*.01*mid);\\\\nma=ma-(above(treb,1)*3.1415*.01*treb);\\\\n\\\\nmx=mx+(.0004*cos(ma));\\\\nmy=my+(.0004*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.3));\\\"},{\\\"baseVals\\\":{\\\"sides\\\":14,\\\"additive\\\":1,\\\"num_inst\\\":127,\\\"rad\\\":0.0556,\\\"tex_ang\\\":0.62832,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ma=ma+(above(bass,.5)*3.1415*.02*bass);\\\\nma=ma-(above(treb,.5)*3.1415*.02*treb);\\\\n\\\\nmx=mx+(.0008*cos(ma));\\\\nmy=my+(.0008*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.2));\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(bass,1)*3.1415*.01*bass);\\\\nma=ma-(above(treb,1)*3.1415*.01*treb);\\\\n\\\\nmx=mx+(.0002*cos(ma));\\\\nmy=my+(.0002*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.8));\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(bass,1)*3.1415*.05*bass);\\\\nma=ma-(above(mid,1)*3.1415*.05*mid);\\\\n\\\\nmx=mx+(.0001*cos(ma));\\\\nmy=my+(.0001*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.1));\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(mid,1)*3.1415*.01*mid);\\\\nma=ma-(above(treb,1)*3.1415*.01*treb);\\\\n\\\\nmx=mx+(.0004*cos(ma));\\\\nmy=my+(.0004*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.3));\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(bass,.5)*3.1415*.02*bass);\\\\nma=ma-(above(treb,.5)*3.1415*.02*treb);\\\\n\\\\nmx=mx+(.0008*cos(ma));\\\\nmy=my+(.0008*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.2));\\\"}],\\\"init_eqs_eel\\\":\\\"x1 = 0.9;\\\\ny1 = 0.5;\\\\n\\\\nx2 = 0.5; y2 = 0.5;\\\\nx3 = 0.5; y3 = 0.5;\\\\nx4 = 0.5; y4 = 0.5;\\\",\\\"frame_eqs_eel\\\":\\\"xx1 = xx1*0.9 + (bass)*0.01;\\\\nxx2 = xx2*0.9 + (treb)*0.01;\\\\nyy1 = yy1*0.94 + (treb+bass)*0.0075;\\\\n\\\\nx1 = 0.5 + (xx1-xx2)*2;\\\\ny1 = 0.4 + yy1;\\\\n\\\\nx1 = max(0,min(1,x1)); y1 = max(0,min(1,y1));\\\\n\\\\nspring = 10;\\\\ngrav = .5;\\\\nresist = 1;\\\\nbounce = 0.75;\\\\ndt = 0.0001*(60/fps);\\\\n\\\\nvx2 = vx2*(1-resist*dt) + dt*((x1+x3-2*x2)*spring);\\\\nvy2 = vy2*(1-resist*dt) + dt*((y1+y3-2*y2)*spring-grav);\\\\nvx3 = vx3*(1-resist*dt) + dt*((x2+x4-2*x3)*spring);\\\\nvy3 = vy3*(1-resist*dt) + dt*((y2+y4-2*y3)*spring-grav);\\\\nvx4 = vx4*(1-resist*dt) + dt*((x3-x4)*spring);\\\\nvy4 = vy4*(1-resist*dt) + dt*((y3-y4)*spring-grav);\\\\n\\\\nx2 = x2 + vx2;\\\\ny2 = y2 + vy2;\\\\nx3 = x3 + vx3;\\\\ny3 = y3 + vy3;\\\\nx4 = x4 + vx4;\\\\ny4 = y4 + vy4;\\\\n\\\\nvx2 = if(above(x2,0),vx2,abs(vx2)*bounce);\\\\nvx2 = if(below(x2,1),vx2,-abs(vx2)*bounce);\\\\nvx3 = if(above(x3,0),vx3,abs(vx3)*bounce);\\\\nvx3 = if(below(x3,1),vx3,-abs(vx3)*bounce);\\\\nvx4 = if(above(x4,0),vx4,abs(vx4)*bounce);\\\\nvx4 = if(below(x4,1),vx4,-abs(vx4)*bounce);\\\\nvy2 = if(above(y2,0),vy2,abs(vy2)*bounce);\\\\nvy2 = if(below(y2,1),vy2,-abs(vy2)*bounce);\\\\nvy3 = if(above(y3,0),vy3,abs(vy3)*bounce);\\\\nvy3 = if(below(y3,1),vy3,-abs(vy3)*bounce);\\\\nvy4 = if(above(y4,0),vy4,abs(vy4)*bounce);\\\\nvy4 = if(below(y4,1),vy4,-abs(vy4)*bounce);\\\\nq4 = x4;\\\\nq8 = y4;\\\\n\\\\nq1 = aspectx;\\\\nq2 = aspecty;\\\\nq10 = x1;\\\\nq11 = y1;\\\\nzoom = 1;\\\\nwarp = 0;\\\\nq6 = atan2(vx4,vy4);\\\\nq5 = sqrt(vx4*vx4 + vy4*vy4);\\\\n\\\\na = a*0.95 + q5;\\\\n\\\\ns = s*0.9 + a;\\\\nq3 = s*0.1;\\\\nmonitor = s;\\\\n\\\\nwave_a = 0;\\\",\\\"pixel_eqs_eel\\\":\\\"x = 0.5 + (x-0.5)*q1;\\\\ny = 0.5 + (y-0.5)*q2;\\\\nxx = q4;\\\\nyy = 1-q8;\\\\n\\\\ndx = 0; dy = 0;\\\\n\\\\nd = sqrt((x-xx)*(x-xx)+(y-yy)*(y-yy));\\\\n\\\\nr = 0.1;\\\\nv = 20;\\\\nv2 = q5;\\\\ndx = (v*(sin(y-yy)*(d-r)-(x-xx)*(d-r/2)) + cos(dir)*v2)*(1.00-sigmoid(d-r,120));\\\\ndy = (-v*(sin(x-xx)*(d-r)+(y-yy)*(d-r/2)) -sin(dir)*v2)*(1.00-sigmoid(d-r,120));\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec3 ret_1;\\\\n  vec2 tmpvar_2;\\\\n  tmpvar_2 = mix (uv_orig, uv, vec2(2.0, 2.0));\\\\n  vec2 tmpvar_3;\\\\n  tmpvar_3 = (texsize.zw * 2.0);\\\\n  vec3 tmpvar_4;\\\\n  tmpvar_4 = (((texture (sampler_blur1, \\\\n    (tmpvar_2 + (vec2(1.0, 0.0) * tmpvar_3))\\\\n  ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n    (tmpvar_2 - (vec2(1.0, 0.0) * tmpvar_3))\\\\n  ).xyz * scale1) + bias1));\\\\n  vec3 tmpvar_5;\\\\n  tmpvar_5 = (((texture (sampler_blur1, \\\\n    (tmpvar_2 + (vec2(0.0, 1.0) * tmpvar_3))\\\\n  ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n    (tmpvar_2 - (vec2(0.0, 1.0) * tmpvar_3))\\\\n  ).xyz * scale1) + bias1));\\\\n  vec2 tmpvar_6;\\\\n  tmpvar_6.x = tmpvar_4.x;\\\\n  tmpvar_6.y = tmpvar_5.x;\\\\n  vec2 tmpvar_7;\\\\n  tmpvar_7 = (tmpvar_2 + ((tmpvar_6 * texsize.zw) * 8.0));\\\\n  vec2 tmpvar_8;\\\\n  tmpvar_8.x = tmpvar_4.y;\\\\n  tmpvar_8.y = tmpvar_5.y;\\\\n  vec2 tmpvar_9;\\\\n  tmpvar_9 = (tmpvar_2 + ((tmpvar_8 * texsize.zw) * 8.0));\\\\n  vec2 tmpvar_10;\\\\n  tmpvar_10.x = tmpvar_4.z;\\\\n  tmpvar_10.y = tmpvar_5.z;\\\\n  vec2 tmpvar_11;\\\\n  tmpvar_11 = (tmpvar_2 + ((tmpvar_10 * texsize.zw) * 8.0));\\\\n  ret_1.x = (texture (sampler_main, tmpvar_7).x - ((texture (sampler_main, tmpvar_7).xyz - \\\\n    ((texture (sampler_blur3, tmpvar_7).xyz * scale3) + bias3)\\\\n  ).x * 0.02));\\\\n  ret_1.y = (texture (sampler_main, tmpvar_9).y - ((texture (sampler_main, tmpvar_9).xyz - \\\\n    ((texture (sampler_blur3, tmpvar_9).xyz * scale3) + bias3)\\\\n  ).y * 0.02));\\\\n  ret_1.z = (texture (sampler_main, tmpvar_11).z - ((texture (sampler_main, tmpvar_11).xyz - \\\\n    ((texture (sampler_blur3, tmpvar_11).xyz * scale3) + bias3)\\\\n  ).z * 0.02));\\\\n  ret_1 = (ret_1 + ((texture (sampler_noise_lq, \\\\n    (((uv_orig * texsize.xy) * (texsize_noise_lq.zw * 1.2)) + rand_frame.xy)\\\\n  ).xyz - 0.5) * 0.04));\\\\n  ret_1 = (ret_1 - ((ret_1.yzx * 0.1) - 0.02));\\\\n  vec4 tmpvar_12;\\\\n  tmpvar_12.w = 1.0;\\\\n  tmpvar_12.xyz = ret_1;\\\\n  ret = tmpvar_12.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec2 tmpvar_1;\\\\n  tmpvar_1 = (texsize.zw * 8.0);\\\\n  vec3 tmpvar_2;\\\\n  tmpvar_2 = (((texture (sampler_blur1, \\\\n    (uv + (vec2(1.0, 0.0) * tmpvar_1))\\\\n  ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n    (uv - (vec2(1.0, 0.0) * tmpvar_1))\\\\n  ).xyz * scale1) + bias1));\\\\n  vec3 tmpvar_3;\\\\n  tmpvar_3 = (((texture (sampler_blur1, \\\\n    (uv + (vec2(0.0, 1.0) * tmpvar_1))\\\\n  ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n    (uv - (vec2(0.0, 1.0) * tmpvar_1))\\\\n  ).xyz * scale1) + bias1));\\\\n  vec2 tmpvar_4;\\\\n  tmpvar_4.x = q4;\\\\n  tmpvar_4.y = (1.0 - q8);\\\\n  vec2 tmpvar_5;\\\\n  tmpvar_5.x = tmpvar_2.y;\\\\n  tmpvar_5.y = tmpvar_3.y;\\\\n  vec2 x_6;\\\\n  x_6 = ((uv - (tmpvar_5 * 2.0)) - tmpvar_4);\\\\n  vec2 tmpvar_7;\\\\n  tmpvar_7.x = tmpvar_2.x;\\\\n  tmpvar_7.y = tmpvar_3.x;\\\\n  vec2 x_8;\\\\n  x_8 = ((uv - (tmpvar_7 * 2.0)) - tmpvar_4);\\\\n  vec2 tmpvar_9;\\\\n  tmpvar_9.x = tmpvar_2.z;\\\\n  tmpvar_9.y = tmpvar_3.z;\\\\n  vec2 x_10;\\\\n  x_10 = ((uv - (tmpvar_9 * 2.0)) - tmpvar_4);\\\\n  vec3 tmpvar_11;\\\\n  tmpvar_11.x = (1.1 - pow (sqrt(\\\\n    dot (x_8, x_8)\\\\n  ), 0.2));\\\\n  tmpvar_11.y = (1.1 - pow (sqrt(\\\\n    dot (x_6, x_6)\\\\n  ), 0.2));\\\\n  tmpvar_11.z = (1.1 - pow (sqrt(\\\\n    dot (x_10, x_10)\\\\n  ), 0.2));\\\\n  vec4 tmpvar_12;\\\\n  tmpvar_12.w = 1.0;\\\\n  tmpvar_12.xyz = ((tmpvar_11 * texture (sampler_main, uv).xyz) * 2.4);\\\\n  ret = tmpvar_12.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Flexi - smashing fractals [acid etching mix].json\":\n/*!*****************************************************************************!*\\\n  !*** ./presets/converted/Flexi - smashing fractals [acid etching mix].json ***!\n  \\*****************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":0,\\\"gammaadj\\\":1,\\\"decay\\\":1,\\\"echo_zoom\\\":1,\\\"echo_orient\\\":2,\\\"wave_mode\\\":1,\\\"wave_thick\\\":1,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"wave_a\\\":0.004,\\\"wave_scale\\\":0.01,\\\"wave_smoothing\\\":0,\\\"wave_mystery\\\":-0.44,\\\"modwavealphastart\\\":1,\\\"modwavealphaend\\\":1,\\\"warpanimspeed\\\":1.311,\\\"warpscale\\\":8.311,\\\"zoomexp\\\":5.20652,\\\"warp\\\":0.13291,\\\"wave_y\\\":0.04,\\\"ob_size\\\":0.005,\\\"ob_a\\\":1,\\\"ib_size\\\":0,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"ib_a\\\":1,\\\"mv_x\\\":0,\\\"mv_y\\\":0,\\\"mv_l\\\":1,\\\"mv_g\\\":0.91,\\\"mv_b\\\":0.71,\\\"mv_a\\\":0,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"additive\\\":1,\\\"thickoutline\\\":1,\\\"y\\\":0.75,\\\"rad\\\":0.07493,\\\"tex_zoom\\\":0.73458,\\\"g\\\":1,\\\"g2\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"vx = 0\\\",\\\"frame_eqs_eel\\\":\\\"x = q4;\\\\ny = q8;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"additive\\\":1,\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"x\\\":0.7,\\\"y\\\":0.3,\\\"rad\\\":0.6623,\\\"ang\\\":2.45044,\\\"tex_zoom\\\":0.74934,\\\"g\\\":0.1,\\\"b\\\":0.1,\\\"r2\\\":1,\\\"g2\\\":0.1,\\\"b2\\\":0.1,\\\"a2\\\":1,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"xx = 0.5;\\\\nyy = 0.4;\\\",\\\"frame_eqs_eel\\\":\\\"d = sqrt( sqr(xx-q4)+sqr(yy-q8));\\\\n\\\\nxx = if(below(d,0.15),0.4+rand(200)/1000,xx);\\\\nyy = if(below(d,0.15),0.3+rand(400)/1000,yy);\\\\naang = if(below(d,0.12),rand(1000)/1000,aang);\\\\nang =aang*4*asin(1);\\\\nx = xx;\\\\ny = yy;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"additive\\\":1,\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"x\\\":0.43,\\\"y\\\":0.6,\\\"rad\\\":1.16781,\\\"ang\\\":5.96903,\\\"tex_zoom\\\":0.67165,\\\"r2\\\":1,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"xx = 0.5;\\\\nyy = 0.4;\\\",\\\"frame_eqs_eel\\\":\\\"d = sqrt( sqr(xx-q4)+sqr(yy-q8));\\\\n\\\\nxx = if(below(d,0.15),0.4+rand(200)/1000,xx);\\\\nyy = if(below(d,0.15),0.3+rand(400)/1000,yy);\\\\naang = if(below(d,0.12),rand(1000)/1000,aang);\\\\nang =aang*4*asin(1);\\\\nx = xx;\\\\ny = yy;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"additive\\\":1,\\\"thickoutline\\\":1,\\\"y\\\":0.75,\\\"rad\\\":0.07059,\\\"tex_zoom\\\":0.73458,\\\"g\\\":0.5,\\\"b\\\":0.5,\\\"g2\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"vx = 0\\\",\\\"frame_eqs_eel\\\":\\\"x = q1;\\\\ny = q5;\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"usedots\\\":1,\\\"scaling\\\":2.44415,\\\"smoothing\\\":0,\\\"a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\ncl = 0;\\\",\\\"frame_eqs_eel\\\":\\\"t1 = 0;\\\\nv = 0.01;\\\\nj = j + (bass)*0.01;\\\\nj2 = j2 + (mid_att)*0.01;\\\\nj3 = j3 + (treb_att)*0.01;\\\\nt2 = j;\\\\nt3 = j2;\\\\nt4 = j3;\\\\n//t5 = 0;\\\\nk = k*0.99 + 10*mid/fps;\\\\nt5 = -k;\\\\n\\\\ncl1 = cl1 + 0.002;\\\\ncl1 = if(above(cl1,1),0,cl1);\\\\ncl1 = if(below(cl1,0),1,cl1);\\\\nt8 = cl1;\\\\n\\\\ncl2 = cl2 -1*q1;\\\\ncl2 = if(above(cl2,1),0,cl2);\\\\ncl2 = if(below(cl2,0),1,cl2);\\\\nt7 = cl2;\\\\n\\\\ncl3 = cl3 +0.001;\\\\ncl3 = if(above(cl3,1),0,cl3);\\\\ncl3 = if(below(cl3,0),1,cl3);\\\\nt6 = cl3;\\\",\\\"point_eqs_eel\\\":\\\"xx = ((sample*0983624912364)%10000000+100)/10000000;\\\\nyy = ((xx*1896575575)%10000000+100)/10000000;\\\\nzz = ((yy*58652340875)%10000000+100)/10000000;\\\\n\\\\n\\\\nd = sqrt(sqr(xx)+sqr(yy)+sqr(zz));\\\\n\\\\nzz = zz + t8 - if(above(zz+t8,1),1,0) - 0.5;\\\\nxx = xx + t7 - if(above(xx+t7,1),1,0) - 0.5;\\\\nyy = yy + t6 - if(above(yy+t6,1),1,0) - 0.5;\\\\n\\\\nv = 0.001;\\\\n\\\\nw = 1;// (sample*sin(time*0.3)*0.01-1);\\\\nbb = d*d*0.5;\\\\nn= 0.3;\\\\ns1 = sin(sin(t2*w+bb)*n);\\\\ns2 = sin(sin(t3*w+bb)*n);\\\\ns3 = sin(sin(t4*w+bb)*n);\\\\nc1 = cos(sin(t2*w+bb)*n);\\\\nc2 = cos(sin(t3*w+bb)*n);\\\\nc3 = cos(sin(t4*w+bb)*n);\\\\n\\\\nz = (c3*s1*c2 + s3*s2)*xx - (c3*s1*s2-s3*c2)*yy + c3*c1*zz;\\\\nx1 = (c1*c2*xx + c1*s2*yy - s1*zz);\\\\ny1 = ((s3*s1*c2 - c3*s2)*xx + (s3*s1*s2+c3*c2)*yy + s3*c1*zz);\\\\n\\\\nzoom = .5*(1/(z+0.5));\\\\nx = 0.5 + zoom*x1 + sin(time*0.1)*0;;\\\\ny = 0.5 + zoom*y1 + cos(time*0.16801)*0;\\\\n\\\\npi3 = 3.1415*2*0.3333;\\\\nt = z*2+t2*1;\\\\nc=3;\\\\n//r = sin(t)*c;\\\\n\\\\n//g = sin(t+pi3)*c;\\\\n\\\\n//b = sin(t-pi3)*c;\\\\n\\\\n\\\\nr = if(above(r,1),1,r);\\\\nr = if(below(r,0),0,r);\\\\ng = if(above(g,1),1,g);\\\\ng = if(below(g,0),0,g);\\\\nb = if(above(b,1),1,b);\\\\nb = if(below(b,0),0,b);\\\\n\\\\na = 0.4;\\\"},{\\\"baseVals\\\":{\\\"scaling\\\":7.7518,\\\"smoothing\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\ncl = 0;\\\",\\\"frame_eqs_eel\\\":\\\"t8 = 1;\\\\n\\\\nt1 = 0.5;\\\\nt2 = 0.9;\\\",\\\"point_eqs_eel\\\":\\\"d = d*0.85 + (value1)*1;\\\\n\\\\nx = 0.5 + d*sample*(1-sample);\\\\ny = 0.9 - sample*0.8;\\\"},{\\\"baseVals\\\":{\\\"usedots\\\":1,\\\"thick\\\":1,\\\"scaling\\\":5.92556,\\\"smoothing\\\":0,\\\"g\\\":0,\\\"b\\\":0,\\\"a\\\":0.66,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"t1 = q1;\\\\nt2 = q2;\\\\nt3 = q3;\\\\nt4 = q4;\\\\nt5 = q5;\\\\nt6 = q6;\\\\nt7 = q7;\\\\nt8 = q8;\\\",\\\"point_eqs_eel\\\":\\\"sample = 1-sample;\\\\nxxx = xx;\\\\nyyy = yy;\\\\nxx = pow(sample,5)*t1 + 5*pow(sample,4)*(1-sample)*t1 + 10*pow(sample,3)*sqr(1-sample)*t2\\\\n+ 10*sqr(sample)*pow(1-sample,3)*t3 + 5*pow(1-sample,4)*sample*t4 + pow(1-sample,5)*t4;\\\\n\\\\nyy = pow(sample,5)*t5 + 5*pow(sample,4)*(1-sample)*t5 + 10*pow(sample,3)*sqr(1-sample)*t6\\\\n+ 10*sqr(sample)*pow(1-sample,3)*t7 + 5*pow(1-sample,4)*sample*t8 + pow(1-sample,5)*t8;\\\\n\\\\nd = 1/sqrt(sqr(xx-xxx)+sqr(yy-yyy));\\\\ndd = dd*0.95 + (value1);\\\\nddd = dd*sample*(1-sample)*d;\\\\n\\\\nx = xx + (yy-yyy)*ddd;\\\\ny = yy - (xx-xxx)*ddd;\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"scaling\\\":5.92556,\\\"smoothing\\\":0,\\\"r\\\":0.65,\\\"g\\\":0.45,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0\\\",\\\"frame_eqs_eel\\\":\\\"t1 = q1;\\\\nt2 = q2;\\\\nt3 = q3;\\\\nt4 = q4;\\\\nt5 = q5;\\\\nt6 = q6;\\\\nt7 = q7;\\\\nt8 = q8;\\\",\\\"point_eqs_eel\\\":\\\"sample = 1-sample;\\\\nxxx = xx;\\\\nyyy = yy;\\\\nxx = pow(sample,5)*t1 + 5*pow(sample,4)*(1-sample)*t1 + 10*pow(sample,3)*sqr(1-sample)*t2\\\\n+ 10*sqr(sample)*pow(1-sample,3)*t3 + 5*pow(1-sample,4)*sample*t4 + pow(1-sample,5)*t4;\\\\n\\\\nyy = pow(sample,5)*t5 + 5*pow(sample,4)*(1-sample)*t5 + 10*pow(sample,3)*sqr(1-sample)*t6\\\\n+ 10*sqr(sample)*pow(1-sample,3)*t7 + 5*pow(1-sample,4)*sample*t8 + pow(1-sample,5)*t8;\\\\n\\\\nd = 1/sqrt(sqr(xx-xxx)+sqr(yy-yyy));\\\\ndd = dd*0.95 + (value1);\\\\nddd = dd*sample*(1-sample)*d;\\\\nddd = sample*(1-sample)*sin(sample*200)*d*0.05;\\\\nx = xx + (yy-yyy)*ddd;\\\\ny = yy - (xx-xxx)*ddd;\\\"}],\\\"init_eqs_eel\\\":\\\"x1 = 0;\\\\ny1 = 0;\\\",\\\"frame_eqs_eel\\\":\\\"decay = 0.25;\\\\nxx1 = xx1*0.9 + (bass)*0.01;\\\\nxx2 = xx2*0.9 + (treb)*0.01;\\\\nyy1 = yy1*0.94 + (treb+bass)*0.0075;\\\\n\\\\nx1 = 0.5 + (xx1-xx2)*2;\\\\ny1 = 0.4 + yy1;\\\\n\\\\nx1 = max(0,min(1,x1));\\\\ny1 = max(0,min(1,y1));\\\\n//x2 = 0;y2 = 0;x3 = 0;y3 = 0;x4 = 0;y4 = 0;\\\\n\\\\nspring = 50;\\\\ngrav = 2;\\\\nresist = 5;\\\\nbounce = 0.75;\\\\ndt = 0.00015*60/fps;\\\\n\\\\nspx2 = (x1+x3-2*x2)*spring;\\\\nspy2 = (y1+y3-2*y2)*spring;\\\\nspx3 = (x2+x4-2*x3)*spring;\\\\nspy3 = (y2+y4-2*y3)*spring;\\\\nspx4 = (x3-x4)*spring;\\\\nspy4 = (y3-y4)*spring;\\\\n\\\\nvx2 = vx2*(1-resist*dt) + dt*(spx2);\\\\nvy2 = vy2*(1-resist*dt) + dt*(spy2-grav);\\\\nvx3 = vx3*(1-resist*dt) + dt*(spx3);\\\\nvy3 = vy3*(1-resist*dt) + dt*(spy3-grav);\\\\nvx4 = vx4*(1-resist*dt) + dt*(spx4);\\\\nvy4 = vy4*(1-resist*dt) + dt*(spy4-grav);\\\\n\\\\nx2 = x2 + vx2;\\\\ny2 = y2 + vy2;\\\\nx3 = x3 + vx3;\\\\ny3 = y3 + vy3;\\\\nx4 = x4 + vx4;\\\\ny4 = y4 + vy4;\\\\n\\\\nvx2 = if(above(x2,0.1),vx2,abs(vx2)*bounce);\\\\nvx2 = if(below(x2,0.9),vx2,-abs(vx2)*bounce);\\\\nvx3 = if(above(x3,0.1),vx3,abs(vx3)*bounce);\\\\nvx3 = if(below(x3,0.9),vx3,-abs(vx3)*bounce);\\\\nvx4 = if(above(x4,0.1),vx4,abs(vx4)*bounce);\\\\nvx4 = if(below(x4,0.9),vx4,-abs(vx4)*bounce);\\\\n\\\\nvy2 = if(above(y2,0),vy2,abs(vy2)*bounce);\\\\nvy2 = if(below(y2,1),vy2,-abs(vy2)*bounce);\\\\nvy3 = if(above(y3,0),vy3,abs(vy3)*bounce);\\\\nvy3 = if(below(y3,1),vy3,-abs(vy3)*bounce);\\\\nvy4 = if(above(y4,0),vy4,abs(vy4)*bounce);\\\\nvy4 = if(below(y4,1),vy4,-abs(vy4)*bounce);\\\\n\\\\n\\\\nq1 = x1;\\\\nq2 = x2;\\\\nq3 = x3;\\\\nq4 = x4;\\\\n\\\\nq5 = y1;\\\\nq6 = y2;\\\\nq7 = y3;\\\\nq8 = y4;\\\\n\\\\nmonitor = ry4;\\\\n\\\\nzoom = 1.0004;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec2 my_uv_1;\\\\n  vec3 ret_2;\\\\n  float tmpvar_3;\\\\n  tmpvar_3 = (((texture (sampler_blur2, \\\\n    (uv + vec2(0.005, 0.0))\\\\n  ).xyz * scale2) + bias2) - ((texture (sampler_blur2, \\\\n    (uv - vec2(0.005, 0.0))\\\\n  ).xyz * scale2) + bias2)).y;\\\\n  float tmpvar_4;\\\\n  tmpvar_4 = (((texture (sampler_blur2, \\\\n    (uv + vec2(0.0, 0.005))\\\\n  ).xyz * scale2) + bias2) - ((texture (sampler_blur2, \\\\n    (uv - vec2(0.0, 0.005))\\\\n  ).xyz * scale2) + bias2)).y;\\\\n  vec2 tmpvar_5;\\\\n  tmpvar_5.x = tmpvar_3;\\\\n  tmpvar_5.y = tmpvar_4;\\\\n  vec2 tmpvar_6;\\\\n  tmpvar_6 = (uv - (tmpvar_5 * 0.01));\\\\n  ret_2.y = texture (sampler_fc_main, (tmpvar_6 - floor(tmpvar_6))).y;\\\\n  ret_2.y = (ret_2.y + ((ret_2.y - \\\\n    ((texture (sampler_blur3, (tmpvar_6 - floor(tmpvar_6))).xyz * scale3) + bias3)\\\\n  .y) * 0.1));\\\\n  vec2 tmpvar_7;\\\\n  tmpvar_7 = floor(uv);\\\\n  ret_2.y = (ret_2.y + (0.006 - (\\\\n    ((texture (sampler_blur3, (uv - tmpvar_7)).xyz * scale3) + bias3)\\\\n  .x * 5.0)));\\\\n  ret_2.y = ret_2.y;\\\\n  vec2 tmpvar_8;\\\\n  tmpvar_8.x = -(tmpvar_4);\\\\n  tmpvar_8.y = tmpvar_3;\\\\n  my_uv_1 = (tmpvar_8 * 0.05);\\\\n  vec2 tmpvar_9;\\\\n  tmpvar_9.x = (((texture (sampler_blur2, \\\\n    (uv + vec2(0.01, 0.0))\\\\n  ).xyz * scale2) + bias2) - ((texture (sampler_blur2, \\\\n    (uv - vec2(0.01, 0.0))\\\\n  ).xyz * scale2) + bias2)).z;\\\\n  tmpvar_9.y = (((texture (sampler_blur2, \\\\n    (uv + vec2(0.0, 0.01))\\\\n  ).xyz * scale2) + bias2) - ((texture (sampler_blur2, \\\\n    (uv - vec2(0.0, 0.01))\\\\n  ).xyz * scale2) + bias2)).z;\\\\n  my_uv_1 = (my_uv_1 + (uv - (tmpvar_9 * 0.005)));\\\\n  ret_2.z = texture (sampler_fw_main, (my_uv_1 - floor(my_uv_1))).z;\\\\n  ret_2.z = (ret_2.z + ((ret_2.z - \\\\n    ((texture (sampler_blur3, (my_uv_1 - floor(my_uv_1))).xyz * scale3) + bias3)\\\\n  .z) * 0.13));\\\\n  ret_2.z = (ret_2.z * 0.95);\\\\n  ret_2.z = (ret_2.z + ((0.03 - \\\\n    ((texture (sampler_blur3, (uv - tmpvar_7)).xyz * scale3) + bias3)\\\\n  .x) - (texture (sampler_main, \\\\n    (my_uv_1 - floor(my_uv_1))\\\\n  ).y * 0.05)));\\\\n  ret_2.x = (texture (sampler_main, uv_orig).x - 0.3);\\\\n  vec4 tmpvar_10;\\\\n  tmpvar_10.w = 1.0;\\\\n  tmpvar_10.xyz = ret_2;\\\\n  ret = tmpvar_10.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec3 ret_1;\\\\n  vec2 tmpvar_2;\\\\n  tmpvar_2 = (texsize.zw * 8.0);\\\\n  vec3 tmpvar_3;\\\\n  tmpvar_3 = (((texture (sampler_blur1, \\\\n    (uv + (vec2(1.0, 0.0) * tmpvar_2))\\\\n  ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n    (uv - (vec2(1.0, 0.0) * tmpvar_2))\\\\n  ).xyz * scale1) + bias1));\\\\n  vec3 tmpvar_4;\\\\n  tmpvar_4 = (((texture (sampler_blur1, \\\\n    (uv + (vec2(0.0, 1.0) * tmpvar_2))\\\\n  ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n    (uv - (vec2(0.0, 1.0) * tmpvar_2))\\\\n  ).xyz * scale1) + bias1));\\\\n  vec2 tmpvar_5;\\\\n  tmpvar_5.x = tmpvar_3.y;\\\\n  tmpvar_5.y = tmpvar_4.y;\\\\n  vec2 tmpvar_6;\\\\n  tmpvar_6 = (uv + (tmpvar_5 * 0.1));\\\\n  vec4 tmpvar_7;\\\\n  tmpvar_7 = texture (sampler_main, uv);\\\\n  ret_1 = (((\\\\n    ((texture (sampler_blur2, tmpvar_6).xyz * scale2) + bias2)\\\\n  .x * \\\\n    clamp ((1.0 - tmpvar_7.z), 0.0, 1.0)\\\\n  ) * pow (hue_shader.yxz, vec3(8.0, 8.0, 8.0))) * 3.0);\\\\n  ret_1 = (mix (ret_1, (\\\\n    pow (hue_shader.yzx, vec3(8.0, 8.0, 8.0))\\\\n   * 1.4), vec3((\\\\n    (texture (sampler_main, tmpvar_6).x * 0.8)\\\\n   + \\\\n    ((texture (sampler_blur1, tmpvar_6).xyz * scale1) + bias1)\\\\n  .x))) * clamp ((1.0 - \\\\n    (((texture (sampler_blur1, uv).xyz * scale1) + bias1).y * 4.0)\\\\n  ), 0.0, 1.0));\\\\n  vec2 tmpvar_8;\\\\n  tmpvar_8.x = tmpvar_3.y;\\\\n  tmpvar_8.y = tmpvar_4.y;\\\\n  vec3 tmpvar_9;\\\\n  vec3 tmpvar_10;\\\\n  tmpvar_10 = pow (hue_shader, vec3(8.0, 8.0, 8.0));\\\\n  tmpvar_9 = mix (mix (ret_1, vec3(1.0, 1.0, 1.0), (\\\\n    (tmpvar_10 * texture (sampler_main, clamp ((uv - (tmpvar_8 * 0.04)), 0.0, 1.0)).z)\\\\n   * 1.2)), (tmpvar_10.zxy * 1.8), tmpvar_7.yyy);\\\\n  ret_1 = tmpvar_9;\\\\n  vec4 tmpvar_11;\\\\n  tmpvar_11.w = 1.0;\\\\n  tmpvar_11.xyz = tmpvar_9;\\\\n  ret = tmpvar_11.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Flexi - truly soft piece of software - this is generic texturing (Jelly) .json\":\n/*!**********************************************************************************************************!*\\\n  !*** ./presets/converted/Flexi - truly soft piece of software - this is generic texturing (Jelly) .json ***!\n  \\**********************************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":4,\\\"gammaadj\\\":1,\\\"decay\\\":1,\\\"echo_zoom\\\":1,\\\"echo_alpha\\\":0.5,\\\"wave_thick\\\":1,\\\"wave_brighten\\\":0,\\\"wave_a\\\":0.004,\\\"wave_scale\\\":0.01,\\\"wave_smoothing\\\":0,\\\"wave_mystery\\\":-0.44,\\\"modwavealphastart\\\":1,\\\"modwavealphaend\\\":1,\\\"warpanimspeed\\\":0.01,\\\"warpscale\\\":100,\\\"zoomexp\\\":0.24298,\\\"zoom\\\":0.9901,\\\"warp\\\":0.01,\\\"wave_y\\\":0.04,\\\"ob_size\\\":0,\\\"ob_g\\\":1,\\\"ib_size\\\":0,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0,\\\"mv_b\\\":0,\\\"mv_a\\\":0,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"thickoutline\\\":1,\\\"rad\\\":0.01,\\\"tex_ang\\\":0.12566,\\\"tex_zoom\\\":1.51878,\\\"r\\\":0.05,\\\"a\\\":0.1,\\\"g2\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"rad\\\":0.80013,\\\"ang\\\":4.64954,\\\"tex_zoom\\\":1.24471,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":0.77,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thickoutline\\\":1,\\\"x\\\":1,\\\"rad\\\":3.0054,\\\"tex_ang\\\":0.12566,\\\"tex_zoom\\\":1.51878,\\\"r\\\":0,\\\"g\\\":1,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thickoutline\\\":1,\\\"x\\\":1,\\\"rad\\\":0.39872,\\\"tex_ang\\\":0.12566,\\\"tex_zoom\\\":1.51878,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"usedots\\\":1,\\\"scaling\\\":2.44415,\\\"smoothing\\\":0,\\\"a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\ncl = 0;\\\",\\\"frame_eqs_eel\\\":\\\"t1 = 0;\\\\nv = 0.01;\\\\nj = j + (bass)*0.01;\\\\nj2 = j2 + (mid_att)*0.01;\\\\nj3 = j3 + (treb_att)*0.01;\\\\nt2 = j;\\\\nt3 = j2;\\\\nt4 = j3;\\\\n//t5 = 0;\\\\nk = k*0.99 + 10*mid/fps;\\\\nt5 = -k;\\\\n\\\\ncl1 = cl1 + 0.002;\\\\ncl1 = if(above(cl1,1),0,cl1);\\\\ncl1 = if(below(cl1,0),1,cl1);\\\\nt8 = cl1;\\\\n\\\\ncl2 = cl2 -1*q1;\\\\ncl2 = if(above(cl2,1),0,cl2);\\\\ncl2 = if(below(cl2,0),1,cl2);\\\\nt7 = cl2;\\\\n\\\\ncl3 = cl3 +0.001;\\\\ncl3 = if(above(cl3,1),0,cl3);\\\\ncl3 = if(below(cl3,0),1,cl3);\\\\nt6 = cl3;\\\",\\\"point_eqs_eel\\\":\\\"xx = ((sample*0983624912364)%10000000+100)/10000000;\\\\nyy = ((xx*1896575575)%10000000+100)/10000000;\\\\nzz = ((yy*58652340875)%10000000+100)/10000000;\\\\n\\\\n\\\\nd = sqrt(sqr(xx)+sqr(yy)+sqr(zz));\\\\n\\\\nzz = zz + t8 - if(above(zz+t8,1),1,0) - 0.5;\\\\nxx = xx + t7 - if(above(xx+t7,1),1,0) - 0.5;\\\\nyy = yy + t6 - if(above(yy+t6,1),1,0) - 0.5;\\\\n\\\\nv = 0.001;\\\\n\\\\nw = 1;// (sample*sin(time*0.3)*0.01-1);\\\\nbb = d*d*0.5;\\\\nn= 0.3;\\\\ns1 = sin(sin(t2*w+bb)*n);\\\\ns2 = sin(sin(t3*w+bb)*n);\\\\ns3 = sin(sin(t4*w+bb)*n);\\\\nc1 = cos(sin(t2*w+bb)*n);\\\\nc2 = cos(sin(t3*w+bb)*n);\\\\nc3 = cos(sin(t4*w+bb)*n);\\\\n\\\\nz = (c3*s1*c2 + s3*s2)*xx - (c3*s1*s2-s3*c2)*yy + c3*c1*zz;\\\\nx1 = (c1*c2*xx + c1*s2*yy - s1*zz);\\\\ny1 = ((s3*s1*c2 - c3*s2)*xx + (s3*s1*s2+c3*c2)*yy + s3*c1*zz);\\\\n\\\\nzoom = .5*(1/(z+0.5));\\\\nx = 0.5 + zoom*x1 + sin(time*0.1)*0.;;\\\\ny = 0.5 + zoom*y1 + cos(time*0.16801)*0.;\\\\n\\\\npi3 = 3.1415*2*0.3333;\\\\nt = z*2+t2*1;\\\\nc=3;\\\\n//r = sin(t)*c;\\\\n\\\\n//g = sin(t+pi3)*c;\\\\n\\\\n//b = sin(t-pi3)*c;\\\\n\\\\n\\\\nr = if(above(r,1),1,r);\\\\nr = if(below(r,0),0,r);\\\\ng = if(above(g,1),1,g);\\\\ng = if(below(g,0),0,g);\\\\nb = if(above(b,1),1,b);\\\\nb = if(below(b,0),0,b);\\\\n\\\\na = 0.4;\\\"},{\\\"baseVals\\\":{\\\"scaling\\\":2.44415,\\\"smoothing\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\ncl = 0;\\\",\\\"frame_eqs_eel\\\":\\\"t8 = 1;\\\",\\\"point_eqs_eel\\\":\\\"t8 = -t8;\\\\ny = sample;\\\\nx = 0.5 + t8*0.005;\\\\n\\\\npi3 = 3.1415*2*0.3333;\\\\nt = time + sample*2;\\\\nc=2;\\\\n\\\\nr = sin(t)*c;\\\\ng = sin(t+pi3)*c;\\\\n\\\\nb = sin(t-pi3)*c;\\\\n\\\\n\\\\nr = if(above(r,1),1,r);\\\\nr = if(below(r,0),0,r);\\\\ng = if(above(g,1),1,g);\\\\ng = if(below(g,0),0,g);\\\\nb = if(above(b,1),1,b);\\\\nb = if(below(b,0),0,b);\\\\n\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":100,\\\"smoothing\\\":0.6,\\\"r\\\":0,\\\"g\\\":0.4,\\\"a\\\":0.3,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"t1 = q1;\\\\nt2 = q2;\\\\nt3 = q3;\\\\nt4 = q4;\\\\nt5 = q5;\\\\nt6 = q6;\\\\nt7 = q7;\\\\nt8 = q8;\\\",\\\"point_eqs_eel\\\":\\\"sample = 1-sample;\\\\nxxx = xx;\\\\nyyy = yy;\\\\nxx = pow(sample,5)*t1 + 5*pow(sample,4)*(1-sample)*t1 + 10*pow(sample,3)*sqr(1-sample)*t2\\\\n+ 10*sqr(sample)*pow(1-sample,3)*t3 + 5*pow(1-sample,4)*sample*t4 + pow(1-sample,5)*t4;\\\\n\\\\nyy = pow(sample,5)*t5 + 5*pow(sample,4)*(1-sample)*t5 + 10*pow(sample,3)*sqr(1-sample)*t6\\\\n+ 10*sqr(sample)*pow(1-sample,3)*t7 + 5*pow(1-sample,4)*sample*t8 + pow(1-sample,5)*t8;\\\\nd = 1/sqrt(sqr(xx-xxx)+sqr(yy-yyy));\\\\nx = xx + sample*(1-sample)*(value1-value2)*(yy-yyy)*d;\\\\ny = yy - sample*(1-sample)*(value1-value2)*(xx-xxx)*d;\\\"},{\\\"baseVals\\\":{\\\"usedots\\\":1,\\\"scaling\\\":2.44415,\\\"smoothing\\\":0,\\\"r\\\":0,\\\"g\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\ncl = 0;\\\",\\\"frame_eqs_eel\\\":\\\"t8 = 1;\\\",\\\"point_eqs_eel\\\":\\\"t8 = -t8;\\\\ny = (1+t8)*0.01;\\\\nx = sample;\\\"}],\\\"init_eqs_eel\\\":\\\"x1 = 0.9;\\\\ny1 = 0.5;\\\\n\\\\nx2 = 0.5; y2 = 0.5;\\\\nx3 = 0.5; y3 = 0.5;\\\\nx4 = 0.5; y4 = 0.5;\\\",\\\"frame_eqs_eel\\\":\\\"zoom =1;// 0.999;\\\\nwarp = 0;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec2 my_uv_1;\\\\n  vec3 ret_2;\\\\n  vec2 tmpvar_3;\\\\n  tmpvar_3 = (0.02 * aspect.zw);\\\\n  vec3 tmpvar_4;\\\\n  tmpvar_4 = (((texture (sampler_blur2, \\\\n    ((uv + (vec2(1.0, 0.0) * tmpvar_3)) - floor((uv + (vec2(1.0, 0.0) * tmpvar_3))))\\\\n  ).xyz * scale2) + bias2) - ((texture (sampler_blur2, \\\\n    ((uv - (vec2(1.0, 0.0) * tmpvar_3)) - floor((uv - (vec2(1.0, 0.0) * tmpvar_3))))\\\\n  ).xyz * scale2) + bias2));\\\\n  vec3 tmpvar_5;\\\\n  tmpvar_5 = (((texture (sampler_blur2, \\\\n    ((uv + (vec2(0.0, 1.0) * tmpvar_3)) - floor((uv + (vec2(0.0, 1.0) * tmpvar_3))))\\\\n  ).xyz * scale2) + bias2) - ((texture (sampler_blur2, \\\\n    ((uv - (vec2(0.0, 1.0) * tmpvar_3)) - floor((uv - (vec2(0.0, 1.0) * tmpvar_3))))\\\\n  ).xyz * scale2) + bias2));\\\\n  vec3 tmpvar_6;\\\\n  tmpvar_6 = ((texture (sampler_blur1, uv).xyz * scale1) + bias1);\\\\n  vec2 tmpvar_7;\\\\n  tmpvar_7.x = tmpvar_4.y;\\\\n  tmpvar_7.y = tmpvar_5.y;\\\\n  vec2 tmpvar_8;\\\\n  tmpvar_8.x = tmpvar_5.x;\\\\n  tmpvar_8.y = -(tmpvar_4.x);\\\\n  vec2 tmpvar_9;\\\\n  tmpvar_9 = ((uv - (tmpvar_7 * vec2(0.01, 0.01))) - (tmpvar_8 * -0.02));\\\\n  ret_2.y = texture (sampler_fc_main, (tmpvar_9 - floor(tmpvar_9))).y;\\\\n  ret_2.y = (ret_2.y + ((\\\\n    (ret_2.y - tmpvar_6.y)\\\\n   * 0.02) + 0.005));\\\\n  vec2 tmpvar_10;\\\\n  tmpvar_10.x = tmpvar_4.x;\\\\n  tmpvar_10.y = tmpvar_5.x;\\\\n  vec2 tmpvar_11;\\\\n  tmpvar_11.x = tmpvar_5.z;\\\\n  tmpvar_11.y = -(tmpvar_4.z);\\\\n  my_uv_1 = ((uv - (tmpvar_10 * vec2(0.01, 0.01))) - (tmpvar_11 * -0.02));\\\\n  ret_2.x = texture (sampler_fc_main, (my_uv_1 - floor(my_uv_1))).x;\\\\n  ret_2.x = (ret_2.x + ((\\\\n    (ret_2.x - tmpvar_6.x)\\\\n   * 0.02) + 0.005));\\\\n  vec2 tmpvar_12;\\\\n  tmpvar_12.x = tmpvar_4.z;\\\\n  tmpvar_12.y = tmpvar_5.z;\\\\n  vec2 tmpvar_13;\\\\n  tmpvar_13.x = tmpvar_5.y;\\\\n  tmpvar_13.y = -(tmpvar_4.y);\\\\n  my_uv_1 = ((uv - (tmpvar_12 * vec2(0.01, 0.01))) - (tmpvar_13 * -0.02));\\\\n  ret_2.z = texture (sampler_fc_main, (my_uv_1 - floor(my_uv_1))).z;\\\\n  ret_2.z = (ret_2.z + ((\\\\n    (ret_2.z - tmpvar_6.z)\\\\n   * 0.02) + 0.005));\\\\n  vec4 tmpvar_14;\\\\n  tmpvar_14.w = 1.0;\\\\n  tmpvar_14.xyz = ret_2;\\\\n  ret = tmpvar_14.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec2 uv2_1;\\\\n  vec3 ret_2;\\\\n  uv2_1 = (uv + (vec2(1.0, 0.0) * texsize.zw));\\\\n  float tmpvar_3;\\\\n  tmpvar_3 = (((texture (sampler_main, uv2_1).xyz + \\\\n    (((texture (sampler_blur1, uv2_1).xyz * scale1) + bias1) * 0.4)\\\\n  ) + (\\\\n    ((texture (sampler_blur2, uv2_1).xyz * scale2) + bias2)\\\\n   * 0.15)) + ((\\\\n    (texture (sampler_blur3, uv2_1).xyz * scale3)\\\\n   + bias3) * 0.1)).x;\\\\n  uv2_1 = (uv + (vec2(-1.0, 0.0) * texsize.zw));\\\\n  float tmpvar_4;\\\\n  tmpvar_4 = (((texture (sampler_main, uv2_1).xyz + \\\\n    (((texture (sampler_blur1, uv2_1).xyz * scale1) + bias1) * 0.4)\\\\n  ) + (\\\\n    ((texture (sampler_blur2, uv2_1).xyz * scale2) + bias2)\\\\n   * 0.15)) + ((\\\\n    (texture (sampler_blur3, uv2_1).xyz * scale3)\\\\n   + bias3) * 0.1)).x;\\\\n  uv2_1 = (uv + (vec2(0.0, 1.0) * texsize.zw));\\\\n  float tmpvar_5;\\\\n  tmpvar_5 = (((texture (sampler_main, uv2_1).xyz + \\\\n    (((texture (sampler_blur1, uv2_1).xyz * scale1) + bias1) * 0.4)\\\\n  ) + (\\\\n    ((texture (sampler_blur2, uv2_1).xyz * scale2) + bias2)\\\\n   * 0.15)) + ((\\\\n    (texture (sampler_blur3, uv2_1).xyz * scale3)\\\\n   + bias3) * 0.1)).x;\\\\n  uv2_1 = (uv + (vec2(0.0, -1.0) * texsize.zw));\\\\n  vec3 tmpvar_6;\\\\n  tmpvar_6.z = 0.14;\\\\n  tmpvar_6.x = (tmpvar_3 - tmpvar_4);\\\\n  tmpvar_6.y = (tmpvar_5 - ((\\\\n    (texture (sampler_main, uv2_1).xyz + (((texture (sampler_blur1, uv2_1).xyz * scale1) + bias1) * 0.4))\\\\n   + \\\\n    (((texture (sampler_blur2, uv2_1).xyz * scale2) + bias2) * 0.15)\\\\n  ) + (\\\\n    ((texture (sampler_blur3, uv2_1).xyz * scale3) + bias3)\\\\n   * 0.1)).x);\\\\n  ret_2 = (0.5 + (0.5 * normalize(tmpvar_6)));\\\\n  vec2 x_7;\\\\n  x_7 = (ret_2.xy - 0.5);\\\\n  ret_2 = (ret_2 * clamp ((\\\\n    sqrt(dot (x_7, x_7))\\\\n   * 5.0), 0.0, 1.0));\\\\n  ret_2 = ret_2.xxy;\\\\n  ret_2 = (ret_2 + 1.15);\\\\n  ret_2 = (ret_2 * mix (ret_2, (ret_2 * \\\\n    (((texture (sampler_blur3, uv).xyz * scale3) + bias3) - ((texture (sampler_blur1, uv).xyz * scale1) + bias1))\\\\n  ), pow (hue_shader.zxy, ret_2)));\\\\n  ret_2 = (ret_2 * ret_2);\\\\n  vec4 tmpvar_8;\\\\n  tmpvar_8.w = 1.0;\\\\n  tmpvar_8.xyz = ret_2;\\\\n  ret = tmpvar_8.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Flexi, fishbrain, Geiss + Martin - tokamak witchery.json\":\n/*!************************************************************************************!*\\\n  !*** ./presets/converted/Flexi, fishbrain, Geiss + Martin - tokamak witchery.json ***!\n  \\************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1.56,\\\"decay\\\":1,\\\"echo_zoom\\\":0.362,\\\"echo_orient\\\":1,\\\"wave_mode\\\":7,\\\"additivewave\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":1.286,\\\"wave_smoothing\\\":0.63,\\\"modwavealphastart\\\":0.71,\\\"modwavealphaend\\\":1.3,\\\"warpscale\\\":1.331,\\\"fshader\\\":1,\\\"zoom\\\":1.004,\\\"warp\\\":0.19788,\\\"sx\\\":0.99967,\\\"sy\\\":0.9999,\\\"wave_g\\\":0.65,\\\"wave_b\\\":0.65,\\\"ob_size\\\":0,\\\"ob_a\\\":1,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"sides\\\":5,\\\"additive\\\":1,\\\"num_inst\\\":2,\\\"x\\\":0.49,\\\"rad\\\":0.11589,\\\"tex_zoom\\\":4.36077,\\\"g2\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = rand(1000)/1000;\\\\ny = rand(1000)/1000;\\\\nang = rand(150)/100;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"thick\\\":1,\\\"r\\\":0,\\\"g\\\":0.3,\\\"b\\\":0.75},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(bass,1)*3.1415*.01*bass);\\\\nma=ma-(above(treb,1)*3.1415*.01*treb);\\\\n\\\\nmx=mx+(.0002*cos(ma));\\\\nmy=my+(.0002*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.8));\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"thick\\\":1,\\\"r\\\":0,\\\"b\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(bass,1)*3.1415*.05*bass);\\\\nma=ma-(above(mid,1)*3.1415*.05*mid);\\\\n\\\\nmx=mx+(.0001*cos(ma));\\\\nmy=my+(.0001*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.1));\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"thick\\\":1,\\\"g\\\":0.5,\\\"b\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(mid,1)*3.1415*.01*mid);\\\\nma=ma-(above(treb,1)*3.1415*.01*treb);\\\\n\\\\nmx=mx+(.0004*cos(ma));\\\\nmy=my+(.0004*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.3));\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"thick\\\":1,\\\"r\\\":0.4,\\\"g\\\":0,\\\"b\\\":0.6},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(bass,.5)*3.1415*.02*bass);\\\\nma=ma-(above(treb,.5)*3.1415*.02*treb);\\\\n\\\\nmx=mx+(.0008*cos(ma));\\\\nmy=my+(.0008*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.2));\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"wave_r = wave_r + 0.2*( 0.60*sin(0.980*time) + 0.40*sin(1.047*time) );\\\\nwave_g = wave_g + 0.2*( 0.60*sin(0.835*time) + 0.40*sin(1.081*time) );\\\\nwave_b = wave_b + 0.2*( 0.60*sin(0.814*time) + 0.40*sin(1.011*time) );\\\\nq1 = (cx*2-1) + 0.6*( 0.60*sin(0.374*time) + 0.40*sin(0.294*time) );\\\\nq2 = (cy*2-1) + 0.6*( 0.60*sin(0.393*time) + 0.40*sin(0.223*time) );\\\\nwarp = 0;\\\\nzoom = 1;\\\\nbb = bb*0.99 + bass*0.02;\\\\nmm = mm*0.99 + mid*0.02;\\\\ntt = tt*0.99 + treb*0.02;\\\\n\\\\nmx = max(max(bb,mm),tt);\\\\nmn = min(min(bb,mm),tt);\\\\n\\\\nob_r = (bb-mn)/(mx-mn);\\\\nob_b = (mm-mn)/(mx-mn);\\\\nob_g = (tt-mn)/(mx-mn);\\\",\\\"pixel_eqs_eel\\\":\\\"du = (x*2-1) - q1;\\\\ndv = (y*2-1) - q2;\\\\ndist = sqrt(du*du+dv*dv);\\\\nang2 = atan2(du,dv) + time*0.15;\\\\nmult = 0.05*sin(dist*0.05);\\\\ndx = mult*sin(ang2*2-1.5);\\\\ndy = mult*cos(ang2*2-1.5);\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec4 tmpvar_1;\\\\n  tmpvar_1.w = 1.0;\\\\n  vec4 tmpvar_2;\\\\n  tmpvar_2 = texture (sampler_main, uv);\\\\n  tmpvar_1.xyz = ((texture (sampler_main, clamp (\\\\n    (uv - (((vec2(0.0, 64.0) * texsize.zw) * dot (\\\\n      (tmpvar_2.xyz - 0.35)\\\\n    , vec3(0.32, 0.49, 0.29))) * (dot (tmpvar_2.xyz, vec3(0.32, 0.49, 0.29)) - 0.4)))\\\\n  , 0.0, 1.0)).xyz - 0.0011) + ((texture (sampler_noise_lq, \\\\n    (((uv_orig * texsize.xy) * (texsize_noise_lq.zw * 1.5)) + rand_frame.xy)\\\\n  ) - 0.5) * 0.0038).xyz);\\\\n  ret = tmpvar_1.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec2 uv1_1;\\\\n  vec2 tmpvar_2;\\\\n  tmpvar_2.y = 0.0;\\\\n  tmpvar_2.x = texsize.z;\\\\n  vec2 tmpvar_3;\\\\n  tmpvar_3.x = 0.0;\\\\n  tmpvar_3.y = texsize.w;\\\\n  vec2 tmpvar_4;\\\\n  tmpvar_4.x = (texture (sampler_main, (uv - tmpvar_2)).xyz - texture (sampler_main, (uv + tmpvar_2)).xyz).x;\\\\n  tmpvar_4.y = (texture (sampler_main, (uv - tmpvar_3)).xyz - texture (sampler_main, (uv + tmpvar_3)).xyz).x;\\\\n  uv1_1 = ((0.3 * cos(\\\\n    ((uv - 0.5) * 2.0)\\\\n  )) - tmpvar_4);\\\\n  float tmpvar_5;\\\\n  tmpvar_5 = clamp ((0.04 / sqrt(\\\\n    dot (uv1_1, uv1_1)\\\\n  )), 0.0, 1.0);\\\\n  uv1_1 = ((0.3 * cos(\\\\n    (uv1_1 * 12.0)\\\\n  )) - (9.0 * tmpvar_4));\\\\n  vec4 tmpvar_6;\\\\n  tmpvar_6.w = 1.0;\\\\n  tmpvar_6.xyz = (tmpvar_5 + ((texture (sampler_main, uv).xyz * 12.0) * vec3(clamp (\\\\n    (0.04 / sqrt(dot (uv1_1, uv1_1)))\\\\n  , 0.0, 1.0))));\\\\n  ret = tmpvar_6.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Flexi, martin + geiss - dedicated to the sherwin maxawow.json\":\n/*!*****************************************************************************************!*\\\n  !*** ./presets/converted/Flexi, martin + geiss - dedicated to the sherwin maxawow.json ***!\n  \\*****************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":3,\\\"gammaadj\\\":1.56,\\\"decay\\\":1,\\\"echo_zoom\\\":0.362,\\\"echo_orient\\\":1,\\\"wave_thick\\\":1,\\\"wave_brighten\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":1.599,\\\"wave_smoothing\\\":0,\\\"wave_mystery\\\":-0.5,\\\"modwavealphastart\\\":2,\\\"modwavealphaend\\\":2,\\\"warpscale\\\":0.107,\\\"zoomexp\\\":0.1584,\\\"fshader\\\":1,\\\"warp\\\":0.01,\\\"wave_r\\\":0.51,\\\"wave_g\\\":0.5,\\\"ob_size\\\":0,\\\"ob_a\\\":1,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"ib_a\\\":1,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0.5,\\\"mv_r\\\":0,\\\"mv_g\\\":0,\\\"mv_b\\\":0,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"thickoutline\\\":1,\\\"rad\\\":0.50126,\\\"tex_zoom\\\":0.99996,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"g2\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = 0.5+sin(time*0.618)*0.2;\\\\ny = 0.5+cos(time*1.618)*0.2;\\\\nrad = bass*0.05;\\\\nborder_r = 1-(sin(time*1.25)*0.3+0.7);\\\\nborder_g = 1-(sin(time)*0.3+0.3);\\\\nborder_b = 1-(sin(time/3)*0.5+0.5);\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"thickoutline\\\":1,\\\"rad\\\":0.50126,\\\"g\\\":1,\\\"b\\\":1,\\\"g2\\\":0,\\\"b2\\\":1,\\\"border_g\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = 0.5+sin(time*2.618)*0.3;\\\\ny = 0.5+cos(time*3.14)*0.3;\\\\nrad = bass*0.05;\\\\nborder_r = 1-(sin(time*1.25)*0.3+0.7);\\\\nborder_g = 1-(sin(time)*0.3+0.3);\\\\nborder_b = 1-(sin(time/3)*0.5+0.5);\\\\n\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"thickoutline\\\":1,\\\"rad\\\":0.50126,\\\"tex_zoom\\\":0.9998,\\\"g\\\":1,\\\"b\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = 0.5+sin(-time*2.618)*0.4;\\\\ny = 0.5+cos(-time*1.14)*0.4;\\\\nrad = bass*0.05;\\\\nborder_r = 1-(sin(time*1.25)*0.3+0.7);\\\\nborder_g = 1-(sin(time)*0.3+0.3);\\\\nborder_b = 1-(sin(time/3)*0.5+0.5);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"scaling\\\":0.16188,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":25.12601,\\\"smoothing\\\":1,\\\"a\\\":0.1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"//zoom = 0.99;\\\\nib_r = sin(time*1.25*4)*0.3+0.7;\\\\nib_g = sin(time*4)*0.3+0.3;\\\\nib_b = sin(time/3*4)*0.5+0.5;\\\\nwave_r = 1- ib_r;\\\\nwave_g = 1- ib_g;\\\\nwave_b = 1- ib_b;\\\\n//wave_mystery = -1+bass/2;\\\\nwave_x = 0.5+sin(time*3)*0.3;\\\\nwave_y = 0.5+cos(time*2.187)*0.3;\\\",\\\"pixel_eqs_eel\\\":\\\"r = bass/4;\\\\ncx1 = 0.5+sin(time*0.618)*0.2;\\\\ncy1 = 0.5+cos(time*1.618)*0.2;\\\\nd = sqrt((x-cx1)*(x-cx1)+(y-cy1)*(y-cy1));\\\\ndir = (bass)*(r*r-d*d)*0.3;\\\\nx1 = if( above(d,r),0,  sin(y-cy1)*dir);\\\\ny1 = if( above(d,r),0, -sin(x-cx1)*dir);\\\\n\\\\n\\\\ncx1 = 0.5+sin(time*2.618)*0.3;\\\\ncy1 = 0.5+cos(time*3.14)*0.3;\\\\nd = sqrt((x-cx1)*(x-cx1)+(y-cy1)*(y-cy1));\\\\ndir = -(mid)*(r*r-d*d)*0.3;\\\\nx2 = if( above(d,r),0,  sin(y-cy1)*dir);\\\\ny2 = if( above(d,r),0, -sin(x-cx1)*dir);\\\\n\\\\ncx1 = 0.5+sin(-time*2.618)*0.4;\\\\ncy1 = 0.5+cos(-time*1.14)*0.4;\\\\nd = sqrt((x-cx1)*(x-cx1)+(y-cy1)*(y-cy1));\\\\ndir = -(treb)*(r*r-d*d)*0.3;\\\\nx3 = if( above(d,r),0,  sin(y-cy1)*dir);\\\\ny3 = if( above(d,r),0, -sin(x-cx1)*dir);\\\\n\\\\n\\\\ndx = x1+x2+x3;\\\\ndy = y1+y2+y3;\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec2 uv_1;\\\\n  vec2 tmpvar_2;\\\\n  tmpvar_2 = (((uv_orig * texsize.xy) * (texsize_noise_lq.zw * 2.0)) + rand_frame.xy);\\\\n  uv_1 = (uv + ((texture (sampler_noise_lq, tmpvar_2).xy - 0.5) * texsize.zw));\\\\n  vec2 tmpvar_3;\\\\n  tmpvar_3.x = bass;\\\\n  tmpvar_3.y = treb;\\\\n  vec4 tmpvar_4;\\\\n  tmpvar_4.w = 1.0;\\\\n  tmpvar_4.xyz = (texture (sampler_main, (uv_1 + (\\\\n    (texture (sampler_main, (mix (uv_1, uv_orig, vec2(-1.0, -1.0)) + texsize.zw)).xy - 0.4)\\\\n   * \\\\n    (-0.004 + (0.04 * clamp ((tmpvar_3 - 1.0), 0.0, 1.0)))\\\\n  ))).xyz - (0.0008 + (\\\\n    (texture (sampler_noise_lq, tmpvar_2) - 0.5)\\\\n   * 0.02)).xyz);\\\\n  ret = tmpvar_4.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec2 uv1_1;\\\\n  vec2 tmpvar_2;\\\\n  tmpvar_2.y = 0.0;\\\\n  tmpvar_2.x = texsize.z;\\\\n  vec2 tmpvar_3;\\\\n  tmpvar_3.x = 0.0;\\\\n  tmpvar_3.y = texsize.w;\\\\n  vec2 tmpvar_4;\\\\n  tmpvar_4.x = (texture (sampler_main, (uv - tmpvar_2)).xyz - texture (sampler_main, (uv + tmpvar_2)).xyz).x;\\\\n  tmpvar_4.y = (texture (sampler_main, (uv - tmpvar_3)).xyz - texture (sampler_main, (uv + tmpvar_3)).xyz).x;\\\\n  uv1_1 = ((0.3 * cos(\\\\n    ((uv - 0.5) * 2.0)\\\\n  )) - tmpvar_4);\\\\n  float tmpvar_5;\\\\n  tmpvar_5 = clamp ((0.04 / sqrt(\\\\n    dot (uv1_1, uv1_1)\\\\n  )), 0.0, 1.0);\\\\n  uv1_1 = ((0.3 * cos(\\\\n    (uv1_1 * 12.0)\\\\n  )) - (9.0 * tmpvar_4));\\\\n  vec4 tmpvar_6;\\\\n  tmpvar_6.w = 1.0;\\\\n  tmpvar_6.xyz = (tmpvar_5 + ((texture (sampler_main, uv).xyz * 12.0) * vec3(clamp (\\\\n    (0.04 / sqrt(dot (uv1_1, uv1_1)))\\\\n  , 0.0, 1.0))));\\\\n  ret = tmpvar_6.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Fumbling_Foo + En D & Martin - Mandelverse.json\":\n/*!***************************************************************************!*\\\n  !*** ./presets/converted/Fumbling_Foo + En D & Martin - Mandelverse.json ***!\n  \\***************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":1,\\\"gammaadj\\\":1.98,\\\"decay\\\":0.5,\\\"echo_zoom\\\":1,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":3,\\\"wave_mode\\\":7,\\\"additivewave\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":1.286,\\\"wave_smoothing\\\":0.63,\\\"modwavealphastart\\\":0.71,\\\"modwavealphaend\\\":1.3,\\\"warpanimspeed\\\":1.459,\\\"warpscale\\\":2.007,\\\"zoom\\\":0.9999,\\\"warp\\\":0.01,\\\"sx\\\":0.9999,\\\"wave_r\\\":0.65,\\\"wave_g\\\":0.65,\\\"wave_b\\\":0.65,\\\"ob_size\\\":0,\\\"ob_g\\\":0.1,\\\"ob_b\\\":1,\\\"ob_a\\\":1,\\\"ib_size\\\":0,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"mv_a\\\":0,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":54,\\\"textured\\\":1,\\\"rad\\\":0.49138,\\\"ang\\\":1.5708,\\\"tex_ang\\\":3.14159,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":54,\\\"rad\\\":0.08195,\\\"r\\\":0,\\\"g\\\":1,\\\"g2\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x=q3;\\\\ny=1-q4;\\\\n\\\\nr = abs(q20);\\\\ng = abs(q21);\\\\nb = abs(q22);\\\\n\\\\nrad = .1*mid;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":54,\\\"rad\\\":0.08195,\\\"r\\\":0,\\\"g2\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x=q5;\\\\ny=1-q6;\\\\n\\\\nrad = .2*bass;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":54,\\\"rad\\\":0.08195,\\\"r\\\":0,\\\"b\\\":1,\\\"g2\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x=q1;\\\\ny=1-q2;\\\\n\\\\nr = (q23);\\\\ng = (q24);\\\\nb = (q25);\\\\na = q19;\\\\n\\\\nrad = bass*.1;\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"sep\\\":51,\\\"spectrum\\\":1,\\\"usedots\\\":1,\\\"thick\\\":1,\\\"scaling\\\":1.32735,\\\"smoothing\\\":0.82,\\\"b\\\":3,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"x = rand(1001)*.001;\\\\ny = rand(1001)*.001;\\\\n\\\\ntm = time*.5 + sample*2;\\\\n\\\\nr = .5 + .5*sin(tm*1.132);\\\\ng = .5 + .5*sin(tm*1.121);\\\\nb = .5 + .5*sin(tm*1.187);\\\"},{\\\"baseVals\\\":{\\\"sep\\\":51,\\\"spectrum\\\":1,\\\"usedots\\\":1,\\\"scaling\\\":1.32735,\\\"smoothing\\\":0.82,\\\"b\\\":3,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"x = rand(1001)*.001;\\\\ny = rand(1001)*.001;\\\\n\\\\ntm = time*.5 + sample*2;\\\\n\\\\nr = .5 + .5*sin(tm*1.132);\\\\ng = .5 + .5*sin(tm*1.121);\\\\nb = .5 + .5*sin(tm*1.187);\\\"},{\\\"baseVals\\\":{\\\"sep\\\":51,\\\"usedots\\\":1,\\\"thick\\\":1,\\\"scaling\\\":1.32735,\\\"smoothing\\\":0.82,\\\"b\\\":3,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"x = rand(1001)*.001;\\\\ny = rand(1001)*.001;\\\\n\\\\ntm = time*.5 + sample*2;\\\\n\\\\nr = .5 + .5*sin(tm*1.132);\\\\ng = .5 + .5*sin(tm*1.121);\\\\nb = .5 + .5*sin(tm*1.187);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sep\\\":51,\\\"usedots\\\":1,\\\"additive\\\":1,\\\"scaling\\\":1.32735,\\\"smoothing\\\":0.82,\\\"b\\\":3},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"x = rand(1001)*.001;\\\\ny = rand(1001)*.001;\\\\n\\\\ntm = time*.5 + sample*2;\\\\n\\\\nr = .5 + .5*sin(tm*1.132);\\\\ng = .5 + .5*sin(tm*1.121);\\\\nb = .5 + .5*sin(tm*1.187);\\\"}],\\\"init_eqs_eel\\\":\\\"//******** INITIALIZATION *********\\\\n//---------- some global vars, do not change -------------\\\\navg = 0.01;\\\\nq7 = .25; //MyZoom\\\\nq8 =  rand(2.0)-1.0; //fractal modifier\\\\n//q8 = 1; //#\\\\nq16 = 1 + rand(2); //Tele ; rather fish eye\\\\n//q16 = 1; //#\\\\nq18 = rand(0.8)+.1; //brightness balance back/front\\\\nq30 = 1; //logarithmic Z-Dist storage; unused\\\\nq31 =128;\\\\nstart = 1; travel = 0; RotZ = 0; look = 0; slow = 0; t0 = time+3; lampx = .5; lampy = .5;\\\\ncran0 = rand(1);\\\\nn = 0; loop (10000, gmegabuf(n)=0; n=n+1; ); \\\\nn = 0; loop (10000,  megabuf(n)=0; n=n+1; ); \\\\ntrelx = 0;  trely = 0; trelz = 0;\\\\nreg20 = 1; reg21 = 0; reg22 = 0; reg23 = 0; reg24 = 1; reg25 = 0; reg26 = 0; reg27 = 0; reg28 = 1;\\\\n\\\\n//Find random starting point\\\\nwhile (exec2(\\\\n  ran1 = rand(800)/100;  ran2 = rand(800)/100;  ran3 = rand(800)/100;\\\\n  PosX = rand(5)-2;   PosY = rand(5)-2;   PosZ = rand(5)-2; \\\\n\\\\n//  PosX = 3.3; PosY = 2; PosZ = -2; ran1 = 0; ran2 = 0; ran3 = 0; //#\\\\n\\\\n  c1 = cos(ran1); c2 = cos(ran2); c3 = cos(ran3); \\\\n  s1 = sin(ran1); s2 = sin(ran2); s3 = sin(ran3);\\\\n\\\\n  reg20 = c2*c1; reg21 = c2*s1; reg22 = -s2;\\\\n  reg23 = s3*s2*c1 - c3*s1; reg24 = s3*s2*s1 + c3*c1; reg25 = s3*c2;\\\\n  reg26 = c3*s2*c1 + s3*s1; reg27 = c3*s2*s1 - s3*c1; reg28 = c3*c2;\\\\n\\\\n  //***********BOT*************\\\\n  //Coord. Trans. must exactly match def in warp S. !!!!\\\\n  dist = 0.001;\\\\n  while (exec2(\\\\n    uvx = reg26*dist/q7; uvy = reg27*dist/q7; uvz = reg28*dist/q7;\\\\n    uvx += PosX; uvy += PosY; uvz += PosZ;\\\\n    uvx = 8.0*((uvx/8+30.5 - int(uvx/8+30.5))-.5);\\\\n    uvy = 8.0*((uvy/8+30.5 - int(uvy/8+30.5))-.5);\\\\n    uvz = 8.0*((uvz/8+30.5 - int(uvz/8+30.5))-.5);\\\\n    uvx0 = uvx+q8; uvy0 = uvy+q8; uvz0 = uvz+q8;\\\\n    loop (7+1,\\\\n      uvx = if (uvx > 1, 2-uvx, if(uvx < -1, -2-uvx, uvx));\\\\n      uvy = if (uvy > 1, 2-uvy, if(uvy < -1, -2-uvy, uvy));\\\\n      uvz = if (uvz > 1, 2-uvz, if(uvz < -1, -2-uvz, uvz));\\\\n      slen = uvx*uvx + uvy*uvy + uvz*uvz;\\\\n      uvx = if (slen < 0.25, uvx*4, if (slen < 1, uvx/slen, uvx)) *2.6 + uvx0; \\\\n      uvy = if (slen < 0.25, uvy*4, if (slen < 1, uvy/slen, uvy)) *2.6 + uvy0; \\\\n      uvz = if (slen < 0.25, uvz*4, if (slen < 1, uvz/slen, uvz)) *2.6 + uvz0; \\\\n    );\\\\n    len = sqrt(uvx*uvx + uvy*uvy + uvz*uvz);\\\\n    dist *= 1.05;\\\\n  ,(dist < 0.6)*(len > 30)));\\\\n,(dist < .06))); //end while\\\",\\\"frame_eqs_eel\\\":\\\"fps_ = .0 * fps_ + 1*if(fps<=25,fps,25+.5*(fps-25)); \\\\ndec_s = 1-.06*30/fps_;\\\\nbeat = (time >  t0+3); t0 = if(beat, time, t0);\\\\n\\\\nspeed = min(0.2,dist_-.02) * (1+2*avg) *(1-slow*.0)*.7/q7; //#\\\\nds = ds * dec_s + (1-dec_s)*speed*.25/fps_; \\\\nRotZ = if (RotZ==0,beat*(rand(100)<20*travel)*(rand(10)/10-.3),\\\\n                   bnot(beat*(rand(100)<30))*RotZ);\\\\nslow = if (bnot(slow), beat*(rand(1000*avg)<6), bnot(beat*(rand(100)<50)));\\\\nlook = if (bnot(look), beat*(rand(1000*speed)<12), bnot(beat*(rand(100)<50)));\\\\n\\\\n//Lamp View\\\\nlx = if (beat,rand(150)/200+.15,lx);\\\\nly = if (beat,rand(150)/200+.15,ly);\\\\nlampx = lampx * dec_s + (1-dec_s)*if (look,lx,0.5);\\\\nlampy = lampy * dec_s + (1-dec_s)*if (look,ly,0.5);\\\\nq1 = lampx; q2 = lampy;\\\\n\\\\n//Position \\\\nDirX= reg26; DirY= reg27; DirZ = reg28;\\\\nPosX = PosX + ds*DirX ; PosY = PosY + ds*DirY; PosZ = PosZ + ds*DirZ; \\\\nq4 = PosX; q5 = PosY; q6 = PosZ;\\\\n\\\\nangchg = (.2-dist_)*(dist_ < .2)*2;\\\\ntravel = if (angchg > 0,0,travel+ds);\\\\nv1 = v1 * dec_s + (1-dec_s)* RotZ * ds;\\\\nv2 = v2 *dec_s + (1-dec_s)*angchg *xslope/fps_;\\\\nv3 = v3 *dec_s + (1-dec_s)*(angchg *yslope/fps_ + 2*v1*sin(time*.1));\\\\n//v2 = .008;\\\\n//push old RotMat\\\\nreg30 =reg20; reg31 =reg21; reg32 =reg22; \\\\nreg33 =reg23; reg34 =reg24; reg35 =reg25; \\\\nreg36 =reg26; reg37 =reg27; reg38 =reg28; \\\\n\\\\nn = 0; avg = 0;\\\\nloop (5,\\\\n  n = n+1;\\\\n  //new Rot. Mat for infinitesimal angles\\\\n  ran1 = rand(100)/100;\\\\n  ran2 = rand(100)/200-.25;\\\\n  tx = cos(n*1.57+ran2) * (n <= 4)*ran1; ty = sin(n*1.57+ran2) * (n <= 4)*ran1;\\\\n  c1 = cos(v1); c2 = cos(v2+ty); c3 = cos(v3+tx); \\\\n  s1 = sin(v1); s2 = sin(v2+ty); s3 = sin(v3+tx);\\\\n  reg10 = c2*c1; reg11 = c2*s1; reg12 = -s2;\\\\n  reg13 = s3*s2*c1 - c3*s1; reg14 = s3*s2*s1 + c3*c1; reg15 = s3*c2;\\\\n  reg16 = c3*s2*c1 + s3*s1; reg17 = c3*s2*s1 - s3*c1; reg18 = c3*c2;\\\\n\\\\n  //pop old RotMat\\\\n  reg20 =reg30; reg21 =reg31; reg22 =reg32; \\\\n  reg23 =reg33; reg24 =reg34; reg25 =reg35; \\\\n  reg26 =reg36; reg27 =reg37; reg28 =reg38; \\\\n\\\\n  //Multiply new RotMat by old one\\\\n  q20 = reg10*reg20 + reg11*reg23 + reg12*reg26;\\\\n  q21 = reg10*reg21 + reg11*reg24 + reg12*reg27;\\\\n  q22 = reg10*reg22 + reg11*reg25 + reg12*reg28;\\\\n  q23 = reg13*reg20 + reg14*reg23 + reg15*reg26;\\\\n  q24 = reg13*reg21 + reg14*reg24 + reg15*reg27;\\\\n  q25 = reg13*reg22 + reg14*reg25 + reg15*reg28;\\\\n  q26 = reg16*reg20 + reg17*reg23 + reg18*reg26;\\\\n  q27 = reg16*reg21 + reg17*reg24 + reg18*reg27;\\\\n  q28 = reg16*reg22 + reg17*reg25 + reg18*reg28;\\\\n\\\\n  reg20 =q20; reg21 =q21; reg22 =q22;\\\\n  reg23 =q23; reg24 =q24; reg25 =q25;\\\\n  reg26 =q26; reg27 =q27; reg28 =q28;\\\\n\\\\n  //***********BOT*************\\\\n  //Coord. Trans. must exactly match def in warp S. !!!!\\\\n  dist = 0.002;\\\\n  while (exec2(\\\\n    uvx = reg26*dist/q7; uvy = reg27*dist/q7; uvz = reg28*dist/q7;\\\\n    uvx += PosX; uvy += PosY; uvz += PosZ;\\\\n    uvx = 8.0*((uvx/8+30.5 - int(uvx/8+30.5))-.5);\\\\n    uvy = 8.0*((uvy/8+30.5 - int(uvy/8+30.5))-.5);\\\\n    uvz = 8.0*((uvz/8+30.5 - int(uvz/8+30.5))-.5);\\\\n    uvx0 = uvx+q8; uvy0 = uvy+q8; uvz0 = uvz+q8;\\\\n    loop (7+1,\\\\n      uvx = if (uvx > 1, 2-uvx, if(uvx < -1, -2-uvx, uvx));\\\\n      uvy = if (uvy > 1, 2-uvy, if(uvy < -1, -2-uvy, uvy));\\\\n      uvz = if (uvz > 1, 2-uvz, if(uvz < -1, -2-uvz, uvz));\\\\n      slen = uvx*uvx + uvy*uvy + uvz*uvz;\\\\n      uvx = if (slen < 0.25, uvx*4, if (slen < 1, uvx/slen, uvx)) *2.6 + uvx0; \\\\n      uvy = if (slen < 0.25, uvy*4, if (slen < 1, uvy/slen, uvy)) *2.6 + uvy0; \\\\n      uvz = if (slen < 0.25, uvz*4, if (slen < 1, uvz/slen, uvz)) *2.6 + uvz0; \\\\n    );\\\\n    len = sqrt(uvx*uvx + uvy*uvy + uvz*uvz);\\\\n    dist *= 1.1;\\\\n  ,(dist < 0.6)*(len > 30)));\\\\n  megabuf(n) = megabuf(n)*dec_s + (1-dec_s)*dist; //stores the 4 trial points\\\\n  avg = avg+abs(megabuf(n)/5);\\\\n); //end loop 5\\\\n\\\\nn = 0; avg = 0; loop (5, n=n+1; avg = avg+abs(megabuf(n)/5));\\\\n\\\\nxslope = min(max(2/avg*(megabuf(1)-megabuf(3)),-3),3);\\\\nyslope = min(max(2/avg*(megabuf(4)-megabuf(2)),-3),3);\\\\nmonitor = avg;\\\\ndist_ = dist_*dec_s + (1-dec_s)*dist;\\\\n\\\\nq10 = ds*q7; //compensation of lin. movement in GetDist and zoom uv\\\\nq14 = 1*abs(ds) + 2*(abs(v1) + abs(v2) + abs(v3)) + 1.0/255 + start*.05; \\\\n//q15 = sign(4*avg - 1)*pow(abs(4*avg - 1), 1.25); // 500*ds*q7; // + ( sign(v1)*sqrt(abs(v1)) + sign(v2)*sqrt(abs(v2)) + sign(v3)*sqrt(abs(v3)) )\\\\nq15 = 4*avg - 1.4;\\\\nq19 = .6 + .4*sin(time*.02+cran0*6); //brightness backgd\\\\nstart = start * .9;\\\\nq11 = v1; q12 = v2; q13 = v3;\\\\n//forward comp. of Rotation\\\\n\\\\nmonitor = 3.333*q15;\\\",\\\"pixel_eqs_eel\\\":\\\"warp = 0.0; zoom = 1; dx = -q12/q16*(1+0*pow(x-.5,2)); dy = q13/q16*(1+0*pow(y-.5,2)); rot =q11;\\\",\\\"warp\\\":\\\"float sustain;\\\\nfloat xlat_mutabledist;\\\\nfloat xlat_mutablestruc;\\\\nvec2 xlat_mutableuv1;\\\\nvec3 xlat_mutableuv2;\\\\n shader_body { \\\\n  mat3 tmpvar_1;\\\\n  tmpvar_1[uint(0)].x = q20;\\\\n  tmpvar_1[uint(0)].y = q23;\\\\n  tmpvar_1[uint(0)].z = q26;\\\\n  tmpvar_1[1u].x = q21;\\\\n  tmpvar_1[1u].y = q24;\\\\n  tmpvar_1[1u].z = q27;\\\\n  tmpvar_1[2u].x = q22;\\\\n  tmpvar_1[2u].y = q25;\\\\n  tmpvar_1[2u].z = q28;\\\\n  vec3 tmpvar_2;\\\\n  tmpvar_2.x = q4;\\\\n  tmpvar_2.y = q5;\\\\n  tmpvar_2.z = q6;\\\\n  sustain = (0.92 + (q14 * 1.5));\\\\n  vec2 uv_3;\\\\n  vec3 ret_4;\\\\n  uv_3 = (((uv - 0.5) * (1.0 - \\\\n    (q10 / (1.0 - ((texture (sampler_blur1, uv).xyz * scale1) + bias1).z))\\\\n  )) + 0.5);\\\\n  xlat_mutableuv1 = (((uv_orig - 0.5) * aspect.xy) * q16);\\\\n  vec4 tmpvar_5;\\\\n  tmpvar_5 = fract((8.0 * texture (sampler_noise_lq, (uv_3 + rand_frame.yz))));\\\\n  vec3 tmpvar_6;\\\\n  tmpvar_6 = tmpvar_5.xyz;\\\\n  if ((tmpvar_5.y > 0.1)) {\\\\n    vec3 tmpvar_7;\\\\n    tmpvar_7 = (tmpvar_5.xyz - vec3(0.5, 0.5, 0.5));\\\\n    vec4 nb2_8;\\\\n    vec4 nb_9;\\\\n    vec2 tmpvar_10;\\\\n    tmpvar_10 = (0.003472222 * floor((\\\\n      (288.0 * texture (sampler_pc_main, (uv_3 - texsize.zw)).yz)\\\\n     + vec2(0.5, 0.5))));\\\\n    nb_9.x = (1.0 - (tmpvar_10.y + (0.03125 * \\\\n      (tmpvar_10.x - 0.505)\\\\n    )));\\\\n    vec2 tmpvar_11;\\\\n    tmpvar_11 = (0.003472222 * floor((\\\\n      (288.0 * texture (sampler_pc_main, (uv_3 + (texsize.zw * vec2(1.0, -1.0)))).yz)\\\\n     + vec2(0.5, 0.5))));\\\\n    nb_9.y = (1.0 - (tmpvar_11.y + (0.03125 * \\\\n      (tmpvar_11.x - 0.505)\\\\n    )));\\\\n    vec2 tmpvar_12;\\\\n    tmpvar_12 = (0.003472222 * floor((\\\\n      (288.0 * texture (sampler_pc_main, (uv_3 + texsize.zw)).yz)\\\\n     + vec2(0.5, 0.5))));\\\\n    nb_9.z = (1.0 - (tmpvar_12.y + (0.03125 * \\\\n      (tmpvar_12.x - 0.505)\\\\n    )));\\\\n    vec2 tmpvar_13;\\\\n    tmpvar_13 = (0.003472222 * floor((\\\\n      (288.0 * texture (sampler_pc_main, (uv_3 + (texsize.zw * vec2(-1.0, 1.0)))).yz)\\\\n     + vec2(0.5, 0.5))));\\\\n    nb_9.w = (1.0 - (tmpvar_13.y + (0.03125 * \\\\n      (tmpvar_13.x - 0.505)\\\\n    )));\\\\n    vec2 tmpvar_14;\\\\n    tmpvar_14 = (0.003472222 * floor((\\\\n      (288.0 * texture (sampler_pc_main, (uv_3 + (texsize.zw * vec2(0.0, -1.0)))).yz)\\\\n     + vec2(0.5, 0.5))));\\\\n    nb2_8.x = (1.0 - (tmpvar_14.y + (0.03125 * \\\\n      (tmpvar_14.x - 0.505)\\\\n    )));\\\\n    vec2 tmpvar_15;\\\\n    tmpvar_15 = (0.003472222 * floor((\\\\n      (288.0 * texture (sampler_pc_main, (uv_3 + (texsize.zw * vec2(1.0, 0.0)))).yz)\\\\n     + vec2(0.5, 0.5))));\\\\n    nb2_8.y = (1.0 - (tmpvar_15.y + (0.03125 * \\\\n      (tmpvar_15.x - 0.505)\\\\n    )));\\\\n    vec2 tmpvar_16;\\\\n    tmpvar_16 = (0.003472222 * floor((\\\\n      (288.0 * texture (sampler_pc_main, (uv_3 + (texsize.zw * vec2(0.0, 1.0)))).yz)\\\\n     + vec2(0.5, 0.5))));\\\\n    nb2_8.z = (1.0 - (tmpvar_16.y + (0.03125 * \\\\n      (tmpvar_16.x - 0.505)\\\\n    )));\\\\n    vec2 tmpvar_17;\\\\n    tmpvar_17 = (0.003472222 * floor((\\\\n      (288.0 * texture (sampler_pc_main, (uv_3 + (texsize.zw * vec2(-1.0, 0.0)))).yz)\\\\n     + vec2(0.5, 0.5))));\\\\n    nb2_8.w = (1.0 - (tmpvar_17.y + (0.03125 * \\\\n      (tmpvar_17.x - 0.505)\\\\n    )));\\\\n    vec4 tmpvar_18;\\\\n    tmpvar_18 = min (nb_9, nb2_8);\\\\n    nb_9.zw = tmpvar_18.zw;\\\\n    nb_9.xy = min (tmpvar_18.xy, tmpvar_18.zw);\\\\n    vec2 tmpvar_19;\\\\n    tmpvar_19 = (0.003472222 * floor((\\\\n      (288.0 * texture (sampler_pc_main, uv_3).yz)\\\\n     + vec2(0.5, 0.5))));\\\\n    vec2 tmpvar_20;\\\\n    tmpvar_20.x = (tmpvar_7.x * abs(tmpvar_7.y));\\\\n    tmpvar_20.y = (abs(tmpvar_7.x) * tmpvar_7.y);\\\\n    xlat_mutabledist = (min (min (nb_9.x, nb_9.y), (1.0 - \\\\n      (tmpvar_19.y + (0.03125 * (tmpvar_19.x - 0.505)))\\\\n    )) + (0.01 * tmpvar_20)).x;\\\\n  } else {\\\\n    xlat_mutabledist = tmpvar_6.x;\\\\n  };\\\\n  vec2 tmpvar_21;\\\\n  tmpvar_21 = (0.003472222 * floor((\\\\n    (288.0 * texture (sampler_pc_main, uv_3).yz)\\\\n   + vec2(0.5, 0.5))));\\\\n  xlat_mutabledist = (min (xlat_mutabledist, (1.0 - \\\\n    (tmpvar_21.y + (0.03125 * (tmpvar_21.x - 0.505)))\\\\n  )) - (q10 * 0.8));\\\\n  float tmpvar_22;\\\\n  tmpvar_22 = (xlat_mutabledist + (pow (xlat_mutabledist, 3.0) * 0.2));\\\\n  vec3 tmpvar_23;\\\\n  tmpvar_23.xy = (xlat_mutableuv1 * tmpvar_22);\\\\n  tmpvar_23.z = tmpvar_22;\\\\n  xlat_mutableuv2 = (((tmpvar_23 / q7) * tmpvar_1) + tmpvar_2);\\\\n  xlat_mutableuv2 = ((fract(\\\\n    ((xlat_mutableuv2 / 8.0) + 0.5)\\\\n  ) - 0.5) * 8.0);\\\\n  vec4 tmpvar_24;\\\\n  tmpvar_24.w = 0.0;\\\\n  tmpvar_24.xyz = (vec3((texture (sampler_noisevol_lq, (xlat_mutableuv2 / 16.0)).x * 3.0)) * 80.0);\\\\n  float tmpvar_25;\\\\n  tmpvar_25 = sqrt(dot (tmpvar_24.xyz, tmpvar_24.xyz));\\\\n  xlat_mutablestruc = (sqrt(dot (tmpvar_24.xyz, tmpvar_24.xyz)) / 80.0);\\\\n  if (((tmpvar_25 < 80.0) && (xlat_mutabledist > 0.005))) {\\\\n    ret_4.x = (((1.0 - sustain) * xlat_mutablestruc) + (sustain * texture (sampler_main, uv_3).x));\\\\n    vec2 tmpvar_26;\\\\n    tmpvar_26 = (0.003472222 * floor((\\\\n      (288.0 * vec2((1.0 - xlat_mutabledist)))\\\\n     + vec2(0.5, 0.5))));\\\\n    vec2 tmpvar_27;\\\\n    tmpvar_27.x = ((32.0 * (\\\\n      (1.0 - xlat_mutabledist)\\\\n     - tmpvar_26.x)) + 0.495);\\\\n    tmpvar_27.y = tmpvar_26.x;\\\\n    ret_4.yz = tmpvar_27;\\\\n  } else {\\\\n    vec3 tmpvar_28;\\\\n    tmpvar_28.x = (0.5 * (sustain + 1.0));\\\\n    tmpvar_28.y = sustain;\\\\n    tmpvar_28.z = sustain;\\\\n    vec3 tmpvar_29;\\\\n    tmpvar_29.y = 0.0;\\\\n    tmpvar_29.x = (1.0 - sustain);\\\\n    tmpvar_29.z = (1.0 - sustain);\\\\n    ret_4 = ((texture (sampler_fw_main, fract(uv_3)).xyz * tmpvar_28) - (0.01 * tmpvar_29));\\\\n  };\\\\n  vec4 tmpvar_30;\\\\n  tmpvar_30.w = 1.0;\\\\n  tmpvar_30.xyz = ret_4;\\\\n  ret = tmpvar_30.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec2 uv_1;\\\\n  vec2 dz_2;\\\\n  vec3 ret2_3;\\\\n  vec2 tmpvar_4;\\\\n  tmpvar_4.x = (abs((uv.x - 0.5)) + 0.5);\\\\n  tmpvar_4.y = uv.y;\\\\n  uv_1 = (abs((tmpvar_4 - 0.5)) + 0.5);\\\\n  ret2_3 = (texture (sampler_main, uv_1).xyz * (0.6 + (0.5 * \\\\n    sin(((uv_1.x * 10.0) + (3.141593 * (q27 + q28))))\\\\n  )));\\\\n  vec3 tmpvar_5;\\\\n  tmpvar_5 = mix (vec3(dot (texture (sampler_main, uv_1).xyz, vec3(0.32, 0.49, 0.29))), ret2_3, pow (ret2_3, vec3((0.15 + \\\\n    (mid_att * 0.025)\\\\n  ))));\\\\n  ret2_3 = tmpvar_5;\\\\n  vec2 tmpvar_6;\\\\n  tmpvar_6 = (uv_1 - 0.5);\\\\n  vec2 tmpvar_7;\\\\n  vec2 tmpvar_8;\\\\n  tmpvar_8 = (vec2(0.0005, 0.0) * q21);\\\\n  tmpvar_7.x = (texture (sampler_main, (uv_1 + tmpvar_8)).x - texture (sampler_main, (uv_1 - tmpvar_8)).z);\\\\n  vec2 tmpvar_9;\\\\n  tmpvar_9 = (vec2(0.0, 0.0005) * q20);\\\\n  tmpvar_7.y = (texture (sampler_main, (uv_1 + tmpvar_9)).x - texture (sampler_main, (uv_1 - tmpvar_9)).z);\\\\n  dz_2 = (tmpvar_7 + ((texture (sampler_noise_hq, \\\\n    (((tmpvar_6 / (\\\\n      (((0.5 * q26) + (0.5 * q27)) / q16)\\\\n     + rad)) * ((q23 * 0.1) + (q24 * 0.1))) + q31)\\\\n  ) - 0.5) * 0.1).xy);\\\\n  vec2 tmpvar_10;\\\\n  tmpvar_10 = abs((tmpvar_6 - dz_2));\\\\n  vec3 tmpvar_11;\\\\n  float tmpvar_12;\\\\n  tmpvar_12 = abs(q21);\\\\n  float tmpvar_13;\\\\n  tmpvar_13 = abs(q20);\\\\n  tmpvar_11.x = (tmpvar_13 + tmpvar_12);\\\\n  float tmpvar_14;\\\\n  tmpvar_14 = abs(q22);\\\\n  tmpvar_11.y = (tmpvar_12 + tmpvar_14);\\\\n  tmpvar_11.z = (tmpvar_14 + tmpvar_13);\\\\n  vec3 tmpvar_15;\\\\n  tmpvar_15 = log(exp2((\\\\n    (3.141593 * tmpvar_11)\\\\n   * \\\\n    ((0.7 * texture (sampler_main, uv_1).xyz) + ((pow (\\\\n      abs((0.03333 / sqrt(dot (tmpvar_10, tmpvar_10))))\\\\n    , 0.75) * tmpvar_5) * (5.0 + sqrt(mid))))\\\\n  .yzx)));\\\\n  vec3 tmpvar_16;\\\\n  float tmpvar_17;\\\\n  tmpvar_17 = abs(q24);\\\\n  float tmpvar_18;\\\\n  tmpvar_18 = abs(q23);\\\\n  tmpvar_16.x = (tmpvar_18 + tmpvar_17);\\\\n  float tmpvar_19;\\\\n  tmpvar_19 = abs(q25);\\\\n  tmpvar_16.y = (tmpvar_17 + tmpvar_19);\\\\n  tmpvar_16.z = (tmpvar_19 + tmpvar_18);\\\\n  vec2 tmpvar_20;\\\\n  tmpvar_20 = fract(-(tmpvar_10));\\\\n  vec2 tmpvar_21;\\\\n  tmpvar_21 = fract(dz_2);\\\\n  vec3 tmpvar_22;\\\\n  tmpvar_22 = log(exp2((\\\\n    (3.141593 * tmpvar_16)\\\\n   * texture (sampler_main, \\\\n    fract(-(abs((tmpvar_20 - \\\\n      (2.0 * (dot (tmpvar_21, tmpvar_20) * tmpvar_21))\\\\n    ))))\\\\n  ).xyz)));\\\\n  vec3 tmpvar_23;\\\\n  float tmpvar_24;\\\\n  tmpvar_24 = abs(q27);\\\\n  float tmpvar_25;\\\\n  tmpvar_25 = abs(q26);\\\\n  tmpvar_23.x = (tmpvar_25 + tmpvar_24);\\\\n  float tmpvar_26;\\\\n  tmpvar_26 = abs(q28);\\\\n  tmpvar_23.y = (tmpvar_24 + tmpvar_26);\\\\n  tmpvar_23.z = (tmpvar_26 + tmpvar_25);\\\\n  vec3 tmpvar_27;\\\\n  tmpvar_27 = log(exp2((\\\\n    (3.141593 * tmpvar_23)\\\\n   * texture (sampler_main, \\\\n    fract(-(tmpvar_10))\\\\n  ).zxy)));\\\\n  vec3 tmpvar_28;\\\\n  tmpvar_28 = mix (tmpvar_15, tmpvar_22, (1.5708 - (1.570796 - \\\\n    (sign(tmpvar_27) * (1.570796 - (sqrt(\\\\n      (1.0 - abs(tmpvar_27))\\\\n    ) * (1.570796 + \\\\n      (abs(tmpvar_27) * (-0.2146018 + (abs(tmpvar_27) * (0.08656672 + \\\\n        (abs(tmpvar_27) * -0.03102955)\\\\n      ))))\\\\n    ))))\\\\n  )));\\\\n  vec3 tmpvar_29;\\\\n  tmpvar_29 = mix (tmpvar_15, tmpvar_22, tmpvar_27);\\\\n  vec3 tmpvar_30;\\\\n  tmpvar_30.z = 0.0;\\\\n  tmpvar_30.xy = ((uv_1 - 0.5) + (0.4 * dot (texture (sampler_main, uv_1).xyz, vec3(0.32, 0.49, 0.29))));\\\\n  float x_31;\\\\n  x_31 = (fract((\\\\n    (dot (tmpvar_30, vec3(0.32, 0.49, 0.29)) * 3.0)\\\\n   - time)) - 0.5);\\\\n  vec4 tmpvar_32;\\\\n  tmpvar_32.w = 1.0;\\\\n  tmpvar_32.xyz = ((0.637 * abs(\\\\n    mix ((1.5708 - (1.570796 - (\\\\n      sign(tmpvar_29)\\\\n     * \\\\n      (1.570796 - (sqrt((1.0 - \\\\n        abs(tmpvar_29)\\\\n      )) * (1.570796 + (\\\\n        abs(tmpvar_29)\\\\n       * \\\\n        (-0.2146018 + (abs(tmpvar_29) * (0.08656672 + (\\\\n          abs(tmpvar_29)\\\\n         * -0.03102955))))\\\\n      ))))\\\\n    ))), (sign(tmpvar_28) * (1.570796 - (\\\\n      sqrt((1.0 - abs(tmpvar_28)))\\\\n     * \\\\n      (1.570796 + (abs(tmpvar_28) * (-0.2146018 + (\\\\n        abs(tmpvar_28)\\\\n       * \\\\n        (0.08656672 + (abs(tmpvar_28) * -0.03102955))\\\\n      ))))\\\\n    ))), ((3.0 * q15) * mix ((1.5708 - \\\\n      (1.570796 - (sign(tmpvar_15) * (1.570796 - (\\\\n        sqrt((1.0 - abs(tmpvar_15)))\\\\n       * \\\\n        (1.570796 + (abs(tmpvar_15) * (-0.2146018 + (\\\\n          abs(tmpvar_15)\\\\n         * \\\\n          (0.08656672 + (abs(tmpvar_15) * -0.03102955))\\\\n        ))))\\\\n      ))))\\\\n    ), (1.5708 - \\\\n      (1.570796 - (sign(tmpvar_22) * (1.570796 - (\\\\n        sqrt((1.0 - abs(tmpvar_22)))\\\\n       * \\\\n        (1.570796 + (abs(tmpvar_22) * (-0.2146018 + (\\\\n          abs(tmpvar_22)\\\\n         * \\\\n          (0.08656672 + (abs(tmpvar_22) * -0.03102955))\\\\n        ))))\\\\n      ))))\\\\n    ), (\\\\n      sign(tmpvar_27)\\\\n     * \\\\n      (1.570796 - (sqrt((1.0 - \\\\n        abs(tmpvar_27)\\\\n      )) * (1.570796 + (\\\\n        abs(tmpvar_27)\\\\n       * \\\\n        (-0.2146018 + (abs(tmpvar_27) * (0.08656672 + (\\\\n          abs(tmpvar_27)\\\\n         * -0.03102955))))\\\\n      ))))\\\\n    ))))\\\\n  )) + (exp(\\\\n    (-20.0 * sqrt((x_31 * x_31)))\\\\n  ) * q10));\\\\n  ret = tmpvar_32.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Geiss + Flexi + Martin - disconnected.json\":\n/*!**********************************************************************!*\\\n  !*** ./presets/converted/Geiss + Flexi + Martin - disconnected.json ***!\n  \\**********************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1,\\\"decay\\\":0.925,\\\"echo_zoom\\\":1.007,\\\"echo_orient\\\":3,\\\"wave_brighten\\\":0,\\\"brighten\\\":1,\\\"darken\\\":1,\\\"solarize\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":0.01,\\\"wave_smoothing\\\":0,\\\"modwavealphastart\\\":1,\\\"modwavealphaend\\\":1,\\\"warpanimspeed\\\":1.459,\\\"warpscale\\\":2.007,\\\"fshader\\\":1,\\\"zoom\\\":0.9999,\\\"warp\\\":0.01,\\\"sx\\\":0.9999,\\\"wave_r\\\":0,\\\"wave_g\\\":0,\\\"wave_b\\\":0,\\\"ob_size\\\":0.015,\\\"ob_b\\\":1,\\\"ib_size\\\":0.26,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":5,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"textured\\\":1,\\\"rad\\\":0.789,\\\"ang\\\":0.6283,\\\"tex_zoom\\\":1.17257,\\\"r\\\":0,\\\"g\\\":1,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"vx = 0;\\\\nvy = 0;\\\",\\\"frame_eqs_eel\\\":\\\"rad = 0.65 + bass*0.1;\\\\n\\\\nan = an*0.99 + (bass-treb)*0.1;\\\\nang = an*0.1 + 0.6;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"rad\\\":0.40271,\\\"tex_zoom\\\":2.23888,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":0.08,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"textured\\\":1,\\\"rad\\\":1.21525,\\\"tex_ang\\\":2.57611,\\\"tex_zoom\\\":0.55595,\\\"g\\\":1,\\\"b\\\":1,\\\"g2\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":34,\\\"x\\\":0.99,\\\"y\\\":0.99,\\\"rad\\\":0.02558,\\\"r\\\":0,\\\"g\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"samples\\\":495,\\\"sep\\\":4,\\\"spectrum\\\":1,\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":100,\\\"smoothing\\\":1,\\\"r\\\":0,\\\"g\\\":0.04,\\\"b\\\":0,\\\"a\\\":0.99},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\nab = 1;\\\",\\\"frame_eqs_eel\\\":\\\"t1 = q1;\\\\nt2 = q2;\\\\nt3 = q3;\\\\nt4 = q4;\\\\nt5 = q5;\\\\nt6 = q6;\\\\nt8 = .07;\\\\nt7 = 1;\\\",\\\"point_eqs_eel\\\":\\\"t7 = -t7;\\\\npi = asin(1);\\\\nn = 180;\\\\nrd = 0.075;//+(value1*10+1)*((sample*512)%2)*0.02;\\\\nmy_x = sin(sample*pi*4+(t7+1)*t8)*0.5 + cos(sample*pi*n)*rd*sin(sample*pi*4+(t7+1)*t8);\\\\nmy_y = cos(sample*pi*4+(t7+1)*t8)*0.5 + cos(sample*pi*n)*rd*cos(sample*pi*4+(t7+1)*t8);\\\\nmy_z = sin(sample*pi*n)*rd;\\\\n\\\\n\\\\n\\\\nd = 1.4; // makes the perspective impact\\\\nzoom = 0.65;\\\\n\\\\nw1 = q2;\\\\nw2 = q3;\\\\nw3 = q4;\\\\n\\\\nx1 = cos(w1)*my_x + sin(w1)*my_y;\\\\ny1 = -sin(w1)*my_x + cos(w1)*my_y;\\\\nz1 = my_z;\\\\n\\\\nx2 = cos(w2)*x1 + sin(w2)*z1;\\\\nz2 = -sin(w2)*x1 + cos(w2)*z1;\\\\ny2 = y1;\\\\n\\\\ny3 = cos(w3)*y2 + sin(w3)*z2;\\\\nz3 = -sin(w3)*y2 + cos(w3)*z2;\\\\nx3 = x2;\\\\n\\\\n// perspective calculation\\\\n\\\\nl = sqrt(x3*x3 + y3*y3);\\\\nw = atan2(x3,y3);\\\\np = tan(asin(1) + atan2(d+z3,l));\\\\nd = sqrt(x3*x3 + y3*y3 + (z3+d)*(z3+d));\\\\n\\\\nmy_x = zoom*sin(w)*p;\\\\nmy_y = zoom*cos(w)*p;\\\\n\\\\nx = 0.5 + my_x;\\\\ny = 0.5 + my_y;\\\\n\\\\nb = -z3 + 0.5;\\\\nb = min(1,max(0,b))*0.5;\\\\nr = 1-b*2\\\\n//b = (1 - r)*0.1;\\\\n//a =  7/(d*16) - 0.1;\\\"},{\\\"baseVals\\\":{\\\"samples\\\":445,\\\"sep\\\":4,\\\"spectrum\\\":1,\\\"usedots\\\":1,\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":100,\\\"smoothing\\\":1,\\\"a\\\":0.99,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\nab = 1;\\\",\\\"frame_eqs_eel\\\":\\\"t1 = q1;\\\\nt2 = q2;\\\\nt3 = q3;\\\\nt4 = q4;\\\\nt5 = q5;\\\\nt6 = q6;\\\\nt8 = .09;\\\\nt7 = 1;\\\",\\\"point_eqs_eel\\\":\\\"t7 = -t7;\\\\npi = asin(1);\\\\nn = 160;\\\\nrd = 0.075;//+(value1*10+1)*((sample*512)%2)*0.02;\\\\nxx = sin(sample*pi*4+(t7+1)*t8)*0.5 + cos(sample*pi*n)*rd*sin(sample*pi*4);\\\\nyy = cos(sample*pi*4+(t7+1)*t8)*0.5 + cos(sample*pi*n)*rd*cos(sample*pi*4);\\\\nzz = sin(sample*pi*n)*rd;\\\\n\\\\nd = sqrt( xx*xx + yy*yy + zz*zz);\\\\nd1 = 1;\\\\nxx = xx*d1;\\\\nyy = yy*d1;\\\\nzz = zz*d1;\\\\n\\\\nw = -d*t5;\\\\ns1 = sin(t2*1+w);\\\\ns2 = sin(t3*1+w);\\\\ns3 = sin(t4*1+w);\\\\nc1 = cos(t2*1+w);\\\\nc2 = cos(t3*1+w);\\\\nc3 = cos(t4*1+w);\\\\n\\\\nz = (c3*s1*c2 + s3*s2)*xx - (c3*s1*s2-s3*c2)*yy + c3*c1*zz;\\\\nx1 = (c1*c2*xx + c1*s2*yy - s1*zz);\\\\ny1 = ((s3*s1*c2 - c3*s2)*xx + (s3*s1*s2+c3*c2)*yy + s3*c1*zz);\\\\n\\\\na = 0.75;\\\\nzoom = 0.5*atan2(a,a+z);//0.5*(1/(z+a));\\\\nx = 0.5 + zoom*x1;\\\\ny = 0.5 + zoom*y1;\\\\n\\\\npi3 = 3.1415*2*0.3333;\\\\nt = sample*pi*4-2*time;\\\\nc=1.6;\\\\nr = sin(t)*c;\\\\n\\\\ng = sin(t+pi3)*c;\\\\n\\\\nb = sin(t-pi3)*c;\\\\n\\\\nj = 0.71;\\\\n//r = 0.5+xx*j;\\\\n//g = 0.5+yy*j;\\\\n//b = 0.5+zz*j;\\\\n\\\\nr = if(above(r,1),1,r);\\\\nr = if(below(r,0),0,r);\\\\ng = if(above(g,1),1,g);\\\\ng = if(below(g,0),0,g);\\\\nb = if(above(b,1),1,b);\\\\nb = if(below(b,0),0,b);\\\\na = 1-(z + a)/2;\\\\n\\\"},{\\\"baseVals\\\":{\\\"sep\\\":4,\\\"scaling\\\":0.09348,\\\"smoothing\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\nab = 1;\\\",\\\"frame_eqs_eel\\\":\\\"t1 = q1;\\\\nt2 = q2;\\\\nt3 = q3;\\\\nt4 = q4;\\\\nt5 = q5;\\\\nt6 = q6;\\\",\\\"point_eqs_eel\\\":\\\"s8 = sample*383;\\\\n\\\\ns = 100;//0.3;\\\\nxx = sin(sample*s);//((sample*343)%7 - 3.5)*s;\\\\nzz = cos(sample*s);//((sample*49)%7 - 3.5)*s;\\\\nyy = (sample-0.5);//((sample*7)%7 - 3.5)*s;\\\\n\\\\nd = sqrt( xx*xx + yy*yy + zz*zz);\\\\nd1 = 1/d;\\\\nxx = xx*d1;\\\\nyy = yy*d1;\\\\nzz = zz*d1;\\\\n\\\\nw = 1+0*(d)*(t6);//(sample*sin(time*0.3)*0.02-1);\\\\ns1 = sin(t2*w);\\\\ns2 = sin(t3*w);\\\\ns3 = sin(t4*w);\\\\nc1 = cos(t2*w);\\\\nc2 = cos(t3*w);\\\\nc3 = cos(t4*w);\\\\n\\\\nz = (c3*s1*c2 + s3*s2)*xx - (c3*s1*s2-s3*c2)*yy + c3*c1*zz;\\\\nx1 = (c1*c2*xx + c1*s2*yy - s1*zz);\\\\ny1 = ((s3*s1*c2 - c3*s2)*xx + (s3*s1*s2+c3*c2)*yy + s3*c1*zz);\\\\n\\\\na = 2;\\\\nzoom = 0.3*atan2(a-z,a);//0.5*(1/(z+a));\\\\nx = 0.5 + zoom*x1;\\\\ny = 0.5 + zoom*y1;\\\\n\\\\npi3 = 3.1415*2*0.3333;\\\\nt = -z*13+t5*20;\\\\nc = 10;\\\\nr = sin(t)*c;\\\\n\\\\ng = sin(t+pi3)*c;\\\\n\\\\nb = sin(t-pi3)*c;\\\\n\\\\nj = 0.71;\\\\n//r = 0.5+xx*j;\\\\n//g = 0.5+yy*j;\\\\n//b = 0.5+zz*j;\\\\n\\\\nr = if(above(r,1),1,r);\\\\nr = if(below(r,0),0,r);\\\\ng = if(above(g,1),1,g);\\\\ng = if(below(g,0),0,g);\\\\nb = if(above(b,1),1,b);\\\\nb = if(below(b,0),0,b);\\\\n\\\\n\\\\na = sigmoid(-z,10)*1.0+0.0;\\\"},{\\\"baseVals\\\":{\\\"samples\\\":484,\\\"sep\\\":4,\\\"usedots\\\":1,\\\"scaling\\\":9.94125,\\\"smoothing\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\nab = 1;\\\",\\\"frame_eqs_eel\\\":\\\"t1 = q1;\\\\nt2 = q2;\\\\nt3 = q3;\\\\nt4 = q4;\\\\nt5 = q5;\\\\nt6 = q6;\\\",\\\"point_eqs_eel\\\":\\\"s8 = sample*383;\\\\n\\\\ns = 0.25;\\\\nxx = ((sample*(465))%15 - 8)*s*2;\\\\nyy = ((sample*31)%31 - 16)*s;\\\\nzz = 0;\\\\n\\\\nd = sqrt( xx*xx + yy*yy + zz*zz);\\\\nw = 1;\\\\n\\\\ns1 = sin(t2*1);\\\\ns2 = sin(t3*0);\\\\ns3 = sin(t4*1);\\\\nc1 = cos(t2*1);\\\\nc2 = cos(t3*0);\\\\nc3 = cos(t4*1);\\\\n\\\\n\\\\nz = (c3*s1*c2 + s3*s2)*xx - (c3*s1*s2-s3*c2)*yy + c3*c1*zz;\\\\nx1 = (c1*c2*xx + c1*s2*yy - s1*zz);\\\\ny1 = ((s3*s1*c2 - c3*s2)*xx + (s3*s1*s2+c3*c2)*yy + s3*c1*zz);\\\\n\\\\na = 500;\\\\nzoom = 0.05*atan2(a-z,a);//0.5*(1/(z+a));\\\\nx = 0.5 + zoom*x1;\\\\ny = 0.5 + zoom*y1;\\\\n\\\\npi3 = 3.1415*2*0.3333;\\\\nt = -z*5+t5;\\\\nc = 10;\\\\nr = sin(t)*c;\\\\n\\\\ng = sin(t+pi3)*c;\\\\n\\\\nb = sin(t-pi3)*c;\\\\n\\\\nj = 0.71;\\\\n//r = 0.5+xx*j;\\\\n//g = 0.5+yy*j;\\\\n//b = 0.5+zz*j;\\\\n\\\\nr = if(above(r,1),1,r);\\\\nr = if(below(r,0),0,r);\\\\ng = if(above(g,1),1,g);\\\\ng = if(below(g,0),0,g);\\\\nb = if(above(b,1),1,b);\\\\nb = if(below(b,0),0,b);\\\\n\\\\n\\\\na = sigmoid(z,5);\\\"}],\\\"init_eqs_eel\\\":\\\"step = 0;\\\",\\\"frame_eqs_eel\\\":\\\"dec_med = pow (0.7, 30/fps);\\\\ndec_slow = pow (0.99, 30/fps);\\\\nbeat = max (max (bass, mid), treb); \\\\navg = avg*dec_slow + beat*(1-dec_slow);\\\\nis_beat = above(beat, -2+avg+peak) * above (time, t0+.1);\\\\nt0 = is_beat*time + (1-is_beat)*t0;\\\\npeak = is_beat * beat + (1-is_beat)*peak*dec_med;\\\\nindex = (index + is_beat) %16;\\\\nindex2 = (index2 + is_beat*bnot(index))%2;\\\\n\\\\nq20 = avg;\\\\nq21 = beat;\\\\nq22 = peak;\\\\nq23 = index;\\\\nq24 = is_beat;\\\\nq26 = bass_att + mid_att + treb_att;\\\\nq27 = index + 1;\\\\nq28 = index2;\\\\n\\\\nq29 = ((index%2)-.5)*2;\\\\n\\\\nk1 =  is_beat*equal(index%2,0);\\\\np1 =  k1*(p1+1) + (1-k1)*p1;\\\\np2 = dec_med * p2+ (1-dec_med)*p1;\\\\nrott = p2 * 3.1416/8;\\\\n\\\\nq1 = cos(rott);\\\\nq2 = sin(rott);\\\\nq3 = -q2;\\\\nq4 = q1;\\\\n\\\\n//ds = max ((q26-.2),0);\\\\n//step = step + ds/10;\\\\n\\\\nstep = step + q24 ;\\\\n\\\\np3 = p3*dec_slow + (1-dec_slow) * step;\\\\nq30 = step;\\\\n\\\\np4 = dec_slow*p4 + (1-dec_slow)*q27;\\\\nq31 = p4;\\\\n\\\\nq12 = time -t0;\\\\nmonitor = q12;\\\\n\\\\n\\\\n\\\\nzoom = 1;\\\\nrot = -0 ;\\\\ndx = .00;\\\",\\\"pixel_eqs_eel\\\":\\\"zoom = 1.3;\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec2 uv_1;\\\\n  vec2 uv6_2;\\\\n  vec2 tmpvar_3;\\\\n  tmpvar_3 = ((uv - 0.5) * aspect.xy);\\\\n  float tmpvar_4;\\\\n  tmpvar_4 = (((q29 * 2.0) * sqrt(\\\\n    dot (tmpvar_3, tmpvar_3)\\\\n  )) + (rand_frame * 64.0)).x;\\\\n  uv_1 = (uv + (clamp (\\\\n    ((sin(tmpvar_4) / cos(tmpvar_4)) * normalize(tmpvar_3))\\\\n  , vec2(-2.0, -2.0), vec2(2.0, 2.0)) / 20.0));\\\\n  uv6_2 = (0.4 * sin((tmpvar_3 * 22.0)));\\\\n  vec4 tmpvar_5;\\\\n  tmpvar_5.w = 1.0;\\\\n  tmpvar_5.xyz = (((q24 * \\\\n    (((texture (sampler_main, uv_1).xyz - (\\\\n      ((texture (sampler_blur1, fract(uv_1)).xyz * scale1) + bias1)\\\\n     * 0.04)) + (0.15 * (vec3(\\\\n      (0.1 / sqrt(dot (uv6_2, uv6_2)))\\\\n    ) * roam_cos.xyz))) - 0.02)\\\\n  ) * 0.98) + ((1.0 - q24) * texture (sampler_main, uv_orig).xyz));\\\\n  ret = tmpvar_5.xyz;\\\\n }\\\",\\\"comp\\\":\\\"uniform sampler2D sampler_rand00;\\\\n shader_body { \\\\n  vec4 tmpvar_1;\\\\n  tmpvar_1 = texture (sampler_main, uv);\\\\n  vec4 tmpvar_2;\\\\n  tmpvar_2.w = 1.0;\\\\n  tmpvar_2.xyz = ((texture (sampler_rand00, (0.4 + \\\\n    (0.6 * tmpvar_1.xy)\\\\n  )) * tmpvar_1.z) * 3.0).xyz;\\\\n  ret = tmpvar_2.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Geiss - Cauldron - painterly 2 (saturation remix).json\":\n/*!**********************************************************************************!*\\\n  !*** ./presets/converted/Geiss - Cauldron - painterly 2 (saturation remix).json ***!\n  \\**********************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":2,\\\"gammaadj\\\":2.7,\\\"wave_mode\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_a\\\":2.707,\\\"wave_scale\\\":1.025,\\\"wave_smoothing\\\":0.1,\\\"modwavealphastart\\\":0.77,\\\"modwavealphaend\\\":1.01,\\\"warpscale\\\":1.331,\\\"zoom\\\":1.014,\\\"warp\\\":0.21786,\\\"wave_r\\\":0.65,\\\"wave_g\\\":0.65,\\\"wave_b\\\":0.65,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"wave_r = wave_r + 0.350*( 0.60*sin(3.980*time) + 0.40*sin(11.047*time) );\\\\nwave_g = wave_g + 0.350*( 0.60*sin(0.835*time) + 0.40*sin(1.081*time) );\\\\nwave_b = wave_b + 0.350*( 0.60*sin(0.814*time) + 0.40*sin(1.011*time) );\\\\ncx = cx + 0.110*( 0.60*sin(0.374*time) + 0.40*sin(0.294*time) );\\\\ncy = cy + 0.110*( 0.60*sin(0.393*time) + 0.40*sin(0.223*time) );\\\\ndx = dx + 0.005*( 0.60*sin(0.173*time) + 0.40*sin(0.223*time) );\\\\ndecay = decay - 0.01*equal(frame%20,0);\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec4 tmpvar_1;\\\\n  tmpvar_1.w = 1.0;\\\\n  tmpvar_1.xyz = (texture (sampler_main, (uv + (\\\\n    (texture (sampler_main, (mix (uv, uv_orig, vec2(-1.0, -1.0)) + texsize.zw)).xy - 0.37)\\\\n   * 0.01))).xyz - 0.004);\\\\n  ret = tmpvar_1.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec4 tmpvar_1;\\\\n  tmpvar_1 = texture (sampler_main, uv);\\\\n  vec4 tmpvar_2;\\\\n  tmpvar_2.w = 1.0;\\\\n  tmpvar_2.xyz = mix (vec3(dot (tmpvar_1.xyz, vec3(0.3333, 0.3333, 0.3333))), tmpvar_1.xyz, vec3(3.0, 3.0, 3.0));\\\\n  ret = tmpvar_2.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Geiss - Reaction Diffusion 2.json\":\n/*!*************************************************************!*\\\n  !*** ./presets/converted/Geiss - Reaction Diffusion 2.json ***!\n  \\*************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":0,\\\"gammaadj\\\":1.9,\\\"echo_zoom\\\":1.16936,\\\"wave_mode\\\":7,\\\"modwavealphabyvolume\\\":1,\\\"wave_a\\\":0,\\\"wave_scale\\\":1.015009,\\\"wave_smoothing\\\":0.522,\\\"modwavealphastart\\\":0.83,\\\"modwavealphaend\\\":1.31,\\\"warpscale\\\":3.138,\\\"zoom\\\":1.009006,\\\"warp\\\":0.000536,\\\"wave_r\\\":0.5,\\\"wave_g\\\":0.5,\\\"wave_b\\\":0.5,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"wave_r = 0.85 + 0.25*sin(0.437*time+1);\\\\nwave_g = 0.85 + 0.25*sin(0.544*time+2);\\\\nwave_b = 0.85 + 0.25*sin(0.751*time+3);\\\\nrot = rot + 0.010*( 0.60*sin(0.381*time) + 0.40*sin(0.579*time) );\\\\ncx = cx + 0.210*( 0.60*sin(0.374*time) + 0.40*sin(0.294*time) );\\\\ncy = cy + 0.210*( 0.60*sin(0.393*time) + 0.40*sin(0.223*time) );\\\\ndx = dx + 0.003*( 0.60*sin(0.234*time) + 0.40*sin(0.277*time) );\\\\ndy = dy + 0.003*( 0.60*sin(0.284*time) + 0.40*sin(0.247*time) );\\\\ndecay = decay - 0.01*equal(frame%6,0);\\\\ndx = dx + dx_residual;\\\\ndy = dy + dy_residual;\\\\nbass_thresh = above(bass_att,bass_thresh)*2 + (1-above(bass_att,bass_thresh))*((bass_thresh-1.3)*0.96+1.3);\\\\ndx_residual = equal(bass_thresh,2.13)*0.016*sin(time*7) + (1-equal(bass_thresh,2.13))*dx_residual;\\\\ndy_residual = equal(bass_thresh,2.13)*0.012*sin(time*9) + (1-equal(bass_thresh,2.13))*dy_residual;\\\\nwave_x = wave_x - dx_residual*7;\\\\nwave_y = wave_y - dy_residual*7;\\\\nwave_mystery = time*0.03;\\\\n\\\\nzoom = zoom + 0.005*( 0.60*sin(0.1934*time+3) + 0.40*sin(0.307*time+9) );\\\\nzoom = zoom + max(0,bass_att-1.1)*0.4;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec3 ret_1;\\\\n  ret_1 = texture (sampler_main, uv).xyz;\\\\n  ret_1 = (ret_1 + ((ret_1 - \\\\n    ((texture (sampler_blur2, uv).xyz * scale2) + bias2)\\\\n  ) * 0.3));\\\\n  ret_1 = (ret_1 * 0.9);\\\\n  ret_1 = (ret_1 + ((\\\\n    ((texture (sampler_noise_lq, ((\\\\n      (uv_orig * texsize.xy)\\\\n     * \\\\n      (texsize_noise_lq.zw * 0.4)\\\\n    ) + rand_frame.xy)).xyz - 0.5) / 256.0)\\\\n   * 122.0) * clamp (\\\\n    (treb_att - 1.0)\\\\n  , 0.0, 1.0)));\\\\n  ret_1 = mix (ret_1, vec3(dot (ret_1, vec3(0.32, 0.49, 0.29))), vec3(0.2, 0.2, 0.2));\\\\n  vec4 tmpvar_2;\\\\n  tmpvar_2.w = 1.0;\\\\n  tmpvar_2.xyz = ret_1;\\\\n  ret = tmpvar_2.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec3 ret_1;\\\\n  ret_1 = (texture (sampler_main, uv).xyz + ((\\\\n    (texture (sampler_blur1, uv).xyz * scale1)\\\\n   + bias1) * 0.4));\\\\n  vec3 tmpvar_2;\\\\n  tmpvar_2 = pow (ret_1, vec3(0.5, 0.8, 1.7));\\\\n  ret_1 = tmpvar_2;\\\\n  vec4 tmpvar_3;\\\\n  tmpvar_3.w = 1.0;\\\\n  tmpvar_3.xyz = tmpvar_2;\\\\n  ret = tmpvar_3.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Geiss - Spiral Artifact.json\":\n/*!********************************************************!*\\\n  !*** ./presets/converted/Geiss - Spiral Artifact.json ***!\n  \\********************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1,\\\"decay\\\":1,\\\"wave_mode\\\":6,\\\"additivewave\\\":1,\\\"wave_dots\\\":1,\\\"wave_thick\\\":1,\\\"wave_brighten\\\":0,\\\"wave_a\\\":100,\\\"wave_scale\\\":3.63,\\\"wave_smoothing\\\":0.9,\\\"wave_mystery\\\":-0.3,\\\"modwavealphastart\\\":1.15,\\\"modwavealphaend\\\":1.55,\\\"warpscale\\\":1.331,\\\"zoom\\\":0.96971,\\\"warp\\\":0,\\\"wave_r\\\":0.6,\\\"wave_g\\\":0.6,\\\"wave_b\\\":0.6,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0,\\\"mv_r\\\":0.35,\\\"mv_g\\\":0.35,\\\"mv_b\\\":0.35,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"rot_sum = 0;\\\\nq2 = 0.07 + 0.04*rand(1000)*0.001 + 0.03*rand(1000)*0.001;\\\\nq3 = 1.035 + 0.06*(rand(1000)+rand(1000)+rand(1000))*0.000333;\\\",\\\"frame_eqs_eel\\\":\\\"wave_r = wave_r + 0.500*( 0.60*sin(1.980*time) + 0.40*sin(3.047*time) );\\\\nwave_g = wave_g + 0.500*( 0.60*sin(2.835*time) + 0.40*sin(2.081*time) );\\\\nwave_b = wave_b + 0.500*( 0.60*sin(3.814*time) + 0.40*sin(1.011*time) );\\\\ncx = 0.5;//cx + 0.110*( 0.60*sin(0.374*time) + 0.40*sin(0.294*time) );\\\\ncy = 0.5;//cy + 0.110*( 0.60*sin(0.393*time) + 0.40*sin(0.223*time) );\\\\n\\\\nrot = q2;//0.13;//6.28*(rand(737)/737.0 - 0.5) * 0.03;\\\\nzoom = zoom-1 + q3;\\\\nrot_sum = rot_sum + rot;\\\\nq1 = -rot_sum;\\\\nq5 = cos(rot_sum);\\\\nq6 = sin(rot_sim);\\\\nmonitor = q2;\\\\n\\\\n// custom beat detection code: (fps-independent; quiet songs don't freak out)\\\\nmin_att    = 2.5;               // lower # = quieter songs can declare beats\\\\ndecay_to   = 0.8;               // lower # = more hasty to declare a beat\\\\ndecay_rate = pow(0.9990, fps);  // lower # = more hasty to declare a beat\\\\nbeat =           bass/max(min_att,bass_att);\\\\nbeat = max(beat, mid /max(min_att,mid_att ));\\\\nbeat = max(beat, treb/max(min_att,treb_att));\\\\nbeat = max( beat, (prev_beat-decay_to)*decay_rate + decay_to );\\\\nbeat_level     = (beat - prev_beat - 0.02)*24;\\\\nis_beat = above(beat_level, 0.5);\\\\nprev_beat = beat;\\\\n  // put your beat responses HERE:\\\\n  wave_a = beat_level;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec4 tmpvar_1;\\\\n  tmpvar_1.w = 1.0;\\\\n  tmpvar_1.xyz = (texture (sampler_pw_main, uv).xyz - 0.004);\\\\n  ret = tmpvar_1.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec2 uv_1;\\\\n  vec2 uv2_2;\\\\n  uv_1 = (uv - 0.5);\\\\n  uv_1 = (uv_1 * (min (aspect.x, aspect.y) * 0.8));\\\\n  uv_1 = (uv_1 * aspect.xy);\\\\n  float tmpvar_3;\\\\n  tmpvar_3 = sin(q1);\\\\n  float tmpvar_4;\\\\n  tmpvar_4 = cos(q1);\\\\n  uv2_2.x = ((uv_1.x * tmpvar_4) - (uv_1.y * tmpvar_3));\\\\n  uv2_2.y = ((uv_1.x * tmpvar_3) + (uv_1.y * tmpvar_4));\\\\n  uv2_2 = (uv2_2 * aspect.zw);\\\\n  uv2_2 = (uv2_2 + 0.5);\\\\n  vec4 tmpvar_5;\\\\n  tmpvar_5.w = 1.0;\\\\n  tmpvar_5.xyz = (abs((\\\\n    (texture (sampler_main, uv2_2).xyz * 2.65)\\\\n   + \\\\n    (((texture (sampler_blur1, uv2_2).xyz * scale1) + bias1) * -2.0)\\\\n  )) * 1.5);\\\\n  ret = tmpvar_5.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Geiss - Thumb Drum.json\":\n/*!***************************************************!*\\\n  !*** ./presets/converted/Geiss - Thumb Drum.json ***!\n  \\***************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1.9,\\\"echo_zoom\\\":1.16936,\\\"wave_mode\\\":5,\\\"additivewave\\\":1,\\\"wave_a\\\":0,\\\"wave_scale\\\":0.899719,\\\"wave_smoothing\\\":0.63,\\\"wave_mystery\\\":1,\\\"modwavealphastart\\\":2,\\\"modwavealphaend\\\":2,\\\"warpscale\\\":2.593743,\\\"zoom\\\":1.00496,\\\"warp\\\":0.278033,\\\"sx\\\":0.999666,\\\"sy\\\":0.9999,\\\"wave_r\\\":0.65,\\\"wave_g\\\":0.65,\\\"wave_b\\\":0.65,\\\"mv_x\\\":0,\\\"mv_y\\\":48,\\\"mv_dx\\\":-0.941273,\\\"mv_dy\\\":0.426319,\\\"mv_l\\\":5,\\\"mv_r\\\":0.315997,\\\"mv_g\\\":0.078173,\\\"mv_b\\\":0.941976,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"rg = 0;\\\",\\\"frame_eqs_eel\\\":\\\"wave_r = wave_r + 0.350*( 0.60*sin(0.980*time) + 0.40*sin(1.047*time) );\\\\nwave_g = wave_g + 0.350*( 0.60*sin(0.835*time) + 0.40*sin(1.081*time) );\\\\nwave_b = wave_b + 0.350*( 0.60*sin(0.814*time) + 0.40*sin(1.011*time) );\\\\nq1 = (cx*2-1) + 0.52*( 0.60*sin(0.374*time) + 0.40*sin(0.294*time) );\\\\nq2 = (cy*2-1) + 0.52*( 0.60*sin(0.393*time) + 0.40*sin(0.223*time) );\\\\nq3 = (cx*2-1) + 0.52*( 0.60*sin(0.174*-time) + 0.40*sin(0.364*time) );\\\\nq4 = (cy*2-1) + 0.52*( 0.60*sin(0.234*time) + 0.40*sin(0.271*-time) );\\\\ndecay = decay - 0.01*equal(frame%5,0);\\\\n\\\\n// this is a great way to respond to beats:\\\\n// once you get one, let it decay at a constant rate!!\\\\nrg = max(rg*0.95, 0.3 + 0.5*min(2,max(0,mid_att-1)*1.3));\\\\nq9 = rg;\\\",\\\"pixel_eqs_eel\\\":\\\"du = x*2-1 - q1;\\\\ndv = y*2-1 - q2;\\\\ndist = sqrt(du*du+dv*dv);\\\\nang2 = atan2(du,dv);\\\\nmult = 0.008/(dist+0.4);\\\\ndx = mult*sin(ang2-1.5);\\\\ndy = mult*cos(ang2-1.5);\\\\ndu = x*2-1 - q3;\\\\ndv = y*2-1 - q4;\\\\ndist = sqrt(du*du+dv*dv);\\\\nang2 = atan2(du,dv);\\\\nmult = 0.008/(dist+0.4);\\\\ndx = dx + mult*sin(ang2+1.5);\\\\ndy = dy + mult*cos(ang2+1.5);\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec3 ret_1;\\\\n  vec2 tmpvar_2;\\\\n  tmpvar_2 = mix (uv_orig, uv, vec2(q9));\\\\n  ret_1 = texture (sampler_main, tmpvar_2).xyz;\\\\n  ret_1 = (ret_1 + ((ret_1 - \\\\n    ((texture (sampler_blur1, tmpvar_2).xyz * scale1) + bias1)\\\\n  ) * 0.3));\\\\n  ret_1 = (ret_1 * 0.9);\\\\n  ret_1 = (ret_1 + ((\\\\n    ((texture (sampler_noise_lq, ((\\\\n      (uv_orig * texsize.xy)\\\\n     * \\\\n      (texsize_noise_lq.zw * 0.4)\\\\n    ) + rand_frame.xy)).xyz - 0.5) / 256.0)\\\\n   * 122.0) * clamp (\\\\n    (treb_att - 1.0)\\\\n  , 0.0, 1.0)));\\\\n  ret_1 = mix (ret_1, vec3(dot (ret_1, vec3(0.32, 0.49, 0.29))), vec3(0.2, 0.2, 0.2));\\\\n  vec4 tmpvar_3;\\\\n  tmpvar_3.w = 1.0;\\\\n  tmpvar_3.xyz = ret_1;\\\\n  ret = tmpvar_3.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec4 tmpvar_1;\\\\n  tmpvar_1.w = 1.0;\\\\n  tmpvar_1.xyz = (0.3 + (0.4 * vec3(dot (texture (sampler_main, uv).xyz, vec3(0.32, 0.49, 0.29)))));\\\\n  ret = tmpvar_1.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Geiss, Flexi + Stahlregen - Thumbdrum Tokamak [crossfiring aftermath jelly mashup].json\":\n/*!*******************************************************************************************************************!*\\\n  !*** ./presets/converted/Geiss, Flexi + Stahlregen - Thumbdrum Tokamak [crossfiring aftermath jelly mashup].json ***!\n  \\*******************************************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1.9,\\\"echo_zoom\\\":1.169,\\\"echo_orient\\\":1,\\\"wave_mode\\\":5,\\\"additivewave\\\":1,\\\"wave_a\\\":0,\\\"wave_scale\\\":0.9,\\\"wave_smoothing\\\":0.63,\\\"wave_mystery\\\":1,\\\"modwavealphastart\\\":2,\\\"modwavealphaend\\\":2,\\\"warpscale\\\":1.331,\\\"zoom\\\":1.004,\\\"warp\\\":0.19788,\\\"sx\\\":0.99967,\\\"sy\\\":0.9999,\\\"wave_r\\\":0.65,\\\"wave_g\\\":0.65,\\\"wave_b\\\":0.65,\\\"mv_x\\\":0,\\\"mv_y\\\":48,\\\"mv_dx\\\":-0.941,\\\"mv_dy\\\":0.426,\\\"mv_l\\\":5,\\\"mv_r\\\":0.316,\\\"mv_g\\\":0.078,\\\"mv_b\\\":0.942,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"wave_r = wave_r + 0.2*( 0.60*sin(0.980*time) + 0.40*sin(1.047*time) );\\\\nwave_g = wave_g + 0.2*( 0.60*sin(0.835*time) + 0.40*sin(1.081*time) );\\\\nwave_b = wave_b + 0.2*( 0.60*sin(0.814*time) + 0.40*sin(1.011*time) );\\\\nq1 = (cx*2-1) + 0.6*( 0.60*sin(0.374*time) + 0.40*sin(0.294*time) );\\\\nq2 = (cy*2-1) + 0.6*( 0.60*sin(0.393*time) + 0.40*sin(0.223*time) );\\\",\\\"pixel_eqs_eel\\\":\\\"du = (x*2-1) - q1;\\\\ndv = (y*2-1) - q2;\\\\ndist = sqrt(du*du+dv*dv);\\\\nang2 = atan2(du,dv) + time*0.15;\\\\nmult = 0.65*sin(dist*0.05);\\\\ndx = mult*sin(ang2*2-1.5);\\\\ndy = mult*cos(ang2*2-1.5);\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec3 ret_1;\\\\n  vec4 tmpvar_2;\\\\n  tmpvar_2 = texture (sampler_main, uv);\\\\n  ret_1 = (tmpvar_2.xyz + ((tmpvar_2.xyz - \\\\n    ((texture (sampler_blur2, uv).xyz * scale2) + bias2)\\\\n  ) * 0.3));\\\\n  ret_1 = (ret_1 * 0.9);\\\\n  ret_1 = (ret_1 + ((\\\\n    ((texture (sampler_noise_lq, ((\\\\n      (uv_orig * texsize.xy)\\\\n     * \\\\n      (texsize_noise_lq.zw * 0.4)\\\\n    ) + rand_frame.xy)).xyz - 0.5) / 256.0)\\\\n   * 122.0) * clamp (\\\\n    (treb_att - 1.0)\\\\n  , 0.0, 1.0)));\\\\n  vec3 tmpvar_3;\\\\n  tmpvar_3 = mix (ret_1, vec3(dot (ret_1, vec3(0.32, 0.49, 0.29))), vec3(0.2, 0.2, 0.2));\\\\n  ret_1 = tmpvar_3;\\\\n  vec4 tmpvar_4;\\\\n  tmpvar_4.w = 1.0;\\\\n  tmpvar_4.xyz = tmpvar_3;\\\\n  ret = tmpvar_4.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec2 uv2_1;\\\\n  vec3 ret_2;\\\\n  uv2_1 = (uv + (vec2(1.0, 0.0) * texsize.zw));\\\\n  float tmpvar_3;\\\\n  tmpvar_3 = (((texture (sampler_main, uv2_1).xyz + \\\\n    (((texture (sampler_blur1, uv2_1).xyz * scale1) + bias1) * 0.4)\\\\n  ) + (\\\\n    ((texture (sampler_blur2, uv2_1).xyz * scale2) + bias2)\\\\n   * 0.15)) + ((\\\\n    (texture (sampler_blur3, uv2_1).xyz * scale3)\\\\n   + bias3) * 0.1)).x;\\\\n  uv2_1 = (uv + (vec2(-1.0, 0.0) * texsize.zw));\\\\n  float tmpvar_4;\\\\n  tmpvar_4 = (((texture (sampler_main, uv2_1).xyz + \\\\n    (((texture (sampler_blur1, uv2_1).xyz * scale1) + bias1) * 0.4)\\\\n  ) + (\\\\n    ((texture (sampler_blur2, uv2_1).xyz * scale2) + bias2)\\\\n   * 0.15)) + ((\\\\n    (texture (sampler_blur3, uv2_1).xyz * scale3)\\\\n   + bias3) * 0.1)).x;\\\\n  uv2_1 = (uv + (vec2(0.0, 1.0) * texsize.zw));\\\\n  float tmpvar_5;\\\\n  tmpvar_5 = (((texture (sampler_main, uv2_1).xyz + \\\\n    (((texture (sampler_blur1, uv2_1).xyz * scale1) + bias1) * 0.4)\\\\n  ) + (\\\\n    ((texture (sampler_blur2, uv2_1).xyz * scale2) + bias2)\\\\n   * 0.15)) + ((\\\\n    (texture (sampler_blur3, uv2_1).xyz * scale3)\\\\n   + bias3) * 0.1)).x;\\\\n  uv2_1 = (uv + (vec2(0.0, -1.0) * texsize.zw));\\\\n  vec3 tmpvar_6;\\\\n  tmpvar_6.z = 0.14;\\\\n  tmpvar_6.x = (tmpvar_3 - tmpvar_4);\\\\n  tmpvar_6.y = (tmpvar_5 - ((\\\\n    (texture (sampler_main, uv2_1).xyz + (((texture (sampler_blur1, uv2_1).xyz * scale1) + bias1) * 0.4))\\\\n   + \\\\n    (((texture (sampler_blur2, uv2_1).xyz * scale2) + bias2) * 0.15)\\\\n  ) + (\\\\n    ((texture (sampler_blur3, uv2_1).xyz * scale3) + bias3)\\\\n   * 0.1)).x);\\\\n  ret_2 = (0.5 + (0.5 * normalize(tmpvar_6)));\\\\n  vec2 x_7;\\\\n  x_7 = (ret_2.xy - 0.5);\\\\n  ret_2 = (ret_2 * clamp ((\\\\n    sqrt(dot (x_7, x_7))\\\\n   * 5.0), 0.0, 1.0));\\\\n  ret_2 = ret_2.xxy;\\\\n  ret_2 = (ret_2 + 1.15);\\\\n  ret_2 = (ret_2 * mix (ret_2, (ret_2 * \\\\n    (((texture (sampler_blur3, uv).xyz * scale3) + bias3) - ((texture (sampler_blur1, uv).xyz * scale1) + bias1))\\\\n  ), pow (hue_shader.yxz, ret_2)));\\\\n  ret_2 = (ret_2 * ret_2);\\\\n  vec4 tmpvar_8;\\\\n  tmpvar_8.w = 1.0;\\\\n  tmpvar_8.xyz = ret_2;\\\\n  ret = tmpvar_8.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Goody - The Wild Vort.json\":\n/*!******************************************************!*\\\n  !*** ./presets/converted/Goody - The Wild Vort.json ***!\n  \\******************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":2.4,\\\"decay\\\":1,\\\"echo_zoom\\\":0.997,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":3,\\\"wave_mode\\\":2,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":0.28,\\\"wave_smoothing\\\":0.9,\\\"modwavealphastart\\\":0.71,\\\"modwavealphaend\\\":1.3,\\\"warpanimspeed\\\":2.599,\\\"warpscale\\\":0.01,\\\"zoomexp\\\":0.99817,\\\"zoom\\\":0.86978,\\\"warp\\\":0.01,\\\"sy\\\":1.0017,\\\"wave_r\\\":0,\\\"wave_g\\\":0,\\\"wave_b\\\":0,\\\"ob_size\\\":0,\\\"ob_r\\\":1,\\\"ob_g\\\":1,\\\"ob_b\\\":1,\\\"ib_size\\\":0.04,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"ib_a\\\":1,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0.5,\\\"mv_r\\\":0.35,\\\"mv_g\\\":0.35,\\\"mv_b\\\":0.35,\\\"mv_a\\\":0.2},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":20,\\\"additive\\\":1,\\\"textured\\\":1,\\\"rad\\\":1.99867,\\\"tex_zoom\\\":0.49486,\\\"g\\\":1,\\\"b\\\":1,\\\"a\\\":0.75,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"y\\\":0.85,\\\"rad\\\":0.4404,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"x\\\":0.8,\\\"rad\\\":0.44044,\\\"tex_zoom\\\":0.99991,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":40,\\\"additive\\\":1,\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"y\\\":0.51,\\\"rad\\\":0.36457,\\\"tex_ang\\\":1.88496,\\\"tex_zoom\\\":1.00182,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0.2,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"bass_mod=max(x+abs(bass_att),x+sin(time));\\\\n\\\\ny=.5+.5*sin(time);\\\\nx=bass_mod*pow(y,2);\\\\n\\\\na=if(above(x,y),0,a);\\\\na2=a;\\\\nborder_a=.1*a;\\\\n\\\\ntex_zoom=bass+mid;\\\\n\\\\nr=bass*.5;\\\\ng=mid*.6;\\\\nb=treb*.7;\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"smoothing\\\":1,\\\"a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t1 = 1\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"y=rand(10000)*(.0001)+.5;\\\\nx=.5+.85*sin(time)*(.48-y);\\\\n\\\\nvol=(bass+mid+treb)*.333;\\\\n\\\\na=above((.35*bass),x);\\\\n\\\\nr=bass*.75;\\\\ng=mid*.3;\\\\nb=treb*.25;\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"smoothing\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t1 = 1\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"y=rand(10000)*(.0001)+.5;\\\\nx=.5+.5*sin(time)*(.48-y);\\\\n\\\\nvol=(bass+mid+treb)*.333;\\\\n\\\\na=above((.35*mid),x);\\\\n\\\\nr=bass*.3;\\\\ng=mid*.75;\\\\nb=treb*.2;\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"smoothing\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t1 = 1\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"y=rand(10000)*(.0001)+.5;\\\\nx=.5+.25*sin(time)*(.48-y);\\\\n\\\\nvol=(bass+mid+treb)*.333;\\\\n\\\\na=above((.35*treb),x);\\\\n\\\\nr=bass*.2;\\\\ng=mid*.3;\\\\nb=treb*.75;\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"additive\\\":1,\\\"smoothing\\\":1,\\\"a\\\":0.05,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t1 = 1\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"y=rand(10000)*(.0001)+.5;\\\\nx=.5-(pow(sin(time),y)+(.55-y));\\\\nx=if(above(x,y),y+sin(time)+(1-y),x);\\\\n\\\\nvol=(bass+mid+treb)*.333;\\\\n\\\\nr=bass*.5;\\\\ng=mid*.5;\\\\nb=treb*.5;\\\"}],\\\"init_eqs_eel\\\":\\\"decay=0.1;\\\",\\\"frame_eqs_eel\\\":\\\"sx=1;\\\\nsy=1;\\\\n\\\\nredsine=.5+.15*bass*sin(time*3);\\\\ngreensine=.5+.15*mid*sin(time*2);\\\\nbluesine=.5+.15*treb*sin(time);\\\\n\\\\nredif=.9*if(above(bass,1.2),redsine,if(above(redif,.95),0,redif*.98));\\\\ngreenif=.8*if(above(mid,1.2),greensine,if(above(greenif,.95),0,greenif*.8));\\\\nblueif=.8*if(above(treb,1.2),bluesine,if(above(blueif,.95),0,blueif*.8));\\\\n\\\\nib_r=redif;\\\\nib_g=greenif;\\\\nib_b=blueif;\\\",\\\"pixel_eqs_eel\\\":\\\"ang2=sin(ang*3+time+(.05*sin(time*above(mid_att,1.2))));\\\\n\\\\nrot=1.2*(ang2);\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec4 tmpvar_1;\\\\n  tmpvar_1.w = 1.0;\\\\n  tmpvar_1.xyz = (((texture (sampler_blur1, uv).xyz * scale1) + bias1) - texture (sampler_main, uv).xyz);\\\\n  ret = tmpvar_1.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec3 ret_1;\\\\n  ret_1 = (mix (texture (sampler_main, uv).xyz, texture (sampler_main, (\\\\n    (vec2(-1.003, 1.003) * (uv - 0.5))\\\\n   + 0.5)).xyz, vec3(0.5, 0.5, 0.5)) * 2.4);\\\\n  ret_1 = (ret_1 * ret_1);\\\\n  vec4 tmpvar_2;\\\\n  tmpvar_2.w = 1.0;\\\\n  tmpvar_2.xyz = ret_1;\\\\n  ret = tmpvar_2.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Halfbreak - Funny Madness.json\":\n/*!**********************************************************!*\\\n  !*** ./presets/converted/Halfbreak - Funny Madness.json ***!\n  \\**********************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":1,\\\"gammaadj\\\":1,\\\"decay\\\":0.99,\\\"echo_zoom\\\":1,\\\"echo_alpha\\\":0.5,\\\"wave_mode\\\":7,\\\"additivewave\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"darken_center\\\":1,\\\"darken\\\":1,\\\"invert\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":1.286,\\\"wave_smoothing\\\":0.63,\\\"modwavealphastart\\\":0.71,\\\"modwavealphaend\\\":1.3,\\\"warpscale\\\":2.853,\\\"zoomexp\\\":3.6,\\\"zoom\\\":1.02109,\\\"rot\\\":-0.16,\\\"warp\\\":0.309,\\\"wave_r\\\":0.65,\\\"wave_g\\\":0.65,\\\"wave_b\\\":0.65,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"sides\\\":39,\\\"additive\\\":1,\\\"num_inst\\\":126,\\\"rad\\\":0.06989,\\\"tex_ang\\\":0.62832,\\\"a\\\":0,\\\"r2\\\":1,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ma=ma+(above(bass,1)*3.1415*.01*bass);\\\\nma=ma-(above(treb,1)*3.1415*.01*treb);\\\\n\\\\nmx=mx+(.0002*cos(ma));\\\\nmy=my+(.0002*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.8));\\\"},{\\\"baseVals\\\":{\\\"sides\\\":41,\\\"additive\\\":1,\\\"num_inst\\\":239,\\\"rad\\\":0.06989,\\\"tex_ang\\\":0.62832,\\\"r\\\":0,\\\"g\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ma=ma+(above(bass,1)*3.1415*.05*bass);\\\\nma=ma-(above(mid,1)*3.1415*.05*mid);\\\\n\\\\nmx=mx+(.0001*cos(ma));\\\\nmy=my+(.0001*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.1));\\\"},{\\\"baseVals\\\":{\\\"sides\\\":43,\\\"additive\\\":1,\\\"num_inst\\\":32,\\\"rad\\\":0.06989,\\\"tex_ang\\\":0.62832,\\\"r\\\":0,\\\"b\\\":1,\\\"g2\\\":0,\\\"b2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ma=ma+(above(mid,1)*3.1415*.01*mid);\\\\nma=ma-(above(treb,1)*3.1415*.01*treb);\\\\n\\\\nmx=mx+(.0004*cos(ma));\\\\nmy=my+(.0004*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.3));\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":14,\\\"rad\\\":0.15964,\\\"tex_ang\\\":0.62832,\\\"a\\\":0,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(bass,1)*3.1415*.01*bass);\\\\nma=ma-(above(treb,1)*3.1415*.01*treb);\\\\n\\\\nmx=mx+(.0002*cos(ma));\\\\nmy=my+(.0002*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.8));\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(bass,1)*3.1415*.05*bass);\\\\nma=ma-(above(mid,1)*3.1415*.05*mid);\\\\n\\\\nmx=mx+(.0001*cos(ma));\\\\nmy=my+(.0001*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.1));\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(mid,1)*3.1415*.01*mid);\\\\nma=ma-(above(treb,1)*3.1415*.01*treb);\\\\n\\\\nmx=mx+(.0004*cos(ma));\\\\nmy=my+(.0004*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.3));\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(bass,.5)*3.1415*.02*bass);\\\\nma=ma-(above(treb,.5)*3.1415*.02*treb);\\\\n\\\\nmx=mx+(.0008*cos(ma));\\\\nmy=my+(.0008*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.2));\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"wave_r = wave_r + 0.400*( 0.60*sin(0.933*time) + 0.40*sin(1.045*time) );\\\\nwave_g = wave_g + 0.400*( 0.60*sin(0.900*time) + 0.40*sin(0.956*time) );\\\\nwave_b = wave_b + 0.400*( 0.60*sin(0.910*time) + 0.40*sin(0.920*time) );\\\\nq8 = oldq8+if(above(bass+bass_att,1.8),q8+0.0005*pow((bass+bass_att-1),9),0);\\\\noldq8 = q8;\\\\nmonitor = q8;\\\\nzoom = zoom + 0.023*( 0.60*sin(0.339*q8) + 0.40*sin(0.276*q8) );\\\\nrot = rot + 0.030*( 0.60*sin(0.381*q8) + 0.40*sin(0.579*q8) );\\\\n//decay = decay - 0.02*equal(frame%40,0);\\\\nmv_r = wave_r;\\\\nmv_b = wave_b;\\\\nmv_g = wave_g;\\\\nmv_x = 1.25;\\\\nmv_y = 1.25;\\\\nmv_dx = 0.1*sin(1.1*time);\\\\nmv_dy = 0.1*cos(1.112*time);\\\",\\\"pixel_eqs_eel\\\":\\\"rot=rot+1/(10*(rad+0.2+0.1*sin(q8)));\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec2 my_uv_1;\\\\n  vec3 ret_2;\\\\n  vec2 tmpvar_3;\\\\n  tmpvar_3 = (vec2(1280.0, 1024.0) * texsize.zw);\\\\n  float tmpvar_4;\\\\n  vec2 tmpvar_5;\\\\n  tmpvar_5 = (uv + vec2(0.005, 0.0));\\\\n  vec2 tmpvar_6;\\\\n  tmpvar_6 = (uv - vec2(0.005, 0.0));\\\\n  tmpvar_4 = (((\\\\n    (texture (sampler_blur2, tmpvar_5).xyz * scale2)\\\\n   + bias2) - (\\\\n    (texture (sampler_blur2, tmpvar_6).xyz * scale2)\\\\n   + bias2)).x * tmpvar_3.x);\\\\n  float tmpvar_7;\\\\n  vec2 tmpvar_8;\\\\n  tmpvar_8 = (uv + vec2(0.0, 0.005));\\\\n  vec2 tmpvar_9;\\\\n  tmpvar_9 = (uv - vec2(0.0, 0.005));\\\\n  tmpvar_7 = (((\\\\n    (texture (sampler_blur2, tmpvar_8).xyz * scale2)\\\\n   + bias2) - (\\\\n    (texture (sampler_blur2, tmpvar_9).xyz * scale2)\\\\n   + bias2)).x * tmpvar_3.y);\\\\n  vec2 tmpvar_10;\\\\n  tmpvar_10.x = tmpvar_4;\\\\n  tmpvar_10.y = tmpvar_7;\\\\n  vec2 tmpvar_11;\\\\n  tmpvar_11.x = (((\\\\n    (texture (sampler_blur2, tmpvar_5).xyz * scale2)\\\\n   + bias2) - (\\\\n    (texture (sampler_blur2, tmpvar_6).xyz * scale2)\\\\n   + bias2)).x * tmpvar_3.x);\\\\n  tmpvar_11.y = (((\\\\n    (texture (sampler_blur2, tmpvar_8).xyz * scale2)\\\\n   + bias2) - (\\\\n    (texture (sampler_blur2, tmpvar_9).xyz * scale2)\\\\n   + bias2)).x * tmpvar_3.y);\\\\n  ret_2.x = texture (sampler_fw_main, ((uv - (tmpvar_10 * 0.01)) + (tmpvar_11 * 0.003))).x;\\\\n  vec4 tmpvar_12;\\\\n  tmpvar_12 = texture (sampler_blur3, uv);\\\\n  ret_2.x = (ret_2.x + ((ret_2.x - \\\\n    ((tmpvar_12.xyz * scale3) + bias3)\\\\n  .x) * 0.1));\\\\n  ret_2.x = (ret_2.x + 0.004);\\\\n  vec2 tmpvar_13;\\\\n  tmpvar_13.x = tmpvar_7;\\\\n  tmpvar_13.y = -(tmpvar_4);\\\\n  my_uv_1 = (uv + ((tmpvar_13 * 0.05) * (1.2 - \\\\n    ((tmpvar_12.xyz * scale3) + bias3)\\\\n  .y)));\\\\n  ret_2.z = texture (sampler_fw_main, my_uv_1).z;\\\\n  vec2 x_14;\\\\n  x_14 = (my_uv_1 - uv);\\\\n  ret_2.z = (ret_2.z + ((\\\\n    ((ret_2.z - ((texture (sampler_blur1, uv).xyz * scale1) + bias1).z) * sqrt(dot (x_14, x_14)))\\\\n   * 180.0) / sqrt(\\\\n    dot (tmpvar_3, tmpvar_3)\\\\n  )));\\\\n  ret_2.z = (ret_2.z * 0.8);\\\\n  ret_2.z = (ret_2.z + 0.004);\\\\n  vec2 tmpvar_15;\\\\n  tmpvar_15.x = -(tmpvar_7);\\\\n  tmpvar_15.y = tmpvar_4;\\\\n  my_uv_1 = (tmpvar_15 * 0.045);\\\\n  vec2 tmpvar_16;\\\\n  tmpvar_16.x = (((\\\\n    (texture (sampler_blur2, (uv + vec2(0.01, 0.0))).xyz * scale2)\\\\n   + bias2) - (\\\\n    (texture (sampler_blur2, (uv - vec2(0.01, 0.0))).xyz * scale2)\\\\n   + bias2)).y * tmpvar_3.x);\\\\n  tmpvar_16.y = (((\\\\n    (texture (sampler_blur2, (uv + vec2(0.0, 0.01))).xyz * scale2)\\\\n   + bias2) - (\\\\n    (texture (sampler_blur2, (uv - vec2(0.0, 0.01))).xyz * scale2)\\\\n   + bias2)).y * tmpvar_3.y);\\\\n  my_uv_1 = (my_uv_1 + (uv - (tmpvar_16 * 0.03)));\\\\n  ret_2.y = texture (sampler_fw_main, my_uv_1).y;\\\\n  ret_2.y = (ret_2.y + ((\\\\n    (ret_2.y - ((texture (sampler_blur3, my_uv_1).xyz * scale3) + bias3).y)\\\\n   * 0.1) + 0.01));\\\\n  vec4 tmpvar_17;\\\\n  tmpvar_17.w = 1.0;\\\\n  tmpvar_17.xyz = ret_2;\\\\n  ret = tmpvar_17.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec2 uv2_1;\\\\n  float blur_2;\\\\n  float crisp_3;\\\\n  vec3 ret_4;\\\\n  vec4 tmpvar_5;\\\\n  tmpvar_5 = texture (sampler_main, uv);\\\\n  vec4 tmpvar_6;\\\\n  tmpvar_6 = texture (sampler_blur1, uv);\\\\n  ret_4 = (tmpvar_5.xyz + ((\\\\n    (tmpvar_6.xyz * scale1)\\\\n   + bias1) * 3.0));\\\\n  uv2_1 = (((uv - 0.5) * 0.8) + 0.5);\\\\n  crisp_3 = texture (sampler_main, uv2_1).y;\\\\n  blur_2 = ((texture (sampler_blur1, uv2_1).xyz * scale1) + bias1).y;\\\\n  ret_4 = (ret_4 * (1.0 - (blur_2 * 1.15)));\\\\n  vec3 tmpvar_7;\\\\n  tmpvar_7 = max (ret_4, vec3(crisp_3));\\\\n  uv2_1 = uv;\\\\n  crisp_3 = tmpvar_5.x;\\\\n  blur_2 = ((tmpvar_6.xyz * scale1) + bias1).x;\\\\n  ret_4 = (tmpvar_7 * (1.0 - (blur_2 * 1.15)));\\\\n  vec3 tmpvar_8;\\\\n  tmpvar_8 = max (ret_4, tmpvar_5.xxx);\\\\n  ret_4 = tmpvar_8;\\\\n  vec4 tmpvar_9;\\\\n  tmpvar_9.w = 1.0;\\\\n  tmpvar_9.xyz = tmpvar_8;\\\\n  ret = tmpvar_9.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Halfbreak - Light of Breakers.json\":\n/*!**************************************************************!*\\\n  !*** ./presets/converted/Halfbreak - Light of Breakers.json ***!\n  \\**************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":1,\\\"gammaadj\\\":1.98,\\\"decay\\\":0.5,\\\"echo_zoom\\\":1,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":3,\\\"additivewave\\\":1,\\\"wave_dots\\\":1,\\\"wave_thick\\\":1,\\\"wave_brighten\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":0.527,\\\"wave_smoothing\\\":0,\\\"wave_mystery\\\":0.6,\\\"modwavealphastart\\\":0,\\\"modwavealphaend\\\":1.32,\\\"warpanimspeed\\\":1.459,\\\"warpscale\\\":2.007,\\\"zoom\\\":0.9999,\\\"warp\\\":0.01,\\\"sx\\\":0.9999,\\\"wave_g\\\":0.49,\\\"ob_a\\\":1,\\\"ib_size\\\":0.26,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":1.85,\\\"mv_r\\\":0.5,\\\"mv_g\\\":0.5,\\\"mv_b\\\":0.5,\\\"mv_a\\\":0,\\\"b2x\\\":0.6,\\\"b3x\\\":0.4,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"sides\\\":8,\\\"additive\\\":1,\\\"num_inst\\\":256,\\\"rad\\\":0.03632,\\\"tex_ang\\\":1.00531,\\\"tex_zoom\\\":1.53117,\\\"g\\\":1,\\\"b\\\":1,\\\"a\\\":0,\\\"g2\\\":0,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":5,\\\"additive\\\":1,\\\"num_inst\\\":256,\\\"x\\\":0.26,\\\"y\\\":0.2,\\\"rad\\\":0.39317,\\\"tex_zoom\\\":0.9355,\\\"g2\\\":0,\\\"a2\\\":0.2,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"n = (instance);\\\\nFLen = reg00;\\\\nSLen = reg00/2;\\\\n\\\\nz0 = 10;\\\\ny0 = gmegabuf(2000+n+FLen)/z0;\\\\nx0 = gmegabuf(2000+n)/z0;\\\\n\\\\na0 = (gmegabuf(n+10000));\\\\n\\\\nk1 = instance/num_inst-.5;\\\\nx = .5 + x0 + sin(k1*8*sin(q12*.07)) * sin(q11*.13)*q3*.7; \\\\ny = .5 + q32*(y0 + sin(k1*8*sin(q14*.1)) * sin(q13*.2)*q3*.7); \\\\n\\\\narg = q2/8;\\\\nhigh = exp(-500*pow(arg+.5-instance/num_inst,2));\\\\nhigh += exp(-500*pow(-arg+.5-instance/num_inst,2));\\\\n\\\\nexc = sqrt((pow(x-.5,2)+pow(y-.5,2)));\\\\nrad0 = above(z0,0)*min (.1, a0/60)+.005;\\\\nrad0 = rad0 * (1+2*exc) * (1+high);\\\\n\\\\np1 = .5 + sin(q12)/2;\\\\np2 = .5 + sin(q13*1.4)/2;\\\\n//p1 = rand(1)-.5;\\\\n//p2 = rand(1)-.5;\\\\nexc = ((pow(x-p1,2)+pow(y-p2,2)));\\\\nrad = min(rad0 * (1 + .004*q3/abs(exc)),1) ;\\\\n\\\\na = min(a0*8+.4,1);\\\\n\\\\nk1 = instance/num_inst*5 + high;\\\\nw = 1-exp(-treb_att/2-.5);\\\\ng = w + (1-w)*sin(k1);\\\\nr = w + (1-w)*sin(k1-6.28/3);\\\\nb = w + (1-w)*sin(k1-6.28*2/3);\\\\n\\\\na2 = a/4;\\\\ng2 = g*0; b2 = b*0; r2 = r*0;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":13,\\\"additive\\\":1,\\\"num_inst\\\":5,\\\"x\\\":0.65,\\\"y\\\":0.38,\\\"rad\\\":0.57049,\\\"tex_zoom\\\":0.73678,\\\"a\\\":0.7,\\\"g2\\\":0,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_b\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"k1 = instance/num_inst;\\\\nx = .5 + .3*sin(instance*k1*413);\\\\ny = .5 + .3 * sin(instance*k1*113);\\\\n\\\\nrad = .1 + .4*sin(k1*333);\\\\n\\\\nr =  .5*sin(k1*234);\\\\nb =  .5*sin(k1*534);\\\\ng =  .5*sin(k1*34);\\\"},{\\\"baseVals\\\":{\\\"sides\\\":14,\\\"additive\\\":1,\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"x\\\":0.6,\\\"y\\\":0.55,\\\"rad\\\":0.97237,\\\"ang\\\":1.25664,\\\"tex_zoom\\\":0.34933,\\\"g\\\":0.6,\\\"g2\\\":0,\\\"b2\\\":1,\\\"border_r\\\":0.2,\\\"border_g\\\":0.7,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sep\\\":120,\\\"spectrum\\\":1,\\\"additive\\\":1,\\\"scaling\\\":7.52386,\\\"smoothing\\\":0,\\\"r\\\":0,\\\"a\\\":0.7},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"FLen = reg00;\\\\n\\\\nn = int(sample*FLen);\\\\nvol = (value1+value2) * (1+ .1 / (sample+.03));\\\\n\\\\nchg = min(max(vol- gmegabuf(n),-1),1);\\\\ndec = if (chg>0, 1-chg*0.3, 1+chg*0.2);\\\\n\\\\nchg = q1 -q2;\\\\ndec = .94 - abs(chg) * if (chg> 0, .2,.1);\\\\n\\\\ndec = min(max(dec,0),1);\\\\ngmegabuf(n) = gmegabuf(n)*dec + vol*(1-dec);\\\\n\\\\ndec = q2/4;\\\\n//dec = .90;\\\\ndec = max(min(dec,1),.1);\\\\n\\\\ngmegabuf(n) = gmegabuf(n)*dec + gmegabuf(n+(q2<.8))*(1-dec);\\\\ngmegabuf(n+10000) = gmegabuf(n+10000)*.2 + .8* vol/3;\\\\na = .0;\\\\nx = sample;\\\\ny = .2 + gmegabuf(n+0)*.23;\\\"},{\\\"baseVals\\\":{\\\"samples\\\":256,\\\"usedots\\\":1,\\\"scaling\\\":0.89152,\\\"smoothing\\\":0.82,\\\"a\\\":0.9,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"samples\\\":32,\\\"thick\\\":1,\\\"scaling\\\":0.89152,\\\"smoothing\\\":0.82,\\\"r\\\":0,\\\"g\\\":0.2,\\\"b\\\":0.6,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"spectrum\\\":1,\\\"usedots\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"n = 0;\\\\nloop (50000,\\\\ngmegabuf(n) = 0;\\\\nmegabuf(n) = 0;\\\\nn = n+1;\\\\n);\\\\n\\\\nsw1 = rand(8);\\\\nsw2 = rand(8);\\\\nsw3 = rand(8);\\\\nsw4 = rand(8);\\\",\\\"frame_eqs_eel\\\":\\\"flen = 512; //Wave Punkte\\\\nreg00 = FLen;\\\\nSLen = FLen/2;\\\\ndec_m = pow(.94, 30/fps);\\\\n\\\\n//Volume\\\\nn = 0; vol = 0;\\\\nloop (SLen,\\\\n  vol = vol + pow(gmegabuf(n),2)/FLen;  \\\\n  n = n+1;\\\\n);\\\\nvol = sqrt(vol)/2;\\\\nvol_ = vol_*dec_m + (1-dec_m)* (vol);\\\\n\\\\n//switches\\\\nlev1 = lev1 * dec_m + (1-dec_m) * gmegabuf(1);\\\\nlev2 = lev2 * dec_m + (1-dec_m) * gmegabuf(20);\\\\nlev3 = lev3 * dec_m + (1-dec_m) * gmegabuf(50);\\\\nlev4 = lev4 * dec_m + (1-dec_m) * gmegabuf(100);\\\\nsw1 = sw1 + (lev1-gmegabuf(1)>0)/fps;\\\\nsw2 = sw2 + (lev2-gmegabuf(20)>0)/fps;\\\\nsw3 = sw3 + (lev3-gmegabuf(50)>0)/fps;\\\\nsw4 = sw4 + (lev4-gmegabuf(100)>0)/fps;\\\\n\\\\ndif = (1+sin(sw3/4))*16+2;\\\\nofs = sin(sw2/3)*8;\\\\nn = 0; k1 = frame*0; \\\\nloop (SLen,\\\\n      m1 = (n)%SLen;\\\\n      m2 = (n+ofs)%SLen;\\\\n\\\\n      k = (m1+dif)%SLen;\\\\n      i = (SLen+m2-dif)%SLen;\\\\n\\\\n      in1 = (gmegabuf(m1)-gmegabuf(k))/pow(vol_+.03,.8)*1.2;\\\\n      in2 = (gmegabuf(m2)-gmegabuf(i))/pow(vol_+.03,.8)*1.2;\\\\n\\\\n      dec = if (pow(gmegabuf(2000+n),2) + pow(gmegabuf(2000+FLen+n),2)> in1*in1+in2*in2,.8,.94) ;\\\\n      dec = pow (dec, 30/fps); \\\\n\\\\n      gmegabuf(2000+n) =       gmegabuf(2000+n)*dec      +(1-dec)* in1;\\\\n      gmegabuf(2000+FLen+n) =  gmegabuf(2000+FLen+n)*dec +(1-dec)* in2;\\\\n      n=n+1;\\\\n);\\\\n\\\\nq1 = (bass+treb+mid)/3;\\\\nq2 = (bass_att+treb_att+mid_att)/3;\\\\nq3 = vol_;\\\\nq11 = sw1;\\\\nq12 = sw2;\\\\nq13 = sw3;\\\\nq14 = sw4;\\\\n\\\\nrot = 0; zoom = .98; warp = .3; rot = 0;\\\\n\\\\nq32 = aspecty;\\\\nmonitor = dif;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec2 uv_1;\\\\n  uv_1 = uv;\\\\n  vec2 zz_2;\\\\n  vec2 tmpvar_3;\\\\n  tmpvar_3 = (uv - vec2(0.5, 0.5));\\\\n  vec3 tmpvar_4;\\\\n  tmpvar_4 = (0.016 * texture (sampler_noise_lq, ((uv * 0.3) + (0.01 * rand_frame).xy))).xyz;\\\\n  vec2 tmpvar_5;\\\\n  tmpvar_5 = (0.8 * sin((tmpvar_3 * 8.0)));\\\\n  float tmpvar_6;\\\\n  tmpvar_6 = clamp ((0.01 / sqrt(\\\\n    dot (tmpvar_5, tmpvar_5)\\\\n  )), 0.0, 1.0);\\\\n  vec2 tmpvar_7;\\\\n  tmpvar_7 = ((-(tmpvar_3) * texsize.xy) * q26);\\\\n  zz_2 = tmpvar_7;\\\\n  if ((q25 == 1.0)) {\\\\n    zz_2 = (tmpvar_7 * (abs(tmpvar_3.y) / abs(tmpvar_3.x)));\\\\n  } else {\\\\n    if ((q25 == 2.0)) {\\\\n      zz_2 = (zz_2 * (abs(tmpvar_3.y) - abs(tmpvar_3.x)));\\\\n    };\\\\n  };\\\\n  uv_1 = (uv + ((\\\\n    clamp ((sin(zz_2) / cos(zz_2)), vec2(-20.0, -20.0), vec2(20.0, 20.0))\\\\n   * texsize.zw) * 4.0));\\\\n  vec4 tmpvar_8;\\\\n  tmpvar_8.w = 1.0;\\\\n  tmpvar_8.xyz = (((\\\\n    (0.95 * (texture (sampler_main, uv_1) + tmpvar_6).xyz)\\\\n   + tmpvar_4) - 0.02) - (0.06 * (\\\\n    (texture (sampler_blur2, uv_1).xyz * scale2)\\\\n   + bias2).x));\\\\n  ret = tmpvar_8.xyz;\\\\n }\\\",\\\"comp\\\":\\\"vec3 xlat_mutableblur;\\\\nvec3 xlat_mutableret1;\\\\n shader_body { \\\\n  vec2 uv_1;\\\\n  vec2 uv2_2;\\\\n  uv_1 = (uv - 0.5);\\\\n  uv_1 = (uv_1 * aspect.xy);\\\\n  float tmpvar_3;\\\\n  tmpvar_3 = (0.02 * q27);\\\\n  xlat_mutableblur = ((texture (sampler_blur1, (\\\\n    (uv_1 + 0.4)\\\\n   + tmpvar_3)).xyz * scale1) + bias1);\\\\n  xlat_mutableret1 = max (vec3(0.0, 0.0, 0.0), (texture (sampler_main, (\\\\n    (uv_1 + 0.4)\\\\n   + tmpvar_3)).xyz + (xlat_mutableblur * 2.0)));\\\\n  uv2_2.x = ((uv_1.x * 0.0007962743) - (uv_1.y * 0.9999997));\\\\n  uv2_2.y = ((uv_1.x * 0.9999997) + (uv_1.y * 0.0007962743));\\\\n  xlat_mutableblur = ((texture (sampler_blur1, (\\\\n    (uv2_2 + 0.4)\\\\n   + tmpvar_3)).xyz * scale1) + bias1);\\\\n  xlat_mutableret1 = max (xlat_mutableret1, (texture (sampler_main, (\\\\n    (uv2_2 + 0.4)\\\\n   + tmpvar_3)).xyz + (xlat_mutableblur * 2.0)));\\\\n  uv2_2.x = ((uv_1.x * -0.9999987) - (uv_1.y * 0.001592548));\\\\n  uv2_2.y = ((uv_1.x * 0.001592548) + (uv_1.y * -0.9999987));\\\\n  xlat_mutableblur = ((texture (sampler_blur1, (\\\\n    (uv2_2 + 0.4)\\\\n   + tmpvar_3)).xyz * scale1) + bias1);\\\\n  xlat_mutableret1 = max (xlat_mutableret1, (texture (sampler_main, (\\\\n    (uv2_2 + 0.4)\\\\n   + tmpvar_3)).xyz + (xlat_mutableblur * 2.0)));\\\\n  uv2_2.x = ((uv_1.x * -0.00238894) - (uv_1.y * -0.9999971));\\\\n  uv2_2.y = ((uv_1.x * -0.9999971) + (uv_1.y * -0.00238894));\\\\n  xlat_mutableblur = ((texture (sampler_blur1, (\\\\n    (uv2_2 + 0.4)\\\\n   + tmpvar_3)).xyz * scale1) + bias1);\\\\n  xlat_mutableret1 = max (xlat_mutableret1, (texture (sampler_main, (\\\\n    (uv2_2 + 0.4)\\\\n   + tmpvar_3)).xyz + (xlat_mutableblur * 2.0)));\\\\n  uv2_2.x = ((uv_1.x * 0.9999949) - (uv_1.y * -0.003185092));\\\\n  uv2_2.y = ((uv_1.x * -0.003185092) + (uv_1.y * 0.9999949));\\\\n  xlat_mutableblur = ((texture (sampler_blur1, (\\\\n    (uv2_2 + 0.4)\\\\n   + tmpvar_3)).xyz * scale1) + bias1);\\\\n  xlat_mutableret1 = max (xlat_mutableret1, (texture (sampler_main, (\\\\n    (uv2_2 + 0.4)\\\\n   + tmpvar_3)).xyz + (xlat_mutableblur * 2.0)));\\\\n  vec4 tmpvar_4;\\\\n  tmpvar_4.w = 1.0;\\\\n  tmpvar_4.xyz = (xlat_mutableret1 * 1.5);\\\\n  ret = tmpvar_4.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Hexcollie, Pieturp, Orb, Flexi, Geiss n Demon Lord - Premeditative Urination Clause.json\":\n/*!********************************************************************************************************************!*\\\n  !*** ./presets/converted/Hexcollie, Pieturp, Orb, Flexi, Geiss n Demon Lord - Premeditative Urination Clause.json ***!\n  \\********************************************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":1,\\\"gammaadj\\\":1,\\\"decay\\\":1,\\\"echo_zoom\\\":1,\\\"echo_orient\\\":2,\\\"wave_a\\\":0.001,\\\"warpanimspeed\\\":2.13,\\\"warpscale\\\":2.498,\\\"zoomexp\\\":0.67288,\\\"zoom\\\":1.025,\\\"warp\\\":0.36146,\\\"wave_r\\\":0,\\\"wave_g\\\":0,\\\"wave_b\\\":0,\\\"ob_size\\\":0.005,\\\"ob_b\\\":1,\\\"ob_a\\\":1,\\\"ib_size\\\":0,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"ib_a\\\":1,\\\"mv_r\\\":0.8,\\\"mv_a\\\":0,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"thick\\\":1,\\\"smoothing\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"speed = bass_att*0.6;\\\\nv = sample*10000 + value2*bass*0.1;\\\\n\\\\nxs = xs + sin(v*1)*speed*atan(v*1.51);\\\\nys = ys + sin(v*1)*speed;\\\\n\\\\nx = 0.5 + 0.5*sin(xs*0.1)*cos(time*2 + xs);\\\\ny = 0.5 + 0.5*sin(ys*0.1)*cos(time*2.1 + xs);\\\\n\\\\nx = x*0.6;\\\\ny*0.9 + 0.05 + bass*0.08;\\\\n\\\\ny = y*0.8 + 0.1;\\\\n\\\\nr = 0.5 + 0.4*sin(time*1.22 + x);\\\\ng = 0.5 + 0.4*sin(time*1.307 + y);\\\\nb = 0.5 + 0.4*sin(time*1.959 + x/y);\\\\n\\\\nxs = if(above(xs,1000),0 ,xs);\\\\nys = if(above(ys,1000),0 ,ys);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"thick\\\":1,\\\"smoothing\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"speed = bass_att*0.6;\\\\nv = sample*10000 + value2*bass*0.1;\\\\n\\\\nxs = xs + sin(v*1)*speed*atan(v*1.51);\\\\nys = ys + sin(v*1)*speed;\\\\n\\\\nx = 0.5 + 0.5*sin(xs*0.1)*cos(time*2 + xs);\\\\ny = 0.5 + 0.5*sin(ys*0.1)*cos(time*2.1 + xs);\\\\n\\\\nx = -x*0.6 + 1;\\\\ny = y + bass*0.01;\\\\n//y = y*0.5 + 0.25;\\\\ny = y*0.8 + 0.1;\\\\n\\\\nr = 0.5 + 0.4*sin(time*1.22 + x);\\\\ng = 0.5 + 0.4*sin(time*1.307 + y);\\\\nb = 0.5 + 0.4*sin(time*1.959 + x/y);\\\\n\\\\nxs = if(above(xs,1000),0 ,xs);\\\\nys = if(above(ys,1000),0 ,ys);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"thick\\\":1,\\\"smoothing\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"speed = bass_att*0.6;\\\\nv = sample*10000 + value2*bass*0.1;\\\\n\\\\nxs = xs + sin(v*1)*speed*atan(v*1.51);\\\\nys = ys + sin(v*1)*speed;\\\\n\\\\n\\\\nx = 0.5 + 0.5*sin(xs*0.1)*cos(time*2 + xs);\\\\ny = 0.5 + 0.5*sin(ys*0.1)*cos(time*2.1 + xs);\\\\n\\\\nx = x*0.6;\\\\ny = y*0.9 - 0.05 + bass*0.08;\\\\ny = y*0.8 + 0.1;\\\\n\\\\nr = 0.5 + 0.4*sin(time*1.789 + y);\\\\ng = 0.5 + 0.4*sin(time*1.478 + x);\\\\nb = 0.5 + 0.4*sin(time*1.125 + y/x);\\\\n\\\\nxs = if(above(xs,1000),0 ,xs);\\\\nys = if(above(ys,1000),0 ,ys);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"thick\\\":1,\\\"smoothing\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"speed = bass_att*0.6;\\\\nv = sample*10000 + value2*bass*0.1;\\\\n\\\\nxs = xs + sin(v*1)*speed*atan(v*1.51);\\\\nys = ys + sin(v*1)*speed;\\\\n\\\\nx = 0.5 + 0.5*sin(xs*0.1)*cos(time*2 + xs);\\\\ny = 0.5 + 0.5*sin(ys*0.1)*cos(time*2.1 + xs);\\\\n\\\\nx = -x*0.6 + 1;\\\\ny = y*0.9 - 0.05 + bass*0.08;\\\\ny = y*0.8 + 0.1;\\\\n\\\\nr = 0.5 + 0.4*sin(time*1.789 + y);\\\\ng = 0.5 + 0.4*sin(time*1.478 + x);\\\\nb = 0.5 + 0.4*sin(time*1.125 + y/x);\\\\n\\\\nxs = if(above(xs,1000),0 ,xs);\\\\nys = if(above(ys,1000),0 ,ys);\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"wave_a = 0;\\\\n//warp = 0;\\\\nr = r*0.9 + (bass-treb)*0.5;\\\\nrot = r*0.02;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec2 my_uv_1;\\\\n  vec3 ret_2;\\\\n  vec2 tmpvar_3;\\\\n  tmpvar_3 = (vec2(1280.0, 1024.0) * texsize.zw);\\\\n  float tmpvar_4;\\\\n  vec2 tmpvar_5;\\\\n  tmpvar_5 = (uv + vec2(0.005, 0.0));\\\\n  vec2 tmpvar_6;\\\\n  tmpvar_6 = (uv - vec2(0.005, 0.0));\\\\n  tmpvar_4 = (((\\\\n    (texture (sampler_blur2, tmpvar_5).xyz * scale2)\\\\n   + bias2) - (\\\\n    (texture (sampler_blur2, tmpvar_6).xyz * scale2)\\\\n   + bias2)).x * tmpvar_3.x);\\\\n  float tmpvar_7;\\\\n  vec2 tmpvar_8;\\\\n  tmpvar_8 = (uv + vec2(0.0, 0.005));\\\\n  vec2 tmpvar_9;\\\\n  tmpvar_9 = (uv - vec2(0.0, 0.005));\\\\n  tmpvar_7 = (((\\\\n    (texture (sampler_blur2, tmpvar_8).xyz * scale2)\\\\n   + bias2) - (\\\\n    (texture (sampler_blur2, tmpvar_9).xyz * scale2)\\\\n   + bias2)).x * tmpvar_3.y);\\\\n  vec2 tmpvar_10;\\\\n  tmpvar_10.x = tmpvar_4;\\\\n  tmpvar_10.y = tmpvar_7;\\\\n  vec2 tmpvar_11;\\\\n  tmpvar_11.x = (((\\\\n    (texture (sampler_blur2, tmpvar_5).xyz * scale2)\\\\n   + bias2) - (\\\\n    (texture (sampler_blur2, tmpvar_6).xyz * scale2)\\\\n   + bias2)).x * tmpvar_3.x);\\\\n  tmpvar_11.y = (((\\\\n    (texture (sampler_blur2, tmpvar_8).xyz * scale2)\\\\n   + bias2) - (\\\\n    (texture (sampler_blur2, tmpvar_9).xyz * scale2)\\\\n   + bias2)).x * tmpvar_3.y);\\\\n  ret_2.x = texture (sampler_fw_main, ((uv - (tmpvar_10 * 0.01)) + (tmpvar_11 * 0.003))).x;\\\\n  vec4 tmpvar_12;\\\\n  tmpvar_12 = texture (sampler_blur3, uv);\\\\n  ret_2.x = (ret_2.x + ((ret_2.x - \\\\n    ((tmpvar_12.xyz * scale3) + bias3)\\\\n  .x) * 0.1));\\\\n  ret_2.x = (ret_2.x + 0.004);\\\\n  vec2 tmpvar_13;\\\\n  tmpvar_13.x = tmpvar_7;\\\\n  tmpvar_13.y = -(tmpvar_4);\\\\n  my_uv_1 = (uv + ((tmpvar_13 * 0.05) * (1.2 - \\\\n    ((tmpvar_12.xyz * scale3) + bias3)\\\\n  .y)));\\\\n  ret_2.z = texture (sampler_fw_main, my_uv_1).z;\\\\n  vec2 x_14;\\\\n  x_14 = (my_uv_1 - uv);\\\\n  ret_2.z = (ret_2.z + ((\\\\n    ((ret_2.z - ((texture (sampler_blur1, uv).xyz * scale1) + bias1).z) * sqrt(dot (x_14, x_14)))\\\\n   * 180.0) / sqrt(\\\\n    dot (tmpvar_3, tmpvar_3)\\\\n  )));\\\\n  ret_2.z = (ret_2.z * 0.8);\\\\n  ret_2.z = (ret_2.z + 0.004);\\\\n  vec2 tmpvar_15;\\\\n  tmpvar_15.x = -(tmpvar_7);\\\\n  tmpvar_15.y = tmpvar_4;\\\\n  my_uv_1 = (tmpvar_15 * 0.045);\\\\n  vec2 tmpvar_16;\\\\n  tmpvar_16.x = (((\\\\n    (texture (sampler_blur2, (uv + vec2(0.01, 0.0))).xyz * scale2)\\\\n   + bias2) - (\\\\n    (texture (sampler_blur2, (uv - vec2(0.01, 0.0))).xyz * scale2)\\\\n   + bias2)).y * tmpvar_3.x);\\\\n  tmpvar_16.y = (((\\\\n    (texture (sampler_blur2, (uv + vec2(0.0, 0.01))).xyz * scale2)\\\\n   + bias2) - (\\\\n    (texture (sampler_blur2, (uv - vec2(0.0, 0.01))).xyz * scale2)\\\\n   + bias2)).y * tmpvar_3.y);\\\\n  my_uv_1 = (my_uv_1 + (uv - (tmpvar_16 * 0.03)));\\\\n  ret_2.y = texture (sampler_fw_main, my_uv_1).y;\\\\n  ret_2.y = (ret_2.y + ((\\\\n    (ret_2.y - ((texture (sampler_blur3, my_uv_1).xyz * scale3) + bias3).y)\\\\n   * 0.1) + 0.01));\\\\n  vec4 tmpvar_17;\\\\n  tmpvar_17.w = 1.0;\\\\n  tmpvar_17.xyz = ret_2;\\\\n  ret = tmpvar_17.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec3 ret_1;\\\\n  vec2 tmpvar_2;\\\\n  tmpvar_2.x = (1.0 - q4);\\\\n  tmpvar_2.y = q8;\\\\n  vec2 tmpvar_3;\\\\n  tmpvar_3 = (tmpvar_2 + ((uv - tmpvar_2) * 0.992));\\\\n  ret_1 = (mix (mix (vec3(0.0, 0.0, 0.2), vec3(0.3, 0.0, 1.0), texture (sampler_fw_main, tmpvar_3).yyy), vec3(1.0, 1.0, 0.0), vec3(max (\\\\n    (((texture (sampler_blur1, tmpvar_3).xyz * scale1) + bias1).z * 1.5)\\\\n  , texture (sampler_main, \\\\n    (tmpvar_2 + ((uv - tmpvar_2) * 0.996))\\\\n  ).z))) * (1.0 - (\\\\n    ((texture (sampler_blur1, tmpvar_3).xyz * scale1) + bias1)\\\\n  .x * 2.0)));\\\\n  vec3 tmpvar_4;\\\\n  tmpvar_4 = mix (ret_1, vec3(1.0, 0.1, 0.4), texture (sampler_fw_main, uv).xxx);\\\\n  ret_1 = tmpvar_4;\\\\n  vec4 tmpvar_5;\\\\n  tmpvar_5.w = 1.0;\\\\n  tmpvar_5.xyz = tmpvar_4;\\\\n  ret = tmpvar_5.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/LuxXx - Play v3 (the war within all of us).json\":\n/*!***************************************************************************!*\\\n  !*** ./presets/converted/LuxXx - Play v3 (the war within all of us).json ***!\n  \\***************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":1,\\\"gammaadj\\\":1.78,\\\"decay\\\":0.5,\\\"echo_zoom\\\":1,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":3,\\\"wave_dots\\\":1,\\\"wave_thick\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":100,\\\"wave_scale\\\":28.599,\\\"wave_smoothing\\\":0.5,\\\"wave_mystery\\\":-1,\\\"modwavealphastart\\\":0.4,\\\"modwavealphaend\\\":1,\\\"warpanimspeed\\\":1.459,\\\"warpscale\\\":2.007,\\\"zoom\\\":0.9999,\\\"warp\\\":0.01,\\\"sx\\\":0.9999,\\\"ob_size\\\":0,\\\"ob_b\\\":0.2,\\\"ob_a\\\":1,\\\"ib_size\\\":0,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_a\\\":1,\\\"mv_l\\\":1.5,\\\"mv_r\\\":0,\\\"mv_g\\\":0,\\\"mv_b\\\":0,\\\"mv_a\\\":0,\\\"b1x\\\":0.7,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"rad\\\":0.40031,\\\"r\\\":0.5,\\\"g\\\":0.5,\\\"r2\\\":0.5,\\\"g2\\\":0,\\\"border_b\\\":0.5,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"sounds=(bass+treb+mid)/3;\\\\n\\\\nrad=rad*sounds*0.6;\\\\n\\\\nr=r+sin(bass)*g;\\\\ng=g+sin(mid)*g;\\\\n\\\\n\\\\nx=x+0.207*cos(time*bass*0.1);\\\\ny=y+0.207*sin(time*bass*0.1);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"rad\\\":0.13465,\\\"r2\\\":1,\\\"a2\\\":0.3,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\\ng2=g2+0.09*sin((treb+mid)*1.23);\\\\ng=g+0.09*cos((bass+mid)*1.37);\\\\n\\\\nsounds=(bass+mid+treb)/3;\\\\n\\\\nrad=rad*(treb+mid)/3;\\\\n\\\\nx=x+0.300*sin(time*bass);\\\\ny=y+0.317*cos(time*bass);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"rad\\\":0.20047,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":0.5,\\\"g2\\\":0.5,\\\"b2\\\":1,\\\"border_b\\\":0.5,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"sounds=(bass+treb+mid)/3;\\\\natt=(bass_att+treb_att+mid_att)/3;\\\\natt=(bass_att+treb_att+mid_att)/3;\\\\nr2=r2+(0.25*sin(time*6.28))-bass;\\\\ng2=g2+(0.25*sin(time*6.28))-bass;\\\\n\\\\nrad=rad;\\\\nx=x+0.217*cos(time*2.3)+sounds*0.1;\\\\ny=y+0.217*sin((time*3.5)+(sounds*0.3));\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"sep\\\":256,\\\"scaling\\\":20.35074,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"r=r+0.5*sin(treb*1.13);\\\\ng=g+0.5*sin(bass*1.33);\\\\nb=b+0.5*sin(mid*1.23);\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sep\\\":256,\\\"usedots\\\":1,\\\"scaling\\\":100,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"dec_med = pow (0.8, 30/fps);\\\\ndec_slow = pow (0.9, 30/fps);\\\\nbeat = max (max (bass, mid), treb); \\\\navg = avg*dec_slow + beat*(1-dec_slow);\\\\nis_beat = above(beat, .5+avg+peak) * above (time, t0+.2);\\\\nt0 = is_beat*time + (1-is_beat)*t0;\\\\npeak = is_beat * beat + (1-is_beat)*peak*dec_med;\\\\nindex = (index + is_beat) %16;\\\\nindex2 = (index2 + is_beat*bnot(index))%5;\\\\nmonitor = index2;\\\\n\\\\nq20 = avg;\\\\nq21 = beat;\\\\nq22 = peak;\\\\nq23 = index;\\\\nq24 = is_beat;\\\\nq26 = bass + mid + treb;\\\\n\\\\nsb = sb*dec_med + q21*(1-dec_med);\\\\nq29 = sb;\\\\n\\\\nk1 =  is_beat*bnot(index)*bnot(index2);\\\\np1 =  (index2-2);\\\\n\\\\np2 = dec_med * p2+ (1-dec_med)*p1;\\\\np3 = dec_med * p3+ (1-dec_med)*p2;\\\\nq5 = cos(p3*3.14/2);\\\\n\\\\nrott =  rott +  .003*30/fps*p3;\\\\n\\\\nq1 = cos(rott);\\\\nq2 = sin(rott);\\\\nq3 = -q2;\\\\nq4 = q1;\\\\n\\\\nmovx = movx + .002*30/fps;\\\\nq28 = movx;\\\\n\\\\nq15 = (1+sin(time/23))*.15;\\\\nq29 = 4*(.5+sin(time/17));\\\\nq30 = 5/(1.2+sin(time/50)); \\\\nq31 = sin(time/38)/3;\\\\nq32 = 2+sin(time/18);\\\\n\\\\nwarp = .06;\\\\nzoom = .998;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec2 uv_1;\\\\n  vec2 uv6_2;\\\\n  uv_1 = (uv + (vec2(0.0, 0.01) * dot (\\\\n    ((texture (sampler_blur1, uv).xyz * scale1) + bias1)\\\\n  , vec3(0.32, 0.49, 0.29))));\\\\n  uv6_2 = (0.4 * sin((\\\\n    (uv_1 * 8.0)\\\\n   + \\\\n    (rand_frame * 6.0)\\\\n  .xy)));\\\\n  vec4 tmpvar_3;\\\\n  tmpvar_3.w = 1.0;\\\\n  tmpvar_3.xyz = (((\\\\n    (texture (sampler_main, uv_1).xyz - (((texture (sampler_blur2, \\\\n      fract(uv_1)\\\\n    ).xyz * scale2) + bias2) * 0.03))\\\\n   + \\\\n    (0.1 * (vec3((0.1 / sqrt(\\\\n      dot (uv6_2, uv6_2)\\\\n    ))) * ((1.0 + roam_cos) / 2.0).xyz))\\\\n  ) * 0.99) - 0.02);\\\\n  ret = tmpvar_3.xyz;\\\\n }\\\",\\\"comp\\\":\\\"vec3 xlat_mutableblur;\\\\nvec3 xlat_mutableret1;\\\\nvec2 xlat_mutableuv2;\\\\nvec2 xlat_mutableuv3;\\\\n shader_body { \\\\n  vec2 uv_1;\\\\n  float inten_2;\\\\n  float dist_3;\\\\n  float ang2_4;\\\\n  uv_1 = (uv - 0.5);\\\\n  uv_1 = (uv_1 * aspect.xy);\\\\n  float tmpvar_5;\\\\n  tmpvar_5 = cos(q30);\\\\n  float tmpvar_6;\\\\n  tmpvar_6 = sin(q30);\\\\n  xlat_mutableuv2.x = ((uv_1.x * tmpvar_5) - (uv_1.y * tmpvar_6));\\\\n  xlat_mutableuv2.y = ((uv_1.x * tmpvar_6) + (uv_1.y * tmpvar_5));\\\\n  xlat_mutableuv2 = (xlat_mutableuv2 * aspect.yx);\\\\n  dist_3 = (1.0 - fract(q29));\\\\n  inten_2 = ((4.0 * dist_3) * (1.0 - (dist_3 * dist_3)));\\\\n  xlat_mutableuv3 = (((3.0 * xlat_mutableuv2) * dist_3) + 0.5);\\\\n  xlat_mutableblur = (((texture (sampler_blur1, \\\\n    fract(xlat_mutableuv3)\\\\n  ).xyz * scale1) + bias1) * vec3(0.8, 0.9, 1.0));\\\\n  xlat_mutableret1 = max (vec3(0.0, 0.0, 0.0), ((texture (sampler_main, xlat_mutableuv3).xyz + xlat_mutableblur) * inten_2));\\\\n  ang2_4 = (2.093333 + q30);\\\\n  float tmpvar_7;\\\\n  tmpvar_7 = cos(ang2_4);\\\\n  float tmpvar_8;\\\\n  tmpvar_8 = sin(ang2_4);\\\\n  xlat_mutableuv2.x = ((uv_1.x * tmpvar_7) - (uv_1.y * tmpvar_8));\\\\n  xlat_mutableuv2.y = ((uv_1.x * tmpvar_8) + (uv_1.y * tmpvar_7));\\\\n  xlat_mutableuv2 = (xlat_mutableuv2 * aspect.yx);\\\\n  dist_3 = (1.0 - fract((0.3333333 + q29)));\\\\n  inten_2 = ((4.0 * dist_3) * (1.0 - (dist_3 * dist_3)));\\\\n  xlat_mutableuv3 = (((3.0 * xlat_mutableuv2) * dist_3) + 0.5);\\\\n  xlat_mutableblur = (((texture (sampler_blur1, \\\\n    fract(xlat_mutableuv3)\\\\n  ).xyz * scale1) + bias1) * vec3(0.8, 0.9, 1.0));\\\\n  xlat_mutableret1 = max (xlat_mutableret1, ((texture (sampler_main, xlat_mutableuv3).xyz + xlat_mutableblur) * inten_2));\\\\n  ang2_4 = (4.186667 + q30);\\\\n  float tmpvar_9;\\\\n  tmpvar_9 = cos(ang2_4);\\\\n  float tmpvar_10;\\\\n  tmpvar_10 = sin(ang2_4);\\\\n  xlat_mutableuv2.x = ((uv_1.x * tmpvar_9) - (uv_1.y * tmpvar_10));\\\\n  xlat_mutableuv2.y = ((uv_1.x * tmpvar_10) + (uv_1.y * tmpvar_9));\\\\n  xlat_mutableuv2 = (xlat_mutableuv2 * aspect.yx);\\\\n  dist_3 = (1.0 - fract((0.6666667 + q29)));\\\\n  inten_2 = ((4.0 * dist_3) * (1.0 - (dist_3 * dist_3)));\\\\n  xlat_mutableuv3 = (((3.0 * xlat_mutableuv2) * dist_3) + 0.5);\\\\n  xlat_mutableblur = (((texture (sampler_blur1, \\\\n    fract(xlat_mutableuv3)\\\\n  ).xyz * scale1) + bias1) * vec3(0.8, 0.9, 1.0));\\\\n  xlat_mutableret1 = max (xlat_mutableret1, ((texture (sampler_main, xlat_mutableuv3).xyz + xlat_mutableblur) * inten_2));\\\\n  ang2_4 = (6.28 + q30);\\\\n  float tmpvar_11;\\\\n  tmpvar_11 = cos(ang2_4);\\\\n  float tmpvar_12;\\\\n  tmpvar_12 = sin(ang2_4);\\\\n  xlat_mutableuv2.x = ((uv_1.x * tmpvar_11) - (uv_1.y * tmpvar_12));\\\\n  xlat_mutableuv2.y = ((uv_1.x * tmpvar_12) + (uv_1.y * tmpvar_11));\\\\n  xlat_mutableuv2 = (xlat_mutableuv2 * aspect.yx);\\\\n  dist_3 = (1.0 - fract((1.0 + q29)));\\\\n  inten_2 = ((4.0 * dist_3) * (1.0 - (dist_3 * dist_3)));\\\\n  xlat_mutableuv3 = (((3.0 * xlat_mutableuv2) * dist_3) + 0.5);\\\\n  xlat_mutableblur = (((texture (sampler_blur1, \\\\n    fract(xlat_mutableuv3)\\\\n  ).xyz * scale1) + bias1) * vec3(0.8, 0.9, 1.0));\\\\n  xlat_mutableret1 = max (xlat_mutableret1, ((texture (sampler_main, xlat_mutableuv3).xyz + xlat_mutableblur) * inten_2));\\\\n  vec4 tmpvar_13;\\\\n  tmpvar_13.w = 1.0;\\\\n  tmpvar_13.xyz = (xlat_mutableret1 - 0.1);\\\\n  ret = tmpvar_13.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Martin - acid wiring.json\":\n/*!*****************************************************!*\\\n  !*** ./presets/converted/Martin - acid wiring.json ***!\n  \\*****************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":0,\\\"gammaadj\\\":1.980001,\\\"decay\\\":0.5,\\\"echo_zoom\\\":0.999998,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":3,\\\"wave_mode\\\":4,\\\"additivewave\\\":1,\\\"wave_thick\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"darken_center\\\":1,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":0.527429,\\\"wave_smoothing\\\":0.45,\\\"modwavealphastart\\\":0,\\\"modwavealphaend\\\":1.32,\\\"warpanimspeed\\\":0.442,\\\"warpscale\\\":0.498,\\\"zoom\\\":0.9999,\\\"warp\\\":0.01,\\\"sx\\\":0.9999,\\\"wave_r\\\":0.8,\\\"wave_g\\\":0.49,\\\"ob_size\\\":0,\\\"ob_r\\\":1,\\\"ob_g\\\":1,\\\"ob_b\\\":1,\\\"ob_a\\\":0.05,\\\"ib_size\\\":0.26,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":1.85,\\\"mv_r\\\":0.4999,\\\"mv_g\\\":0.4999,\\\"mv_b\\\":0.4999,\\\"mv_a\\\":0,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"rad\\\":0.048958,\\\"tex_ang\\\":1.00531,\\\"tex_zoom\\\":1.531168,\\\"r\\\":0.5,\\\"g\\\":1,\\\"b\\\":0.9,\\\"r2\\\":0.83,\\\"g2\\\":0.93,\\\"b2\\\":0.8,\\\"a2\\\":1,\\\"border_b\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\\ntrel = time/3;\\\\n\\\\nx = .5+sin(trel*2);\\\\ny = .5+cos(trel*1.3);\\\\n\\\\n\\\\n\\\\ncent = sqrt((x-.5)*(x-.5)+(y-.5)*(y-.5));\\\\n\\\\nrad = .1*cent;\\\\na = .8;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"x\\\":0.26,\\\"y\\\":0.2,\\\"rad\\\":0.393173,\\\"tex_zoom\\\":1.392831,\\\"r\\\":0,\\\"g\\\":0.55,\\\"b\\\":0.5,\\\"a\\\":0.9,\\\"g2\\\":0.4,\\\"b2\\\":0.4,\\\"border_r\\\":0.3,\\\"border_g\\\":0.7,\\\"border_b\\\":0.8,\\\"border_a\\\":0.2},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"trig = q24;\\\\n\\\\ntextured = 1;\\\\n\\\\nx0 = x0*bnot(trig) + trig*(.2+ rand(100)/200); \\\\ny0 = y0*bnot(trig) + trig*(.2+ rand(100)/200); \\\\n\\\\n\\\\nx0 = x0 + .03*q1*(3+q26)/fps;\\\\ny0 = y0 + .03*q2*(3+q26)/fps;\\\\n\\\\nx0 = x0 - int(x0);\\\\ny0 = y0 - int(y0);\\\\n\\\\ntex_ang = time;\\\\n//tex_zoom = q1;\\\\nang = time*q2;\\\\nx = x0; y = y0;\\\\nrad0 = rad0*bnot(trig) + trig*rand(100)/200;\\\\nrad = rad0;\\\\n\\\\n\\\\nr0 = r0*bnot(trig) + trig * rand(10)/10;\\\\nb0 = b0*bnot(trig) + trig * rand(10)/10;\\\\ng0 = g0*bnot(trig) + trig * rand(10)/10;\\\\n\\\\nborder_r = r0; border_g = g0; border_b = b0;\\\\n\\\\nr = r0; b = b0; g = g0;\\\"},{\\\"baseVals\\\":{\\\"additive\\\":1,\\\"x\\\":0.503,\\\"rad\\\":0.038857,\\\"tex_zoom\\\":0.609857,\\\"g\\\":0.1,\\\"a\\\":0.9,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = rand(50)/50;\\\\ny = .5 - 0*rand(15)/200;\\\\n\\\\nr = .4;\\\\ng = .6;\\\\nb = 1;\\\\nr2 = r;\\\\ng2 = g;\\\\nb2 = b;\\\\n\\\\na = min(q21/2 ,.9);\\\\nrad = a * (.1+abs(x-.5))/2 ;\\\"},{\\\"baseVals\\\":{\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"x\\\":0.26,\\\"y\\\":0.76,\\\"rad\\\":0.39478,\\\"tex_zoom\\\":0.499805,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":0.8,\\\"border_r\\\":0.2,\\\"border_g\\\":0.7,\\\"border_b\\\":0.5,\\\"border_a\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"tex_zoom = q27/2;\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"samples\\\":282,\\\"sep\\\":20,\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":3.915805,\\\"smoothing\\\":0.1,\\\"r\\\":0.2,\\\"g\\\":0.3,\\\"a\\\":0.6,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"t2 = t2 + bass_att;\\\",\\\"point_eqs_eel\\\":\\\"\\\\nx = sample;\\\\ny = value1 * rand(50)/100 * abs(sample-.5)+ .49;\\\\n\\\\na = q26/4 * (.2 + abs(sample-.5)); \\\"},{\\\"baseVals\\\":{\\\"usedots\\\":1,\\\"thick\\\":1,\\\"scaling\\\":0.891519,\\\"smoothing\\\":0.82,\\\"a\\\":0.1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"xi = rand(100)/100;\\\\nyi = rand(100)/100;\\\\n\\\\nx = xi; y = yi;\\\\n\\\\na = q21/15; \\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"scaling\\\":0.891519,\\\"smoothing\\\":0.82,\\\"r\\\":0,\\\"g\\\":0.2,\\\"b\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"spectrum\\\":1,\\\"usedots\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"dirx = 1;\\\",\\\"frame_eqs_eel\\\":\\\"dec_med = pow (0.6, 30/fps);\\\\ndec_slow = pow (0.9, 30/fps);\\\\nbeat = max (max (bass, mid), treb); \\\\navg = avg*dec_slow + beat*(1-dec_slow);\\\\nis_beat = above(beat, .2+avg+peak) * above (time, t0+.2);\\\\nt0 = is_beat*time + (1-is_beat)*t0;\\\\npeak = is_beat * beat + (1-is_beat)*peak*dec_med;\\\\nindex = (index + is_beat) %8;\\\\nindex2 = (index2 + is_beat*bnot(index))%4;\\\\nindex3 = (index3 + is_beat*bnot(index)*bnot(index2))%3;\\\\n\\\\n\\\\nq20 = avg;\\\\nq21 = beat;\\\\nq22 = peak;\\\\nq23 = index;\\\\nq24 = is_beat;\\\\nq26 = bass + mid + treb;\\\\nava = ava*dec_slow + q26*(1-dec_slow);\\\\n\\\\n\\\\n//k1 =  is_beat*bnot(index)*bnot(index2);\\\\n\\\\nk1 =  is_beat*equal(index%2,0);\\\\np1 =  k1*(p1+1) + (1-k1)*p1;\\\\np2 = dec_med * p2+ (1-dec_med)*p1;\\\\nrott = p2 * 3.1416/2;\\\\nq1 = cos(rott);\\\\nq2 = sin(rott);\\\\nq3 = -q2;\\\\nq4 = q1;\\\\n\\\\nq27 = 8-index;\\\\nq28 = .5 + sin(time/7)/10;\\\\n\\\\nrm = min(q26-1.5*ava,2);\\\\nmov = is_beat*rm + (1-is_beat)*mov;\\\\n\\\\nmovez = movez + .4/fps*mov;\\\\nq30 = movez;\\\\n//**************************\\\\n\\\\nampl = q26/8;\\\\n\\\\nmovex = movex + .2/fps*sin(rott);\\\\nmovey = movey + .2/fps*cos(rott);\\\\n\\\\nq18 = movex; q19 = movey;\\\\ntrel = trel + 1/fps + q24;\\\\nq17 = 2*sin(trel/4);\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec2 uv_1;\\\\n  vec2 uv6_2;\\\\n  vec2 tmpvar_3;\\\\n  tmpvar_3 = ((uv - 0.5) * aspect.xy);\\\\n  float tmpvar_4;\\\\n  tmpvar_4 = (((q28 * 2.0) * sqrt(\\\\n    dot (tmpvar_3, tmpvar_3)\\\\n  )) + (rand_frame * 64.0)).x;\\\\n  uv_1 = (uv + (clamp (\\\\n    ((sin(tmpvar_4) / cos(tmpvar_4)) * normalize(tmpvar_3))\\\\n  , vec2(-16.0, -16.0), vec2(16.0, 16.0)) / 20.0));\\\\n  uv6_2 = (0.4 * sin((tmpvar_3 * 12.0)));\\\\n  vec4 tmpvar_5;\\\\n  tmpvar_5.w = 1.0;\\\\n  tmpvar_5.xyz = (((q24 * \\\\n    (((texture (sampler_main, uv_1).xyz - (\\\\n      ((texture (sampler_blur1, fract(uv_1)).xyz * scale1) + bias1)\\\\n     * 0.04)) + (0.15 * (vec3(\\\\n      (0.1 / sqrt(dot (uv6_2, uv6_2)))\\\\n    ) * roam_cos.xyz))) - 0.04)\\\\n  ) * 0.98) + ((1.0 - q24) * texture (sampler_main, uv_orig).xyz));\\\\n  ret = tmpvar_5.xyz;\\\\n }\\\",\\\"comp\\\":\\\"vec3 xlat_mutableneu;\\\\nvec3 xlat_mutableret1;\\\\nvec2 xlat_mutablers2;\\\\n shader_body { \\\\n  vec2 uv_1;\\\\n  float inten_3;\\\\n  float dist_4;\\\\n  float ang2_5;\\\\n  vec2 uv2_6;\\\\n  uv_1 = (uv - 0.5);\\\\n  uv_1 = (uv_1 * aspect.xy);\\\\n  dist_4 = 1.0;\\\\n  inten_3 = 1.0;\\\\n  xlat_mutableret1 = vec3(0.0, 0.0, 0.0);\\\\n  for (float n_2 = 0.0; n_2 <= 4.0; n_2 += 1.0) {\\\\n    vec2 uv3_7;\\\\n    ang2_5 = ((6.28 * n_2) / 4.0);\\\\n    float tmpvar_8;\\\\n    tmpvar_8 = cos(ang2_5);\\\\n    float tmpvar_9;\\\\n    tmpvar_9 = sin(ang2_5);\\\\n    uv2_6.x = ((uv_1.x * tmpvar_8) - (uv_1.y * tmpvar_9));\\\\n    uv2_6.y = ((uv_1.x * tmpvar_9) + (uv_1.y * tmpvar_8));\\\\n    uv2_6 = (uv2_6 * aspect.yx);\\\\n    dist_4 = (1.0 - fract((\\\\n      (0.25 * n_2)\\\\n     + q30)));\\\\n    inten_3 = ((sqrt(dist_4) * (1.0 - dist_4)) * 4.0);\\\\n    vec2 tmpvar_10;\\\\n    tmpvar_10.x = tmpvar_8;\\\\n    tmpvar_10.y = tmpvar_9;\\\\n    uv3_7 = (fract((\\\\n      ((3.0 * uv2_6) * dist_4)\\\\n     + \\\\n      (0.3 * q27)\\\\n    )) + (q17 * tmpvar_10));\\\\n    xlat_mutableneu = (texture (sampler_main, uv3_7).xyz - ((texture (sampler_blur2, \\\\n      ((uv3_7 * 1.02) * q1)\\\\n    ).xyz * scale2) + bias2));\\\\n    xlat_mutableneu = (xlat_mutableneu * vec3(greaterThanEqual (xlat_mutableneu, vec3(0.0, 0.0, 0.0))));\\\\n    xlat_mutableret1 = max (xlat_mutableret1, (xlat_mutableneu * inten_3));\\\\n  };\\\\n  xlat_mutablers2 = ((0.4 * cos(\\\\n    ((uv_1 * 13.0) + time)\\\\n  )) - dot (xlat_mutableret1, vec3(0.32, 0.49, 0.29)));\\\\n  vec4 tmpvar_11;\\\\n  tmpvar_11.w = 1.0;\\\\n  tmpvar_11.xyz = (xlat_mutableret1 + ((\\\\n    ((0.05 / sqrt(dot (xlat_mutablers2, xlat_mutablers2))) * q26)\\\\n   / 4.0) * hue_shader));\\\\n  ret = tmpvar_11.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Martin - charisma.json\":\n/*!**************************************************!*\\\n  !*** ./presets/converted/Martin - charisma.json ***!\n  \\**************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":0,\\\"gammaadj\\\":1.980001,\\\"decay\\\":0.5,\\\"echo_zoom\\\":0.999998,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":3,\\\"wave_mode\\\":4,\\\"additivewave\\\":1,\\\"wave_dots\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"darken\\\":1,\\\"wave_a\\\":0.33064,\\\"wave_scale\\\":0.897961,\\\"wave_smoothing\\\":0.108,\\\"wave_mystery\\\":0.1,\\\"modwavealphastart\\\":0.72,\\\"modwavealphaend\\\":1.28,\\\"warpanimspeed\\\":1.4595,\\\"warpscale\\\":2.0067,\\\"zoom\\\":0.9999,\\\"warp\\\":0.01,\\\"sx\\\":0.9999,\\\"wave_r\\\":0,\\\"wave_g\\\":0.5,\\\"wave_b\\\":0.5,\\\"wave_y\\\":0.54,\\\"ob_r\\\":1,\\\"ob_g\\\":1,\\\"ob_b\\\":1,\\\"ib_size\\\":0.26,\\\"mv_x\\\":24.799994,\\\"mv_dy\\\":0.16,\\\"mv_l\\\":1.5,\\\"mv_a\\\":0,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"sides\\\":3,\\\"rad\\\":0.312746,\\\"tex_zoom\\\":0.179142,\\\"r\\\":0.82,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"xy=0.5+rand_frame;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"samples\\\":352,\\\"usedots\\\":1,\\\"additive\\\":1,\\\"scaling\\\":0.038558,\\\"smoothing\\\":0.2,\\\"g\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"q1=bass_att;\\\",\\\"point_eqs_eel\\\":\\\"r = abs (sin (frame /38));\\\\ng = 0.5*abs (cos (frame /45));\\\\nb = 0.5*abs (sin (frame / 133));\\\\na = 0.3;\\\\nt02 = t02 + q1/10;\\\\nratio = sin (frame/49);\\\\n\\\\nampl = 0.01+0.4*sqr(sin ((frame ) / 18)* cos (frame / 123));\\\\n\\\\nx1 = (r-0.5)/15 +0.5 + ampl* sin (sample*6.28);\\\\ny1 = (b-0.5)/15+0.5 + ampl* cos (sample*6.28);\\\\n\\\\nx =  x1+1*0.2*(ampl+ratio )*sin ( sample*6.28 * ratio*7.3);\\\\ny =  y1+1*0.2*(ampl+ratio )*cos ( sample*6.28*6);\\\\n\\\"},{\\\"baseVals\\\":{\\\"samples\\\":15,\\\"scaling\\\":2.063781,\\\"smoothing\\\":0.8,\\\"r\\\":0.8,\\\"g\\\":0,\\\"b\\\":0.6,\\\"a\\\":0.9,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"samples\\\":112,\\\"additive\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"clear = 0.5;\\\",\\\"frame_eqs_eel\\\":\\\"dec_med = pow (0.96, 30/fps);\\\\ndec_slow = pow (0.99, 30/fps);\\\\nbeat = max (max (bass, mid), treb); \\\\navg = avg*dec_slow + beat*(1-dec_slow);\\\\nis_beat = above(beat, .2+avg+peak) * above (time, t0+.2);\\\\nt0 = is_beat*time + (1-is_beat)*t0;\\\\npeak = is_beat * beat + (1-is_beat)*peak*dec_med;\\\\nindex = (index + is_beat) %4;\\\\nindex2 = (index2 + is_beat*bnot(index))%8;\\\\nindex3 = (index3 + is_beat*bnot(index)*bnot(index2))%3;\\\\n\\\\n\\\\nq20 = avg;\\\\nq21 = beat;\\\\nq22 = peak;\\\\nq23 = index;\\\\nq24 = is_beat;\\\\nq26 = bass + mid + treb;\\\\n\\\\n//k1 =  is_beat*bnot(index)*bnot(index2);\\\\n\\\\nk1 =  is_beat*equal(index,0);\\\\np1 =  k1*(p1+1) + (1-k1)*p1;\\\\np2 = dec_med * p2+ (1-dec_med)*p1;\\\\np3 = dec_med * p3+ (1-dec_med)*p2;\\\\nrott = p3*3.1416/4;\\\\n\\\\nrot1 = rot1 + q26;\\\\nq25 = .01*rot1;\\\\n\\\\nq27 = 8-index;\\\\nq28 = index3;\\\\n\\\\ndx1 = dec_med*dx1 + (1-dec_med)*bnot(index2);\\\\nq29 = dx1;\\\\nmonitor = q29;\\\\n\\\\nq1 = cos(rott);\\\\nq2 = sin(rott);\\\\nq3 = -q2;\\\\nq4 = q1;\\\\n\\\\n\\\\nq5 = 1.5*cos(time/9);\\\\nq6 = .5*sin(time/7);\\\\n\\\\nclear = clear *dec_med + 1-dec_med;\\\\nq32 = clear;\\\\n\\\\nmov = bnot(q24)*movex + (rand(100)/100-50)*q2;\\\\nmovex = movex + .2/fps *q2;\\\\nq18 = movex;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec2 uv6_1;\\\\n  vec2 tmpvar_2;\\\\n  tmpvar_2 = ((uv - 0.5) * aspect.xy);\\\\n  float tmpvar_3;\\\\n  tmpvar_3 = (rand_frame * 64.0).x;\\\\n  uv6_1 = (0.5 * cos((\\\\n    ((tmpvar_2 * mat2(0.7, -0.7, 0.7, 0.7)) * 17.0)\\\\n   + \\\\n    (rand_frame * 6.0)\\\\n  .xy)));\\\\n  float x_4;\\\\n  x_4 = (uv6_1.x + uv6_1.y);\\\\n  vec4 tmpvar_5;\\\\n  tmpvar_5.w = 1.0;\\\\n  tmpvar_5.xyz = ((0.147 * (\\\\n    (texture (sampler_main, (uv + clamp ((\\\\n      (sin(tmpvar_3) / cos(tmpvar_3))\\\\n     * \\\\n      normalize(tmpvar_2)\\\\n    ), vec2(-8.0, -8.0), vec2(8.0, 8.0)))).xyz + (0.15 * (vec3((0.01 / \\\\n      sqrt((x_4 * x_4))\\\\n    )) * roam_cos.xyz)))\\\\n   - 0.02)) + ((0.85 * \\\\n    (texture (sampler_main, uv_orig).xyz - 0.002)\\\\n  ) * q32));\\\\n  ret = tmpvar_5.xyz;\\\\n }\\\",\\\"comp\\\":\\\"vec2 xlat_mutabledz;\\\\nvec3 xlat_mutableret1;\\\\nvec2 xlat_mutableuv3;\\\\nvec2 xlat_mutableuv4;\\\\n shader_body { \\\\n  vec2 uv_1;\\\\n  float inten_2;\\\\n  float dist_3;\\\\n  vec3 ret_4;\\\\n  uv_1 = (uv - 0.5);\\\\n  float tmpvar_5;\\\\n  tmpvar_5 = (time / 2.0);\\\\n  dist_3 = (1.0 - fract(tmpvar_5));\\\\n  inten_2 = ((sqrt(dist_3) * (1.0 - dist_3)) * 2.0);\\\\n  vec2 tmpvar_6;\\\\n  tmpvar_6.y = 0.4;\\\\n  tmpvar_6.x = q18;\\\\n  xlat_mutableuv3 = (((2.0 * uv_1) * dist_3) + tmpvar_6);\\\\n  vec2 tmpvar_7;\\\\n  tmpvar_7.y = 0.0;\\\\n  tmpvar_7.x = texsize.z;\\\\n  vec2 tmpvar_8;\\\\n  tmpvar_8.y = 0.0;\\\\n  tmpvar_8.x = texsize.z;\\\\n  xlat_mutabledz.x = (inten_2 * dot ((texture (sampler_main, \\\\n    (xlat_mutableuv3 + tmpvar_7)\\\\n  ).xyz - texture (sampler_main, \\\\n    (xlat_mutableuv3 - tmpvar_8)\\\\n  ).xyz), vec3(0.32, 0.49, 0.29)));\\\\n  vec2 tmpvar_9;\\\\n  tmpvar_9.x = 0.0;\\\\n  tmpvar_9.y = texsize.w;\\\\n  vec2 tmpvar_10;\\\\n  tmpvar_10.x = 0.0;\\\\n  tmpvar_10.y = texsize.w;\\\\n  xlat_mutabledz.y = (inten_2 * dot ((texture (sampler_main, \\\\n    (xlat_mutableuv3 + tmpvar_9)\\\\n  ).xyz - texture (sampler_main, \\\\n    (xlat_mutableuv3 - tmpvar_10)\\\\n  ).xyz), vec3(0.32, 0.49, 0.29)));\\\\n  xlat_mutableret1 = max (vec3(0.0, 0.0, 0.0), (texture (sampler_main, xlat_mutableuv3).xyz * inten_2));\\\\n  dist_3 = (1.0 - fract((0.3333333 + tmpvar_5)));\\\\n  inten_2 = ((sqrt(dist_3) * (1.0 - dist_3)) * 2.0);\\\\n  vec2 tmpvar_11;\\\\n  tmpvar_11.y = 0.4;\\\\n  tmpvar_11.x = q18;\\\\n  xlat_mutableuv3 = (((2.0 * uv_1) * dist_3) + tmpvar_11);\\\\n  vec2 tmpvar_12;\\\\n  tmpvar_12.y = 0.0;\\\\n  tmpvar_12.x = texsize.z;\\\\n  vec2 tmpvar_13;\\\\n  tmpvar_13.y = 0.0;\\\\n  tmpvar_13.x = texsize.z;\\\\n  xlat_mutabledz.x = (xlat_mutabledz.x + (inten_2 * dot (\\\\n    (texture (sampler_main, (xlat_mutableuv3 + tmpvar_12)).xyz - texture (sampler_main, (xlat_mutableuv3 - tmpvar_13)).xyz)\\\\n  , vec3(0.32, 0.49, 0.29))));\\\\n  vec2 tmpvar_14;\\\\n  tmpvar_14.x = 0.0;\\\\n  tmpvar_14.y = texsize.w;\\\\n  vec2 tmpvar_15;\\\\n  tmpvar_15.x = 0.0;\\\\n  tmpvar_15.y = texsize.w;\\\\n  xlat_mutabledz.y = (xlat_mutabledz.y + (inten_2 * dot (\\\\n    (texture (sampler_main, (xlat_mutableuv3 + tmpvar_14)).xyz - texture (sampler_main, (xlat_mutableuv3 - tmpvar_15)).xyz)\\\\n  , vec3(0.32, 0.49, 0.29))));\\\\n  xlat_mutableret1 = max (xlat_mutableret1, (texture (sampler_main, xlat_mutableuv3).xyz * inten_2));\\\\n  dist_3 = (1.0 - fract((0.6666667 + tmpvar_5)));\\\\n  inten_2 = ((sqrt(dist_3) * (1.0 - dist_3)) * 2.0);\\\\n  vec2 tmpvar_16;\\\\n  tmpvar_16.y = 0.4;\\\\n  tmpvar_16.x = q18;\\\\n  xlat_mutableuv3 = (((2.0 * uv_1) * dist_3) + tmpvar_16);\\\\n  vec2 tmpvar_17;\\\\n  tmpvar_17.y = 0.0;\\\\n  tmpvar_17.x = texsize.z;\\\\n  vec2 tmpvar_18;\\\\n  tmpvar_18.y = 0.0;\\\\n  tmpvar_18.x = texsize.z;\\\\n  xlat_mutabledz.x = (xlat_mutabledz.x + (inten_2 * dot (\\\\n    (texture (sampler_main, (xlat_mutableuv3 + tmpvar_17)).xyz - texture (sampler_main, (xlat_mutableuv3 - tmpvar_18)).xyz)\\\\n  , vec3(0.32, 0.49, 0.29))));\\\\n  vec2 tmpvar_19;\\\\n  tmpvar_19.x = 0.0;\\\\n  tmpvar_19.y = texsize.w;\\\\n  vec2 tmpvar_20;\\\\n  tmpvar_20.x = 0.0;\\\\n  tmpvar_20.y = texsize.w;\\\\n  xlat_mutabledz.y = (xlat_mutabledz.y + (inten_2 * dot (\\\\n    (texture (sampler_main, (xlat_mutableuv3 + tmpvar_19)).xyz - texture (sampler_main, (xlat_mutableuv3 - tmpvar_20)).xyz)\\\\n  , vec3(0.32, 0.49, 0.29))));\\\\n  xlat_mutableret1 = max (xlat_mutableret1, (texture (sampler_main, xlat_mutableuv3).xyz * inten_2));\\\\n  dist_3 = (1.0 - fract((1.0 + tmpvar_5)));\\\\n  inten_2 = ((sqrt(dist_3) * (1.0 - dist_3)) * 2.0);\\\\n  vec2 tmpvar_21;\\\\n  tmpvar_21.y = 0.4;\\\\n  tmpvar_21.x = q18;\\\\n  xlat_mutableuv3 = (((2.0 * uv_1) * dist_3) + tmpvar_21);\\\\n  vec2 tmpvar_22;\\\\n  tmpvar_22.y = 0.0;\\\\n  tmpvar_22.x = texsize.z;\\\\n  vec2 tmpvar_23;\\\\n  tmpvar_23.y = 0.0;\\\\n  tmpvar_23.x = texsize.z;\\\\n  xlat_mutabledz.x = (xlat_mutabledz.x + (inten_2 * dot (\\\\n    (texture (sampler_main, (xlat_mutableuv3 + tmpvar_22)).xyz - texture (sampler_main, (xlat_mutableuv3 - tmpvar_23)).xyz)\\\\n  , vec3(0.32, 0.49, 0.29))));\\\\n  vec2 tmpvar_24;\\\\n  tmpvar_24.x = 0.0;\\\\n  tmpvar_24.y = texsize.w;\\\\n  vec2 tmpvar_25;\\\\n  tmpvar_25.x = 0.0;\\\\n  tmpvar_25.y = texsize.w;\\\\n  xlat_mutabledz.y = (xlat_mutabledz.y + (inten_2 * dot (\\\\n    (texture (sampler_main, (xlat_mutableuv3 + tmpvar_24)).xyz - texture (sampler_main, (xlat_mutableuv3 - tmpvar_25)).xyz)\\\\n  , vec3(0.32, 0.49, 0.29))));\\\\n  xlat_mutableret1 = max (xlat_mutableret1, (texture (sampler_main, xlat_mutableuv3).xyz * inten_2));\\\\n  uv_1 = (uv_1 + xlat_mutabledz);\\\\n  vec2 tmpvar_26;\\\\n  tmpvar_26.x = q5;\\\\n  tmpvar_26.y = q6;\\\\n  xlat_mutableuv4 = (uv_1 - (0.4 * tmpvar_26));\\\\n  float tmpvar_27;\\\\n  tmpvar_27 = (0.1 * clamp ((1.0/(\\\\n    (abs(uv_1.y) + 0.1)\\\\n  )), 0.0, 12.0));\\\\n  vec2 tmpvar_28;\\\\n  tmpvar_28.x = (uv_1.x * tmpvar_27);\\\\n  tmpvar_28.y = tmpvar_27;\\\\n  vec3 tmpvar_29;\\\\n  tmpvar_29.xy = vec2(0.0, 0.0);\\\\n  tmpvar_29.z = clamp ((1.0 - (3.0 * uv_1.y)), 0.0, 1.0);\\\\n  ret_4 = (vec3(0.0, 0.1, 0.1) + (0.1 * tmpvar_29));\\\\n  ret_4 = (ret_4 + (vec3(dot (texture (sampler_noise_hq, \\\\n    (tmpvar_28 + (0.1 * time))\\\\n  ), vec4(0.32, 0.49, 0.29, 0.0))) * (\\\\n    (clamp ((1.0 - (12.0 * uv_1.y)), 0.0, 1.0) * 0.1)\\\\n   / \\\\n    (0.05 + sqrt(dot (xlat_mutableuv4, xlat_mutableuv4)))\\\\n  )));\\\\n  ret_4 = (ret_4 + ((0.4 * xlat_mutableret1) + (xlat_mutableret1 * q22)));\\\\n  vec4 tmpvar_30;\\\\n  tmpvar_30.w = 1.0;\\\\n  tmpvar_30.xyz = ret_4;\\\\n  ret = tmpvar_30.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Martin - liquid arrows.json\":\n/*!*******************************************************!*\\\n  !*** ./presets/converted/Martin - liquid arrows.json ***!\n  \\*******************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1.780001,\\\"decay\\\":0.5,\\\"echo_zoom\\\":0.999998,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":3,\\\"wave_mode\\\":5,\\\"wave_dots\\\":1,\\\"wave_thick\\\":1,\\\"wave_brighten\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":5.552,\\\"wave_smoothing\\\":0.504,\\\"wave_mystery\\\":-1,\\\"modwavealphastart\\\":0.71,\\\"modwavealphaend\\\":1.3,\\\"warpanimspeed\\\":1.4595,\\\"warpscale\\\":2.0067,\\\"zoom\\\":0.9999,\\\"warp\\\":0.01,\\\"sx\\\":0.9999,\\\"wave_g\\\":0,\\\"wave_b\\\":0,\\\"ob_size\\\":0.06,\\\"ob_r\\\":1,\\\"ob_g\\\":1,\\\"ob_b\\\":1,\\\"ib_size\\\":0.26,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0.85,\\\"mv_r\\\":0.5,\\\"mv_g\\\":0.5,\\\"mv_b\\\":0.5,\\\"mv_a\\\":0,\\\"b1x\\\":0.6999,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"textured\\\":1,\\\"y\\\":0.9,\\\"rad\\\":0.15493,\\\"tex_zoom\\\":0.77977,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":5,\\\"textured\\\":1,\\\"rad\\\":0.986,\\\"tex_ang\\\":3.14159,\\\"tex_zoom\\\":0.99979,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ang =sin(time/65) ;// ang + (bass*.2) + (time*.4);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":5,\\\"additive\\\":1,\\\"x\\\":0.9,\\\"rad\\\":0.22613,\\\"g\\\":0.6,\\\"g2\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = 0.05 + rand(900)/1000;\\\\ny = 0.05 + rand(900)/1000;\\\\nang = rand(320)/100;\\\\n \\\"},{\\\"baseVals\\\":{\\\"sides\\\":36,\\\"additive\\\":1,\\\"rad\\\":0.18717,\\\"r\\\":0,\\\"g\\\":0.12,\\\"g2\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"spectrum\\\":1,\\\"usedots\\\":1,\\\"additive\\\":1,\\\"scaling\\\":0.5033,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"index4 = rand(2);\\\\nindex3 = rand(4);\\\",\\\"frame_eqs_eel\\\":\\\"dec_med = pow (0.9, 30/fps);\\\\ndec_slow = pow (0.99, 30/fps);\\\\nbeat = max (max (bass, mid), treb); \\\\navg = avg*dec_slow + beat*(1-dec_slow);\\\\nis_beat = above(beat, .5+avg+peak) * above (time, t0+.2);\\\\nt0 = is_beat*time + (1-is_beat)*t0;\\\\npeak = is_beat * beat + (1-is_beat)*peak*dec_med;\\\\nindex = (index + is_beat) %4;\\\\nindex2 = (index2 + is_beat*bnot(index))%4;\\\\nindex3 = (index3 + is_beat*bnot(index)*bnot(index2))%4;\\\\nindex4 = (index4 + is_beat*bnot(index)*bnot(index2)*bnot(index3))%2;\\\\n\\\\n\\\\nq20 = avg;\\\\nq21 = beat;\\\\nq22 = peak;\\\\nq23 = index;\\\\nq24 = is_beat;\\\\nq26 = bass + mid + treb;\\\\n\\\\nready = is_beat * bnot(ready) + bnot(is_beat2)*ready;\\\\nis_beat2 = ready * above (time, t0+.2);\\\\nq19 = is_beat2;\\\\n\\\\n//k1 =  is_beat*bnot(index)*bnot(index2);\\\\n\\\\nk1 =  is_beat*equal(index,0);\\\\np1 =  k1*(p1+1) + (1-k1)*p1;\\\\np2 = dec_med * p2+ (1-dec_med)*p1;\\\\nrott = p2 * 3.14159265359/2;\\\\n\\\\nq27 = index+1;\\\\nq28 = index2+1;\\\\nq29 = index3*4+1;\\\\nq30 = index4;\\\\n\\\\nq1 = cos(rott);\\\\nq2 = sin(rott);\\\\nq3 = -q2;\\\\nq4 = q1;\\\\n\\\\nsp0 = dec_slow*sp0 + (q24+.05)*(1-dec_slow);\\\\ngo = go * dec_med + (1-dec_med)*(1-bnot(index2+index3));\\\\nmovez = movez + .015*30/fps * go ;\\\\nq31 = movez;\\\\nq32 = .5 + .02*sin(time/5);\\\\n\\\\nq5 = index4%2;\\\\n\\\\nzoom = 1.0; rot = 0;\\\\n\\\\ndx = .05*max(sin(time/9.7)-.95,0);\\\\ndy = .002*(1-go);\\\\nrot = 50*(dx-dy);\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec2 tmpvar_1;\\\\n  tmpvar_1 = ((uv * texsize.xy) * 0.03);\\\\n  vec2 tmpvar_2;\\\\n  tmpvar_2.x = (cos((tmpvar_1.y * q1)) * sin(-(tmpvar_1.y)));\\\\n  tmpvar_2.y = (sin(tmpvar_1.x) * cos((tmpvar_1.y * q2)));\\\\n  vec4 tmpvar_3;\\\\n  tmpvar_3.w = 1.0;\\\\n  tmpvar_3.xyz = ((texture (sampler_main, (uv - \\\\n    ((tmpvar_2 * texsize.zw) * 18.0)\\\\n  )).xyz * 0.99) - 0.01);\\\\n  ret = tmpvar_3.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec2 uv1_1;\\\\n  vec3 tmpvar_2;\\\\n  tmpvar_2 = texture (sampler_main, uv).xyz;\\\\n  vec2 tmpvar_3;\\\\n  tmpvar_3.x = (texture (sampler_main, (uv - vec2(0.001, 0.0))).xyz - texture (sampler_main, (uv + vec2(0.001, 0.0))).xyz).x;\\\\n  tmpvar_3.y = (texture (sampler_main, (uv - vec2(0.0, 0.001))).xyz - texture (sampler_main, (uv + vec2(0.0, 0.001))).xyz).x;\\\\n  uv1_1 = ((0.3 * cos(\\\\n    ((uv - 0.5) + 1.8)\\\\n  )) - (2.0 * tmpvar_3));\\\\n  vec4 tmpvar_4;\\\\n  tmpvar_4.w = 1.0;\\\\n  tmpvar_4.xyz = (0.8 * ((0.3 * \\\\n    dot (tmpvar_2, vec3(0.32, 0.49, 0.29))\\\\n  ) + (\\\\n    (22.0 * clamp ((0.01 / sqrt(\\\\n      dot (uv1_1, uv1_1)\\\\n    )), 0.0, 1.0))\\\\n   * \\\\n    (tmpvar_2 + 0.1)\\\\n  )));\\\\n  ret = tmpvar_4.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Milk Artist At our Best - FED - SlowFast Ft AdamFX n Martin - HD CosmoFX.json\":\n/*!*********************************************************************************************************!*\\\n  !*** ./presets/converted/Milk Artist At our Best - FED - SlowFast Ft AdamFX n Martin - HD CosmoFX.json ***!\n  \\*********************************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":3,\\\"wave_mode\\\":4,\\\"additivewave\\\":1,\\\"wave_dots\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_a\\\":0.331,\\\"wave_scale\\\":0.898,\\\"wave_smoothing\\\":0.108,\\\"wave_mystery\\\":0.1,\\\"modwavealphastart\\\":0.72,\\\"modwavealphaend\\\":1.28,\\\"zoom\\\":1.3345,\\\"wave_r\\\":0,\\\"wave_g\\\":0.5,\\\"wave_b\\\":0.5,\\\"wave_y\\\":0.54,\\\"mv_x\\\":24.8,\\\"mv_dy\\\":0.16,\\\"mv_l\\\":1.5,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"sides\\\":3,\\\"rad\\\":0.31275,\\\"tex_zoom\\\":0.17914,\\\"r\\\":0.82,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"xy=0.5+rand_frame;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"samples\\\":352,\\\"usedots\\\":1,\\\"additive\\\":1,\\\"scaling\\\":0.03856,\\\"smoothing\\\":0.2,\\\"g\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"q1=bass_att;\\\",\\\"point_eqs_eel\\\":\\\"r = abs (sin (frame /38));\\\\ng = 0.5*abs (cos (frame /45));\\\\nb = 0.5*abs (sin (frame / 133));\\\\na = 0.3;\\\\nt02 = t02 + q1/10;\\\\nratio = sin (frame/49);\\\\n\\\\nampl = 0.01+0.4*sqr(sin ((frame ) / 18)* cos (frame / 123));\\\\n\\\\nx1 = (r-0.5)/15 +0.5 + ampl* sin (sample*6.28);\\\\ny1 = (b-0.5)/15+0.5 + ampl* cos (sample*6.28);\\\\n\\\\nx =  x1+1*0.2*(ampl+ratio )*sin ( sample*6.28 * ratio*7.3);\\\\ny =  y1+1*0.2*(ampl+ratio )*cos ( sample*6.28*6);\\\\n\\\"},{\\\"baseVals\\\":{\\\"samples\\\":15,\\\"scaling\\\":2.06378,\\\"smoothing\\\":0.8,\\\"r\\\":0.8,\\\"g\\\":0,\\\"b\\\":0.6,\\\"a\\\":0.9,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"samples\\\":112,\\\"additive\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"dx=0;\\\\noldshift=shift;\\\\nnormalframez=normalframez+1;\\\\nshift=above(bass_att,1)*above(treb_att,0.9);\\\\ncrash=abs(oldshift-shift);\\\\nnex=equal(rshift,0)*1+equal(rshift,1)*2;\\\\nrshift=if(crash,nex,rshift);\\\\nmonitor=rshift;\\\\nwave_r=int(rand(200))/200;\\\\nwave_g=int(rand(200))/200;\\\\nwave_b=int(rand(200))/200;\\\\nwarp=0;\\\\nq1=above(bass_att,1.3);\\\\nzoom1=zoom+0.15-0.3*(normalframez%2);\\\\nzoom=if(shift,zoom1,1);\\\\nrot=rot-0.1+rshift*0.1;\\\",\\\"pixel_eqs_eel\\\":\\\"dy=-below(y,0.4)*0.007+above(y,0.6)*0.007;\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec4 tmpvar_1;\\\\n  tmpvar_1.w = 1.0;\\\\n  tmpvar_1.xyz = ((texture (sampler_main, (uv_orig + \\\\n    ((uv - uv_orig) * dot (texture (sampler_main, uv).xyz, vec3(0.32, 0.49, 0.29)))\\\\n  )).xyz * 0.99) - 0.002);\\\\n  ret = tmpvar_1.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec3 ret_1;\\\\n  ret_1 = (texture (sampler_main, uv).xyz * 2.0);\\\\n  ret_1 = (ret_1 * (1.0 - ret_1));\\\\n  ret_1 = (((1.0 - \\\\n    pow (clamp (ret_1, 0.0, 1.0), vec3(0.5, 0.5, 0.5))\\\\n  ) * 1.5) - 0.75);\\\\n  vec4 tmpvar_2;\\\\n  tmpvar_2.w = 1.0;\\\\n  tmpvar_2.xyz = ret_1;\\\\n  ret = tmpvar_2.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/MilkDrop2077.R002.json\":\n/*!**************************************************!*\\\n  !*** ./presets/converted/MilkDrop2077.R002.json ***!\n  \\**************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":3,\\\"decay\\\":0.975,\\\"echo_zoom\\\":1,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":2,\\\"wave_dots\\\":1,\\\"wave_thick\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"wave_a\\\":100,\\\"wave_scale\\\":27.455,\\\"wave_smoothing\\\":0.5,\\\"wave_mystery\\\":-1,\\\"modwavealphastart\\\":0.4,\\\"modwavealphaend\\\":1,\\\"warpscale\\\":1.772,\\\"zoomexp\\\":1.001,\\\"zoom\\\":1.007,\\\"warp\\\":0,\\\"mv_y\\\":8.64,\\\"mv_l\\\":1.455,\\\"mv_r\\\":0,\\\"mv_g\\\":0,\\\"mv_b\\\":0,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"x\\\":0.455,\\\"rad\\\":0.43233,\\\"r\\\":0.5,\\\"g\\\":0.5,\\\"r2\\\":0.57,\\\"g2\\\":0,\\\"border_b\\\":0.5,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"sounds=(bass+treb+mid)/3;\\\\n\\\\nrad=rad*sounds*0.6;\\\\n\\\\nr=r+sin(bass)*g;\\\\ng=g+sin(mid)*g;\\\\n\\\\n\\\\nx=x+0.207*cos(time*bass*0.1);\\\\ny=y+0.2029*sin(time*bass*0.09);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"rad\\\":0.13465,\\\"tex_zoom\\\":0.91,\\\"r2\\\":1,\\\"a2\\\":0.318,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\\ng2=g2+0.09*sin((treb+mid)*1.23);\\\\ng=g+0.09*cos((bass+mid)*1.37);\\\\n\\\\nsounds=(bass+mid+treb)/3;\\\\n\\\\nrad=rad*(treb+mid)/3;\\\\n\\\\nx=x+0.300*sin(time*bass);\\\\ny=y+0.317*cos(time*bass);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"rad\\\":0.20047,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":0.5,\\\"g2\\\":0.445,\\\"b2\\\":0.94,\\\"border_b\\\":0.5,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"sounds=(bass+treb+mid)/3;\\\\natt=(bass_att+treb_att+mid_att)/3;\\\\natt=(bass_att+treb_att+mid_att)/3;\\\\nr2=r2+(0.25*sin(time*6.28))-bass;\\\\ng2=g2+(0.25*sin(time*6.28))-bass;\\\\n\\\\nrad=rad;\\\\nx=x+0.243*cos(time*2.3)+sounds*0.09;\\\\ny=y+0.217*sin((time*3.5)+(sounds*0.3));\\\"},{\\\"baseVals\\\":{\\\"x\\\":0.475,\\\"border_g\\\":0.9,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"sep\\\":256,\\\"scaling\\\":20.35074,\\\"smoothing\\\":0.435,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"r=r+0.5*sin(treb*1.13);\\\\ng=g+0.5*sin(bass*1.33);\\\\nb=b+0.5*sin(mid*1.23);\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sep\\\":256,\\\"usedots\\\":1,\\\"scaling\\\":100,\\\"smoothing\\\":0.51,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"scaling\\\":0.91,\\\"smoothing\\\":0.45,\\\"b\\\":0.91,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"scaling\\\":1.08,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"wave_x = wave_x + 0.2*( 0.60*sin(2.121*time) + 0.5*sin(1.621*time) );\\\\nwave_y = wave_y + 0.2*( 0.60*sin(1.742*time) + 0.5*sin(2.322*time) );\\\\nwave_r = wave_r + 0.200*( 0.60*sin(0.823*time) + 0.40*sin(0.916*time) );\\\\nwave_g = wave_g + 0.500*( 0.60*sin(0.900*time) + 0.40*sin(1.023*time) );\\\\nwave_b = wave_b + 0.500*( 0.60*sin(0.808*time) + 0.40*sin(0.949*time) );\\\",\\\"pixel_eqs_eel\\\":\\\"zoom = zoom + 0.01 * ( sin(2*cos(3*(sqrt(2)-rad)*ang)) + 1 );\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec2 my_uv_1;\\\\n  vec2 d_2;\\\\n  vec3 ret_3;\\\\n  vec2 tmpvar_4;\\\\n  tmpvar_4 = (texsize.zw * 4.0);\\\\n  vec3 tmpvar_5;\\\\n  tmpvar_5 = (((texture (sampler_blur1, \\\\n    fract((uv + (vec2(1.0, 0.0) * tmpvar_4)))\\\\n  ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n    fract((uv - (vec2(1.0, 0.0) * tmpvar_4)))\\\\n  ).xyz * scale1) + bias1));\\\\n  vec3 tmpvar_6;\\\\n  tmpvar_6 = (((texture (sampler_blur1, \\\\n    fract((uv + (vec2(0.0, 1.0) * tmpvar_4)))\\\\n  ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n    fract((uv - (vec2(0.0, 1.0) * tmpvar_4)))\\\\n  ).xyz * scale1) + bias1));\\\\n  vec3 tmpvar_7;\\\\n  tmpvar_7 = ((texture (sampler_blur1, uv).xyz * scale1) + bias1);\\\\n  d_2 = -(tmpvar_4);\\\\n  float tmpvar_8;\\\\n  tmpvar_8 = (d_2 * 4.0).x;\\\\n  vec2 tmpvar_9;\\\\n  tmpvar_9.x = tmpvar_5.y;\\\\n  tmpvar_9.y = tmpvar_6.y;\\\\n  vec2 tmpvar_10;\\\\n  tmpvar_10.x = tmpvar_5.x;\\\\n  tmpvar_10.y = tmpvar_6.x;\\\\n  vec2 tmpvar_11;\\\\n  tmpvar_11 = ((uv - (tmpvar_9 * d_2)) - (tmpvar_10 * tmpvar_8));\\\\n  ret_3.y = texture (sampler_fc_main, (tmpvar_11 - floor(tmpvar_11))).y;\\\\n  ret_3.y = (ret_3.y + ((\\\\n    (ret_3.y - tmpvar_7.y)\\\\n   * 0.042) + -0.0075));\\\\n  vec2 tmpvar_12;\\\\n  tmpvar_12.x = tmpvar_5.x;\\\\n  tmpvar_12.y = tmpvar_6.x;\\\\n  vec2 tmpvar_13;\\\\n  tmpvar_13.x = tmpvar_5.z;\\\\n  tmpvar_13.y = tmpvar_6.z;\\\\n  my_uv_1 = ((uv - (tmpvar_12 * d_2)) - (tmpvar_13 * tmpvar_8));\\\\n  ret_3.x = texture (sampler_fc_main, (my_uv_1 - floor(my_uv_1))).x;\\\\n  ret_3.x = (ret_3.x + ((\\\\n    (ret_3.x - tmpvar_7.x)\\\\n   * 0.042) + -0.0075));\\\\n  vec2 tmpvar_14;\\\\n  tmpvar_14.x = tmpvar_5.z;\\\\n  tmpvar_14.y = tmpvar_6.z;\\\\n  vec2 tmpvar_15;\\\\n  tmpvar_15.x = tmpvar_5.y;\\\\n  tmpvar_15.y = tmpvar_6.y;\\\\n  my_uv_1 = ((uv - (tmpvar_14 * d_2)) - (tmpvar_15 * tmpvar_8));\\\\n  ret_3.z = texture (sampler_fc_main, (my_uv_1 - floor(my_uv_1))).z;\\\\n  ret_3.z = (ret_3.z + ((\\\\n    (ret_3.z - tmpvar_7.z)\\\\n   * 0.042) + -0.0075));\\\\n  vec4 tmpvar_16;\\\\n  tmpvar_16 = texture (sampler_noisevol_hq, (((vec3(0.04, 0.02, 0.02) * my_uv_1.xyy) * (\\\\n    (q27 * texsize.xyy)\\\\n   * texsize_noisevol_hq.zww)) + ((time * vec3(2.3, 2.3, 1.8)) * q29)));\\\\n  if (((ret_3.x > (q21 * q13)) && (ret_3.x <= (q24 * q11)))) {\\\\n    ret_3.y = (ret_3.y - (tmpvar_16.x * 0.5));\\\\n  };\\\\n  if (((ret_3.y > (q22 * q11)) && (ret_3.y <= (q25 * q12)))) {\\\\n    ret_3.z = (ret_3.z - (tmpvar_16.y * 0.5));\\\\n  };\\\\n  if (((ret_3.z > (q23 * q12)) && (ret_3.z <= (q26 * q13)))) {\\\\n    ret_3.x = (ret_3.x - (tmpvar_16.z * 0.5));\\\\n  };\\\\n  vec4 tmpvar_17;\\\\n  tmpvar_17.w = 1.0;\\\\n  tmpvar_17.xyz = ret_3;\\\\n  ret = tmpvar_17.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec3 ret_1;\\\\n  vec4 tmpvar_2;\\\\n  tmpvar_2 = texture (sampler_main, uv);\\\\n  ret_1 = (((vec3(2.8, 2.8, 1.2) * tmpvar_2.x) + (vec3(2.0, 0.4, 2.0) * tmpvar_2.y)) + (vec3(0.1, 1.3, 1.2) * tmpvar_2.z));\\\\n  ret_1 = (ret_1 * 0.37);\\\\n  ret_1 = ((ret_1 * ret_1) * (1.0 + (\\\\n    clamp (((cos(\\\\n      (((dot (tmpvar_2.xyz, vec3(0.32, 0.49, 0.29)) * 17.0) + 3.0) + (uv.x * 30.0))\\\\n    ) * 3.0) - 2.7), 0.0, 1.0)\\\\n   * 4.0)));\\\\n  vec4 tmpvar_3;\\\\n  tmpvar_3.w = 1.0;\\\\n  tmpvar_3.xyz = ret_1;\\\\n  ret = tmpvar_3.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/MilkDrop2077.R033.json\":\n/*!**************************************************!*\\\n  !*** ./presets/converted/MilkDrop2077.R033.json ***!\n  \\**************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":1,\\\"gammaadj\\\":2.7,\\\"decay\\\":0.715,\\\"wrap\\\":0,\\\"solarize\\\":1,\\\"wave_a\\\":0.001,\\\"modwavealphastart\\\":0.848,\\\"warpanimspeed\\\":2.472,\\\"warpscale\\\":3.209,\\\"zoomexp\\\":1.0018,\\\"zoom\\\":1.01,\\\"cx\\\":0.465,\\\"dy\\\":0.00001,\\\"warp\\\":0.01,\\\"wave_r\\\":0,\\\"wave_g\\\":0,\\\"wave_b\\\":0,\\\"wave_x\\\":0,\\\"wave_y\\\":0,\\\"ob_size\\\":0,\\\"ob_a\\\":1,\\\"ib_size\\\":0,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"ib_a\\\":1,\\\"mv_y\\\":9.72,\\\"mv_r\\\":1.19,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":20,\\\"num_inst\\\":410,\\\"rad\\\":0.0082,\\\"r\\\":0,\\\"b\\\":1,\\\"a\\\":1.09,\\\"g2\\\":0,\\\"a2\\\":0.1,\\\"border_b\\\":0.87,\\\"border_a\\\":0.006},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"q1 = time/5;\\\\nq2 = time/6;\\\\nrad = 0.005+bass/100;\\\\nq5 = bass_att/70;\\\\nb2 = treb*0.79-bass/2;\\\\nr = instance/num_inst;\\\\ng = abs(treb_att/5-bass);\\\\n//b = abs(treb_att/5-bass);\\\\nsize = 0.3+bass_att/300;\\\\n\\\\nnc = sqrt(num_inst);\\\\nxs=sin(7.662*(instance%nc)/nc)*sin(3.705*int(instance/nc)/nc);\\\\nys=cos(6.28*(instance%nc)/nc)*sin(3.14*int(instance/nc)/nc);\\\\nzs=cos(3.14*int(instance/nc)/nc);\\\\n\\\\n//modulate to allow rotation\\\\ny1 = ys*cos(q1)-zs*sin(q1);\\\\nz1 = ys*sin(q1)+zs*cos(q1);\\\\nx1 = z1*sin(q2)+xs*cos(q2);\\\\nz2 = z1*cos(q2)-xs*sin(q2);\\\\nx2 = x1*cos(q3)-y1*sin(q3);\\\\ny2 = y1*cos(q3)+x1*sin(q3);\\\\n\\\\n//translate shape\\\\nx3 = x2+q4;\\\\ny3 = y2;\\\\nz3 = z2+q5;\\\\n\\\\nx = 0.5 + size*(x3/(1+z3*size));\\\\ny = 0.42 + size*(y3/(1+z3*size));\\\\na=below(z3,0);\\\"},{\\\"baseVals\\\":{\\\"rad\\\":0.102,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"x\\\":0.53,\\\"rad\\\":0.091,\\\"tex_zoom\\\":0.76,\\\"r\\\":1.16,\\\"a\\\":1.05,\\\"g2\\\":0.86,\\\"border_r\\\":0.87,\\\"border_g\\\":0.89,\\\"border_b\\\":1.22,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"y\\\":0.49,\\\"rad\\\":0.089,\\\"tex_zoom\\\":0.78,\\\"a\\\":0.95,\\\"g2\\\":0.81,\\\"border_a\\\":0.114,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"r\\\":0.8,\\\"g\\\":1.05,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"a\\\":0.93,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"scaling\\\":1.1,\\\"r\\\":1.15,\\\"g\\\":0.92,\\\"b\\\":1.22,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"scaling\\\":0.84,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"q1=sin(.5*time);\\\\nq2=sin(.2*time);\\\\nq3=sin(0.34*time);\\\\nq4=abs(sin(40*time));\\\\n\\\\nbt=bt+bass/fps;\\\\nbt=bt*above(100,bt);\\\\nq5=sin(bt);\\\\nq6=bt;\\\\n\\\\nq11=int(rand(200)); q11=q11*equal(q11,1);\\\\nq12=int(rand(100)); q12=q12*equal(q12,1);\\\\nq13=int(rand(150)); q13=q13*equal(q13,1);\\\\n\\\\nrot=rot-0.048*sin(bass_att*0.08)*sin(0.37*time);\\\\n\\\\ndy=.002*sin(time*.623)+.002*cos(time*.31);\\\\ndx=.002*cos(time*.442)+.002*sin(time*.52);\\\",\\\"pixel_eqs_eel\\\":\\\"//zoom=10.1242-0.038*above(rad,0.12);\\\\n//zoom=zoom+0.042*above(rad,0.131);\\\\n//zoom=zoom-.05*above(rad,.2);\\\\n//zoom=zoom+.05*above(rad,.21);\\\\n//zoom=zoom-0.039*above(rad,0.33);\\\\n//zoom=zoom+.05*above(rad,.31);\\\\n//zoom=zoom-0.059*above(rad,0.34);\\\\n//zoom=zoom+.05*above(rad,.41);\\\\n//zoom=zoom-.05*above(rad,.49);\\\\n//zoom=zoom+.05*above(rad,.50);\\\\n//zoom=zoom-.05*above(rad,.6);\\\\n//zoom=zoom+.05*above(rad,.61);\\\\n//zoom=zoom-0.055*above(rad,0.61);\\\\n//zoom=zoom+0.047*above(rad,0.575);\\\\n//zoom=zoom-0.049*above(rad,0.8);\\\\n//zoom=zoom+.05*above(rad,.805);\\\\n//zoom=zoom-.05*above(rad,.9);\\\\n//zoom=zoom+0.051*above(rad,1.046);\\\\n\\\\n\\\\nzoom=zoom+.15*x*.05*sin(rad*time*2);\\\\nzoom=zoom+0.142*(1-x)*0.058*sin(rad*time*2);\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec2 tmpvar_1;\\\\n  tmpvar_1 = mix (uv_orig, uv, vec2(0.469, 0.469));\\\\n  vec2 tmpvar_2;\\\\n  tmpvar_2 = (texsize.zw * 300.0);\\\\n  vec2 tmpvar_3;\\\\n  tmpvar_3.x = dot (((\\\\n    (texture (sampler_blur1, ((tmpvar_1 + vec2(1.0, 2.0)) + tmpvar_2)).xyz * scale1)\\\\n   + bias1) - (\\\\n    (texture (sampler_blur1, (tmpvar_1 - (vec2(1.0, 0.0) * tmpvar_2))).xyz * scale1)\\\\n   + bias1)), vec3(0.32, 0.49, 0.29));\\\\n  tmpvar_3.y = dot (((\\\\n    (texture (sampler_blur1, (tmpvar_1 + (vec2(0.0, 1.0) * tmpvar_2))).xyz * scale1)\\\\n   + bias1) - (\\\\n    (texture (sampler_blur1, (tmpvar_1 - (vec2(0.0, 1.0) * tmpvar_2))).xyz * scale1)\\\\n   + bias1)), vec3(0.32, 0.49, 0.29));\\\\n  vec4 tmpvar_4;\\\\n  tmpvar_4.w = 1.0;\\\\n  tmpvar_4.xyz = (texture (sampler_fc_main, (tmpvar_1 + (\\\\n    (tmpvar_3 * texsize.zw)\\\\n   * 50.0))) - 0.01).xyz;\\\\n  ret = tmpvar_4.xyz;\\\\n }\\\",\\\"comp\\\":\\\"float xlat_mutablesmask;\\\\nvec2 xlat_mutableuv1;\\\\nvec2 xlat_mutableuv3;\\\\nvec2 xlat_mutableuv4;\\\\n shader_body { \\\\n  float dist_1;\\\\n  float stars_2;\\\\n  vec3 ret_3;\\\\n  xlat_mutableuv1 = ((uv - 0.5) * aspect.xy);\\\\n  float tmpvar_4;\\\\n  tmpvar_4 = (0.109 * time);\\\\n  float tmpvar_5;\\\\n  tmpvar_5 = (0.24 * rad);\\\\n  dist_1 = ((1.0 - fract(\\\\n    (0.2425 + tmpvar_4)\\\\n  )) * (1.0 - tmpvar_5));\\\\n  vec2 tmpvar_6;\\\\n  tmpvar_6.x = q1;\\\\n  tmpvar_6.y = q2;\\\\n  xlat_mutableuv3 = (xlat_mutableuv1 + tmpvar_6);\\\\n  xlat_mutableuv4 = ((64.0 * dist_1) * xlat_mutableuv3);\\\\n  xlat_mutablesmask = (texture (sampler_pw_noise_lq, (xlat_mutableuv4 / 256.0)).y - 0.81);\\\\n  vec2 tmpvar_7;\\\\n  tmpvar_7 = abs((fract(xlat_mutableuv4) - 0.5));\\\\n  stars_2 = max (0.0, clamp ((\\\\n    (1.0 - dist_1)\\\\n   * \\\\n    ((0.1 / sqrt(dot (tmpvar_7, tmpvar_7))) * xlat_mutablesmask)\\\\n  ), 0.0, 1.0));\\\\n  dist_1 = ((1.0 - fract(\\\\n    (0.485 + tmpvar_4)\\\\n  )) * (1.0 - tmpvar_5));\\\\n  vec2 tmpvar_8;\\\\n  tmpvar_8.x = q1;\\\\n  tmpvar_8.y = q2;\\\\n  xlat_mutableuv3 = (xlat_mutableuv1 + tmpvar_8);\\\\n  xlat_mutableuv4 = ((64.0 * dist_1) * xlat_mutableuv3);\\\\n  xlat_mutablesmask = (texture (sampler_pw_noise_lq, (xlat_mutableuv4 / 256.0)).y - 0.81);\\\\n  vec2 tmpvar_9;\\\\n  tmpvar_9 = abs((fract(xlat_mutableuv4) - 0.5));\\\\n  stars_2 = (stars_2 + max (stars_2, clamp (\\\\n    ((1.0 - dist_1) * ((0.1 / sqrt(\\\\n      dot (tmpvar_9, tmpvar_9)\\\\n    )) * xlat_mutablesmask))\\\\n  , 0.0, 1.0)));\\\\n  dist_1 = ((1.0 - fract(\\\\n    (0.7275 + tmpvar_4)\\\\n  )) * (1.0 - tmpvar_5));\\\\n  vec2 tmpvar_10;\\\\n  tmpvar_10.x = q1;\\\\n  tmpvar_10.y = q2;\\\\n  xlat_mutableuv3 = (xlat_mutableuv1 + tmpvar_10);\\\\n  xlat_mutableuv4 = ((64.0 * dist_1) * xlat_mutableuv3);\\\\n  xlat_mutablesmask = (texture (sampler_pw_noise_lq, (xlat_mutableuv4 / 256.0)).y - 0.81);\\\\n  vec2 tmpvar_11;\\\\n  tmpvar_11 = abs((fract(xlat_mutableuv4) - 0.5));\\\\n  stars_2 = (stars_2 + max (stars_2, clamp (\\\\n    ((1.0 - dist_1) * ((0.1 / sqrt(\\\\n      dot (tmpvar_11, tmpvar_11)\\\\n    )) * xlat_mutablesmask))\\\\n  , 0.0, 1.0)));\\\\n  dist_1 = ((1.0 - fract(\\\\n    (0.97 + tmpvar_4)\\\\n  )) * (1.0 - tmpvar_5));\\\\n  vec2 tmpvar_12;\\\\n  tmpvar_12.x = q1;\\\\n  tmpvar_12.y = q2;\\\\n  xlat_mutableuv3 = (xlat_mutableuv1 + tmpvar_12);\\\\n  xlat_mutableuv4 = ((64.0 * dist_1) * xlat_mutableuv3);\\\\n  xlat_mutablesmask = (texture (sampler_pw_noise_lq, (xlat_mutableuv4 / 256.0)).y - 0.81);\\\\n  vec2 tmpvar_13;\\\\n  tmpvar_13 = abs((fract(xlat_mutableuv4) - 0.5));\\\\n  stars_2 = (stars_2 + max (stars_2, clamp (\\\\n    ((1.0 - dist_1) * ((0.1 / sqrt(\\\\n      dot (tmpvar_13, tmpvar_13)\\\\n    )) * xlat_mutablesmask))\\\\n  , 0.0, 1.0)));\\\\n  vec3 tmpvar_14;\\\\n  tmpvar_14 = max ((texture (sampler_main, uv).xyz * 2.0), ((\\\\n    (texture (sampler_blur2, uv).xyz * scale2)\\\\n   + bias2) * 2.0));\\\\n  ret_3 = (ret_3 + clamp ((stars_2 * stars_2), 0.0, 1.0));\\\\n  ret_3 = (ret_3 * clamp ((1.0 - \\\\n    (2.0 * dot (tmpvar_14, vec3(0.32, 0.49, 0.29)))\\\\n  ), 0.0, 1.0));\\\\n  ret_3 = (ret_3 + tmpvar_14);\\\\n  vec4 tmpvar_15;\\\\n  tmpvar_15.w = 1.0;\\\\n  tmpvar_15.xyz = ret_3;\\\\n  ret = tmpvar_15.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/ORB - Waaa.json\":\n/*!*******************************************!*\\\n  !*** ./presets/converted/ORB - Waaa.json ***!\n  \\*******************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":0,\\\"decay\\\":1,\\\"echo_zoom\\\":1,\\\"echo_orient\\\":3,\\\"wave_mode\\\":1,\\\"wrap\\\":0,\\\"darken_center\\\":1,\\\"wave_a\\\":0.001,\\\"zoom\\\":0.97,\\\"rot\\\":-6.27999,\\\"warp\\\":0.00052,\\\"wave_r\\\":0,\\\"wave_g\\\":0,\\\"wave_b\\\":0,\\\"ob_r\\\":1,\\\"ob_g\\\":1,\\\"ob_b\\\":1,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"textured\\\":1,\\\"rad\\\":0.49849,\\\"g\\\":1,\\\"b\\\":1,\\\"a\\\":0.7,\\\"r2\\\":1,\\\"g2\\\":0,\\\"b2\\\":1,\\\"a2\\\":0.7,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"r2 = 0.5 + 0.5*sin(q2*0.35);\\\\ng2 = 0.5 + 0.5*sin(q2*0.578);\\\\nb2 = 0.5 + 0.5*sin(q2*0.689);\\\\n\\\\nang = q2;\\\\ntex_capture = above(q3,2);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"textured\\\":1,\\\"rad\\\":0.74218,\\\"g\\\":1,\\\"b\\\":1,\\\"a\\\":0.6,\\\"r2\\\":1,\\\"g2\\\":0,\\\"b2\\\":1,\\\"a2\\\":0.6,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"r2 = 0.5 + 0.5*sin(q2*0.45);\\\\ng2 = 0.5 + 0.5*sin(q2*0.678);\\\\nb2 = 0.5 + 0.5*sin(q2*0.689);\\\\n\\\\nang = -q2*1.05;\\\\ntex_capture = above(q3,2);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"textured\\\":1,\\\"rad\\\":1.00035,\\\"g\\\":1,\\\"b\\\":1,\\\"a\\\":0.5,\\\"r2\\\":1,\\\"g2\\\":0,\\\"b2\\\":1,\\\"a2\\\":0.5,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"r2 = 0.5 + 0.5*sin(q2*0.45);\\\\ng2 = 0.5 + 0.5*sin(q2*0.578);\\\\nb2 = 0.5 + 0.5*sin(q2*0.789);\\\\n\\\\nang = q2*0.899;\\\\ntex_capture = above(q3,2);\\\"},{\\\"baseVals\\\":{\\\"textured\\\":1,\\\"rad\\\":3.25446,\\\"g\\\":1,\\\"b\\\":1,\\\"a\\\":0.3,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":0.4,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"r = 0.5 + 0.5*sin(q2*0.45);\\\\ng = 0.5 + 0.5*sin(q2*0.578);\\\\nb = 0.5 + 0.5*sin(q2*0.689);\\\\n\\\\nr2 = 0.5 + 0.5*sin(q2*0.45);\\\\ng2 = 0.5 + 0.5*sin(q2*0.578);\\\\nb2 = 0.5 + 0.5*sin(q2*0.689);\\\\n\\\\ntex_capture = above(q3,2);\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sep\\\":1,\\\"spectrum\\\":1,\\\"thick\\\":1,\\\"additive\\\":1},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"u = (cos(q1*0.1))*3.14159;\\\\nv = (cos(q1*0.015))*3.14159*2;\\\\ns = sample*3.14*100;\\\\nss = sample*6.28*1000;\\\\n\\\\n//draw\\\\nxs = (0.3 + 0.1*cos(s))*cos(ss)*0.2*cos(v);\\\\nys = (0.3 + 0.1*cos(s))*sin(ss)*6*u;\\\\nzs = 0.5*sin(s)*0.2*sin(v);\\\\n\\\\n//rotate x axis\\\\nangle = q1*0.1;\\\\nyx = ys*cos(angle) - zs*sin(angle);\\\\nzx = ys*sin(angle) + zs*cos(angle);\\\\nxx = xs;\\\\n\\\\n//rotate y axis\\\\nangle2 = q1*0.11;\\\\nxd = xx*cos(angle2) - zx*sin(angle2);\\\\nzd = xx*sin(angle2) + zx*cos(angle2);\\\\nyd = yx;\\\\n\\\\n//rotaye z axis\\\\nangle3 = q1*0.15;\\\\nxn = xd*cos(angle3) - yd*sin(angle3);\\\\nyn = xd*sin(angle3) + yd*cos(angle3);\\\\n\\\\nzd = zd;\\\\n\\\\nx = xn*zd*0.3 + 0.5;\\\\ny = yn*zd*0.3*1.2 + 0.5;\\\\n\\\\nr = 0.5 + 0.5*sin(q1*1.2 + x + x);\\\\ng = 0.5 + 0.5*sin(q1*1.5 + x + y);\\\\nb = 0.5 + 0.5*sin(q1*1.36 + y + y);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sep\\\":1,\\\"spectrum\\\":1,\\\"thick\\\":1,\\\"additive\\\":1},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"u = (cos(q1*0.1))*3.14159;\\\\nv = (cos(q1*0.015))*3.14159*2;\\\\ns = sample*3.14*100;\\\\nss = sample*6.28*1000;\\\\n\\\\n//draw\\\\nxs = (0.3 + 0.1*cos(s))*cos(ss)*0.2*cos(v);\\\\nys = (0.3 + 0.1*cos(s))*sin(ss)*6*u;\\\\nzs = 0.5*sin(s)*0.2*sin(v);\\\\n\\\\n//rotate x axis\\\\nangle = q1*0.1;\\\\nyx = ys*cos(angle) - zs*sin(angle);\\\\nzx = ys*sin(angle) + zs*cos(angle);\\\\nxx = xs;\\\\n\\\\n//rotate y axis\\\\nangle2 = q1*0.13;\\\\nxd = xx*cos(angle2) - zx*sin(angle2);\\\\nzd = xx*sin(angle2) + zx*cos(angle2);\\\\nyd = yx;\\\\n\\\\n//rotaye z axis\\\\nangle3 = q1*0.16;\\\\nxn = xd*cos(angle3) - yd*sin(angle3);\\\\nyn = xd*sin(angle3) + yd*cos(angle3);\\\\n\\\\nzd = zd;\\\\n\\\\nx = xn*zd*0.3 + 0.5;\\\\ny = yn*zd*0.3*1.2 + 0.5;\\\\n\\\\nr = 0.5 + 0.5*sin(q1*1.2 + x + x);\\\\ng = 0.5 + 0.5*sin(q1*1.5 + x + y);\\\\nb = 0.5 + 0.5*sin(q1*1.36 + y + y);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sep\\\":1,\\\"spectrum\\\":1,\\\"thick\\\":1,\\\"additive\\\":1},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"u = (cos(q1*0.1))*3.14159;\\\\nv = (cos(q1*0.015))*3.14159*2;\\\\ns = sample*3.14*100;\\\\nss = sample*6.28*1000;\\\\n\\\\n//draw\\\\nxs = (0.3 + 0.1*cos(s))*cos(ss)*0.2*cos(v);\\\\nys = (0.3 + 0.1*cos(s))*sin(ss)*6*u;\\\\nzs = 0.5*sin(s)*0.2*sin(v);\\\\n\\\\n//rotate x axis\\\\nangle = q1*0.1;\\\\nyx = ys*cos(angle) - zs*sin(angle);\\\\nzx = ys*sin(angle) + zs*cos(angle);\\\\nxx = xs;\\\\n\\\\n//rotate y axis\\\\nangle2 = q1*0.16;\\\\nxd = xx*cos(angle2) - zx*sin(angle2);\\\\nzd = xx*sin(angle2) + zx*cos(angle2);\\\\nyd = yx;\\\\n\\\\n//rotaye z axis\\\\nangle3 = q1*0.16;\\\\nxn = xd*cos(angle3) - yd*sin(angle3);\\\\nyn = xd*sin(angle3) + yd*cos(angle3);\\\\n\\\\nzd = zd;\\\\n\\\\nx = xn*zd*0.3 + 0.5;\\\\ny = yn*zd*0.3*1.2 + 0.5;\\\\n\\\\nr = 0.5 + 0.5*sin(q1*1.2 + x + x);\\\\ng = 0.5 + 0.5*sin(q1*1.5 + x + y);\\\\nb = 0.5 + 0.5*sin(q1*1.36 + y + y);\\\"},{\\\"baseVals\\\":{\\\"sep\\\":1,\\\"spectrum\\\":1,\\\"usedots\\\":1,\\\"additive\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"u = abs(cos(q1*0.1))*3.14159;\\\\nv = abs(cos(q1*0.015))*3.14159*2;\\\\ns = sample*3.14*100;\\\\nss = sample*6.28*1000;\\\\n\\\\n//draw\\\\nxs = (0.5 + 0.0000001*cos(s))*cos(ss);\\\\nys = (0.5 + 0.0000001*cos(s))*sin(ss);\\\\nzs = 0.5*sin(s);\\\\n\\\\n//rotate x axis\\\\nangle = q1*0.1;\\\\nyx = ys*cos(angle) - zs*sin(angle);\\\\nzx = ys*sin(angle) + zs*cos(angle);\\\\nxx = xs;\\\\n\\\\n//rotate y axis\\\\nangle2 = q1*0.14;\\\\nxd = xx*cos(angle2) - zx*sin(angle2);\\\\nzd = xx*sin(angle2) + zx*cos(angle2);\\\\nyd = yx;\\\\n\\\\n//rotaye z axis\\\\nangle3 = q1*0.15;\\\\nxn = xd*cos(angle3) - yd*sin(angle3);\\\\nyn = xd*sin(angle3) + yd*cos(angle3);\\\\n\\\\nzd = zd + 2;\\\\n\\\\nx = xn*zd*0.3 + 0.5;\\\\ny = yn*zd*0.3*1.2 + 0.5;\\\\n\\\\nr = 0.5 + 0.5*sin(q1*1.2 + x + x);\\\\ng = 0.5 + 0.5*sin(q1*1.5 + x + y);\\\\nb = 0.5 + 0.5*sin(q1*1.66 + y + y);\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"basstime = basstime + bass*0.03;\\\\nq1 = basstime*4;\\\\n\\\\n//start in most active range\\\\nbasstime = if(below(basstime,1000),1000,basstime);\\\\n//basstime = if(above(basstime,495),450,basstime);\\\\n\\\\nbasstime = basstime + bass_att*0.03;\\\\nvol = pow(bass+mid+treb,2);\\\\nbasssum = vol;\\\\n\\\\nstickybit = time%2;\\\\n\\\\n//avg vol\\\\n//buffer 1\\\\nvolAvg = volAvg + vol*equal(stickybit,1);\\\\n//number of samples 1 or framerate\\\\nsample1 = sample1 + equal(stickybit,1);\\\\n//buffer 2\\\\nvolAvg2 = volAvg2 + vol*equal(stickybit,0);\\\\n//number of samples 2\\\\nsample2 = sample2 + equal(stickybit,0);\\\\n\\\\n//transision\\\\nedge = bnot(equal(bit2,stickybit));\\\\n\\\\nvolAvg = volAvg - volAvg*edge*stickybit;\\\\nvolAvg2 = volAvg2 - volAvg2*edge*equal(stickybit,0);\\\\n\\\\nsample1 = sample1  - sample1*edge*stickybit;\\\\nsample2 = sample2  - sample2*edge*equal(stickybit,0);\\\\n\\\\n//test vol against avg buffer lvl\\\\ndiff = if(equal(stickybit,1), (basssum/(volAvg2/sample2)) , 0);\\\\ndiff = if(equal(stickybit,0), (basssum/(volAvg/sample1)), diff);\\\\n\\\\nq3 = diff;\\\\n\\\\nbit2 = time%2;\\\\n\\\\ndifftime = difftime + diff*0.03;\\\\nq2 = difftime;\\\\n\\\\n//fix a strange error\\\\ndifftime = if(above(difftime,2000),0, difftime);\\\\n\\\\nmonitor = abs(cos(time))*3.14;\\\\n\\\\n\\\\nmv_a = above(diff,10);\\\",\\\"pixel_eqs_eel\\\":\\\"zoom = 1 + 0.05*q3*rad;\\\\n\\\\ndecay_r = 0.2*rad*sin(q2*0.35) + 0.85 + 0.1*sin(q2);\\\\ndecay_g = 0.2*rad*sin(q2*0.5) + 0.85 + 0.1*sin(0.7*q2);\\\\ndecay_b = 0.2*rad*sin(q2*0.4) + 0.85 + 0.1*sin(0.8*q2);\\\\n\\\\nrot = 0;\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec4 tmpvar_1;\\\\n  tmpvar_1.w = 1.0;\\\\n  tmpvar_1.xyz = (texture (sampler_fc_main, uv).xyz * (0.8 + (q3 * 0.1)));\\\\n  ret = tmpvar_1.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec4 tmpvar_1;\\\\n  tmpvar_1.w = 1.0;\\\\n  tmpvar_1.xyz = (texture (sampler_main, uv).xyz * 2.0);\\\\n  ret = tmpvar_1.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Phat+fiShbRaiN+Eo.S_Mandala_Chasers_remix.json\":\n/*!**************************************************************************!*\\\n  !*** ./presets/converted/Phat+fiShbRaiN+Eo.S_Mandala_Chasers_remix.json ***!\n  \\**************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":1,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1,\\\"decay\\\":0.965,\\\"echo_zoom\\\":1.483827,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":3,\\\"wave_mode\\\":7,\\\"additivewave\\\":1,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"darken_center\\\":1,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":1.285751,\\\"wave_smoothing\\\":0.63,\\\"modwavealphastart\\\":0.71,\\\"modwavealphaend\\\":1.3,\\\"warpanimspeed\\\":0.01,\\\"warpscale\\\":1.470245,\\\"zoomexp\\\":4.778023,\\\"zoom\\\":0.998162,\\\"warp\\\":0.01,\\\"sx\\\":1.001828,\\\"wave_r\\\":0.65,\\\"wave_g\\\":0.65,\\\"wave_b\\\":0.65,\\\"ob_size\\\":0.005,\\\"ob_r\\\":1,\\\"ob_g\\\":0.5,\\\"ob_b\\\":0.5,\\\"ob_a\\\":1,\\\"ib_size\\\":0.5,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"ib_a\\\":1,\\\"mv_x\\\":64,\\\"mv_y\\\":4.800001,\\\"mv_dx\\\":0.4,\\\"mv_l\\\":1,\\\"mv_r\\\":0,\\\"mv_g\\\":0.5,\\\"mv_a\\\":0.1},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":3,\\\"additive\\\":1,\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"x\\\":1,\\\"y\\\":0.59,\\\"rad\\\":0.559231,\\\"ang\\\":3.39292,\\\"tex_zoom\\\":100,\\\"r\\\":0,\\\"g\\\":1,\\\"b\\\":1,\\\"g2\\\":0,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":1},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x=sin(time/10)*0.1+0.5+(treb_att*0.1);\\\"},{\\\"baseVals\\\":{\\\"sides\\\":13,\\\"additive\\\":1,\\\"x\\\":0.9,\\\"y\\\":0.84,\\\"rad\\\":0.364567,\\\"ang\\\":3.078761,\\\"tex_zoom\\\":4.141463,\\\"r\\\":0.25,\\\"g\\\":0.05,\\\"a\\\":0.2,\\\"g2\\\":0,\\\"b2\\\":1,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"//additive=above(sin(time*50),.95);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":6,\\\"textured\\\":1,\\\"x\\\":0.3,\\\"y\\\":0.7,\\\"rad\\\":1.089252,\\\"ang\\\":0.816814,\\\"tex_ang\\\":3.141592,\\\"tex_zoom\\\":0.504215,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"//tex_ang=(sin(time/4)*0.5+0.5)*6.28;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":3,\\\"textured\\\":1,\\\"rad\\\":0.284278,\\\"ang\\\":3.141593,\\\"tex_ang\\\":4.900885,\\\"tex_zoom\\\":2.987755,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":0.95,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":1},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ang=time/10;\\\\ntex_zoom=3.4+(bass*0.03);\\\\nvar=above(bass_att,0.7);\\\\na=var;\\\\na2=var;\\\\nborder_a=var;\\\\n\\\\n\\\\n//This preset fluctuates between 53.2 and 55.44 fps on my box.  Texture size_2048 Meshsize_36*24\\\\n//On a SuperScan Pro 800 Hitachi\\\\n//On a Radion_9600\\\\n//1280*1024_Screen_Resolution\\\\n//;) hello! I am ATHEN ANDANDA!\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"usedots\\\":1,\\\"thick\\\":1,\\\"additive\\\":1,\\\"r\\\":0,\\\"a\\\":0.06},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"xspout=.5;\\\\nyspout=-.01;\\\\n\\\\npphase=9999*sample*sample*.0001;\\\\npphase2=.1+((sample*3349*sample)%100)*.01;\\\\npheight=((sample*9893)%100)*.002;\\\\nyheight=((sample*1231*sample)%100)*.01;\\\\n\\\\nr=((sample*5454)%100)*.01*abs(sin(time*.25));\\\\ng=((sample*9954)%100)*.01;\\\\n\\\\nxoffset1=(cos((time*pphase2)+pphase)*pheight);\\\\nxoffset2=-1*(cos((time*pphase2)+pphase)*pheight);\\\\n\\\\nlrorient=if(below(cos((time*pphase2)+pphase),cos(((time-.1)*pphase2)+pphase)),0,1);\\\\n\\\\npx=if(equal(lrorient,0),xspout-pheight+xoffset1,xspout+pheight-xoffset2);\\\\n\\\\npy=yspout+(abs(sin((time*pphase2)+pphase))*yheight);\\\\n\\\\nx=px;\\\\ny=py;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"usedots\\\":1,\\\"thick\\\":1,\\\"additive\\\":1,\\\"r\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"pphase=(sample*5671*cos(time*.0001));\\\\npheight=((sample*7654)%100)*.005*sin(time*.2);\\\\n\\\\n//xspout=.5;\\\\nxspout=if(below(abs(sin(time*.2)),.005),.3+(rand(40)*.01),xspout);\\\\n//yspout=.5;\\\\nyspout=if(below(abs(sin(time*.2)),.005),.3+(rand(40)*.01),yspout);\\\\n\\\\npx=xspout+(cos(time+pphase)*pheight);\\\\npy=yspout+(sin(time+pphase)*pheight);\\\\n\\\\nx=px;\\\\ny=py;\\\\na=abs(sin(time*.2)*.3+(treb_att*.1));\\\\n\\\\nr=treb*2;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"thick\\\":1,\\\"additive\\\":1,\\\"b\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"n=sample*6.283;\\\\nphs=-sample * 0.2;\\\\ntm=q1 + phs*4;\\\\n\\\\nflip=flip+1;\\\\nflip=flip*below(flip,2);\\\\n\\\\nxp=0;\\\\nyp=(flip*0.1-0.05)*(sample);\\\\nzp=0;\\\\n\\\\n//spin;\\\\nang=tm*20 + sin(tm*76 + time*4)*0.4;\\\\nsa=sin(ang);ca=cos(ang);\\\\nxr=xp*sa + yp*ca;\\\\nyr=xp*ca - yp*sa;\\\\nzr=zp;\\\\n\\\\nxp=xr;\\\\nyp=yr + 0.05 + (sin(tm)*0.5 + 0.5)*0.2 + 0.05;\\\\nzp=zr;\\\\n\\\\n//wrist movement;\\\\nang=sin(tm*2);\\\\n\\\\nxq=xp;\\\\nsa=sin(ang);ca=cos(ang);\\\\nyq=yp*sa + zp*ca;\\\\nzq=yp*ca - zp*sa;\\\\n\\\\n\\\\nang=tm*8;\\\\nsa=sin(ang);ca=cos(ang);\\\\nxp=xq*sa + yq*ca;\\\\nyp=xq*ca - yq*sa;\\\\nzp=zq;\\\\n\\\\n//forearm movement;\\\\nzp=zp-0.3;\\\\nang=3.14 + sin(tm*2 - 0.5)*2.5;\\\\nxq=xp;\\\\nsa=sin(ang);ca=cos(ang);\\\\nyq=yp*sa + zp*ca;\\\\nzq=yp*ca - zp*sa;\\\\n\\\\n//upper arm twist\\\\nang=-1.0 + cos(tm*3 + 0.5);\\\\nxp=xq*sa + yq*ca;\\\\nyp=xq*ca - yq*sa;\\\\nzp=zq;\\\\n\\\\n//upper arm outward;\\\\nzp=zp-0.35;\\\\nang=cos(tm*1)*1.75 - 1.05;\\\\nsa=sin(ang);ca=cos(ang);\\\\nxq=xp*sa + zp*ca;\\\\nyq=yp;\\\\nzq=xp*ca - zp*sa;\\\\n\\\\n//upper arm up down;\\\\nang=cos(tm);\\\\nxp=xq;\\\\nsa=sin(ang);ca=cos(ang);\\\\nyp=yq*ca - zq*sa;\\\\nzp=yq*sa + zq*ca;\\\\n\\\\n//xp=xq;yp=yq;zp=zq;\\\\n\\\\n\\\\n//project into screenspace and draw on screen\\\\nzp=zp+1.5;\\\\nxs=xp/zp;\\\\nys=yp/zp;\\\\n\\\\nx=xs+0.5;\\\\ny=ys*1.3+0.5;\\\\n\\\\n\\\\na=(1-sample);\\\\n\\\"},{\\\"baseVals\\\":{\\\"usedots\\\":1,\\\"thick\\\":1,\\\"smoothing\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"t1=q1;\\\\n\\\\nt7=.0;\\\\nt8=.45;\\\\n\\\\nddx=.25*cos(5.7119*t1)+2.5963*t1*sin(5.7119*t1);\\\\nddy=.3125*sin(5.7119*t1)-3.2453*t1*cos(5.7119*t1);\\\\nddtan=atan2(ddy,ddx);\\\\nt2=-ddtan;\\\\n\\\\nval1=((-.5*cos(5.7119*t1))*cos(t2)-(-.625*sin(5.7119*t1))*sin(t2));\\\\nval2=((-.5*cos(5.7119*t1))*sin(t2)+(-.625*sin(5.7119*t1))*cos(t2));\\\\n\\\\nt6=-sign(t1);\\\\nt7=t7-val1;\\\\nt8=t8-val2;\\\\n\\\\nt3=q2;\\\",\\\"point_eqs_eel\\\":\\\"sample=pow(sample,.85);\\\\n\\\\nc1=6.2831*t1/(1.1-sample);\\\\nc=cos(c1);\\\\ns=sin(c1);\\\\nc2=sqrt(1-sample);\\\\n\\\\nox=t7-.5*c2*c;\\\\noy=t8-.625*c2*s;\\\\n\\\\nx=t7+((ox-t7)*cos(t2)-(oy-t8)*sin(t2));\\\\ny=t8+((ox-t7)*sin(t2)+(oy-t8)*cos(t2));\\\\n\\\\ninv=1/sqr(1.1-sample);\\\\nfdx=-.25*pow(1-sample,-.5)*c-c2*s*3.1415*t1*inv;\\\\nfdy=-.3125*c2*s+3.9268*c2*c*t1*inv;\\\\ninvMag=1/sqrt(sqr(fdx)+sqr(fdy));\\\\nfdx=fdx*invMag;\\\\nfdy=fdy*invMag;\\\\n\\\\nrdx=fdx*cos(1.5707+t2)-fdy*sin(1.5707+t2);\\\\nrdy=fdx*sin(1.5707+t2)+fdx*cos(1.5707+t2);\\\\ntt=rand(100)/100;\\\\nx=x+rdx*(.15*tt)*(1-sample);\\\\ny=y+rdy*(.15*tt)*(1-sample);\\\\n\\\\nx=x*.55;\\\\ny=(y-.5)*.55+.5;\\\\n\\\\nr=sample;\\\\ng=1-sample;\\\\nb=1;\\\\na=below(sample,.995);\\\\n\\\\n\\\\ny=y+t3;\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"decay=.999;\\\\nwrap=sin(time*10);\\\\nmv_dx=bass;\\\\nib_a=.005;\\\\n\\\\n\\\\nvol=(bass+mid+treb)*0.25;\\\\nvol=vol*vol;\\\\n\\\\nmtime=mtime+vol*0.01*(55/fps);\\\\n\\\\nq1=time*0.5;\\\",\\\"pixel_eqs_eel\\\":\\\"zoom=1.005-(rad/100);\\\\nrot=rad/600;\\\\nsy=-1;\\\",\\\"warp\\\":\\\"\\\",\\\"comp\\\":\\\"\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Rovastar + Loadus + Geiss - FractalDrop (Triple Mix).json\":\n/*!*************************************************************************************!*\\\n  !*** ./presets/converted/Rovastar + Loadus + Geiss - FractalDrop (Triple Mix).json ***!\n  \\*************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":0,\\\"gammaadj\\\":1,\\\"decay\\\":1,\\\"echo_zoom\\\":1.007,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":1,\\\"wave_mode\\\":7,\\\"additivewave\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_a\\\":0.1,\\\"wave_scale\\\":3.815,\\\"wave_smoothing\\\":0.9,\\\"modwavealphastart\\\":0,\\\"modwavealphaend\\\":1.1,\\\"zoom\\\":1.0099,\\\"warp\\\":0.04177,\\\"wave_r\\\":0.65,\\\"wave_g\\\":0.65,\\\"ob_size\\\":0.007,\\\"ib_size\\\":0.26,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0.85,\\\"mv_r\\\":0.5,\\\"mv_g\\\":0.5,\\\"mv_b\\\":0.5,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":3,\\\"x\\\":0.37,\\\"rad\\\":6.81129,\\\"ang\\\":3.64425,\\\"r\\\":0,\\\"a\\\":0.5,\\\"g2\\\":0,\\\"a2\\\":0.5,\\\"border_a\\\":1},\\\"init_eqs_eel\\\":\\\"t1 = rand(100)*0.01;\\\\nt2 = rand(100)*0.01;\\\",\\\"frame_eqs_eel\\\":\\\"ang = q1*(0.303 + 0.01*t1);\\\\nr = min(1,max(0,0+ 0.1*sin(time*0.417 + 1)));\\\\ng = min(1,max(0,0 + 0.1*sin(time*0.391 + 2)));\\\\nb = min(1,max(0,0 + 0.1*sin(time*0.432 + 4)));\\\\nr2 = min(1,max(0,r2 + 0.02*sin(time*0.657 + 3)));\\\\ng2 = min(1,max(0,g2 + 0.02*sin(time*0.737 + 5)));\\\\nb2 = min(1,max(0,b2 + 0.02*sin(time*0.884 + 6)));\\\\nadditive =0.5+0.15*(bass+bass_att);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"additive\\\":1,\\\"textured\\\":1,\\\"x\\\":0.37,\\\"rad\\\":0.89796,\\\"ang\\\":3.64425,\\\"g\\\":1,\\\"b\\\":1,\\\"a\\\":0.5,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"t1 = rand(100)*0.01;\\\\nt2 = rand(100)*0.01;\\\",\\\"frame_eqs_eel\\\":\\\"x = x + 0.07*sin(q1*0.15+3);\\\\ny = y + 0.03*sin(q1*0.19+1);\\\\ntex_ang = q1*(0.01 + 0.0001*t1);\\\\nr = min(1,max(0,r + 0.01*sin(time*0.0417 + 1)));\\\\ng = min(1,max(0,g + 0.01*sin(time*0.391 + 2)));\\\\nb = min(1,max(0,b + 0.01*sin(time*0.432 + 4)));\\\\nr2 = min(1,max(0,r2 + 0.01*sin(time*0.457 + 3)));\\\\ng2 = min(1,max(0,g2 + 0.01*sin(time*0.0437 + 5)));\\\\nb2 = min(1,max(0,b2 + 0.01*sin(time*0.484 + 6)));\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"additive\\\":1,\\\"textured\\\":1,\\\"x\\\":0.67,\\\"y\\\":0.43,\\\"rad\\\":0.51386,\\\"ang\\\":4.20974,\\\"g\\\":1,\\\"b\\\":1,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"t1 = rand(100)*0.01;\\\\nt2 = rand(100)*0.01;\\\",\\\"frame_eqs_eel\\\":\\\"x = x + 0.05*sin(q1*0.017);\\\\ny = y + 0.09*sin(q1*0.013);\\\\ntex_ang = q1*(0.02 + 0.0001*t1);\\\\nrad = rad * (0.9 + 0.2*t2);\\\\nr = min(1,max(0,r + 0.01*sin(time*0.417 + 1)));\\\\ng = min(1,max(0,g + 0.01*sin(time*0.391 + 2)));\\\\nb = min(1,max(0,b + 0.01*sin(time*0.432 + 4)));\\\\nr2 = min(1,max(0,r2 + 0.01*sin(time*0.457 + 3)));\\\\ng2 = min(1,max(0,g2 + 0.01*sin(time*0.437 + 5)));\\\\nb2 = min(1,max(0,b2 + 0.01*sin(time*0.484 + 6)));\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"additive\\\":1,\\\"textured\\\":1,\\\"rad\\\":0.22298,\\\"r\\\":0.6,\\\"g\\\":0.8,\\\"b\\\":1,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = x + 0.08*sin(q1*0.25);\\\\ny = y + 0.1*sin(q1*0.5+2);\\\\nang = time;\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"movement = movement + 0.1*max(0,bass+bass_att-2) + 0.15*pow(bass,3) + 0.005;\\\\nq1 = movement;\\\\nmonitor =q1;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec3 ret_1;\\\\n  vec4 tmpvar_2;\\\\n  tmpvar_2 = texture (sampler_main, uv);\\\\n  ret_1 = (tmpvar_2.xyz + ((tmpvar_2.xyz - \\\\n    ((texture (sampler_blur1, uv).xyz * scale1) + bias1)\\\\n  ) * 0.5));\\\\n  ret_1 = (ret_1 * 0.9);\\\\n  ret_1 = (ret_1 + ((\\\\n    ((texture (sampler_noise_lq, ((\\\\n      (uv_orig * texsize.xy)\\\\n     * \\\\n      (texsize_noise_lq.zw * 0.4)\\\\n    ) + rand_frame.xy)).xyz - 0.5) / 256.0)\\\\n   * 12.0) * clamp (\\\\n    (treb_att - 1.0)\\\\n  , 0.0, 1.0)));\\\\n  vec3 tmpvar_3;\\\\n  tmpvar_3 = mix (ret_1, vec3(dot (ret_1, vec3(0.32, 0.49, 0.29))), vec3(0.08, 0.08, 0.08));\\\\n  ret_1 = tmpvar_3;\\\\n  vec4 tmpvar_4;\\\\n  tmpvar_4.w = 1.0;\\\\n  tmpvar_4.xyz = tmpvar_3;\\\\n  ret = tmpvar_4.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec2 uv_1;\\\\n  vec2 uv3_2;\\\\n  vec2 uv2_3;\\\\n  uv_1 = (uv - 0.5);\\\\n  uv_1 = (uv_1 * aspect.xy);\\\\n  uv2_3.x = ((uv_1.x * -0.497265) - (uv_1.y * 0.8675987));\\\\n  uv2_3.y = ((uv_1.x * 0.8675987) + (uv_1.y * -0.497265));\\\\n  uv3_2.x = ((uv_1.x * -0.5000263) - (uv_1.y * -0.8660102));\\\\n  uv3_2.y = ((uv_1.x * -0.8660102) + (uv_1.y * -0.5000263));\\\\n  vec4 tmpvar_4;\\\\n  tmpvar_4.w = 1.0;\\\\n  tmpvar_4.xyz = max (max (texture (sampler_main, (uv_1 + 0.5)).xyz, texture (sampler_main, (uv2_3 + 0.5)).xyz), texture (sampler_main, (uv3_2 + 0.5)).xyz);\\\\n  ret = tmpvar_4.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Rovastar - Oozing Resistance.json\":\n/*!*************************************************************!*\\\n  !*** ./presets/converted/Rovastar - Oozing Resistance.json ***!\n  \\*************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":1,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1,\\\"decay\\\":1,\\\"echo_zoom\\\":1.006596,\\\"echo_alpha\\\":0.5,\\\"additivewave\\\":1,\\\"wave_thick\\\":1,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"wave_a\\\":4.099998,\\\"wave_scale\\\":0.01,\\\"wave_smoothing\\\":0.63,\\\"wave_mystery\\\":-0.4,\\\"modwavealphastart\\\":0.71,\\\"modwavealphaend\\\":1.3,\\\"warpscale\\\":1.331,\\\"zoom\\\":0.999513,\\\"warp\\\":0.01,\\\"wave_r\\\":0.65,\\\"wave_g\\\":0.65,\\\"wave_b\\\":0.65,\\\"ob_size\\\":0.005,\\\"ob_r\\\":0.01,\\\"ob_a\\\":1,\\\"ib_size\\\":0.26,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0.5,\\\"mv_r\\\":0.35,\\\"mv_g\\\":0.35,\\\"mv_b\\\":0.35,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ob_r = 0.5+0.5*sin(2*time);\\\\nob_g = 0.5+0.5*sin(1.23*time);\\\\nob_b = 0.5+0.5*sin(time*1.321);\\\\nwave_a =0;\\\\nq8 =oldq8+ 0.003*(pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps);\\\\noldq8 = q8;\\\\nwarp=0;\\\",\\\"pixel_eqs_eel\\\":\\\"rot = 0.1*(rad+cos((5+5*sin(q8*1.211)*x)-0.5) -sin(((5+5*sin(q8*0.973))*y)-0.5));\\\\ndx = 0.005*(cos((5+5*sin(q8*1.311)*x)-0.5) -sin(((5+5*sin(q8*0.9431))*y)-0.5));\\\\ndy = 0.005*(cos((5+5*sin(q8*1.021)*x)-0.5) -sin(((5+5*sin(q8*0.987))*y)-0.5));\\\\nzoom =1- 0.005*(rad+cos((5+5*sin(q8*0.943)*x)-0.5) -sin(((5+5*sin(q8*1.0961))*y)-0.5));\\\",\\\"warp\\\":\\\"\\\",\\\"comp\\\":\\\"\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/ShadowHarlequin - LovelyShinySquares [ liquid starburst rmx ] - unchained + rovaster - luckless - martin - starfield sector.json\":\n/*!************************************************************************************************************************************************************!*\\\n  !*** ./presets/converted/ShadowHarlequin - LovelyShinySquares [ liquid starburst rmx ] - unchained + rovaster - luckless - martin - starfield sector.json ***!\n  \\************************************************************************************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"gammaadj\\\":2.7,\\\"echo_zoom\\\":1,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":3,\\\"wave_mode\\\":4,\\\"additivewave\\\":1,\\\"wave_thick\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wrap\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":0.865,\\\"wave_scale\\\":3.75,\\\"wave_smoothing\\\":0,\\\"modwavealphastart\\\":0.4,\\\"modwavealphaend\\\":1.3,\\\"warpanimspeed\\\":0.01,\\\"warpscale\\\":100,\\\"zoomexp\\\":0.32545,\\\"warp\\\":0.01,\\\"wave_r\\\":0.65,\\\"wave_g\\\":0.65,\\\"wave_b\\\":0.65,\\\"ob_size\\\":0.005,\\\"ob_a\\\":1,\\\"ib_size\\\":0,\\\"ib_r\\\":1,\\\"ib_g\\\":1,\\\"ib_b\\\":1,\\\"ib_a\\\":1,\\\"mv_x\\\":64,\\\"mv_y\\\":9.6,\\\"mv_l\\\":5,\\\"mv_r\\\":0,\\\"mv_g\\\":0,\\\"mv_b\\\":0,\\\"mv_a\\\":0.3},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"textured\\\":1,\\\"x\\\":0.37,\\\"rad\\\":100,\\\"ang\\\":3.64425,\\\"r\\\":0,\\\"a\\\":0.1,\\\"g2\\\":0,\\\"a2\\\":0.13,\\\"border_a\\\":1},\\\"init_eqs_eel\\\":\\\"t1 = rand(100)*0.01;\\\\nt2 = rand(100)*0.01;\\\",\\\"frame_eqs_eel\\\":\\\"tex_ang = time*(0.3 + 0.1*t1);\\\\nrad = rad * (0.9 + 0.2*t2);\\\\nr = min(1,max(0,r + 0.2*sin(time*0.417 + 1)));\\\\ng = min(1,max(0,g + 0.2*sin(time*0.391 + 2)));\\\\nb = min(1,max(0,b + 0.2*sin(time*0.432 + 4)));\\\\nr2 = min(1,max(0,r2 + 0.2*sin(time*0.657 + 3)));\\\\ng2 = min(1,max(0,g2 + 0.2*sin(time*0.737 + 5)));\\\\nb2 = min(1,max(0,b2 + 0.2*sin(time*0.884 + 6)));\\\\n//a1 = (bass_att);\\\\na1 = 0.3 + 0.1 * sin(treb_att * .55);\\\\nmv_l = 3 + 1 * (treb_att * .25);\\\\n\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"additive\\\":1,\\\"textured\\\":1,\\\"x\\\":0.37,\\\"rad\\\":0.89796,\\\"ang\\\":3.64425,\\\"r\\\":0,\\\"a\\\":0.1,\\\"g2\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"t1 = rand(100)*0.01;\\\\nt2 = rand(100)*0.01;\\\",\\\"frame_eqs_eel\\\":\\\"x = x + 0.05*sin(mid_att*0.15+3);\\\\ny = y + 0.03*sin(mid_att*0.19+1);\\\\ntex_ang = bass_att*(0.1 + 0.1*treb_att);\\\\nrad = rad * (0.9 + 0.6*treb_att);\\\\n\\\\n\\\\n\\\\nx = x + sin(treb_att * .005);\\\\ny = y + sin(mid_att * .013);\\\\na = 0 + (treb * .1);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":13,\\\"additive\\\":1,\\\"textured\\\":1,\\\"x\\\":0.77,\\\"y\\\":0.43,\\\"rad\\\":0.51386,\\\"ang\\\":4.20974,\\\"g\\\":1,\\\"b\\\":1,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"t1 = rand(100)*0.01;\\\\nt2 = rand(100)*0.01;\\\",\\\"frame_eqs_eel\\\":\\\"x = x + 0.05*(bass_att*0.07);\\\\ny = y + 0.03*(bass_att*0.03);\\\\ntex_ang = mid_att*(0.8 + 0.1*t1);\\\\nrad = rad * (0.9 + 0.2*mid_att);\\\\nr = min(1,max(0,r + 0.1*(bass_att*0.417 + 1)));\\\\ng = min(1,max(0,g + 0.1*(mid_att*0.391 + 2)));\\\\nb = min(1,max(0,b + 0.1*(treb_att*0.432 + 4)));\\\\nr2 = min(1,max(0,r2 + 0.1*sin(bass_att*0.457 + 3)));\\\\ng2 = min(1,max(0,g2 + 0.1*sin(mid_att*0.437 + 5)));\\\\nb2 = min(1,max(0,b2 + 0.1*sin(treb_att*0.484 + 6)));\\\\nsides = treb_att;\\\\n\\\\nx = x + sin(mid_att * .019);\\\\ny = y + sin(treb_att * .015);\\\\nnum_inst = sin(mid_att * .25);\\\\n\\\\nr = 0.5 + 0.5*sin(frame*2.5);\\\\nb = 0.5 + 0.5*sin(frame*0.5 + 2.094);\\\\ng = 0.5 + 0.5*sin(frame*0.5 + 1.188);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":3,\\\"additive\\\":1,\\\"textured\\\":1,\\\"y\\\":0.7,\\\"rad\\\":1.33692,\\\"r\\\":0,\\\"g\\\":0.8,\\\"b\\\":1,\\\"a\\\":0.1,\\\"g2\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = x + 0.2*sin(treb_att*0.25);\\\\ny = y + 0.1*sin(treb_att*0.5+2);\\\\nrot = mid_att * .45;\\\\n\\\\nr = min(1,max(0,r + 0.1*(bass_att*0.417 + 1)));\\\\ng = min(1,max(0,g + 0.1*(mid_att*0.391 + 2)));\\\\nb = min(1,max(0,b + 0.1*(treb_att*0.432 + 4)));\\\\nr2 = min(1,max(0,r2 + 0.1*sin(bass_att*0.457 + 3)));\\\\ng2 = min(1,max(0,g2 + 0.1*sin(mid_att*0.437 + 5)));\\\\nb2 = min(1,max(0,b2 + 0.1*sin(treb_att*0.484 + 6)));\\\\nang = sin(treb_att);\\\\n\\\\nx = x + sin(mid_att * .016);\\\\ny = x + sin(treb_att * .015);\\\\nnum_inst = sin(treb_att * .35);\\\\n\\\\nr = 0.5 + 0.5*sin(frame*2.5);\\\\nb = 0.5 + 0.5*sin(frame*0.5 + 2.094);\\\\ng = 0.5 + 0.5*sin(frame*0.5 + 1.188);\\\\n\\\\n\\\\nrad = rad + (treb * .001);\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"spectrum\\\":1,\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":9.86086},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(bass_att,1)*3.1415*.01*bass_att);\\\\nma=ma-(above(treb_att,1)*3.1415*.01*treb_att);\\\\n\\\\nmx=mx+(.0002*cos(ma));\\\\nmy=my+(.0002*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\n//a=(above(bass+mid+treb,.8));\\\\n//a = bass_att * .35;\\\\n\\\\nr = sin(treb+att * .45);\\\\nb = sin(treb+att * .65);\\\\ng = sin(treb+att * .25);\\\\n\\\\n\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"spectrum\\\":1,\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":27.42973},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"//r = min(1,max(0,r + 0.1*(bass_att*0.217 + 1)));\\\\n//g = min(1,max(0,g + 0.1*(treb_att*0.191 + 2)));\\\\n//b = min(1,max(0,b + 0.1*sin(mid_att*0.232 + 4)));\\\\n//r2 = min(1,max(0,r2 + 0.1*sin(bass_att*0.257 + 3)));\\\\n//g2 = min(1,max(0,g2 + 0.1*sin(treb_att*0.237 + 5)));\\\\n//b2 = min(1,max(0,b2 + 0.1*sin(mid_att*0.284 + 6)));\\\\n\\\\n\\\\na1 = treb_att * .25;\\\\na2 = mid_att * .15;\\\\na3 = treb_att * .25;\\\\n\\\\n\\\\nr = sin(treb_att);\\\\nb = sin(treb_att);\\\\ng = sin(treb_att);\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(bass_att,1)*3.1415*.01*bass_att);\\\\nma=ma-(above(treb_att,1)*3.1415*.01*treb_att);\\\\n\\\\nmx=mx+(.0002*cos(ma));\\\\nmy=my+(.0002*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\n//a=(above(bass+mid+treb,.8));\\\\n//a = bass_att * .35;\\\\n\\\\nr = sin(treb+att * .45);\\\\nb = sin(treb+att * .65);\\\\ng = sin(treb+att * .25);\\\\n\\\\n\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":6.62306,\\\"r\\\":0.5,\\\"g\\\":0.5,\\\"b\\\":0.5},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"//r = min(1,max(0,r + 0.1*(bass_att*0.217 + 1)));\\\\n//g = min(1,max(0,g + 0.1*(treb_att*0.191 + 2)));\\\\n//b = min(1,max(0,b + 0.1*(mid_att*0.232 + 4)));\\\\nr2 = min(1,max(0,r2 + 0.1*sin(bass_att*0.257 + 3)));\\\\ng2 = min(1,max(0,g2 + 0.1*sin(treb_att*0.237 + 5)));\\\\nb2 = min(1,max(0,b2 + 0.1*sin(mid_att*0.284 + 6)));\\\\na1 = treb_att * .25;\\\\na2 = mid_att * .15;\\\\na3 = treb_att * .25;\\\\n\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(bass_att,1)*3.1415*.01*bass_att);\\\\nma=ma-(above(treb_att,1)*3.1415*.01*treb_att);\\\\n\\\\nmx=mx+(.0002*cos(ma));\\\\nmy=my+(.0002*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\n//a=(above(bass+mid+treb,.8));\\\\n//a = bass_att * .35;\\\\n\\\\nr = sin(treb+att * .45);\\\\nb = sin(treb+att * .65);\\\\ng = sin(treb+att * .25);\\\\n\\\\n\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"samples\\\":142,\\\"thick\\\":1,\\\"scaling\\\":8.9269,\\\"r\\\":0.6,\\\"g\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"//r = min(1,max(0,r + 0.1*(bass_att*0.217 + 1)));\\\\n//g = min(1,max(0,g + 0.1*(treb_att*0.191 + 2)));\\\\n//b = min(1,max(0,b + 0.1*(mid_att*0.232 + 4)));\\\\nr2 = min(1,max(0,r2 + 0.1*sin(bass_att*0.257 + 3)));\\\\ng2 = min(1,max(0,g2 + 0.1*sin(treb_att*0.237 + 5)));\\\\nb2 = min(1,max(0,b2 + 0.1*sin(mid_att*0.284 + 6)));\\\\n\\\\n\\\\nr = 255;\\\\nb = 255;\\\\ng = 255;\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(bass_att,1)*3.1415*.01*bass_att);\\\\nma=ma-(above(treb_att,1)*3.1415*.01*treb_att);\\\\n\\\\nmx=mx+(.0002*cos(ma));\\\\nmy=my+(.0002*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\n//a=(above(bass+mid+treb,.8));\\\\n//a = bass_att * .35;\\\\n\\\\nr = sin(treb+att * .45);\\\\nb = sin(treb+att * .65);\\\\ng = sin(treb+att * .25);\\\\n\\\\n\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"//Variables controling the glitch effect////////////////////////////////////////\\\\ndecayrate = 0.09;   //How fast the glitch effect decays back to original image\\\\ntrebresp = 2.8;    //Level of treb needed for effect to take place\\\\n////////////////////////////////////////////////////////////////////////////////\\\\n\\\\n\\\\ncdecay = pow(decayrate, 30/fps);\\\\ncount = above(treb, trebresp)*1 + (1-above(treb, 3))*count;\\\\ncount = count - above(count, cdecay)*cdecay;\\\\nq29=count;\\\\nmonitor = q29;\\\\n\\\\n\\\\n\\\\ndecay = 0;\\\\n\\\\ndt = 0.02;\\\\n\\\\nh = h + v*dt;\\\\n\\\\nv = v*0.986 + a*dt;\\\\na = -(h - 0.5)*0.4 + sqrt(- min(0,(w1v+w2v)*0.1)) - .175;\\\\n\\\\nmonitor = w2;\\\\n\\\\n\\\\nw1 = w1 + w1v*dt;\\\\nw1v = w1v*0.98 + w1a*dt;\\\\nw1a = -(w1)*20 - w2a*0.1   + av*30;\\\\n\\\\nw2 = w2 + w2v*dt;\\\\nw2v = w2v*0.98 + w2a*dt;\\\\nw2a = -(w2-w1)*20;\\\\n\\\\nbb = bb*0.99 + bass*0.02;\\\\nmm = mm*0.99 + mid*0.02;\\\\ntt = tt*0.99 + treb*0.02;\\\\n\\\\nmi = min(min(bb,mm),tt);\\\\nma = max(max(bb,mm),tt);\\\\nav = (bb+mm+tt-mi-ma);\\\\nq5 = av;\\\\navn = (av-mi)/(ma-mi);\\\\nav = abs(avo-avn);\\\\navo = avn;\\\\n\\\\nq1 = h*0.8 + 0.12;\\\\nq2 = (w1);\\\\nq3 = (w2 + w1);\\\\nq4 = 0.1+ avo*0.1;\\\\n\\\\n\\\\n\\\\nwave_r = 0.5 + 0.5*sin(frame*2.5);\\\\nwave_b = 0.5 + 0.5*sin(frame*0.5 + 1.094);\\\\nwave_g = 0.5 + 0.5*sin(frame*0.5 + 1.188);\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec2 uv_1;\\\\n  vec3 ret_2;\\\\n  vec2 tmpvar_3;\\\\n  tmpvar_3 = ((uv * texsize.xy) * 0.08);\\\\n  uv_1 = (uv - ((\\\\n    (sin(tmpvar_3) / cos(tmpvar_3))\\\\n   * texsize.zw) * (treb * 3.0)));\\\\n  vec3 tmpvar_4;\\\\n  tmpvar_4 = (texture (sampler_main, uv_1).xyz + (vec3(dot (texture (sampler_noise_lq, \\\\n    ((((texsize.xy * texsize_noise_lq.zw).x * uv) * 0.02) + (0.1 * rand_frame).xy)\\\\n  ), vec4(0.32, 0.49, 0.29, 0.0))) / 30.0));\\\\n  ret_2 = ((mix (tmpvar_4, \\\\n    (1.0 - tmpvar_4.zyx)\\\\n  , vec3(0.01, 0.01, 0.01)) - 0.03) - (0.2 * pow (\\\\n    (1.0 - rad)\\\\n  , \\\\n    (treb * 90.0)\\\\n  )));\\\\n  ret_2 = (ret_2 + (ret_2 * (vol * 0.001)));\\\\n  ret_2 = (ret_2 + (ret_2 * (treb * 0.025)));\\\\n  ret_2 = (ret_2 + 0.001);\\\\n  uv_1 = (uv_1 + ((treb_att * 0.001) * texture (sampler_main, uv_1)).xy);\\\\n  ret_2 = (ret_2 + ((\\\\n    (texture (sampler_blur3, uv_1).xyz * scale3)\\\\n   + bias3) * 0.05));\\\\n  vec4 tmpvar_5;\\\\n  tmpvar_5.w = 1.0;\\\\n  tmpvar_5.xyz = ret_2;\\\\n  ret = tmpvar_5.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec2 uv_1;\\\\n  vec3 crisp_2;\\\\n  vec2 uv3_3;\\\\n  vec2 uv2_4;\\\\n  vec3 ret_5;\\\\n  vec2 tmpvar_6;\\\\n  vec2 tmpvar_7;\\\\n  tmpvar_7 = (uv - 0.5);\\\\n  tmpvar_6 = (tmpvar_7 * aspect.xy);\\\\n  float tmpvar_8;\\\\n  tmpvar_8 = (0.1 / (sqrt(\\\\n    dot (tmpvar_6, tmpvar_6)\\\\n  ) + 0.05));\\\\n  vec2 tmpvar_9;\\\\n  float tmpvar_10;\\\\n  tmpvar_10 = (ang / 3.14);\\\\n  tmpvar_9.x = tmpvar_10;\\\\n  tmpvar_9.y = (tmpvar_8 * 1.5);\\\\n  uv2_4.y = (tmpvar_9.y + (0.1 * time));\\\\n  uv2_4.x = (tmpvar_10 + (0.02 * time));\\\\n  uv3_3.y = (tmpvar_8 + q30);\\\\n  uv3_3.x = (tmpvar_10 + (time / 32.0));\\\\n  crisp_2 = ((texture (sampler_main, fract(uv2_4)).xyz + (2.0 * texture (sampler_main, \\\\n    fract(uv3_3)\\\\n  ).xyz)) + ((2.0 * \\\\n    ((texture (sampler_blur2, fract(uv2_4)).xyz * scale2) + bias2)\\\\n  ) + (2.0 * \\\\n    ((texture (sampler_blur2, fract(uv3_3)).xyz * scale2) + bias2)\\\\n  )));\\\\n  crisp_2 = ((3.0 * crisp_2) * rad);\\\\n  float tmpvar_11;\\\\n  tmpvar_11 = clamp ((1.0 - (4.0 * rad)), 0.0, 1.0);\\\\n  ret_5 = ((crisp_2 + (\\\\n    ((vec3(1.0, 0.0, 1.0) * uv.y) * pow ((1.0 - rad), 8.0))\\\\n   * tmpvar_11)) + (tmpvar_11 * texture (sampler_main, fract(uv)).xyz));\\\\n  uv_1 = ((tmpvar_7 * aspect.xy) + 0.5);\\\\n  vec2 tmpvar_12;\\\\n  tmpvar_12 = (1.0 - uv_1);\\\\n  vec3 tmpvar_13;\\\\n  tmpvar_13 = (texture (sampler_main, uv_1).xyz + (2.0 * (\\\\n    (texture (sampler_blur2, uv_1).xyz * scale2)\\\\n   + bias2)));\\\\n  vec3 tmpvar_14;\\\\n  tmpvar_14 = (texture (sampler_main, tmpvar_12).xyz + (2.0 * (\\\\n    (texture (sampler_blur2, tmpvar_12).xyz * scale2)\\\\n   + bias2)));\\\\n  vec3 tmpvar_15;\\\\n  tmpvar_15 = mix (ret_5, mix ((tmpvar_13 * tmpvar_14), (tmpvar_13 + tmpvar_14), vec3((q29 * 0.16))), vec3((q29 * 0.5)));\\\\n  vec3 tmpvar_16;\\\\n  tmpvar_16 = mix (tmpvar_15, (1.0 - tmpvar_15), ((q29 * tmpvar_15) * (rad * \\\\n    (2.0 - q29)\\\\n  )));\\\\n  ret_5 = (tmpvar_16 * (tmpvar_16 + (treb * 0.001)));\\\\n  vec4 tmpvar_17;\\\\n  tmpvar_17.w = 1.0;\\\\n  tmpvar_17.xyz = ret_5;\\\\n  ret = tmpvar_17.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/TonyMilkdrop - Leonardo Da Vinci's Balloon [Flexi - merry-go-round + techstyle].json\":\n/*!****************************************************************************************************************!*\\\n  !*** ./presets/converted/TonyMilkdrop - Leonardo Da Vinci's Balloon [Flexi - merry-go-round + techstyle].json ***!\n  \\****************************************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":3,\\\"echo_zoom\\\":1,\\\"wave_mode\\\":1,\\\"wave_thick\\\":1,\\\"wrap\\\":0,\\\"invert\\\":1,\\\"wave_scale\\\":0.5,\\\"wave_smoothing\\\":0.45,\\\"warpanimspeed\\\":2.217,\\\"warpscale\\\":100,\\\"zoomexp\\\":100,\\\"zoom\\\":1.01,\\\"warp\\\":1.25946,\\\"wave_r\\\":0,\\\"wave_g\\\":0,\\\"wave_b\\\":0,\\\"ob_r\\\":1,\\\"ob_g\\\":1,\\\"ob_b\\\":1,\\\"ob_a\\\":1,\\\"ib_r\\\":1,\\\"ib_g\\\":1,\\\"ib_b\\\":1,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"q1 = 0.0003*(pow(1.2+1*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6));\\\\nmonitor = q1;\\\\nwave_r = wave_r + 0.5*sin(time*1.13);\\\\nwave_g = wave_g + 0.5*sin(time*1.23);\\\\nwave_b = wave_b + 0.5*sin(time*1.33);\\\\nob_r = ob_r + 1*sin(time*2.26);\\\\nob_g = ob_g + 1*sin(time*2.46);\\\\nob_b = ob_b + 1*sin(time*2.66);\\\",\\\"pixel_eqs_eel\\\":\\\"zoom = zoom + 0.125*sin(q1);\\\\nrot = rot + 0.25*sin(fps*100)*q1/2;\\\\nzoom = zoom - 0.05*sin(rad);\\\\nrot = rot + 0.05*sin(fps*5);\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec3 ret_1;\\\\n  vec2 tmpvar_2;\\\\n  tmpvar_2 = fract(uv);\\\\n  vec2 tmpvar_3;\\\\n  tmpvar_3 = (((uv_orig * texsize.xy) * texsize_noise_lq.zw) + rand_frame.xy);\\\\n  vec2 tmpvar_4;\\\\n  tmpvar_4 = (texsize.zw * 12.0);\\\\n  vec3 tmpvar_5;\\\\n  tmpvar_5 = (((2.0 * \\\\n    ((texture (sampler_blur3, (uv_orig + (vec2(1.0, 0.0) * tmpvar_4))).xyz * scale3) + bias3)\\\\n  ) - (2.0 * \\\\n    ((texture (sampler_blur3, (uv_orig - (vec2(1.0, 0.0) * tmpvar_4))).xyz * scale3) + bias3)\\\\n  )) * 0.5);\\\\n  vec3 tmpvar_6;\\\\n  tmpvar_6 = (((2.0 * \\\\n    ((texture (sampler_blur3, (uv_orig + (vec2(0.0, 1.0) * tmpvar_4))).xyz * scale3) + bias3)\\\\n  ) - (2.0 * \\\\n    ((texture (sampler_blur3, (uv_orig - (vec2(0.0, 1.0) * tmpvar_4))).xyz * scale3) + bias3)\\\\n  )) * 0.5);\\\\n  ret_1.x = ((texture (sampler_fc_main, tmpvar_2).x - (\\\\n    (((texture (sampler_blur3, tmpvar_2).xyz * scale3) + bias3) - texture (sampler_fc_main, tmpvar_2).xyz)\\\\n  .x * 0.1)) - 0.035);\\\\n  vec2 tmpvar_7;\\\\n  tmpvar_7.x = tmpvar_5.x;\\\\n  tmpvar_7.y = tmpvar_6.x;\\\\n  vec2 tmpvar_8;\\\\n  tmpvar_8.x = tmpvar_5.y;\\\\n  tmpvar_8.y = tmpvar_6.y;\\\\n  ret_1.y = (((texture (sampler_fc_main, \\\\n    (((uv_orig + (\\\\n      ((texture (sampler_noise_lq, tmpvar_3).xy - 0.5) * texsize.zw)\\\\n     * 4.0)) - ((tmpvar_7 * texsize.zw) * 4.0)) + ((tmpvar_8 * texsize.zw) * 8.0))\\\\n  ).y + \\\\n    ((texture (sampler_noise_lq, tmpvar_3).xyz - 0.5) * 0.1)\\\\n  ) - 0.012) + (texture (sampler_pc_main, uv_orig).z * 0.2)).x;\\\\n  vec2 tmpvar_9;\\\\n  tmpvar_9.x = tmpvar_6.x;\\\\n  tmpvar_9.y = -(tmpvar_5.x);\\\\n  vec2 tmpvar_10;\\\\n  tmpvar_10 = ((uv_orig + (\\\\n    ((texture (sampler_noise_lq, tmpvar_3).xy - 0.5) * texsize.zw)\\\\n   * 2.0)) + ((tmpvar_9 * texsize.zw) * 64.0));\\\\n  ret_1.z = (((\\\\n    (texture (sampler_fc_main, tmpvar_10).z + ((texture (sampler_fc_main, tmpvar_10).z - (\\\\n      (texture (sampler_blur2, tmpvar_10).xyz * scale2)\\\\n     + bias2).z) * 0.2))\\\\n   + \\\\n    (texture (sampler_noise_lq, tmpvar_3).xyz * 0.1)\\\\n  ) - (\\\\n    (texture (sampler_blur3, uv_orig).xyz * scale3)\\\\n   + bias3).x) - (clamp (\\\\n    (1.0 - ((texture (sampler_blur2, uv_orig).xyz * scale2) + bias2).x)\\\\n  , 0.0, 1.0) * 0.04)).x;\\\\n  vec4 tmpvar_11;\\\\n  tmpvar_11.w = 1.0;\\\\n  tmpvar_11.xyz = ret_1;\\\\n  ret = tmpvar_11.xyz;\\\\n }\\\",\\\"comp\\\":\\\"vec2 xlat_mutabled;\\\\nvec3 xlat_mutabledx;\\\\nvec3 xlat_mutabledy;\\\\n shader_body { \\\\n  vec3 ret_1;\\\\n  xlat_mutabled = (texsize.zw * 1.5);\\\\n  xlat_mutabledx = (texture (sampler_main, (uv_orig + (vec2(1.0, 0.0) * xlat_mutabled))).xyz - texture (sampler_main, (uv_orig - (vec2(1.0, 0.0) * xlat_mutabled))).xyz);\\\\n  xlat_mutabledy = (texture (sampler_main, (uv_orig + (vec2(0.0, 1.0) * xlat_mutabled))).xyz - texture (sampler_main, (uv_orig - (vec2(0.0, 1.0) * xlat_mutabled))).xyz);\\\\n  vec2 tmpvar_2;\\\\n  tmpvar_2.x = xlat_mutabledx.y;\\\\n  tmpvar_2.y = xlat_mutabledy.y;\\\\n  vec2 x_3;\\\\n  x_3 = (tmpvar_2 * 8.0);\\\\n  ret_1 = (((texture (sampler_main, uv).x * \\\\n    (1.0 - sqrt(dot (x_3, x_3)))\\\\n  ) * pow (hue_shader, vec3(6.0, 6.0, 6.0))) * 1.4);\\\\n  vec2 tmpvar_4;\\\\n  tmpvar_4.x = xlat_mutabledx.z;\\\\n  tmpvar_4.y = xlat_mutabledy.z;\\\\n  vec2 x_5;\\\\n  x_5 = (tmpvar_4 * 4.0);\\\\n  vec3 tmpvar_6;\\\\n  tmpvar_6 = mix (ret_1, vec3(1.0, 1.0, 1.0), vec3(sqrt(dot (x_5, x_5))));\\\\n  ret_1 = tmpvar_6;\\\\n  vec4 tmpvar_7;\\\\n  tmpvar_7.w = 1.0;\\\\n  tmpvar_7.xyz = tmpvar_6;\\\\n  ret = tmpvar_7.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/TonyMilkdrop - Magellan's Nebula [Flexi - you enter first + multiverse].json\":\n/*!********************************************************************************************************!*\\\n  !*** ./presets/converted/TonyMilkdrop - Magellan's Nebula [Flexi - you enter first + multiverse].json ***!\n  \\********************************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":3,\\\"gammaadj\\\":1.3,\\\"decay\\\":1,\\\"echo_zoom\\\":1.75,\\\"echo_alpha\\\":0.15,\\\"echo_orient\\\":3,\\\"wave_mode\\\":1,\\\"wave_dots\\\":1,\\\"darken\\\":1,\\\"wave_scale\\\":0.5,\\\"wave_smoothing\\\":0.9,\\\"warp\\\":0.01,\\\"mv_l\\\":5},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"r = r + 1*sin(time*0.339);\\\\ng = g + 1*sin(time*0.369);\\\\nb = b + 1*sin(time*0.399);\\\\nr2 = r2 + 1*sin(time*0.113);\\\\ng2 = g2 + 1*sin(time*0.123);\\\\nb2 = b2 + 1*sin(time*0.133);\\\\nrad = q1/3;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"q1 = 0.0003*(pow(1+1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6));\\\\nmv_a = q1;\\\\nmv_x = mv_x + 1*sin(time);\\\\nmv_y = mv_y + 1*cos(time);\\\\nmv_dx = mv_dx + 1.25*sin(fps*8);\\\\nmv_dy = mv_dy + 1.35*sin(fps*8);\\\\nmv_r = mv_r + 1*sin(time*0.565);\\\\nmv_g = mv_g + 1*sin(time*0.615);\\\\nmv_b = mv_b + 1*sin(time*0.665);\\\\nwave_r = wave_r + 0.5*sin(time*1.13);\\\\nwave_g = wave_g + 0.5*sin(time*1.23);\\\\nwave_b = wave_b + 0.5*sin(time*1.33);\\\",\\\"pixel_eqs_eel\\\":\\\"zoom = zoom + 0.0125*q1;\\\\nrot = rot + 0.025*sin(fps*10)*q1;\\\\nwarp = 0;\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec2 my_uv_1;\\\\n  vec3 ret_2;\\\\n  vec3 tmpvar_3;\\\\n  tmpvar_3 = ((640.0 * texsize.z) * ((2.0 * \\\\n    ((texture (sampler_blur2, (uv + vec2(0.01, 0.0))).xyz * scale2) + bias2)\\\\n  ) - (2.0 * \\\\n    ((texture (sampler_blur2, (uv - vec2(0.01, 0.0))).xyz * scale2) + bias2)\\\\n  )));\\\\n  vec3 tmpvar_4;\\\\n  tmpvar_4 = ((512.0 * texsize.w) * ((2.0 * \\\\n    ((texture (sampler_blur2, (uv + vec2(0.0, 0.01))).xyz * scale2) + bias2)\\\\n  ) - (2.0 * \\\\n    ((texture (sampler_blur2, (uv - vec2(0.0, 0.01))).xyz * scale2) + bias2)\\\\n  )));\\\\n  vec2 tmpvar_5;\\\\n  tmpvar_5.x = tmpvar_3.y;\\\\n  tmpvar_5.y = tmpvar_4.y;\\\\n  vec2 tmpvar_6;\\\\n  tmpvar_6.x = tmpvar_3.x;\\\\n  tmpvar_6.y = tmpvar_4.x;\\\\n  vec2 tmpvar_7;\\\\n  tmpvar_7.x = tmpvar_4.y;\\\\n  tmpvar_7.y = -(tmpvar_3.y);\\\\n  vec2 tmpvar_8;\\\\n  tmpvar_8 = (uv - ((\\\\n    ((tmpvar_5 * 0.3) + (tmpvar_6 * 0.1))\\\\n   + \\\\n    (tmpvar_7 * 0.01)\\\\n  ) * 0.01));\\\\n  ret_2.x = texture (sampler_fw_main, (tmpvar_8 - floor(tmpvar_8))).x;\\\\n  ret_2.x = (ret_2.x + ((\\\\n    (2.0 * ret_2.x)\\\\n   - \\\\n    (2.0 * ((texture (sampler_blur1, tmpvar_8).xyz * scale1) + bias1).x)\\\\n  ) * 0.25));\\\\n  vec2 tmpvar_9;\\\\n  tmpvar_9.x = tmpvar_3.y;\\\\n  tmpvar_9.y = tmpvar_4.y;\\\\n  vec2 tmpvar_10;\\\\n  tmpvar_10.x = tmpvar_4.x;\\\\n  tmpvar_10.y = -(tmpvar_3.y);\\\\n  my_uv_1 = ((uv - (tmpvar_9 * 0.01)) + (tmpvar_10 * 0.001));\\\\n  ret_2.y = texture (sampler_fw_main, (my_uv_1 - floor(my_uv_1))).y;\\\\n  ret_2.y = (ret_2.y + ((\\\\n    ((2.0 * ret_2.y) - (2.0 * ((texture (sampler_blur3, my_uv_1).xyz * scale3) + bias3).y))\\\\n   * 0.025) + 0.01));\\\\n  vec4 tmpvar_11;\\\\n  tmpvar_11.w = 1.0;\\\\n  tmpvar_11.xyz = ret_2;\\\\n  ret = tmpvar_11.xyz;\\\\n }\\\",\\\"comp\\\":\\\"vec2 xlat_mutablefactorA;\\\\n shader_body { \\\\n  vec2 uv_1;\\\\n  vec2 dz_2;\\\\n  vec3 dy_3;\\\\n  vec3 dx_4;\\\\n  vec2 d_5;\\\\n  vec3 ret_6;\\\\n  xlat_mutablefactorA = (uv - vec2(0.5, 0.5));\\\\n  vec2 tmpvar_7;\\\\n  tmpvar_7.x = -((xlat_mutablefactorA.y * -1024.0));\\\\n  tmpvar_7.y = (xlat_mutablefactorA.x * -1024.0);\\\\n  vec2 tmpvar_8;\\\\n  tmpvar_8.x = tmpvar_7.x;\\\\n  tmpvar_8.y = -(tmpvar_7.y);\\\\n  uv_1 = (vec2(-100.0, 100.0) * (tmpvar_8 / (\\\\n    (tmpvar_7.x * tmpvar_7.x)\\\\n   + \\\\n    (tmpvar_7.y * tmpvar_7.y)\\\\n  )).yx);\\\\n  uv_1 = (0.5 + ((\\\\n    (1.0 - abs(((\\\\n      fract((mix ((0.5 + \\\\n        (((0.5 + (\\\\n          (uv - 0.5)\\\\n         * vec2(1.1, 0.81))) - 0.5) * 2.0)\\\\n      ), (uv_1 + 0.5), vec2(0.5, 0.5)) * 0.5))\\\\n     * 2.0) - 1.0)))\\\\n   - 0.5) * 0.98));\\\\n  vec2 tmpvar_9;\\\\n  vec2 tmpvar_10;\\\\n  tmpvar_10 = (vec2(1.0, 0.0) * texsize.zw);\\\\n  tmpvar_9.x = (texture (sampler_main, (uv_1 + tmpvar_10)).xyz - texture (sampler_main, (uv_1 - tmpvar_10)).xyz).y;\\\\n  vec2 tmpvar_11;\\\\n  tmpvar_11 = (vec2(0.0, 1.0) * texsize.zw);\\\\n  tmpvar_9.y = (texture (sampler_main, (uv_1 + tmpvar_11)).xyz - texture (sampler_main, (uv_1 - tmpvar_11)).xyz).y;\\\\n  d_5 = (texsize.zw * 2.0);\\\\n  dx_4 = (((2.0 * \\\\n    ((texture (sampler_blur1, (uv_1 + (vec2(1.0, 0.0) * d_5))).xyz * scale1) + bias1)\\\\n  ) - (2.0 * \\\\n    ((texture (sampler_blur1, (uv_1 - (vec2(1.0, 0.0) * d_5))).xyz * scale1) + bias1)\\\\n  )) * 0.5);\\\\n  dy_3 = (((2.0 * \\\\n    ((texture (sampler_blur1, (uv_1 + (vec2(0.0, 1.0) * d_5))).xyz * scale1) + bias1)\\\\n  ) - (2.0 * \\\\n    ((texture (sampler_blur1, (uv_1 - (vec2(0.0, 1.0) * d_5))).xyz * scale1) + bias1)\\\\n  )) * 0.5);\\\\n  vec2 tmpvar_12;\\\\n  tmpvar_12.x = dx_4.y;\\\\n  tmpvar_12.y = dy_3.y;\\\\n  dz_2 = ((tmpvar_9 * 3.0) + tmpvar_12);\\\\n  ret_6 = (vec3(((\\\\n    pow ((sqrt(dot (dz_2, dz_2)) * 0.8), 0.7)\\\\n   + \\\\n    (((texture (sampler_blur2, uv_1).xyz * scale2) + bias2).y * 0.4)\\\\n  ) - 0.1)) * vec3(0.3, 0.5, 0.7));\\\\n  vec2 tmpvar_13;\\\\n  tmpvar_13.x = dx_4.x;\\\\n  tmpvar_13.y = dy_3.x;\\\\n  vec3 tmpvar_14;\\\\n  tmpvar_14 = mix (mix (ret_6, vec3(0.2, 0.1, 0.0), vec3((texture (sampler_main, \\\\n    (uv_1 + ((tmpvar_13 * texsize.zw) * 18.0))\\\\n  ).x * 6.0))), vec3(1.0, 1.0, 1.0), texture (sampler_main, uv_1).zzz);\\\\n  ret_6 = tmpvar_14;\\\\n  vec4 tmpvar_15;\\\\n  tmpvar_15.w = 1.0;\\\\n  tmpvar_15.xyz = tmpvar_14;\\\\n  ret = tmpvar_15.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Unchained - Rewop.json\":\n/*!**************************************************!*\\\n  !*** ./presets/converted/Unchained - Rewop.json ***!\n  \\**************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":1,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1,\\\"decay\\\":0.94,\\\"echo_zoom\\\":0.9998,\\\"echo_alpha\\\":0.4999,\\\"echo_orient\\\":3,\\\"wave_mode\\\":1,\\\"additivewave\\\":1,\\\"wave_dots\\\":1,\\\"wave_brighten\\\":0,\\\"wave_a\\\":1.254574,\\\"wave_scale\\\":0.45029,\\\"wave_smoothing\\\":0,\\\"zoomexp\\\":1.008151,\\\"zoom\\\":0.659411,\\\"warp\\\":0.01,\\\"wave_r\\\":0.5,\\\"wave_g\\\":0.5,\\\"wave_b\\\":0.5,\\\"ob_size\\\":0.005,\\\"ob_r\\\":1,\\\"ob_a\\\":1,\\\"ib_size\\\":0.005,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"ib_a\\\":0.9,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0,\\\"mv_r\\\":0,\\\"mv_g\\\":0.7,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"warp=0;\\\\nle=1+.5+2*sin(bass_att);\\\\nbpulse=band(above(le,bth),above(le-bth,bblock));\\\\nbblock=le-bth;\\\\nbth=if(above(le,bth),le+114/(le+10)-7.407,\\\\nbth+bth*.07/(bth-12)+below(bth,2.7)*.1*(2.7-bth));\\\\nbth=if(above(bth,6),6,bth);\\\\nbres=bpulse*sin(pulse+le*.5) + bnot(bpulse)*bres;\\\\n\\\\nle=1+.5+2*sin(treb_att);\\\\ntpulse=band(above(le,tth),above(le-tth,tblock));\\\\ntblock=le-tth;\\\\ntth=if(above(le,tth),le+114/(le+10)-7.407,\\\\ntth+tth*.07/(tth-12)+below(tth,2.7)*.1*(2.7-tth));\\\\ntth=if(above(tth,6),6,tth);\\\\ntres=tpulse*sin(pulse+le*.5) + bnot(tpulse)*tres;\\\\n\\\\nle=1+.5+2*sin(mid_att);\\\\nmpulse=band(above(le,mth),above(le-mth,mblock));\\\\nmblock=le-mth;\\\\nmth=if(above(le,mth),le+114/(le+10)-7.407,\\\\nmth+mth*.07/(mth-12)+below(mth,2.7)*.1*(2.7-mth));\\\\nmth=if(above(mth,6),6,mth);\\\\nmres=mpulse*sin(pulse+le*.5) + bnot(mpulse)*mres;\\\\n\\\\n\\\\n\\\\npulse=if(above(abs(pulse),3.14),-3.14,pulse+(bth+mth+tth)*.003);\\\\nq1=bres;\\\\nq2=tres;\\\\nq3=mres;\\\\nq4=sin(pulse);\\\\n\\\\nmod_state=(above(q1,0)+above(q2,0)+above(q3,0))*(1+above(q4,0));\\\\nccl=ccl+tpulse+mpulse-bpulse;\\\\nq5=cos(pulse*(.5+.1*mod_state));\\\\nq6=sin(pulse*(.5+pow(.25,mod_state)));\\\\nq7=mod_state;\\\\nq8=ccl;\\\\nob_r=.5+.5*cos(q1+q7);\\\\nob_g=.5+.5*cos(q2*3.14+q7);\\\\nob_b=.5+.5*cos(q3*2+sin(time*.0816));\\\\nib_size=.025+.02*q2;\\\\nob_size=.03+.02*q3-.002*q7;\\\\nwave_r=.5+.5*sin(q1*q7+time*2.183);\\\\nwave_g=.5+.5*sin(q2*3+time*1.211);\\\\nwave_b=.5+.5*sin(q3+time*1.541);\\\\n\\\\nob_a=.8+.2*q2;\\\\nzoom=zoom+.01*q4;\\\",\\\"pixel_eqs_eel\\\":\\\"grid=pow(sin(rad*q6*q2+x*y*q6*q3)*2,1+q7%5)%2;\\\\nrot=bnot(grid)+grid*q4;\\\\nsx=sx+sin((q2+.5)*x)*.003;\\\\nsy=sy+sin((q1+3.4)*y)*.003;\\\\nzoom=zoom+.11*cos(rad*3.14)*q4;\\\",\\\"warp\\\":\\\"\\\",\\\"comp\\\":\\\"\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Unchained - Unified Drag 2.json\":\n/*!***********************************************************!*\\\n  !*** ./presets/converted/Unchained - Unified Drag 2.json ***!\n  \\***********************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":1,\\\"baseVals\\\":{\\\"rating\\\":0,\\\"gammaadj\\\":1,\\\"decay\\\":0.96,\\\"echo_zoom\\\":2.216266,\\\"echo_alpha\\\":0.78,\\\"wave_mode\\\":5,\\\"additivewave\\\":1,\\\"wave_dots\\\":1,\\\"wave_brighten\\\":0,\\\"brighten\\\":1,\\\"wave_a\\\":1.254574,\\\"wave_scale\\\":0.931011,\\\"wave_smoothing\\\":0,\\\"zoomexp\\\":1.0081,\\\"fshader\\\":0.4,\\\"zoom\\\":0.820774,\\\"cx\\\":0.4999,\\\"warp\\\":0.01,\\\"sx\\\":0.999998,\\\"wave_r\\\":0.5,\\\"wave_g\\\":0.5,\\\"wave_b\\\":0.5,\\\"ob_size\\\":0.005,\\\"ob_r\\\":1,\\\"ob_a\\\":1,\\\"ib_size\\\":0.005,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"ib_a\\\":0.9,\\\"mv_x\\\":0,\\\"mv_y\\\":0,\\\"mv_l\\\":0.85,\\\"mv_r\\\":0.4999,\\\"mv_g\\\":0.4999,\\\"mv_b\\\":0.4999,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"warp=0;\\\\nle=1+.5+2*sin(bass_att);\\\\nbpulse=band(above(le,bth),above(le-bth,bblock));\\\\nbblock=le-bth;\\\\nbth=if(above(le,bth),le+114/(le+10)-7.407,\\\\nbth+bth*.07/(bth-12)+below(bth,2.7)*.1*(2.7-bth));\\\\nbth=if(above(bth,6),6,bth);\\\\nbres=bpulse*sin(pulse+le*.5) + bnot(bpulse)*bres;\\\\n\\\\nle=1+.5+2*sin(treb_att);\\\\ntpulse=band(above(le,tth),above(le-tth,tblock));\\\\ntblock=le-tth;\\\\ntth=if(above(le,tth),le+114/(le+10)-7.407,\\\\ntth+tth*.07/(tth-12)+below(tth,2.7)*.1*(2.7-tth));\\\\ntth=if(above(tth,6),6,tth);\\\\ntres=tpulse*sin(pulse+le*.5) + bnot(tpulse)*tres;\\\\n\\\\nle=1+.5+2*sin(mid_att);\\\\nmpulse=band(above(le,mth),above(le-mth,mblock));\\\\nmblock=le-mth;\\\\nmth=if(above(le,mth),le+114/(le+10)-7.407,\\\\nmth+mth*.07/(mth-12)+below(mth,2.7)*.1*(2.7-mth));\\\\nmth=if(above(mth,6),6,mth);\\\\nmres=mpulse*sin(pulse+le*.5) + bnot(mpulse)*mres;\\\\n\\\\n\\\\n\\\\npulse=if(above(abs(pulse),3.14),-3.14,pulse+(bth+mth+tth)*.003);\\\\nq1=bres;\\\\nq2=tres;\\\\nq3=mres;\\\\nq4=sin(pulse);\\\\n\\\\nmod_state=(above(q1,0)+above(q2,0)+above(q3,0))*(1+above(q4,0));\\\\nccl=ccl+tpulse+mpulse-bpulse;\\\\nq5=cos(pulse*(.5+.1*mod_state));\\\\nq6=sin(pulse*(.5+pow(.25,mod_state)));\\\\nq7=mod_state;\\\\nq8=ccl;\\\\nob_r=.5+.5*cos(q1+q7);\\\\nob_g=.5+.5*cos(q2*3.14+q7);\\\\nob_b=.5+.5*cos(q3*2+sin(time*.0816));\\\\nib_size=.025+.02*q2;\\\\nob_size=.03+.02*q3-.002*q7;\\\\nwave_r=.5+.5*sin(q1*q7+time*2.183);\\\\nwave_g=.5+.5*sin(q2*3+time*1.211);\\\\nwave_b=.5+.5*sin(q3+time*1.541);\\\\n\\\\nob_a=.8+.2*q2;\\\\nrot=1;\\\\ncx=cx+.05*q4;\\\\ncy=cy+.05*q5;\\\\nzoom=.95+.05*q6;\\\",\\\"pixel_eqs_eel\\\":\\\"snee=bnot(above(sin(ang)-x,.5)*above(q2,0)+above(y-cos(ang),.5)*above(q1,0));\\\\nsnur=bnot(below(x,.5)*above(q3,0)+below(y,.5)*below(q7,4));\\\\ngrid=sin(sigmoid(sin(y*6.28*q2),sin(x*6.28*q6))*(10+q7));\\\\nzoom=zoom+.02*cos(rad*2+rad*q2)*sign(snee)-.04*sin(rad*3.14*q3-3.14*cos(rad*3.14*snur-3.14*q6));\\\\nsx=if(below(x,.5)*below(y,.5),sx+.2*q4*snur,1+.1*q2*grid);\\\\nsy=if(below(x,.5)*below(y,.5),sy+.2*q5*snee,1+.1*q2*grid);\\\",\\\"warp\\\":\\\"\\\",\\\"comp\\\":\\\"\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Zylot - Paint Spill (Music Reactive Paint Mix).json\":\n/*!*******************************************************************************!*\\\n  !*** ./presets/converted/Zylot - Paint Spill (Music Reactive Paint Mix).json ***!\n  \\*******************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":3,\\\"wave_mode\\\":2,\\\"wrap\\\":0,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":5.819,\\\"wave_mystery\\\":-0.38,\\\"wave_r\\\":0.5,\\\"wave_g\\\":0.5,\\\"wave_b\\\":0.5,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"rad\\\":0.16446,\\\"g\\\":1,\\\"b\\\":1,\\\"a\\\":0,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"a = if(above(bass,2.5),1,0);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"thick\\\":1},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"y = sample;\\\\nx = (value1+value2)*.003;\\\\na = (value1+value2)*.1;\\\\nr = .5+.3*sin(sample*10+time);\\\\ng = .5+.3*cos(sample*10-time*1.334);\\\\nb = .5+.3*sin(sample*10+time*.998);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"warp = 0;\\\\nwave_r = wave_r + .4*sin(time*.333)+bass_att*.2;\\\\nwave_g = wave_g + .4*sin(time*.555)+treb_att*.2;\\\\nwave_b = wave_b + .4*sin(time*.444)+mid_att*.2;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec2 muv_1;\\\\n  vec3 ret_2;\\\\n  float tmpvar_3;\\\\n  tmpvar_3 = (2.0 * bass_att);\\\\n  muv_1.x = (uv.x - ((\\\\n    ((0.01 * cos((\\\\n      (uv.x * (5.0 + tmpvar_3))\\\\n     + time))) + (0.01 * cos((\\\\n      (uv.y * (5.0 + tmpvar_3))\\\\n     + time))))\\\\n   * 0.5) * treb_att));\\\\n  float tmpvar_4;\\\\n  tmpvar_4 = (2.0 * mid_att);\\\\n  muv_1.y = (uv.y + ((\\\\n    ((0.01 * sin((\\\\n      (uv.x * (5.0 + tmpvar_4))\\\\n     + time))) - (0.01 * cos((\\\\n      (uv.y * (5.0 + tmpvar_4))\\\\n     + time))))\\\\n   * 0.5) * bass_att));\\\\n  vec3 tmpvar_5;\\\\n  tmpvar_5 = ((texture (sampler_blur2, muv_1).xyz * scale2) + bias2);\\\\n  vec4 tmpvar_6;\\\\n  tmpvar_6 = texture (sampler_pw_main, muv_1);\\\\n  ret_2.x = (tmpvar_6.x + (tmpvar_5.x * (bass_att * 0.05)));\\\\n  ret_2.y = (tmpvar_6.y + (tmpvar_5.y * (treb_att * 0.05)));\\\\n  ret_2.z = (tmpvar_6.z + (tmpvar_5.z * (mid_att * 0.05)));\\\\n  if ((ret_2.x > 0.9)) {\\\\n    ret_2.x = 0.0;\\\\n  };\\\\n  if ((ret_2.y > 0.9)) {\\\\n    ret_2.y = 0.0;\\\\n  };\\\\n  if ((ret_2.z > 0.9)) {\\\\n    ret_2.z = 0.0;\\\\n  };\\\\n  vec4 tmpvar_7;\\\\n  tmpvar_7.w = 1.0;\\\\n  tmpvar_7.xyz = ret_2;\\\\n  ret = tmpvar_7.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec3 ret1_1;\\\\n  vec2 uv1_2;\\\\n  vec3 ret_3;\\\\n  vec4 tmpvar_4;\\\\n  tmpvar_4 = texture (sampler_main, uv);\\\\n  ret_3 = (tmpvar_4.xyz * (0.6 + (0.3 * \\\\n    sin(((uv.x * 10.0) + time))\\\\n  )));\\\\n  vec2 tmpvar_5;\\\\n  tmpvar_5.x = (texture (sampler_main, (uv - vec2(0.001, 0.0))).xyz - texture (sampler_main, (uv + vec2(0.001, 0.0))).xyz).x;\\\\n  tmpvar_5.y = (texture (sampler_main, (uv - vec2(0.0, 0.001))).xyz - texture (sampler_main, (uv + vec2(0.0, 0.001))).xyz).x;\\\\n  uv1_2 = ((0.5 * cos(\\\\n    (((uv - 0.5) * 1.5) + 1.6)\\\\n  )) - (3.0 * tmpvar_5));\\\\n  ret1_1 = ((0.3 * dot (tmpvar_4.xyz, vec3(0.32, 0.49, 0.29))) + ((\\\\n    clamp ((0.01 / sqrt(dot (uv1_2, uv1_2))), 0.0, 1.0)\\\\n   * \\\\n    mix (vec3(dot (((texture (sampler_blur2, uv).xyz * scale2) + bias2), vec3(0.32, 0.49, 0.29))), ret_3, pow (ret_3, vec3((0.05 + (mid_att * 0.03)))))\\\\n  ) * (\\\\n    (4.0 + bass)\\\\n   + \\\\n    (mid + treb_att)\\\\n  )));\\\\n  ret_3 = ret1_1;\\\\n  vec4 tmpvar_6;\\\\n  tmpvar_6.w = 1.0;\\\\n  tmpvar_6.xyz = ret1_1;\\\\n  ret = tmpvar_6.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Zylot - Star Ornament.json\":\n/*!******************************************************!*\\\n  !*** ./presets/converted/Zylot - Star Ornament.json ***!\n  \\******************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":1,\\\"baseVals\\\":{\\\"rating\\\":0,\\\"gammaadj\\\":1,\\\"decay\\\":0.997,\\\"echo_zoom\\\":0.996629,\\\"echo_orient\\\":1,\\\"wave_thick\\\":1,\\\"wave_brighten\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":0.001185,\\\"wave_scale\\\":0.01,\\\"wave_smoothing\\\":0.27,\\\"wave_mystery\\\":-0.38,\\\"modwavealphastart\\\":0.71,\\\"modwavealphaend\\\":1.3,\\\"warpscale\\\":1.331,\\\"zoom\\\":0.999514,\\\"warp\\\":0.01,\\\"ob_size\\\":0,\\\"ob_r\\\":0.01,\\\"ob_a\\\":1,\\\"ib_size\\\":0,\\\"ib_r\\\":1,\\\"ib_g\\\":1,\\\"ib_b\\\":1,\\\"ib_a\\\":1,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0.85,\\\"mv_r\\\":0.4999,\\\"mv_g\\\":0.4999,\\\"mv_b\\\":0.4999,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":3,\\\"rad\\\":0.34,\\\"ang\\\":0.53,\\\"r\\\":0.56,\\\"g\\\":0.36,\\\"r2\\\":0.9,\\\"a2\\\":0.5,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"bassspin = 0;\\\\nangle = 0;\\\",\\\"frame_eqs_eel\\\":\\\"ang = angle;\\\\nbassspin = if(above(bass*.05,bassspin),bassspin+.001,bassspin-.001);\\\\nbassspin = bassspin*above(bassspin,0);\\\\nangle = angle + bassspin;\\\\n\\\\nr = bass*.3;\\\\ng = treb*.3;\\\\nb = mid*.3;\\\\nr2 = .8+.2*sin(time*1.2);\\\\ng2 = .8+.2*sin(time*.9777);\\\\nb2 = .8+.2*sin(time*.7005);\\\\n\\\\nborder_a = 1*above(bass+treb+mid,5);\\\\n\\\\nx = .5 + q1;\\\\ny = .5 + q2;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"additive\\\":1,\\\"textured\\\":1,\\\"rad\\\":0.108073,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"bassspin = 0;\\\\nxpos = .25;\\\\nypos = .25;\\\",\\\"frame_eqs_eel\\\":\\\"bassspin = if(above(bass*.05,bassspin),bassspin+.001,bassspin-.001);\\\\nbassspin = bassspin*above(bassspin,0);\\\\nxpos = xpos + bassspin;\\\\nypos = ypos + bassspin;\\\\nx = .5 + q1 + .13*sin(xpos);\\\\ny = .5 + q2 + .18*cos(ypos);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":29,\\\"additive\\\":1,\\\"textured\\\":1,\\\"rad\\\":0.105693,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"bassspin = 0;\\\\nxpos = 2.3;\\\\nypos = 2.3;\\\",\\\"frame_eqs_eel\\\":\\\"bassspin = if(above(bass*.05,bassspin),bassspin+.001,bassspin-.001);\\\\nbassspin = bassspin*above(bassspin,0);\\\\nxpos = xpos + bassspin;\\\\nypos = ypos + bassspin;\\\\nx = .5 + q1 +.13*sin(xpos);\\\\ny = .5 + q2 + .18*cos(ypos);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"additive\\\":1,\\\"textured\\\":1,\\\"rad\\\":0.091434,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"bassspin = 0;\\\\nxpos = 4.5;\\\\nypos = 4.5;\\\",\\\"frame_eqs_eel\\\":\\\"bassspin = if(above(bass*.05,bassspin),bassspin+.001,bassspin-.001);\\\\nbassspin = bassspin*above(bassspin,0);\\\\nxpos = xpos + bassspin;\\\\nypos = ypos + bassspin;\\\\nx = .5 + q1 + .13*sin(xpos);\\\\ny = .5 + q2 + .18*cos(ypos);\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"scaling\\\":0.010576,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"pulse = 0;\\\",\\\"frame_eqs_eel\\\":\\\"pulse = if(above(bass*.05,pulse),pulse+.001,pulse-.001);\\\\npulse = pulse*above(pulse,0);\\\\nt1 = pulse;\\\",\\\"point_eqs_eel\\\":\\\"x = sqrt(sample*mid*.05);\\\\ny = .5 + (.1+t1)*cos(sample*20);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"pulse = 0;\\\",\\\"frame_eqs_eel\\\":\\\"pulse = if(above(bass*.05,pulse),pulse+.001,pulse-.001);\\\\npulse = pulse*above(pulse,0);\\\\nt1 = pulse;\\\",\\\"point_eqs_eel\\\":\\\"x = sqrt(sample*mid*.05);\\\\ny = .5 + -(.1+t1)*cos(sample*20);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"pulse = 0;\\\",\\\"frame_eqs_eel\\\":\\\"pulse = if(above(bass*.05,pulse),pulse+.001,pulse-.001);\\\\npulse = pulse*above(pulse,0);\\\\nt1 = pulse;\\\",\\\"point_eqs_eel\\\":\\\"x = 1 - sqrt(sample*mid*.05);\\\\ny = .5 + (.1+t1)*cos(sample*20);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"pulse = 0;\\\",\\\"frame_eqs_eel\\\":\\\"pulse = if(above(bass*.05,pulse),pulse+.001,pulse-.001);\\\\npulse = pulse*above(pulse,0);\\\\nt1 = pulse;\\\",\\\"point_eqs_eel\\\":\\\"x = 1 - sqrt(sample*mid*.05);\\\\ny = .5 + -(.1+t1)*cos(sample*20);\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"warp = 0;\\\\ndecay = .92;\\\\n\\\\nvol = (bass+mid+att)/6;\\\\nxamptarg = if(equal(frame%15,0),min(0.5*vol*bass_att,0.5),xamptarg);\\\\nxamp = xamp + 0.5*(xamptarg-xamp);\\\\nxdir = if(above(abs(xpos),xamp),-sign(xpos),if(below(abs(xspeed),0.1),2*above(xpos,0)-1,xdir));\\\\nxaccel = xdir*xamp - xpos - xspeed*0.055*below(abs(xpos),xamp);\\\\nxspeed = xspeed + xdir*xamp - xpos - xspeed*0.055*below(abs(xpos),xamp);\\\\nxpos = xpos + 0.001*xspeed;\\\\nyamptarg = if(equal(frame%15,0),min(0.3*vol*treb_att,0.5),yamptarg);\\\\nyamp = yamp + 0.5*(yamptarg-yamp);\\\\nydir = if(above(abs(ypos),yamp),-sign(ypos),if(below(abs(yspeed),0.1),2*above(ypos,0)-1,ydir));\\\\nyaccel = ydir*yamp - ypos - yspeed*0.055*below(abs(ypos),yamp);\\\\nyspeed = yspeed + ydir*yamp - ypos - yspeed*0.055*below(abs(ypos),yamp);\\\\nypos = ypos + 0.001*yspeed;\\\\n\\\\nq1 = ypos;\\\\nq2 = xpos;\\\",\\\"pixel_eqs_eel\\\":\\\"zoom = zoom + (q1*q2)*2;\\\\nrot = 10+(rad*treb*.1);\\\",\\\"warp\\\":\\\"\\\",\\\"comp\\\":\\\"\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Zylot - True Visionary (Final Mix).json\":\n/*!*******************************************************************!*\\\n  !*** ./presets/converted/Zylot - True Visionary (Final Mix).json ***!\n  \\*******************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":3,\\\"gammaadj\\\":1,\\\"decay\\\":0.997,\\\"echo_zoom\\\":0.997,\\\"echo_orient\\\":1,\\\"wave_thick\\\":1,\\\"wave_brighten\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":0.01,\\\"wave_smoothing\\\":0.27,\\\"wave_mystery\\\":-0.38,\\\"modwavealphastart\\\":0.71,\\\"modwavealphaend\\\":1.3,\\\"warpscale\\\":1.331,\\\"zoom\\\":0.99951,\\\"warp\\\":0.01,\\\"ob_size\\\":0.5,\\\"ob_r\\\":0.01,\\\"ib_size\\\":0.26,\\\"ib_r\\\":1,\\\"ib_g\\\":1,\\\"ib_b\\\":1,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0.85,\\\"mv_r\\\":0.5,\\\"mv_g\\\":0.5,\\\"mv_b\\\":0.5,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"sides\\\":3,\\\"rad\\\":0.34,\\\"ang\\\":0.53,\\\"r\\\":0.56,\\\"g\\\":0.36,\\\"r2\\\":0.9,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ang = ang + time;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":3,\\\"rad\\\":0.41,\\\"r\\\":0,\\\"g\\\":0.8,\\\"b\\\":0.7,\\\"g2\\\":0.4,\\\"b2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ang = ang - time*.333;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":3,\\\"rad\\\":0.21,\\\"r\\\":0.84,\\\"r2\\\":1,\\\"g2\\\":0.58,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ang = ang + time*4;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"x = .5 + (bass*.2)*sin(sample*2*(time*10*treb));\\\\ny = .5 + (bass*.2)*cos(sample*2*(time*10*treb));\\\\nr = 1 + .5*sin(sample*.10+(time*10*bass));\\\\ng = 1 + .5*sin(sample*2+(time*50*treb));\\\\nb = 1 + .5*sin(sample*5+(time*20*mid));\\\\na = r;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"warp = 0;\\\\ndecay = .92;\\\",\\\"pixel_eqs_eel\\\":\\\"zoom = zoom + (.03*(bass_att*bass_att))*rad;\\\\nrot = rot + rad*(-2.5&(cos(time)*5))*.01;\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec4 tmpvar_1;\\\\n  tmpvar_1.w = 1.0;\\\\n  tmpvar_1.xyz = texture (sampler_main, uv).xyz;\\\\n  ret = tmpvar_1.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec2 uv1_1;\\\\n  vec3 ret_2;\\\\n  vec3 tmpvar_3;\\\\n  tmpvar_3 = texture (sampler_main, uv).xyz;\\\\n  vec2 tmpvar_4;\\\\n  tmpvar_4.x = (texture (sampler_main, (uv - vec2(0.001, 0.0))).xyz - texture (sampler_main, (uv + vec2(0.001, 0.0))).xyz).x;\\\\n  tmpvar_4.y = (texture (sampler_main, (uv - vec2(0.0, 0.001))).xyz - texture (sampler_main, (uv + vec2(0.0, 0.001))).xyz).x;\\\\n  uv1_1 = ((0.5 * cos(\\\\n    (((uv - 0.5) * 1.5) + 1.6)\\\\n  )) - (3.0 * tmpvar_4));\\\\n  ret_2 = (0.8 * ((0.3 * \\\\n    dot (tmpvar_3, vec3(0.32, 0.49, 0.29))\\\\n  ) + (\\\\n    (clamp ((0.01 / sqrt(\\\\n      dot (uv1_1, uv1_1)\\\\n    )), 0.0, 1.0) * tmpvar_3)\\\\n   * \\\\n    ((4.0 + bass) + (mid + treb_att))\\\\n  )));\\\\n  ret_2 = (ret_2 * 0.77);\\\\n  vec4 tmpvar_5;\\\\n  tmpvar_5.w = 1.0;\\\\n  tmpvar_5.xyz = ret_2;\\\\n  ret = tmpvar_5.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/_Aderrasi - Wanderer in Curved Space - mash0000 - faclempt kibitzing meshuggana schmaltz (Geiss color mix).json\":\n/*!*******************************************************************************************************************************************!*\\\n  !*** ./presets/converted/_Aderrasi - Wanderer in Curved Space - mash0000 - faclempt kibitzing meshuggana schmaltz (Geiss color mix).json ***!\n  \\*******************************************************************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1,\\\"decay\\\":0.995,\\\"echo_zoom\\\":1,\\\"echo_orient\\\":1,\\\"wave_mode\\\":5,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"wave_a\\\":100,\\\"wave_scale\\\":0.721,\\\"wave_smoothing\\\":0.5,\\\"modwavealphastart\\\":0.5,\\\"modwavealphaend\\\":1,\\\"fshader\\\":1,\\\"dx\\\":0.00001,\\\"dy\\\":0.00001,\\\"warp\\\":0.01,\\\"wave_r\\\":0.5,\\\"wave_g\\\":0.5,\\\"wave_b\\\":0.5,\\\"ob_size\\\":0,\\\"ob_a\\\":1,\\\"ib_size\\\":0,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"mv_x\\\":0,\\\"mv_y\\\":0,\\\"mv_l\\\":1,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"wave_r = 0.5 + 0.5*sin(6*time);\\\\nwave_g = 0.5 + 0.5*sin(4.1*time);\\\\nwave_b = -1 + (1-wave_r + 1-wave_g);\\\\nwarp = 0;\\\",\\\"pixel_eqs_eel\\\":\\\"thresh = above(bass_att,thresh)*2+(1-above(bass_att,thresh))*((thresh-1.3)*0.96+1.3);\\\\ndx_r = equal(thresh,2)*0.015*sin(5*time)+(1-equal(thresh,2))*dx_r;\\\\ndy_r = equal(thresh,2)*0.015*sin(6*time)+(1-equal(thresh,2))*dy_r;\\\\n\\\\n\\\\nxs = above(sin(12*dx_r*bass),0)*(dy_r*sin(2*rad)) + \\\\nbelow(sin(12*dx_r*bass),0)*(cos(time)*dx_r*sin(0.6*rad));\\\\n\\\\nzoom = zoom + abs(12*xs);\\\\nrot = rot + 5*xs*cos(1-xs*rad*12*dx_r);\\\\ndx = dx + dx_r;\\\\ndy = dy + dy_r;\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec2 my_uv_1;\\\\n  vec3 ret_2;\\\\n  vec2 tmpvar_3;\\\\n  tmpvar_3 = (vec2(1280.0, 1024.0) * texsize.zw);\\\\n  float tmpvar_4;\\\\n  vec2 tmpvar_5;\\\\n  tmpvar_5 = (uv + vec2(0.005, 0.0));\\\\n  vec2 tmpvar_6;\\\\n  tmpvar_6 = (uv - vec2(0.005, 0.0));\\\\n  tmpvar_4 = (((\\\\n    (texture (sampler_blur2, tmpvar_5).xyz * scale2)\\\\n   + bias2) - (\\\\n    (texture (sampler_blur2, tmpvar_6).xyz * scale2)\\\\n   + bias2)).x * tmpvar_3.x);\\\\n  float tmpvar_7;\\\\n  vec2 tmpvar_8;\\\\n  tmpvar_8 = (uv + vec2(0.0, 0.005));\\\\n  vec2 tmpvar_9;\\\\n  tmpvar_9 = (uv - vec2(0.0, 0.005));\\\\n  tmpvar_7 = (((\\\\n    (texture (sampler_blur2, tmpvar_8).xyz * scale2)\\\\n   + bias2) - (\\\\n    (texture (sampler_blur2, tmpvar_9).xyz * scale2)\\\\n   + bias2)).x * tmpvar_3.y);\\\\n  vec2 tmpvar_10;\\\\n  tmpvar_10.x = tmpvar_4;\\\\n  tmpvar_10.y = tmpvar_7;\\\\n  vec2 tmpvar_11;\\\\n  tmpvar_11.x = (((\\\\n    (texture (sampler_blur2, tmpvar_5).xyz * scale2)\\\\n   + bias2) - (\\\\n    (texture (sampler_blur2, tmpvar_6).xyz * scale2)\\\\n   + bias2)).x * tmpvar_3.x);\\\\n  tmpvar_11.y = (((\\\\n    (texture (sampler_blur2, tmpvar_8).xyz * scale2)\\\\n   + bias2) - (\\\\n    (texture (sampler_blur2, tmpvar_9).xyz * scale2)\\\\n   + bias2)).x * tmpvar_3.y);\\\\n  ret_2.x = texture (sampler_fw_main, ((uv - (tmpvar_10 * 0.01)) + (tmpvar_11 * 0.003))).x;\\\\n  vec4 tmpvar_12;\\\\n  tmpvar_12 = texture (sampler_blur3, uv);\\\\n  ret_2.x = (ret_2.x + ((ret_2.x - \\\\n    ((tmpvar_12.xyz * scale3) + bias3)\\\\n  .x) * 0.1));\\\\n  ret_2.x = (ret_2.x + 0.004);\\\\n  vec2 tmpvar_13;\\\\n  tmpvar_13.x = tmpvar_7;\\\\n  tmpvar_13.y = -(tmpvar_4);\\\\n  my_uv_1 = (uv + ((tmpvar_13 * 0.05) * (1.2 - \\\\n    ((tmpvar_12.xyz * scale3) + bias3)\\\\n  .y)));\\\\n  ret_2.z = texture (sampler_fw_main, my_uv_1).z;\\\\n  vec2 x_14;\\\\n  x_14 = (my_uv_1 - uv);\\\\n  ret_2.z = (ret_2.z + ((\\\\n    ((ret_2.z - ((texture (sampler_blur1, uv).xyz * scale1) + bias1).z) * sqrt(dot (x_14, x_14)))\\\\n   * 180.0) / sqrt(\\\\n    dot (tmpvar_3, tmpvar_3)\\\\n  )));\\\\n  ret_2.z = (ret_2.z * 0.8);\\\\n  ret_2.z = (ret_2.z + 0.004);\\\\n  vec2 tmpvar_15;\\\\n  tmpvar_15.x = -(tmpvar_7);\\\\n  tmpvar_15.y = tmpvar_4;\\\\n  my_uv_1 = (tmpvar_15 * 0.045);\\\\n  vec2 tmpvar_16;\\\\n  tmpvar_16.x = (((\\\\n    (texture (sampler_blur2, (uv + vec2(0.01, 0.0))).xyz * scale2)\\\\n   + bias2) - (\\\\n    (texture (sampler_blur2, (uv - vec2(0.01, 0.0))).xyz * scale2)\\\\n   + bias2)).y * tmpvar_3.x);\\\\n  tmpvar_16.y = (((\\\\n    (texture (sampler_blur2, (uv + vec2(0.0, 0.01))).xyz * scale2)\\\\n   + bias2) - (\\\\n    (texture (sampler_blur2, (uv - vec2(0.0, 0.01))).xyz * scale2)\\\\n   + bias2)).y * tmpvar_3.y);\\\\n  my_uv_1 = (my_uv_1 + (uv - (tmpvar_16 * 0.03)));\\\\n  ret_2.y = texture (sampler_fw_main, my_uv_1).y;\\\\n  ret_2.y = (ret_2.y + ((\\\\n    (ret_2.y - ((texture (sampler_blur3, my_uv_1).xyz * scale3) + bias3).y)\\\\n   * 0.1) + 0.01));\\\\n  vec4 tmpvar_17;\\\\n  tmpvar_17.w = 1.0;\\\\n  tmpvar_17.xyz = ret_2;\\\\n  ret = tmpvar_17.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec3 ret_1;\\\\n  ret_1 = texture (sampler_main, uv).xyz;\\\\n  ret_1 = (ret_1 * hue_shader);\\\\n  vec3 tmpvar_2;\\\\n  tmpvar_2 = mix (ret_1, vec3(dot (ret_1, vec3(0.32, 0.49, 0.29))), vec3(0.5, 1.0, 0.1));\\\\n  ret_1 = tmpvar_2;\\\\n  vec4 tmpvar_3;\\\\n  tmpvar_3.w = 1.0;\\\\n  tmpvar_3.xyz = tmpvar_2;\\\\n  ret = tmpvar_3.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/_Geiss - Artifact 01.json\":\n/*!*****************************************************!*\\\n  !*** ./presets/converted/_Geiss - Artifact 01.json ***!\n  \\*****************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1.998,\\\"echo_zoom\\\":1.421,\\\"wave_mode\\\":7,\\\"additivewave\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"darken_center\\\":1,\\\"wave_a\\\":1.193,\\\"wave_scale\\\":1.489,\\\"wave_smoothing\\\":0,\\\"modwavealphastart\\\":0.87,\\\"modwavealphaend\\\":1.09,\\\"warpscale\\\":3.138,\\\"zoom\\\":1.003,\\\"warp\\\":0.09218,\\\"wave_r\\\":0.5,\\\"wave_g\\\":0.5,\\\"wave_b\\\":0.5,\\\"wave_x\\\":0.6,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"wave_r = wave_r + 0.3650*( 0.60*sin(4.437*time) + 0.40*sin(3.970*time) );\\\\nwave_g = wave_g + 0.3650*( 0.60*sin(4.344*time) + 0.40*sin(3.841*time) );\\\\nwave_b = wave_b + 0.3650*( 0.60*sin(4.251*time) + 0.40*sin(3.055*time) );\\\\nrot = rot + 0.02*( 0.60*sin(0.181*time) + 0.09*sin(-0.279*time) );\\\\nzoom = zoom + 0.025*( 0.60*sin(0.3131*time+2) + 0.4*sin(-0.479*time+4) );\\\\n//cx = cx + 0.10*( 0.60*sin(0.374*time) + 0.10*sin(0.294*time) );\\\\n//cy = cy + 0.10*( 0.60*sin(0.393*time) + 0.10*sin(0.223*time) );\\\\n//dx = dx + 0.0040*( 0.60*sin(0.234*time) + 0.40*sin(0.277*time) );\\\\n//dy = dy + 0.0040*( 0.60*sin(0.284*time) + 0.40*sin(0.247*time) );\\\\ndecay = decay - 0.01*equal(frame%6,0);\\\\n\\\\n//wave_x = 0.1 + rand(80)*0.01;\\\\n//wave_y = 0.1 + rand(80)*0.01;\\\\nt2 = time*6;\\\\nwave_x = 0.5 + 0.2*( 0.60*sin(0.374*t2) + 0.40*sin(0.294*t2) );\\\\nwave_y = 0.5 + 0.2*( 0.60*sin(0.393*t2) + 0.40*sin(0.223*t2) );\\\",\\\"pixel_eqs_eel\\\":\\\"dx = 0;\\\\ndy = 0;\\\\ndx = dx + cos(y*29.37 - time*1.9) * 1.0/pixelsx * 2;\\\\ndy = dy + cos(x*33.21 - time*1.7) * 1.0/pixelsy * 2;\\\\ndx = dx + cos(y*77.55 - time*2.1) * 1.0/pixelsx * 1.5;\\\\ndy = dy + cos(x*78.32 - time*2.4) * 1.0/pixelsy * 1.5;\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec2 dxy_1;\\\\n  dxy_1.x = cos(((154.56 * uv_orig.y) - time));\\\\n  dxy_1.y = cos(((154.56 * uv_orig.x) - time));\\\\n  float tmpvar_2;\\\\n  tmpvar_2 = (time * 5.0);\\\\n  dxy_1.x = (dxy_1.x + cos((\\\\n    (412.16 * uv_orig.y)\\\\n   - tmpvar_2)));\\\\n  dxy_1.y = (dxy_1.y + cos((\\\\n    (412.16 * uv_orig.x)\\\\n   - tmpvar_2)));\\\\n  dxy_1.y = (dxy_1.y + 0.15);\\\\n  vec4 tmpvar_3;\\\\n  tmpvar_3.w = 1.0;\\\\n  tmpvar_3.xyz = (max (texture (sampler_fw_main, (uv + \\\\n    (dxy_1 * texsize.zw)\\\\n  )).xyz, (texture (sampler_main, uv_orig).xyz * 0.8)) - 0.004);\\\\n  ret = tmpvar_3.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec4 tmpvar_1;\\\\n  tmpvar_1.w = 1.0;\\\\n  tmpvar_1.xyz = ((texture (sampler_main, uv).xyz * 0.8) + ((\\\\n    (texture (sampler_blur1, uv).xyz * scale1)\\\\n   + bias1) * 0.7));\\\\n  ret = tmpvar_1.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/_Geiss - Desert Rose 2.json\":\n/*!*******************************************************!*\\\n  !*** ./presets/converted/_Geiss - Desert Rose 2.json ***!\n  \\*******************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1.9,\\\"echo_zoom\\\":1.169,\\\"wave_mode\\\":2,\\\"additivewave\\\":1,\\\"wave_dots\\\":1,\\\"wave_thick\\\":1,\\\"wave_a\\\":0.274,\\\"wave_scale\\\":2.827,\\\"wave_smoothing\\\":0.09,\\\"modwavealphastart\\\":0.83,\\\"modwavealphaend\\\":1.31,\\\"warpscale\\\":3.138,\\\"zoom\\\":0.993,\\\"warp\\\":0.00054,\\\"wave_r\\\":0.5,\\\"wave_g\\\":0.5,\\\"wave_b\\\":0.5,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"wave_r = 0.85 + 0.25*sin(0.437*time+1);\\\\nwave_g = 0.85 + 0.25*sin(0.544*time+2);\\\\nwave_b = 0.85 + 0.25*sin(0.751*time+3);\\\\nrot = rot + 0.010*( 0.60*sin(0.381*time) + 0.40*sin(0.579*time) );\\\\ncx = cx + 0.210*( 0.60*sin(0.374*time) + 0.40*sin(0.294*time) );\\\\ncy = cy + 0.210*( 0.60*sin(0.393*time) + 0.40*sin(0.223*time) );\\\\ndx = dx + 0.003*( 0.60*sin(0.234*time) + 0.40*sin(0.277*time) );\\\\ndy = dy + 0.003*( 0.60*sin(0.284*time) + 0.40*sin(0.247*time) );\\\\ndecay = decay - 0.01*equal(frame%6,0);\\\\ndx = dx + dx_residual;\\\\ndy = dy + dy_residual;\\\\nbass_thresh = above(bass_att,bass_thresh)*2 + (1-above(bass_att,bass_thresh))*((bass_thresh-1.3)*0.96+1.3);\\\\ndx_residual = equal(bass_thresh,2.13)*0.016*sin(time*7) + (1-equal(bass_thresh,2.13))*dx_residual;\\\\ndy_residual = equal(bass_thresh,2.13)*0.012*sin(time*9) + (1-equal(bass_thresh,2.13))*dy_residual;\\\\nwave_x = wave_x - dx_residual*7;\\\\nwave_y = wave_y - dy_residual*7;\\\\nwave_mystery = time*0.03;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec3 ret_1;\\\\n  vec4 tmpvar_2;\\\\n  tmpvar_2 = texture (sampler_main, uv);\\\\n  ret_1 = (tmpvar_2.xyz + ((tmpvar_2.xyz - \\\\n    ((texture (sampler_blur1, uv).xyz * scale1) + bias1)\\\\n  ) * 0.2));\\\\n  ret_1 = (ret_1 - 0.02);\\\\n  vec4 tmpvar_3;\\\\n  tmpvar_3.w = 1.0;\\\\n  tmpvar_3.xyz = ret_1;\\\\n  ret = tmpvar_3.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec4 tmpvar_1;\\\\n  tmpvar_1.w = 1.0;\\\\n  tmpvar_1.xyz = (texture (sampler_main, uv).xyz * 1.15);\\\\n  ret = tmpvar_1.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/_Geiss - untitled.json\":\n/*!**************************************************!*\\\n  !*** ./presets/converted/_Geiss - untitled.json ***!\n  \\**************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1,\\\"decay\\\":1,\\\"additivewave\\\":1,\\\"wave_brighten\\\":0,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":0.01,\\\"wave_smoothing\\\":0.63,\\\"wave_mystery\\\":-1,\\\"modwavealphastart\\\":0.71,\\\"modwavealphaend\\\":1.3,\\\"warpanimspeed\\\":30.965,\\\"warpscale\\\":2.572,\\\"zoom\\\":1.00901,\\\"warp\\\":0.00054,\\\"wave_r\\\":0.65,\\\"wave_g\\\":0.65,\\\"wave_b\\\":0.65,\\\"mv_x\\\":12.8,\\\"mv_y\\\":9.6,\\\"mv_l\\\":1,\\\"mv_g\\\":0.91,\\\"mv_b\\\":0.71,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"additive\\\":1,\\\"rad\\\":0.49138,\\\"r\\\":0,\\\"g\\\":1,\\\"b\\\":1,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x=.5+q4;y=.5+q5;\\\\na=bass_att+mid_att+treb_att;\\\\na=a*0.25;\\\\na=a*a*1.5;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":24,\\\"rad\\\":0.01842,\\\"tex_zoom\\\":0.81954,\\\"g\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"tex_ang=0.01;\\\\nx=.5-q4;\\\\ny=.5-q5;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"wave_r = 0.85 + 0.25*sin(0.437*time+1);\\\\nwave_g = 0.85 + 0.25*sin(0.544*time+2);\\\\nwave_b = 0.85 + 0.25*sin(0.751*time+3);\\\\nrot = rot + 0.010*( 0.60*sin(0.381*time) + 0.40*sin(0.579*time) );\\\\ncx = cx + 0.210*( 0.60*sin(0.374*time) + 0.40*sin(0.294*time) );\\\\ncy = cy + 0.210*( 0.60*sin(0.393*time) + 0.40*sin(0.223*time) );\\\\ndx = dx + 0.003*( 0.60*sin(0.234*time) + 0.40*sin(0.277*time) );\\\\ndy = dy + 0.003*( 0.60*sin(0.284*time) + 0.40*sin(0.247*time) );\\\\ndecay = decay - 0.01*equal(frame%6,0);\\\\ndx = dx + dx_residual;\\\\ndy = dy + dy_residual;\\\\nbass_thresh = above(bass_att,bass_thresh)*2 + (1-above(bass_att,bass_thresh))*((bass_thresh-1.3)*0.96+1.3);\\\\ndx_residual = equal(bass_thresh,2.13)*0.016*sin(time*7) + (1-equal(bass_thresh,2.13))*dx_residual;\\\\ndy_residual = equal(bass_thresh,2.13)*0.012*sin(time*9) + (1-equal(bass_thresh,2.13))*dy_residual;\\\\nwave_x = wave_x - dx_residual*7;\\\\nwave_y = wave_y - dy_residual*7;\\\\nwave_mystery = time*0.03;\\\\n\\\\nzoom = zoom + 0.005*( 0.60*sin(0.1934*time+3) + 0.40*sin(0.307*time+9) );\\\\nzoom = zoom + max(0,bass_att-1.1)*0.2;\\\\nwarp = warp + max(0,treb-1.1)*0.5;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec3 ret_1;\\\\n  vec4 tmpvar_2;\\\\n  tmpvar_2 = texture (sampler_main, uv);\\\\n  ret_1 = (tmpvar_2.xyz + ((tmpvar_2.xyz - \\\\n    ((texture (sampler_blur2, uv).xyz * scale2) + bias2)\\\\n  ) * 0.6));\\\\n  ret_1 = (ret_1 * 0.9);\\\\n  ret_1 = (ret_1 + ((\\\\n    ((texture (sampler_noise_lq, ((\\\\n      (uv_orig * texsize.xy)\\\\n     * \\\\n      (texsize_noise_lq.zw * 0.4)\\\\n    ) + rand_frame.xy)).xyz - 0.5) / 256.0)\\\\n   * 12.0) * clamp (\\\\n    (treb_att - 1.0)\\\\n  , 0.0, 1.0)));\\\\n  vec3 tmpvar_3;\\\\n  tmpvar_3 = mix (ret_1, vec3(dot (ret_1, vec3(0.32, 0.49, 0.29))), vec3(0.04, 0.04, 0.04));\\\\n  ret_1 = tmpvar_3;\\\\n  vec4 tmpvar_4;\\\\n  tmpvar_4.w = 1.0;\\\\n  tmpvar_4.xyz = tmpvar_3;\\\\n  ret = tmpvar_4.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec3 N_1;\\\\n  vec3 ret_2;\\\\n  vec2 tmpvar_3;\\\\n  tmpvar_3 = (vec2(1.0, 0.0) * texsize.zw);\\\\n  N_1.x = ((texture (sampler_main, (uv_orig + tmpvar_3)).xyz - texture (sampler_main, (uv_orig - tmpvar_3)).xyz).x * 0.8);\\\\n  vec2 tmpvar_4;\\\\n  tmpvar_4 = (vec2(0.0, 1.0) * texsize.zw);\\\\n  N_1.y = ((texture (sampler_main, (uv_orig + tmpvar_4)).xyz - texture (sampler_main, (uv_orig - tmpvar_4)).xyz).x * 0.8);\\\\n  N_1.x = (N_1.x + ((\\\\n    ((texture (sampler_blur1, (uv_orig + tmpvar_3)).xyz * scale1) + bias1)\\\\n   - \\\\n    ((texture (sampler_blur1, (uv_orig - tmpvar_3)).xyz * scale1) + bias1)\\\\n  ).x * 0.2));\\\\n  N_1.y = (N_1.y + ((\\\\n    ((texture (sampler_blur1, (uv_orig + tmpvar_4)).xyz * scale1) + bias1)\\\\n   - \\\\n    ((texture (sampler_blur1, (uv_orig - tmpvar_4)).xyz * scale1) + bias1)\\\\n  ).x * 0.2));\\\\n  N_1.z = -0.077;\\\\n  vec3 tmpvar_5;\\\\n  tmpvar_5 = normalize(N_1);\\\\n  N_1 = tmpvar_5;\\\\n  vec3 tmpvar_6;\\\\n  tmpvar_6.z = -0.8;\\\\n  tmpvar_6.x = q9;\\\\n  tmpvar_6.y = q10;\\\\n  vec3 tmpvar_7;\\\\n  tmpvar_7.z = 0.0;\\\\n  tmpvar_7.xy = ((uv_orig * 2.0) - 1.0);\\\\n  vec3 tmpvar_8;\\\\n  tmpvar_8 = normalize((tmpvar_6 - tmpvar_7));\\\\n  vec3 tmpvar_9;\\\\n  tmpvar_9 = normalize((tmpvar_7 - vec3(0.0, 0.0, 1.0)));\\\\n  ret_2 = (vec3(clamp (dot (tmpvar_5, tmpvar_8), 0.0, 1.0)) * vec3(1.2, 0.9, 0.7));\\\\n  ret_2 = (ret_2 * normalize((\\\\n    (texture (sampler_blur3, uv_orig).xyz * scale3)\\\\n   + bias3).yzx));\\\\n  ret_2 = (ret_2 + (pow (\\\\n    clamp (dot (normalize((tmpvar_9 + \\\\n      ((2.0 * tmpvar_5) * dot (tmpvar_9, tmpvar_5))\\\\n    )), tmpvar_8), 0.0, 1.0)\\\\n  , 32.0) * 0.5));\\\\n  vec4 tmpvar_10;\\\\n  tmpvar_10.w = 1.0;\\\\n  tmpvar_10.xyz = ret_2;\\\\n  ret = tmpvar_10.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/_Mig_049.json\":\n/*!*****************************************!*\\\n  !*** ./presets/converted/_Mig_049.json ***!\n  \\*****************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":0,\\\"gammaadj\\\":1,\\\"decay\\\":1,\\\"echo_zoom\\\":1,\\\"wave_brighten\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":0.535239,\\\"wave_smoothing\\\":0,\\\"wave_mystery\\\":-0.48,\\\"modwavealphastart\\\":1,\\\"modwavealphaend\\\":1.1,\\\"warpscale\\\":3.138,\\\"fshader\\\":1,\\\"zoom\\\":1.023,\\\"warp\\\":0.122616,\\\"wave_g\\\":0.65,\\\"wave_b\\\":0,\\\"mv_x\\\":6.4,\\\"mv_y\\\":48,\\\"mv_dx\\\":0.5,\\\"mv_dy\\\":0.5,\\\"mv_l\\\":5,\\\"mv_r\\\":0.013716,\\\"mv_g\\\":0.872347,\\\"mv_b\\\":0.522466,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"rad\\\":0.746302,\\\"tex_zoom\\\":0.942039,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ang=sin(time)*.5+.5;\\\\nval=3;\\\\na2=val*.33;\\\\na=val*.33;\\\\nrad=cos(time*.3)*.4+0.65;\\\\nx=sin(time*.25)*.25+.5;\\\\ny=cos(time*.45)*.25+.5;\\\\n\\\\n\\\\n\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"rad\\\":0.746302,\\\"tex_zoom\\\":0.942039,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ang=cos(time*.3)*.5+.5;\\\\nval=3;\\\\na2=val*.33;\\\\na=val*.33;\\\\nrad=sin(time*.3)*.4+0.65;\\\\nx=cos(time*.25)*.25+.5;\\\\ny=sin(time*.45)*.25+.5;\\\\n\\\\n\\\\n\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"thickoutline\\\":1,\\\"rad\\\":0.364564,\\\"r\\\":0,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\\nh2=h2+(above(treb,1.32)*0.8)*.9;\\\\nvr=sin(h2*.8)*.5+.5;\\\\nvg=sin(h2*.5)*.5+.5;\\\\nvb=sin(h2*.1)*.5+.5;\\\\n\\\\ng=vg;\\\\nr=vr;\\\\nb=vb;\\\\ng2=g;\\\\nr2=r;\\\\nb2=b;\\\\ndist=(frame%100)*.01;\\\\nmaat=maat+(above(bass_att,1.5));\\\\nmaat=below(maat,16)*maat;\\\\nx=if(below(maat,8),if(below(maat,4),dist,1-dist),x);\\\\ny=if(above(maat,8),if(above(maat,4),dist,1-dist),y);\\\"},{\\\"baseVals\\\":{\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"rad\\\":0.364564,\\\"r\\\":0,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\\nh2=h2+(above(treb,1.32)*0.8)*.9;\\\\nvr=sin(h2*.8)*.5+.5;\\\\nvg=sin(h2*.5)*.5+.5;\\\\nvb=sin(h2*.1)*.5+.5;\\\\n\\\\ng=vg;\\\\nr=vr;\\\\nb=vb;\\\\ng2=g;\\\\nr2=r;\\\\nb2=b;\\\\ndist=(frame%100)*.01;\\\\nmaat=maat+(above(bass_att,1.5));\\\\nmaat=below(maat,16)*maat;\\\\ny=if(below(maat,8),if(below(maat,4),dist,1-dist),y);\\\\nx=if(above(maat,8),if(above(maat,4),dist,1-dist),x);\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"wave_r = 1;//0.85 + 0.35*sin(0.437*time+1) + 0.55*sin(0.197*time+4);\\\\nwave_g = 0;//0.85 + 0.35*sin(0.544*time+2) + 0.55*sin(0.143*time+5);\\\\nwave_b = 0;//0.85 + 0.35*sin(0.751*time+3) + 0.55*sin(0.117*time+6);\\\\nwave_r = sqrt(wave_r);\\\\nwave_g = sqrt(wave_g);\\\\nwave_b = sqrt(wave_b);\\\\nrot = rot + 0.010*( 0.60*sin(0.381*time) + 0.40*sin(0.579*time) );\\\\ncx = cx + 0.210*( 0.60*sin(0.374*time) + 0.40*sin(0.294*time) );\\\\ncy = cy + 0.210*( 0.60*sin(0.393*time) + 0.40*sin(0.223*time) );\\\\ndx = dx + 0.003*( 0.60*sin(0.234*time) + 0.40*sin(0.277*time) );\\\\ndy = dy + 0.003*( 0.60*sin(0.284*time) + 0.40*sin(0.247*time) );\\\\ndecay = decay - 0.01*equal(frame%6,0);\\\\ndx = dx + dx_residual;\\\\ndy = dy + dy_residual;\\\\nbass_thresh = above(bass_att,bass_thresh)*2 + (1-above(bass_att,bass_thresh))*((bass_thresh-1.3)*0.96+1.3);\\\\ndx_residual = equal(bass_thresh,2.13)*0.016*sin(time*7) + (1-equal(bass_thresh,2.13))*dx_residual;\\\\ndy_residual = equal(bass_thresh,2.13)*0.012*sin(time*9) + (1-equal(bass_thresh,2.13))*dy_residual;\\\\nwave_x = wave_x - dx_residual*7;\\\\nwave_y = wave_y - dy_residual*7;\\\\nwave_mystery = time*0.03;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec4 tmpvar_1;\\\\n  tmpvar_1.w = 1.0;\\\\n  tmpvar_1.xyz = (texture (sampler_main, (uv + (\\\\n    (texture (sampler_main, (uv + texsize.zw)).xy - 0.37)\\\\n   * 0.03))).xyz - 0.004);\\\\n  ret = tmpvar_1.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec2 uv_1;\\\\n  vec3 ret_2;\\\\n  uv_1 = (0.05 + (0.9 * uv));\\\\n  ret_2 = (abs((\\\\n    ((texture (sampler_blur1, uv_1).xyz * scale1) + bias1)\\\\n   - texture (sampler_main, uv_1).xyz)) * 6.0);\\\\n  ret_2 = (ret_2 * 1.333);\\\\n  vec4 tmpvar_3;\\\\n  tmpvar_3.w = 1.0;\\\\n  tmpvar_3.xyz = ret_2;\\\\n  ret = tmpvar_3.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/_Mig_085.json\":\n/*!*****************************************!*\\\n  !*** ./presets/converted/_Mig_085.json ***!\n  \\*****************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1.7,\\\"echo_zoom\\\":1.16936,\\\"wave_mode\\\":2,\\\"wave_dots\\\":1,\\\"wave_brighten\\\":0,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":0.011726,\\\"wave_smoothing\\\":0.9,\\\"zoom\\\":0.999902,\\\"warp\\\":0.01,\\\"wave_r\\\":0.5,\\\"wave_g\\\":0.4,\\\"wave_b\\\":0.3,\\\"ob_size\\\":0.0065,\\\"ib_size\\\":0.26,\\\"mv_x\\\":0,\\\"mv_y\\\":43.199997,\\\"mv_l\\\":1,\\\"mv_g\\\":0.91,\\\"mv_b\\\":0.71,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"sides\\\":5,\\\"textured\\\":1,\\\"rad\\\":1.06779,\\\"ang\\\":0.753982,\\\"tex_zoom\\\":0.779769,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ang=sin(q1*0.15);\\\\nx=sin(q1*0.5) * 0.05 + 0.5;\\\\ny=cos(q1*0.63)* 0.05 + 0.5\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":5,\\\"additive\\\":1,\\\"rad\\\":0.038091,\\\"g\\\":1,\\\"b\\\":1,\\\"g2\\\":0.6,\\\"b2\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"tm=q1;\\\\n\\\\nxp=0;\\\\nyp=0.1;\\\\nzp=0;\\\\n\\\\n//wrist movement;\\\\nang=sin(tm*2 )*0.5 +0.5;\\\\n\\\\nxq=xp;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nyq=yp*sinang + zp*cosang;\\\\nzq=yp*cosang - zp*sinang;\\\\nyq=yp;\\\\nzq=zp;\\\\n\\\\nang=tm*8;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxp=xq*sinang + yq*cosang;\\\\nyp=xq*cosang - yq*sinang;\\\\nzp=zq;\\\\n\\\\n//forearm movement;\\\\nzp=zp-0.3;\\\\nang=3.14 + sin(tm*2 - 0.5)*1.5;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxq=xp;\\\\nyq=yp*sinang + zp*cosang;\\\\nzq=yp*cosang - zp*sinang;\\\\n\\\\n//upper arm twist\\\\nang=-1.0 + cos(tm*3.1 + 0.5);\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxp=xq*sinang + yq*cosang;\\\\nyp=xq*cosang - yq*sinang;\\\\nzp=zq;\\\\n\\\\n//upper arm outward;\\\\nzp=zp-0.35;\\\\nang=cos(tm*2.3)*1.75 - 1.05;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxq=xp*sinang + zp*cosang;\\\\nyq=yp;\\\\nzq=xp*cosang - zp*sinang;\\\\n\\\\n//upper arm up down;\\\\nang=cos(tm)*0.5 - 0.5;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxp=xq;\\\\nyp=yq*cosang - zq*sinang;\\\\nzp=yq*sinang + zq*cosang;\\\\n\\\\n//xp=xq;yp=yq;zp=zq;\\\\n\\\\n\\\\n//project into screenspace and draw on screen\\\\nzp=zp+2;\\\\nxs=xp/zp;\\\\nys=yp/zp;\\\\n\\\\nx=xs+0.5;\\\\ny=ys*1.3+0.5;\\\\n\\\\n\\\\n\\\\n\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"r\\\":0.1,\\\"b\\\":0.7},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"t1=sin(time)*0.5+0.5;\\\\nt2=sin(time+2.1)*0.5+0.5;\\\\nt3=sin(time+4.2)*0.5+0.5;\\\\n\\\\nt4=sin(time+1.1)*0.5+0.5;\\\\nt5=sin(time+3.1)*0.5+0.5;\\\\nt6=sin(time+5.2)*0.5+0.5;\\\",\\\"point_eqs_eel\\\":\\\"n=sample*6.283;\\\\nphs=-sample * 0.2;\\\\ntm=q1 + phs;\\\\n\\\\nflip=flip+1;\\\\nflip=flip*below(flip,2);\\\\n\\\\nxp=0;\\\\nyp=flip*0.1 + (sin(tm)*0.5 + 0.5)*0.2;\\\\nzp=0;\\\\n\\\\n//wrist movement;\\\\nang=sin(tm*2 )*0.5 +0.5;\\\\n\\\\nxq=xp;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nyq=yp*sinang + zp*cosang;\\\\nzq=yp*cosang - zp*sinang;\\\\nyq=yp;\\\\nzq=zp;\\\\n\\\\nang=tm*8;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxp=xq*sinang + yq*cosang;\\\\nyp=xq*cosang - yq*sinang;\\\\nzp=zq;\\\\n\\\\n//forearm movement;\\\\nzp=zp-0.3;\\\\nang=3.14 + sin(tm*2 - 0.5)*1.5;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxq=xp;\\\\nyq=yp*sinang + zp*cosang;\\\\nzq=yp*cosang - zp*sinang;\\\\n\\\\n//upper arm twist\\\\nang=-1.0 + cos(tm*3.1 + 0.5);\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxp=xq*sinang + yq*cosang;\\\\nyp=xq*cosang - yq*sinang;\\\\nzp=zq;\\\\n\\\\n//upper arm outward;\\\\nzp=zp-0.35;\\\\nang=cos(tm*2.3)*1.75 - 1.05;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxq=xp*sinang + zp*cosang;\\\\nyq=yp;\\\\nzq=xp*cosang - zp*sinang;\\\\n\\\\n//upper arm up down;\\\\nang=cos(tm)*0.5 - 0.5;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxp=xq;\\\\nyp=yq*cosang - zq*sinang;\\\\nzp=yq*sinang + zq*cosang;\\\\n\\\\n//xp=xq;yp=yq;zp=zq;\\\\n\\\\n\\\\n//project into screenspace and draw on screen\\\\nzp=zp+2;\\\\nxs=xp/zp;\\\\nys=yp/zp;\\\\n\\\\nx=xs+0.5;\\\\ny=ys*1.3+0.5;\\\\n\\\\n\\\\na=if( equal(q8,1) , (1-sample) , sample);\\\\na=a*a;\\\\n\\\\nb=b+pow(1-sample,2)*0.3;\\\\n\\\\n\\\\n\\\\nr1=t1;\\\\ng1=t2;\\\\nb1=t3;\\\\nr2=t4;\\\\ng2=t5;\\\\nb2=t6;\\\\n\\\\nr=r1*flip + r2*(1-flip);\\\\ng=g1*flip + g2*(1-flip);\\\\nb=b1*flip + b2*(1-flip);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"r\\\":0.2,\\\"b\\\":0.6},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"t1=sin(time)*0.5+0.5;\\\\nt2=sin(time+2.1)*0.5+0.5;\\\\nt3=sin(time+4.2)*0.5+0.5;\\\\n\\\\nt4=sin(time+1.1)*0.5+0.5;\\\\nt5=sin(time+3.1)*0.5+0.5;\\\\nt6=sin(time+5.2)*0.5+0.5;\\\",\\\"point_eqs_eel\\\":\\\"n=sample*6.283;\\\\nphs=-sample * 0.2;\\\\ntm=q1 + phs;\\\\n\\\\nflip=flip+1;\\\\nflip=flip*below(flip,2);\\\\n\\\\nxp=0;\\\\nyp=flip*0.1 + (sin(tm)*0.5 + 0.5)*0.2 +0.1;\\\\nyp=-yp;\\\\nzp=0;\\\\n\\\\n//wrist movement;\\\\nang=sin(tm*2)*0.5 +0.5;\\\\n\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxq=xp;\\\\nyq=yp*sinang + zp*cosang;\\\\nzq=yp*cosang - zp*sinang;\\\\nyq=yp;\\\\nzq=zp;\\\\n\\\\nang=tm*8;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxp=xq*sinang + yq*cosang;\\\\nyp=xq*cosang - yq*sinang;\\\\nzp=zq;\\\\n\\\\n//forearm movement;\\\\nzp=zp-0.3;\\\\nang=3.14 + sin(tm*2 - 0.5)*1.5;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxq=xp;\\\\nyq=yp*sinang + zp*cosang;\\\\nzq=yp*cosang - zp*sinang;\\\\n\\\\n//upper arm twist\\\\nang=-1.0 + cos(tm*3.1 + 0.5);\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxp=xq*sinang + yq*cosang;\\\\nyp=xq*cosang - yq*sinang;\\\\nzp=zq;\\\\n\\\\n//upper arm outward;\\\\nzp=zp-0.35;\\\\nang=cos(tm*2.3)*1.75 - 1.05;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxq=xp*sinang + zp*cosang;\\\\nyq=yp;\\\\nzq=xp*cosang - zp*sinang;\\\\n\\\\n//upper arm up down;\\\\nang=cos(tm)*0.5 - 0.5;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxp=xq;\\\\nyp=yq*cosang - zq*sinang;\\\\nzp=yq*sinang + zq*cosang;\\\\n\\\\n//xp=xq;yp=yq;zp=zq;\\\\n\\\\n\\\\n//project into screenspace and draw on screen\\\\nzp=zp+2;\\\\nxs=xp/zp;\\\\nys=yp/zp;\\\\n\\\\nx=xs+0.5;\\\\ny=ys*1.3+0.5;\\\\n\\\\n\\\\na=if( equal(q8,1) , (1-sample) , sample);\\\\na=a*a;\\\\n\\\\n\\\\nb=b+pow(1-sample,2)*0.3;\\\\n\\\\nr1=t1;\\\\ng1=t2;\\\\nb1=t3;\\\\nr2=t4;\\\\ng2=t5;\\\\nb2=t6;\\\\n\\\\nr=r1*flip + r2*(1-flip);\\\\ng=g1*flip + g2*(1-flip);\\\\nb=b1*flip + b2*(1-flip);\\\"},{\\\"baseVals\\\":{\\\"r\\\":0.1,\\\"b\\\":0.7,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"t1=sin(time)*0.5+0.5;\\\\nt2=sin(time+2.1)*0.5+0.5;\\\\nt3=sin(time+4.2)*0.5+0.5;\\\\n\\\\nt4=sin(time+1.1)*0.5+0.5;\\\\nt5=sin(time+3.1)*0.5+0.5;\\\\nt6=sin(time+5.2)*0.5+0.5;\\\",\\\"point_eqs_eel\\\":\\\"n=sample*6.283;\\\\nphs=-sample * 0.2;\\\\ntm=q1 + phs;\\\\n\\\\nflip=flip+1;\\\\nflip=flip*below(flip,2);\\\\n\\\\nxp=0;\\\\nyp=flip*0.1 + (sin(tm)*0.5 + 0.5)*0.2;\\\\nzp=0;\\\\n\\\\n//wrist movement;\\\\nang=sin(tm*2 )*0.5 +0.5;\\\\n\\\\nxq=xp;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nyq=yp*sinang + zp*cosang;\\\\nzq=yp*cosang - zp*sinang;\\\\nyq=yp;\\\\nzq=zp;\\\\n\\\\nang=tm*8;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxp=xq*sinang + yq*cosang;\\\\nyp=xq*cosang - yq*sinang;\\\\nzp=zq;\\\\n\\\\n//forearm movement;\\\\nzp=zp-0.3;\\\\nang=3.14 + sin(tm*2 - 0.5)*1.5;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxq=xp;\\\\nyq=yp*sinang + zp*cosang;\\\\nzq=yp*cosang - zp*sinang;\\\\n\\\\n//upper arm twist\\\\nang=-1.0 + cos(tm*3.1 + 0.5);\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxp=xq*sinang + yq*cosang;\\\\nyp=xq*cosang - yq*sinang;\\\\nzp=zq;\\\\n\\\\n//upper arm outward;\\\\nzp=zp-0.35;\\\\nang=cos(tm*2.3)*1.75 - 1.05;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxq=xp*sinang + zp*cosang;\\\\nyq=yp;\\\\nzq=xp*cosang - zp*sinang;\\\\n\\\\n//upper arm up down;\\\\nang=cos(tm)*0.5 - 0.5;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxp=xq;\\\\nyp=yq*cosang - zq*sinang;\\\\nzp=yq*sinang + zq*cosang;\\\\n\\\\n//xp=xq;yp=yq;zp=zq;\\\\n\\\\n\\\\n//project into screenspace and draw on screen\\\\nzp=zp+2;\\\\nxs=-xp/zp;\\\\nys=yp/zp;\\\\n\\\\nx=xs+0.5;\\\\ny=ys*1.3+0.5;\\\\n\\\\n\\\\na=if( equal(q8,1) , (1-sample) , sample);\\\\na=a*a;\\\\n\\\\nb=b+pow(1-sample,2)*0.3;\\\\n\\\\n\\\\n\\\\nr1=t1;\\\\ng1=t2;\\\\nb1=t3;\\\\nr2=t4;\\\\ng2=t5;\\\\nb2=t6;\\\\n\\\\nr=r1*flip + r2*(1-flip);\\\\ng=g1*flip + g2*(1-flip);\\\\nb=b1*flip + b2*(1-flip);\\\"},{\\\"baseVals\\\":{\\\"r\\\":0.2,\\\"b\\\":0.6,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"t1=sin(time)*0.5+0.5;\\\\nt2=sin(time+2.1)*0.5+0.5;\\\\nt3=sin(time+4.2)*0.5+0.5;\\\\n\\\\nt4=sin(time+1.1)*0.5+0.5;\\\\nt5=sin(time+3.1)*0.5+0.5;\\\\nt6=sin(time+5.2)*0.5+0.5;\\\",\\\"point_eqs_eel\\\":\\\"n=sample*6.283;\\\\nphs=-sample * 0.2;\\\\ntm=q1 + phs;\\\\n\\\\nflip=flip+1;\\\\nflip=flip*below(flip,2);\\\\n\\\\nxp=0;\\\\nyp=flip*0.1 + (sin(tm)*0.5 + 0.5)*0.2 +0.1;\\\\nyp=-yp;\\\\nzp=0;\\\\n\\\\n//wrist movement;\\\\nang=sin(tm*2)*0.5 +0.5;\\\\n\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxq=xp;\\\\nyq=yp*sinang + zp*cosang;\\\\nzq=yp*cosang - zp*sinang;\\\\nyq=yp;\\\\nzq=zp;\\\\n\\\\nang=tm*8;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxp=xq*sinang + yq*cosang;\\\\nyp=xq*cosang - yq*sinang;\\\\nzp=zq;\\\\n\\\\n//forearm movement;\\\\nzp=zp-0.3;\\\\nang=3.14 + sin(tm*2 - 0.5)*1.5;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxq=xp;\\\\nyq=yp*sinang + zp*cosang;\\\\nzq=yp*cosang - zp*sinang;\\\\n\\\\n//upper arm twist\\\\nang=-1.0 + cos(tm*3.1 + 0.5);\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxp=xq*sinang + yq*cosang;\\\\nyp=xq*cosang - yq*sinang;\\\\nzp=zq;\\\\n\\\\n//upper arm outward;\\\\nzp=zp-0.35;\\\\nang=cos(tm*2.3)*1.75 - 1.05;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxq=xp*sinang + zp*cosang;\\\\nyq=yp;\\\\nzq=xp*cosang - zp*sinang;\\\\n\\\\n//upper arm up down;\\\\nang=cos(tm)*0.5 - 0.5;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxp=xq;\\\\nyp=yq*cosang - zq*sinang;\\\\nzp=yq*sinang + zq*cosang;\\\\n\\\\n//xp=xq;yp=yq;zp=zq;\\\\n\\\\n\\\\n//project into screenspace and draw on screen\\\\nzp=zp+2;\\\\nxs=-xp/zp;\\\\nys=yp/zp;\\\\n\\\\nx=xs+0.5;\\\\ny=ys*1.3+0.5;\\\\n\\\\n\\\\na=if( equal(q8,1) , (1-sample) , sample);\\\\na=a*a;\\\\n\\\\n\\\\nb=b+pow(1-sample,2)*0.3;\\\\n\\\\nr1=t1;\\\\ng1=t2;\\\\nb1=t3;\\\\nr2=t4;\\\\ng2=t5;\\\\nb2=t6;\\\\n\\\\nr=r1*flip + r2*(1-flip);\\\\ng=g1*flip + g2*(1-flip);\\\\nb=b1*flip + b2*(1-flip);\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"movement = movement + 0.01*(bass+bass_att) + 0.001*pow(bass+1,3);\\\\nq1 = movement;\\\\nmonitor =q1;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec3 ret_1;\\\\n  ret_1 = texture (sampler_main, uv).xyz;\\\\n  vec2 tmpvar_2;\\\\n  tmpvar_2 = (normalize((uv - uv_orig)) * texsize.zw);\\\\n  vec4 tmpvar_3;\\\\n  tmpvar_3.w = 0.0;\\\\n  tmpvar_3.xyz = ret_1;\\\\n  vec4 tmpvar_4;\\\\n  tmpvar_4.w = 0.0;\\\\n  tmpvar_4.xyz = max (tmpvar_3, (texture (sampler_main, (uv - tmpvar_2)) * 0.9)).xyz;\\\\n  vec4 tmpvar_5;\\\\n  tmpvar_5.w = 0.0;\\\\n  tmpvar_5.xyz = max (tmpvar_4, (texture (sampler_main, (uv + tmpvar_2)) * 0.97)).xyz;\\\\n  vec4 tmpvar_6;\\\\n  tmpvar_6.w = 0.0;\\\\n  tmpvar_6.xyz = max (tmpvar_5, (texture (sampler_main, (uv + \\\\n    (tmpvar_2 * 2.0)\\\\n  )) * 0.97)).xyz;\\\\n  ret_1 = (max (tmpvar_6, (texture (sampler_main, \\\\n    (uv + (tmpvar_2 * 3.0))\\\\n  ) * 0.9)).xyz * 0.92);\\\\n  vec4 tmpvar_7;\\\\n  tmpvar_7.w = 1.0;\\\\n  tmpvar_7.xyz = ret_1;\\\\n  ret = tmpvar_7.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec2 uv_1;\\\\n  vec3 ret_2;\\\\n  uv_1 = (0.05 + (0.9 * uv));\\\\n  ret_2 = (abs((\\\\n    ((texture (sampler_blur1, uv_1).xyz * scale1) + bias1)\\\\n   - texture (sampler_main, uv_1).xyz)) * 6.0);\\\\n  ret_2 = (ret_2 * 1.333);\\\\n  vec4 tmpvar_3;\\\\n  tmpvar_3.w = 1.0;\\\\n  tmpvar_3.xyz = ret_2;\\\\n  ret = tmpvar_3.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/_Rovastar + Geiss - Hurricane Nightmare (Posterize Mix).json\":\n/*!****************************************************************************************!*\\\n  !*** ./presets/converted/_Rovastar + Geiss - Hurricane Nightmare (Posterize Mix).json ***!\n  \\****************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1,\\\"decay\\\":1,\\\"echo_zoom\\\":1,\\\"echo_orient\\\":3,\\\"wave_mode\\\":1,\\\"wave_thick\\\":1,\\\"wrap\\\":0,\\\"darken_center\\\":1,\\\"wave_a\\\":0.3,\\\"wave_scale\\\":0.881,\\\"wave_smoothing\\\":0.5,\\\"wave_mystery\\\":-1,\\\"warpscale\\\":2.853,\\\"zoomexp\\\":3.6,\\\"zoom\\\":1.02109,\\\"rot\\\":-0.16,\\\"warp\\\":0.309,\\\"wave_r\\\":0.6,\\\"wave_g\\\":0.6,\\\"wave_b\\\":0.6,\\\"wave_y\\\":0.47,\\\"mv_l\\\":1.75},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"wave_r = wave_r + 0.400*( 0.60*sin(0.933*time) + 0.40*sin(1.045*time) );\\\\nwave_g = wave_g + 0.400*( 0.60*sin(0.900*time) + 0.40*sin(0.956*time) );\\\\nwave_b = wave_b + 0.400*( 0.60*sin(0.910*time) + 0.40*sin(0.920*time) );\\\\nq8 = oldq8+if(above(bass+bass_att,1.8),q8+0.0005*pow((bass+bass_att-1),9),0);\\\\noldq8 = q8;\\\\nmonitor = q8;\\\\nzoom = zoom + 0.023*( 0.60*sin(0.339*q8) + 0.40*sin(0.276*q8) );\\\\nrot = rot + 0.030*( 0.60*sin(0.381*q8) + 0.40*sin(0.579*q8) );\\\\n//decay = decay - 0.02*equal(frame%40,0);\\\\nmv_r = wave_r;\\\\nmv_b = wave_b;\\\\nmv_g = wave_g;\\\\nmv_x = 1.25;\\\\nmv_y = 1.25;\\\\nmv_dx = 0.1*sin(1.1*time);\\\\nmv_dy = 0.1*cos(1.112*time);\\\",\\\"pixel_eqs_eel\\\":\\\"rot=rot+1/(10*(rad+0.2+0.1*sin(q8)));\\\",\\\"warp\\\":\\\"\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec4 tmpvar_1;\\\\n  tmpvar_1 = texture (sampler_main, uv);\\\\n  vec4 tmpvar_2;\\\\n  tmpvar_2.w = 1.0;\\\\n  tmpvar_2.xyz = (tmpvar_1.xyz * (1.0 + (\\\\n    (abs((fract(\\\\n      (tmpvar_1.xyz * 8.0)\\\\n    ) - 0.5)) - 0.25)\\\\n   * 0.4)));\\\\n  ret = tmpvar_2.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/cope + flexi - colorful marble (ghost mix).json\":\n/*!***************************************************************************!*\\\n  !*** ./presets/converted/cope + flexi - colorful marble (ghost mix).json ***!\n  \\***************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":1,\\\"gammaadj\\\":1,\\\"decay\\\":1,\\\"echo_orient\\\":1,\\\"additivewave\\\":1,\\\"wave_a\\\":0.002,\\\"wave_scale\\\":2.713,\\\"wave_smoothing\\\":0,\\\"modwavealphastart\\\":1.2,\\\"modwavealphaend\\\":1.2,\\\"warpscale\\\":1.331,\\\"zoom\\\":0.9995,\\\"warp\\\":0.009,\\\"wave_r\\\":0.44,\\\"wave_g\\\":0.4,\\\"ob_size\\\":0.5,\\\"ob_r\\\":0.01,\\\"ib_size\\\":0.26,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0.85,\\\"mv_r\\\":0.5,\\\"mv_g\\\":0.5,\\\"mv_b\\\":0.5,\\\"mv_a\\\":0,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"sides\\\":3,\\\"additive\\\":1,\\\"num_inst\\\":347,\\\"rad\\\":0.20065,\\\"ang\\\":0.75398,\\\"tex_ang\\\":3.14159,\\\"tex_zoom\\\":0.99979,\\\"r\\\":0,\\\"g2\\\":0,\\\"border_g\\\":0.5,\\\"border_b\\\":0.15,\\\"border_a\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"//lorenz-attractor calc\\\\nxx1 = if(equal(instance,0),q11,xx1);\\\\nyy1 = if(equal(instance,0),q12,yy1);\\\\nzz1 = if(equal(instance,0),q13,zz1);\\\\n\\\\ndx1 = q14*(yy1-xx1);\\\\ndy1 = xx1*(q15-zz1)-yy1;\\\\ndz1 = xx1*yy1-q16*zz1;\\\\ndd = sqrt(dx1*dx1+dy1*dy1+dz1*dz1);\\\\nxx1 = xx1 + q17*dx1/dd;\\\\nyy1 = yy1 + q17*dy1/dd;\\\\nzz1 = zz1 + q17*dz1/dd;\\\\n\\\\n\\\\n// 3D object model coordinates\\\\nmy_x = xx1*0.1;\\\\nmy_y = yy1*0.1;\\\\nmy_z = zz1*0.1 - 3;\\\\n\\\\n\\\\nd = 5; // camera distance\\\\nzoom = 0.66;\\\\n\\\\n// solid angles\\\\nw3 = -q3;\\\\nw2 = q4;\\\\nw1 = q5;\\\\n\\\\n// 3D rotation\\\\nx1 = cos(w1)*my_x + sin(w1)*my_y;\\\\ny1 = -sin(w1)*my_x + cos(w1)*my_y;\\\\nz1 = my_z;\\\\n\\\\nx2 = cos(w2)*x1 + sin(w2)*z1;\\\\nz2 = -sin(w2)*x1 + cos(w2)*z1;\\\\ny2 = y1;\\\\n\\\\ny3 = cos(w3)*y2 + sin(w3)*z2;\\\\nz3 = -sin(w3)*y2 + cos(w3)*z2;\\\\nx3 = x2;\\\\n\\\\n// perspective calculation\\\\n\\\\nl = sqrt(x3*x3 + y3*y3);\\\\nw = atan2(x3,y3);\\\\np = tan(asin(1) + atan2(d+z3,l));\\\\nd = sqrt(x3*x3 + y3*y3 + (z3+d)*(z3+d));\\\\n\\\\nmy_x = zoom*sin(w)*p;\\\\nmy_y = zoom*cos(w)*p;\\\\n\\\\nx = 0.5 + my_x;\\\\ny = 0.5 + my_y;\\\\n\\\\nrad = rad/d;\\\\nang = ang-instance/num_inst*asin(1)*8;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":52,\\\"rad\\\":0.72136,\\\"tex_zoom\\\":0.7874,\\\"r\\\":0,\\\"a\\\":0.05,\\\"g2\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"started = 0;\\\\nt1 = 0.412; //seeds for pseudo random generator\\\\nt2 = 0.4563;\\\\nt3 = 0.6452;\\\\nt4 = 0.2565;\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":12,\\\"additive\\\":1,\\\"num_inst\\\":512,\\\"y\\\":0.55,\\\"rad\\\":0.2667,\\\"tex_zoom\\\":0.7874,\\\"r\\\":0,\\\"g\\\":0.1,\\\"b\\\":0.55,\\\"g2\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"started = 0;\\\\nt1 = 0.412; //seeds for pseudo random generator\\\\nt2 = 0.4563;\\\\nt3 = 0.6452;\\\\nt4 = 0.2565;\\\",\\\"frame_eqs_eel\\\":\\\"rnd1 = if(equal(instance,0),t1,rnd1);\\\\nrnd2 = if(equal(instance,0),t2,rnd2);\\\\nrnd3 = if(equal(instance,0),t3,rnd3);\\\\nrnd4 = if(equal(instance,0),t4,rnd4);\\\\nrnd1 = 4*rnd1*(1-rnd1);\\\\nrnd2 = 4*rnd2*(1-rnd2);\\\\nrnd3 = 4*rnd3*(1-rnd3);\\\\nrnd4 = 4*rnd4*(1-rnd4);\\\\nt = .6;\\\\nt =  (rnd1+time*t) - int(rnd1+time*t);\\\\nt = t + rnd2*0.1;\\\\nwh = rnd4*asin(1)*4;\\\\nwv = 0.25 + rnd3*0.1;\\\\n\\\\nd = 6; // makes the perspective impact\\\\nzoom = 1;\\\\nl = 1;\\\\n\\\\n// Kardan angles\\\\n\\\\nw1 = q3; // first rotation: clockwise in the desktop pane\\\\nw2 = q4; // rotation around vertical axis\\\\nw3 = q5; // rotation around horizontal axis\\\\n\\\\n\\\\n// definition of the 3D shape\\\\n\\\\ni = instance;\\\\n\\\\nmy_x = t *(cos(wh)*sin(wv)*l)*4;\\\\nmy_z = (-0.5 +(t-0.75)*(t-0.75))*cos(wv)*l*4;\\\\nmy_y = t*(sin(wh)*sin(wv)*l)*4;\\\\n\\\\n\\\\n// 3D rotations\\\\n\\\\nx1 = cos(w1)*my_x + sin(w1)*my_y;\\\\ny1 = -sin(w1)*my_x + cos(w1)*my_y;\\\\nz1 = my_z;\\\\n\\\\nx2 = cos(w2)*x1 + sin(w2)*z1;\\\\nz2 = -sin(w2)*x1 + cos(w2)*z1;\\\\ny2 = y1;\\\\n\\\\ny3 = cos(w3)*y2 + sin(w3)*z2;\\\\nz3 = -sin(w3)*y2 + cos(w3)*z2;\\\\nx3 = x2;\\\\n\\\\n// perspective calculation\\\\n\\\\np = tan(asin(1) + atan2(d+z3,sqrt(x3*x3 + y3*y3)));\\\\nd = sqrt(x3*x3 + y3*y3 + (z3+d)*(z3+d));\\\\n\\\\nrad = rad/d;\\\\nmy_x = zoom*sin(atan2(x3,y3))*p;\\\\nmy_y = zoom*cos(atan2(x3,y3))*p;\\\\n\\\\nx = 0.5 + my_x;\\\\ny = 0.5 + my_y;\\\\n\\\\nx = 0.5 + (x-0.5)/q2;\\\\ny = 0.5 + (y-0.5)/q1;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":12,\\\"additive\\\":1,\\\"num_inst\\\":512,\\\"y\\\":0.55,\\\"rad\\\":0.05012,\\\"tex_zoom\\\":0.7874,\\\"r\\\":0,\\\"g\\\":0.02,\\\"b\\\":0.11,\\\"g2\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"started = 0;\\\\nt1 = 0.412; //seeds for pseudo random generator\\\\nt2 = 0.4563;\\\\nt3 = 0.6452;\\\\nt4 = 0.2565;\\\",\\\"frame_eqs_eel\\\":\\\"rnd1 = if(equal(instance,0),t1,rnd1);\\\\nrnd2 = if(equal(instance,0),t2,rnd2);\\\\nrnd3 = if(equal(instance,0),t3,rnd3);\\\\nrnd4 = if(equal(instance,0),t4,rnd4);\\\\nrnd1 = 4*rnd1*(1-rnd1);\\\\nrnd2 = 4*rnd2*(1-rnd2);\\\\nrnd3 = 4*rnd3*(1-rnd3);\\\\nrnd4 = 4*rnd4*(1-rnd4);\\\\nt = .6;\\\\nt =  (rnd1+time*t) - int(rnd1+time*t);\\\\nt = t + rnd2*0.1;\\\\nwh = rnd4*asin(1)*4;\\\\nwv = 0.25 + rnd3*0.1;\\\\n\\\\nd = 1.4; // makes the perspective impact\\\\nzoom = 1;\\\\nl = 1;\\\\n\\\\n// Kardan angles\\\\n\\\\nw1 = q3; // first rotation: clockwise in the desktop pane\\\\nw2 = q4; // rotation around vertical axis\\\\nw3 = q5; // rotation around horizontal axis\\\\n\\\\n\\\\n// definition of the 3D shape\\\\n\\\\ni = instance;\\\\n\\\\nmy_x = t *(cos(wh)*sin(wv)*l);\\\\nmy_y = (-0.5 +(t-0.75)*(t-0.75))*cos(wv)*l;\\\\nmy_z = t*(sin(wh)*sin(wv)*l);\\\\n\\\\n\\\\n// 3D rotations\\\\n\\\\nx1 = cos(w1)*my_x + sin(w1)*my_y;\\\\ny1 = -sin(w1)*my_x + cos(w1)*my_y;\\\\nz1 = my_z;\\\\n\\\\nx2 = cos(w2)*x1 + sin(w2)*z1;\\\\nz2 = -sin(w2)*x1 + cos(w2)*z1;\\\\ny2 = y1;\\\\n\\\\ny3 = cos(w3)*y2 + sin(w3)*z2;\\\\nz3 = -sin(w3)*y2 + cos(w3)*z2;\\\\nx3 = x2;\\\\n\\\\n// perspective calculation\\\\n\\\\np = tan(asin(1) + atan2(d+z3,sqrt(x3*x3 + y3*y3)));\\\\nd = sqrt(x3*x3 + y3*y3 + (z3+d)*(z3+d));\\\\n\\\\nrad = rad/d;\\\\nmy_x = zoom*sin(atan2(x3,y3))*p;\\\\nmy_y = zoom*cos(atan2(x3,y3))*p;\\\\n\\\\nx = 0.5 + my_x;\\\\ny = 0.5 + my_y;\\\\n\\\\nx = 0.5 + (x-0.5)/q2;\\\\ny = 0.5 + (y-0.5)/q1;\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"samples\\\":495,\\\"sep\\\":4,\\\"spectrum\\\":1,\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":100,\\\"smoothing\\\":1,\\\"a\\\":0.21,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\nab = 1;\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"// lorenz-attractor calc\\\\nxx1 = if(equal(sample,0),q11,xx1);\\\\nyy1 = if(equal(sample,0),q12,yy1);\\\\nzz1 = if(equal(sample,0),q13,zz1);\\\\ndx1 = q14*(yy1-xx1);\\\\ndy1 = xx1*(q15-zz1)-yy1;\\\\ndz1 = xx1*yy1-q16*zz1;\\\\nxx1 = xx1 + q17*dx1;\\\\nyy1 = yy1 + q17*dy1;\\\\nzz1 = zz1 + q17*dz1;\\\\n\\\\n// 3D model coordinates\\\\nmy_x = xx1*0.1;\\\\nmy_y = yy1*0.1;\\\\nmy_z = zz1*0.1 - 3;\\\\n\\\\n\\\\nd = 5; // distance of the camera (on the z-axis) to the origin\\\\nzoom = 0.4;\\\\n\\\\n// solid angles\\\\nw1 = q2;\\\\nw2 = q3;\\\\nw3 = q4;\\\\n\\\\n// rotations\\\\nx1 = cos(w1)*my_x + sin(w1)*my_y;\\\\ny1 = -sin(w1)*my_x + cos(w1)*my_y;\\\\nz1 = my_z;\\\\n\\\\nx2 = cos(w2)*x1 + sin(w2)*z1;\\\\nz2 = -sin(w2)*x1 + cos(w2)*z1;\\\\ny2 = y1;\\\\n\\\\ny3 = cos(w3)*y2 + sin(w3)*z2;\\\\nz3 = -sin(w3)*y2 + cos(w3)*z2;\\\\nx3 = x2;\\\\n\\\\n// perspective calculation\\\\n\\\\nl = sqrt(x3*x3 + y3*y3);\\\\nw = atan2(x3,y3);\\\\np = tan(asin(1) + atan2(d+z3,l));\\\\nd = sqrt(x3*x3 + y3*y3 + (z3+d)*(z3+d));\\\\n\\\\nmy_x = zoom*sin(w)*p;\\\\nmy_y = zoom*cos(w)*p;\\\\n\\\\nx = 0.5 + my_x;\\\\ny = 0.5 + my_y;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"xx1 = if(equal(sample,0),q11,xx1);\\\\nyy1 = if(equal(sample,0),q12,yy1);\\\\nzz1 = if(equal(sample,0),q13,zz1);\\\\n\\\\ndx1 = q14*(yy1-xx1);\\\\ndy1 = xx1*(q15-zz1)-yy1;\\\\ndz1 = xx1*yy1-q16*zz1;\\\\nxx1 = xx1 + q17*dx1;\\\\nyy1 = yy1 + q17*dy1;\\\\nzz1 = zz1 + q17*dz1;\\\\n\\\\nmy_x = xx1*0.02;\\\\nmy_y = yy1*0.02;\\\\nmy_z = zz1*0.02;\\\\n\\\\nx = 0.5 + my_x;\\\\ny = 0.5 + my_y;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"x1 = 2;\\\\ny1= 2;\\\\nz1 = 2;\\\",\\\"frame_eqs_eel\\\":\\\"// raytraced sphere code\\\\n\\\\nd = 20; // distance of the sphere, the farther you're away the more you'll see on the horizon\\\\nz = 4; // distance of the pane where the scene is projected on, wider distance = smaller apex angle of the camera, very small distances = fish eyes view\\\\n\\\\nzz = 1 + bass_att*0; // linear zoom\\\\n\\\\npi = asin(1)*2;\\\\npi2inv = 0.5/pi;\\\\nmaskangle = asin( 1/d);\\\\nq32 = maskangle; // hit = (cameras angle < mask_angle)\\\\nq31 = d;\\\\nq30 = z;\\\\nq29 = pi2inv;\\\\nq28 = pi;\\\\nq27 = 1/zz;\\\\n\\\\nv = 0.4;\\\\nj1 = j1*0.95 + sqr(bass*4)*v;\\\\nj2 = j2*0.95 + sqr(mid*4)*v;\\\\nj3 = j3*0.95 + sqr(treb*4)*v;\\\\n\\\\nn = n + j1*0.0152;\\\\nn1 = n1 + j2*0.0152;\\\\nn2 = n2 + j3*0.0152;\\\\n\\\\nvol=(bass+mid+treb)*0.25;\\\\nvol=vol;\\\\nq3=vol;\\\\nmtime = mtime+vol*0.01;\\\\nq1=mtime;\\\\n\\\\nzoom = zoom + 0.015*vol;\\\\n\\\\nw1 = n*0.01;    // solid angles to rotate the sphere in its origin\\\\nw2 = n1*0.01;\\\\nw3 = n2*0.01;\\\\n\\\\nq20 = cos(w1);\\\\nq21 = sin(w1);\\\\nq22 = cos(w2);\\\\nq23 = sin(w2);\\\\nq24 = cos(w3);\\\\nq25 = sin(w3);\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec3 noise2_1;\\\\n  vec3 rc_2;\\\\n  vec3 p_3;\\\\n  vec2 polar_4;\\\\n  vec3 ret_5;\\\\n  vec2 tmpvar_6;\\\\n  tmpvar_6 = ((q27 * (uv - 0.5)) * aspect.xy);\\\\n  float tmpvar_7;\\\\n  tmpvar_7 = sqrt(dot (tmpvar_6, tmpvar_6));\\\\n  float tmpvar_8;\\\\n  float tmpvar_9;\\\\n  tmpvar_9 = (min (abs(\\\\n    (tmpvar_7 / q30)\\\\n  ), 1.0) / max (abs(\\\\n    (tmpvar_7 / q30)\\\\n  ), 1.0));\\\\n  float tmpvar_10;\\\\n  tmpvar_10 = (tmpvar_9 * tmpvar_9);\\\\n  tmpvar_10 = (((\\\\n    ((((\\\\n      ((((-0.01213232 * tmpvar_10) + 0.05368138) * tmpvar_10) - 0.1173503)\\\\n     * tmpvar_10) + 0.1938925) * tmpvar_10) - 0.3326756)\\\\n   * tmpvar_10) + 0.9999793) * tmpvar_9);\\\\n  tmpvar_10 = (tmpvar_10 + (float(\\\\n    (abs((tmpvar_7 / q30)) > 1.0)\\\\n  ) * (\\\\n    (tmpvar_10 * -2.0)\\\\n   + 1.570796)));\\\\n  tmpvar_8 = (tmpvar_10 * sign((tmpvar_7 / q30)));\\\\n  if ((abs(q30) > (1e-08 * abs(tmpvar_7)))) {\\\\n    if ((q30 < 0.0)) {\\\\n      if ((tmpvar_7 >= 0.0)) {\\\\n        tmpvar_8 += 3.141593;\\\\n      } else {\\\\n        tmpvar_8 = (tmpvar_8 - 3.141593);\\\\n      };\\\\n    };\\\\n  } else {\\\\n    tmpvar_8 = (sign(tmpvar_7) * 1.570796);\\\\n  };\\\\n  bool tmpvar_11;\\\\n  tmpvar_11 = (q32 >= tmpvar_8);\\\\n  float tmpvar_12;\\\\n  float tmpvar_13;\\\\n  tmpvar_13 = (min (abs(\\\\n    (tmpvar_6.x / tmpvar_6.y)\\\\n  ), 1.0) / max (abs(\\\\n    (tmpvar_6.x / tmpvar_6.y)\\\\n  ), 1.0));\\\\n  float tmpvar_14;\\\\n  tmpvar_14 = (tmpvar_13 * tmpvar_13);\\\\n  tmpvar_14 = (((\\\\n    ((((\\\\n      ((((-0.01213232 * tmpvar_14) + 0.05368138) * tmpvar_14) - 0.1173503)\\\\n     * tmpvar_14) + 0.1938925) * tmpvar_14) - 0.3326756)\\\\n   * tmpvar_14) + 0.9999793) * tmpvar_13);\\\\n  tmpvar_14 = (tmpvar_14 + (float(\\\\n    (abs((tmpvar_6.x / tmpvar_6.y)) > 1.0)\\\\n  ) * (\\\\n    (tmpvar_14 * -2.0)\\\\n   + 1.570796)));\\\\n  tmpvar_12 = (tmpvar_14 * sign((tmpvar_6.x / tmpvar_6.y)));\\\\n  if ((abs(tmpvar_6.y) > (1e-08 * abs(tmpvar_6.x)))) {\\\\n    if ((tmpvar_6.y < 0.0)) {\\\\n      if ((tmpvar_6.x >= 0.0)) {\\\\n        tmpvar_12 += 3.141593;\\\\n      } else {\\\\n        tmpvar_12 = (tmpvar_12 - 3.141593);\\\\n      };\\\\n    };\\\\n  } else {\\\\n    tmpvar_12 = (sign(tmpvar_6.x) * 1.570796);\\\\n  };\\\\n  float x_15;\\\\n  x_15 = (q31 * sin(tmpvar_8));\\\\n  vec2 tmpvar_16;\\\\n  tmpvar_16.x = tmpvar_12;\\\\n  tmpvar_16.y = ((q28 - tmpvar_8) + (sign(x_15) * (1.570796 - \\\\n    (sqrt((1.0 - abs(x_15))) * (1.570796 + (abs(x_15) * (-0.2146018 + \\\\n      (abs(x_15) * (0.08656672 + (abs(x_15) * -0.03102955)))\\\\n    ))))\\\\n  )));\\\\n  polar_4 = tmpvar_16;\\\\n  vec3 tmpvar_17;\\\\n  tmpvar_17.x = (sin(tmpvar_12) * sin(tmpvar_16.y));\\\\n  tmpvar_17.y = (cos(tmpvar_12) * sin(tmpvar_16.y));\\\\n  tmpvar_17.z = cos(tmpvar_16.y);\\\\n  vec2 tmpvar_18;\\\\n  tmpvar_18.x = ((tmpvar_17.z * q20) - (tmpvar_17.y * q21));\\\\n  tmpvar_18.y = ((tmpvar_17.z * q21) + (tmpvar_17.y * q20));\\\\n  vec2 tmpvar_19;\\\\n  tmpvar_19.x = ((tmpvar_18.x * q22) - (tmpvar_17.x * q23));\\\\n  tmpvar_19.y = ((tmpvar_18.x * q23) + (tmpvar_17.x * q22));\\\\n  p_3.z = tmpvar_19.x;\\\\n  vec2 tmpvar_20;\\\\n  tmpvar_20.x = ((tmpvar_18.y * q24) - (tmpvar_19.y * q25));\\\\n  tmpvar_20.y = ((tmpvar_18.y * q25) + (tmpvar_19.y * q24));\\\\n  p_3.xy = tmpvar_20.yx;\\\\n  float tmpvar_21;\\\\n  float tmpvar_22;\\\\n  tmpvar_22 = (min (abs(\\\\n    (tmpvar_19.x / tmpvar_20.y)\\\\n  ), 1.0) / max (abs(\\\\n    (tmpvar_19.x / tmpvar_20.y)\\\\n  ), 1.0));\\\\n  float tmpvar_23;\\\\n  tmpvar_23 = (tmpvar_22 * tmpvar_22);\\\\n  tmpvar_23 = (((\\\\n    ((((\\\\n      ((((-0.01213232 * tmpvar_23) + 0.05368138) * tmpvar_23) - 0.1173503)\\\\n     * tmpvar_23) + 0.1938925) * tmpvar_23) - 0.3326756)\\\\n   * tmpvar_23) + 0.9999793) * tmpvar_22);\\\\n  tmpvar_23 = (tmpvar_23 + (float(\\\\n    (abs((tmpvar_19.x / tmpvar_20.y)) > 1.0)\\\\n  ) * (\\\\n    (tmpvar_23 * -2.0)\\\\n   + 1.570796)));\\\\n  tmpvar_21 = (tmpvar_23 * sign((tmpvar_19.x / tmpvar_20.y)));\\\\n  if ((abs(tmpvar_20.y) > (1e-08 * abs(tmpvar_19.x)))) {\\\\n    if ((tmpvar_20.y < 0.0)) {\\\\n      if ((tmpvar_19.x >= 0.0)) {\\\\n        tmpvar_21 += 3.141593;\\\\n      } else {\\\\n        tmpvar_21 = (tmpvar_21 - 3.141593);\\\\n      };\\\\n    };\\\\n  } else {\\\\n    tmpvar_21 = (sign(tmpvar_19.x) * 1.570796);\\\\n  };\\\\n  float tmpvar_24;\\\\n  tmpvar_24 = sqrt(dot (p_3.xz, p_3.xz));\\\\n  float tmpvar_25;\\\\n  float tmpvar_26;\\\\n  tmpvar_26 = (min (abs(\\\\n    (tmpvar_20.x / tmpvar_24)\\\\n  ), 1.0) / max (abs(\\\\n    (tmpvar_20.x / tmpvar_24)\\\\n  ), 1.0));\\\\n  float tmpvar_27;\\\\n  tmpvar_27 = (tmpvar_26 * tmpvar_26);\\\\n  tmpvar_27 = (((\\\\n    ((((\\\\n      ((((-0.01213232 * tmpvar_27) + 0.05368138) * tmpvar_27) - 0.1173503)\\\\n     * tmpvar_27) + 0.1938925) * tmpvar_27) - 0.3326756)\\\\n   * tmpvar_27) + 0.9999793) * tmpvar_26);\\\\n  tmpvar_27 = (tmpvar_27 + (float(\\\\n    (abs((tmpvar_20.x / tmpvar_24)) > 1.0)\\\\n  ) * (\\\\n    (tmpvar_27 * -2.0)\\\\n   + 1.570796)));\\\\n  tmpvar_25 = (tmpvar_27 * sign((tmpvar_20.x / tmpvar_24)));\\\\n  if ((abs(tmpvar_24) > (1e-08 * abs(tmpvar_20.x)))) {\\\\n    if ((tmpvar_24 < 0.0)) {\\\\n      if ((tmpvar_20.x >= 0.0)) {\\\\n        tmpvar_25 += 3.141593;\\\\n      } else {\\\\n        tmpvar_25 = (tmpvar_25 - 3.141593);\\\\n      };\\\\n    };\\\\n  } else {\\\\n    tmpvar_25 = (sign(tmpvar_20.x) * 1.570796);\\\\n  };\\\\n  vec2 tmpvar_28;\\\\n  tmpvar_28.x = tmpvar_21;\\\\n  tmpvar_28.y = tmpvar_25;\\\\n  polar_4 = (((tmpvar_28 * q29) * vec2(1.0, 2.0)) + vec2(0.0, 0.5));\\\\n  vec3 tmpvar_29;\\\\n  tmpvar_29.xy = polar_4;\\\\n  tmpvar_29.z = (time * 0.15);\\\\n  rc_2 = (texture (sampler_noisevol_hq, tmpvar_29).xyz + (texture (sampler_noisevol_hq, (2.0 * tmpvar_29)) * 0.5).xyz);\\\\n  rc_2 = (rc_2 + (texture (sampler_noisevol_hq, (4.0 * tmpvar_29)) * 0.25).xyz);\\\\n  rc_2 = (rc_2 + (texture (sampler_noisevol_hq, (8.0 * tmpvar_29)) * 0.125).xyz);\\\\n  rc_2 = (rc_2 + (texture (sampler_noisevol_hq, (16.0 * tmpvar_29)) * 0.0625).xyz);\\\\n  rc_2 = ((rc_2 * rc_2) * (rc_2 * 2.0));\\\\n  rc_2 = (rc_2 * (q3 * 0.5));\\\\n  vec4 tmpvar_30;\\\\n  tmpvar_30 = texture (sampler_fc_main, (0.5 + (uv - 0.5)));\\\\n  noise2_1 = (texture (sampler_noise_lq, ((\\\\n    (uv_orig * texsize.xy)\\\\n   * texsize_noise_lq.zw) + rand_frame.xy)).xyz + mix ((rc_2 * 2.0), vec3(2.0, 2.0, 2.0), vec3(rad)));\\\\n  vec3 a_31;\\\\n  a_31 = (1.0 - tmpvar_30.xyz);\\\\n  ret_5 = (tmpvar_30.xyz + (vec3(0.3, 0.25, 0.2) * dot (\\\\n    ((a_31.yzx * noise2_1.zxy) - (a_31.zxy * noise2_1.yzx))\\\\n  , vec3(0.32, 0.49, 0.29))));\\\\n  ret_5 = (ret_5 - (0.1 * rad));\\\\n  ret_5 = (ret_5 + ((0.1 * texture (sampler_noisevol_hq, \\\\n    ((p_3 + (time * 0.1)) * 0.7)\\\\n  )) * float(tmpvar_11)).xyz);\\\\n  vec4 tmpvar_32;\\\\n  tmpvar_32.w = 1.0;\\\\n  tmpvar_32.xyz = ret_5;\\\\n  ret = tmpvar_32.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec3 ret_1;\\\\n  ret_1 = (texture (sampler_main, uv).xyz - ((\\\\n    (texture (sampler_blur1, uv).xyz * scale1)\\\\n   + bias1) * 0.5));\\\\n  ret_1 = (ret_1 * 2.0);\\\\n  vec4 tmpvar_2;\\\\n  tmpvar_2.w = 1.0;\\\\n  tmpvar_2.xyz = ret_1;\\\\n  ret = tmpvar_2.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/cope + martin - mother-of-pearl.json\":\n/*!****************************************************************!*\\\n  !*** ./presets/converted/cope + martin - mother-of-pearl.json ***!\n  \\****************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":0,\\\"gammaadj\\\":1.14,\\\"decay\\\":1,\\\"echo_zoom\\\":1,\\\"wave_mode\\\":6,\\\"wave_thick\\\":1,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":1.17,\\\"wave_scale\\\":0.797,\\\"wave_smoothing\\\":0,\\\"modwavealphastart\\\":0.71,\\\"modwavealphaend\\\":1.3,\\\"warpscale\\\":1.331,\\\"zoomexp\\\":0.9995,\\\"zoom\\\":0.9998,\\\"rot\\\":0.02,\\\"dy\\\":-0.008,\\\"warp\\\":0.01,\\\"sx\\\":1.0098,\\\"wave_r\\\":0.5,\\\"wave_g\\\":0.5,\\\"wave_b\\\":0.5,\\\"wave_x\\\":0.9,\\\"ob_size\\\":0.005,\\\"ob_a\\\":0.8,\\\"ib_size\\\":0,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"ib_a\\\":1,\\\"mv_x\\\":44.8,\\\"mv_y\\\":38.4,\\\"mv_l\\\":5,\\\"mv_g\\\":0.91,\\\"mv_b\\\":0.71,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"sides\\\":33,\\\"y\\\":0,\\\"rad\\\":0.11039,\\\"ang\\\":3.4054,\\\"r\\\":0,\\\"g2\\\":0,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"//ang = ang + time*2;\\\\n\\\\n//x = x + 0.4*sin(time);\\\\n//y = y + 0.4*sin(-time*1.4);\\\"},{\\\"baseVals\\\":{\\\"sides\\\":34,\\\"y\\\":0.45,\\\"rad\\\":1.62175,\\\"r\\\":0,\\\"a\\\":0.05,\\\"g2\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":54,\\\"x\\\":0,\\\"y\\\":0.6,\\\"rad\\\":0.13478,\\\"r\\\":0.7,\\\"g\\\":0.6,\\\"b\\\":0.7,\\\"r2\\\":0.6,\\\"g2\\\":0.6,\\\"b2\\\":0.6,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"//r = r + 0.3*(0.6*sin(time*1.87) + 0.4*sin(1.98*time));\\\\n//b = b + 0.3*(0.6*sin(time*1.3434) + 0.4*sin(1.78*time));\\\\n//g = g + 0.3*(0.6*sin(time*1.9887) + 0.4*sin(1.6*time));\\\\nr=0;\\\\nb=0;\\\\ng=0;\\\\nr2=r;\\\\nb2=b;\\\\ng2=g;\\\"},{\\\"baseVals\\\":{\\\"x\\\":0,\\\"y\\\":0.2,\\\"rad\\\":0.20068,\\\"r\\\":0,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"usedots\\\":1,\\\"r\\\":0.2,\\\"g\\\":0.7,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"wave_r = wave_r + 0.3*sin(vol*50);\\\\nwave_b = wave_b + 0.3*sin(vol*20);\\\\nwave_g = wave_g + 0.5*sin(vol*35);\\\\n\\\\n\\\\nq8=wave_r;\\\\nq7=wave_b;\\\\nq6=wave_g;\\\\n\\\\nwr = 0.5+0.4*(0.6*sin(time*1.1) + 0.4*sin(0.8*time));\\\\nwb = 0.5+0.4*(0.6*sin(time*1.6) + 0.4*sin(0.5*time));\\\\nwg = 0.5+0.4*(0.6*sin(time*1.34) + 0.4*sin(0.4*time));\\\\n\\\\nmonitor=wg;\\\\nq10=wr;\\\\nq11=wb;\\\\nq12=wg;\\\\nq18 = 0.007*sin(time*0.1);\\\\nq17 = -0.007*sin(time*0.254);\\\\nq2=bass_thresh;\\\\n\\\\nvol=(bass+mid+treb)*0.25;\\\\nvol=vol*vol;\\\\nq3=vol;\\\\n\\\\nwarp=0;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec3 noise3_1;\\\\n  vec3 tmpvar_2;\\\\n  tmpvar_2 = (texture (sampler_main, uv).xyz + ((texture (sampler_blur1, uv).xyz * scale1) + bias1));\\\\n  vec2 tmpvar_3;\\\\n  tmpvar_3 = (0.5 + ((\\\\n    (uv - vec2(0.0, 1.0))\\\\n   - 0.5) * (1.0 + \\\\n    (tmpvar_2.y * 0.03)\\\\n  )));\\\\n  vec2 tmpvar_4;\\\\n  tmpvar_4.x = (tmpvar_3.x + pow (tmpvar_2.x, 0.0));\\\\n  tmpvar_4.y = (tmpvar_3.y + pow (tmpvar_2.x, 0.005));\\\\n  noise3_1 = (texture (sampler_noise_lq, ((\\\\n    (uv_orig * texsize.xy)\\\\n   * texsize_noise_lq.zw) + rand_frame.xy)).xyz * fract(q15));\\\\n  vec3 tmpvar_5;\\\\n  tmpvar_5 = (noise3_1 * (vec3(1.0, 1.0, 1.0) - vec3(fract(\\\\n    (q3 * 0.5)\\\\n  ))));\\\\n  noise3_1 = tmpvar_5;\\\\n  vec4 tmpvar_6;\\\\n  tmpvar_6 = texture (sampler_main, fract(tmpvar_4));\\\\n  vec3 tmpvar_7;\\\\n  tmpvar_7.x = q10;\\\\n  tmpvar_7.y = q11;\\\\n  tmpvar_7.z = q12;\\\\n  vec3 tmpvar_8;\\\\n  tmpvar_8 = mix (tmpvar_5, tmpvar_7, tmpvar_6.xxx);\\\\n  vec4 tmpvar_9;\\\\n  tmpvar_9.w = 1.0;\\\\n  tmpvar_9.xyz = (tmpvar_6.xyz + clamp ((\\\\n    (tmpvar_6.yzx * tmpvar_8.zxy)\\\\n   - \\\\n    (tmpvar_6.zxy * tmpvar_8.yzx)\\\\n  ), 0.0, 1.0));\\\\n  ret = tmpvar_9.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec2 uv1_1;\\\\n  vec2 tmpvar_2;\\\\n  tmpvar_2.y = 0.0;\\\\n  tmpvar_2.x = texsize.z;\\\\n  vec2 tmpvar_3;\\\\n  tmpvar_3.x = 0.0;\\\\n  tmpvar_3.y = texsize.w;\\\\n  vec2 tmpvar_4;\\\\n  tmpvar_4.x = (texture (sampler_main, (uv - tmpvar_2)).xyz - texture (sampler_main, (uv + tmpvar_2)).xyz).x;\\\\n  tmpvar_4.y = (texture (sampler_main, (uv - tmpvar_3)).xyz - texture (sampler_main, (uv + tmpvar_3)).xyz).x;\\\\n  uv1_1 = ((0.3 * cos(\\\\n    ((uv - 0.5) * 2.0)\\\\n  )) - tmpvar_4);\\\\n  float tmpvar_5;\\\\n  tmpvar_5 = clamp ((0.04 / sqrt(\\\\n    dot (uv1_1, uv1_1)\\\\n  )), 0.0, 1.0);\\\\n  uv1_1 = ((0.3 * cos(\\\\n    (uv1_1 * 12.0)\\\\n  )) - (9.0 * tmpvar_4));\\\\n  vec4 tmpvar_6;\\\\n  tmpvar_6.w = 1.0;\\\\n  tmpvar_6.xyz = (tmpvar_5 + ((texture (sampler_main, uv).xyz * 12.0) * vec3(clamp (\\\\n    (0.04 / sqrt(dot (uv1_1, uv1_1)))\\\\n  , 0.0, 1.0))));\\\\n  ret = tmpvar_6.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/fiShbRaiN + Flexi - witchcraft 2.0.json\":\n/*!*******************************************************************!*\\\n  !*** ./presets/converted/fiShbRaiN + Flexi - witchcraft 2.0.json ***!\n  \\*******************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1.28,\\\"decay\\\":0.8,\\\"echo_zoom\\\":1,\\\"echo_orient\\\":3,\\\"wave_mode\\\":7,\\\"additivewave\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"brighten\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":1.286,\\\"wave_smoothing\\\":0.63,\\\"modwavealphastart\\\":0.71,\\\"modwavealphaend\\\":1.3,\\\"zoomexp\\\":3.04777,\\\"zoom\\\":1.0173,\\\"warp\\\":0.01605,\\\"wave_g\\\":0.65,\\\"wave_b\\\":0.65,\\\"ob_size\\\":0,\\\"ob_a\\\":1,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0,\\\"mv_a\\\":0,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"sides\\\":5,\\\"additive\\\":1,\\\"num_inst\\\":2,\\\"x\\\":0.49,\\\"rad\\\":0.11589,\\\"tex_zoom\\\":4.36077,\\\"g2\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = rand(1000)/1000;\\\\ny = rand(1000)/1000;\\\\nang = rand(150)/100;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"thick\\\":1,\\\"additive\\\":1,\\\"g\\\":0,\\\"b\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(bass,1)*3.1415*.01*bass);\\\\nma=ma-(above(treb,1)*3.1415*.01*treb);\\\\n\\\\nmx=mx+(.0002*cos(ma));\\\\nmy=my+(.0002*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.8));\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"thick\\\":1,\\\"additive\\\":1,\\\"r\\\":0,\\\"g\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(bass,1)*3.1415*.05*bass);\\\\nma=ma-(above(mid,1)*3.1415*.05*mid);\\\\n\\\\nmx=mx+(.0001*cos(ma));\\\\nmy=my+(.0001*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.1));\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"thick\\\":1,\\\"additive\\\":1,\\\"r\\\":0,\\\"b\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(mid,1)*3.1415*.01*mid);\\\\nma=ma-(above(treb,1)*3.1415*.01*treb);\\\\n\\\\nmx=mx+(.0004*cos(ma));\\\\nmy=my+(.0004*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.3));\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"thick\\\":1,\\\"additive\\\":1,\\\"g\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(bass,.5)*3.1415*.02*bass);\\\\nma=ma-(above(treb,.5)*3.1415*.02*treb);\\\\n\\\\nmx=mx+(.0008*cos(ma));\\\\nmy=my+(.0008*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.2));\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"dec_med = pow (0.9, 30/fps);\\\\ndec_slow = pow (0.99, 30/fps);\\\\nbeat = max (max (bass, mid), treb); \\\\navg = avg*dec_slow + beat*(1-dec_slow);\\\\nis_beat = above(beat, .5+avg+peak) * above (time, t0+.2);\\\\nt0 = is_beat*time + (1-is_beat)*t0;\\\\npeak = is_beat * beat + (1-is_beat)*peak*dec_med;\\\\nindex = (index + is_beat) %2;\\\\n\\\\n\\\\nd_x = if(is_beat, (rand(2000)-1000)*0.001 , d_x);\\\\nd_y = if(is_beat, (rand(2000)-1000)*0.001 , d_y);\\\\nr = if(is_beat, (rand(2000)-1000)*0.001 , r);\\\\nz = if(is_beat, rand(1000)*0.001 , z);\\\\nzoom = 1.03 + z*0.06;\\\\nrot = r*0.06;\\\\ndx = d_x*0.01;\\\\ndy = d_y*0.01;\\\\nq1 = 1;\\\\n\\\\nq23 = rand(1000)/1000;\\\\nq24 = rand(1000)/1000;\\\\nq25 = (rand(1000)/1000)*6.28;\\\\nq26 = q25 - 3.14;\\\\nq27 = (rand(1000)/12000)+0.04;\\\\n\\\\nq28 = rand(1000)/1000;\\\\nq29 = rand(1000)/1000;\\\\nq30 = (rand(1000)/1000)*6.28;\\\\nq31 = q30 - 3.14;\\\\nq32 = (rand(1000)/14000)+0.04;\\\\n\\\\ndb = db*0.98 + bass*0.2;\\\\nbb = bb + db*0.1;\\\\n\\\\ndt = dt*0.98 + treb*0.2;\\\\ntt = tt + dt*0.1;\\\\n\\\\ndm = dm*0.98 + mid*0.2;\\\\nmm = mm + dm*0.1;\\\\n\\\\n\\\\nw = (bb-tt)*0.1;\\\\nq11 = sin(w);\\\\nq12 = cos(w);\\\\nq13 = 0.5 + sin((bb-mm)*0.1)*0.25; // cx\\\\nq14 = 0.5 + sin((tt-mm)*0.1)*0.25; // cy\\\\nq15 = 4;\\\\nq16 = 0.06;\\\\nq17 = sin(-w);\\\\nq18 = cos(-w);\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec3 ret_1;\\\\n  vec2 tmpvar_2;\\\\n  tmpvar_2 = (texsize.zw * 8.0);\\\\n  vec3 tmpvar_3;\\\\n  tmpvar_3 = (((texture (sampler_blur1, \\\\n    (uv + (vec2(1.0, 0.0) * tmpvar_2))\\\\n  ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n    (uv - (vec2(1.0, 0.0) * tmpvar_2))\\\\n  ).xyz * scale1) + bias1));\\\\n  vec3 tmpvar_4;\\\\n  tmpvar_4 = (((texture (sampler_blur1, \\\\n    (uv + (vec2(0.0, 1.0) * tmpvar_2))\\\\n  ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n    (uv - (vec2(0.0, 1.0) * tmpvar_2))\\\\n  ).xyz * scale1) + bias1));\\\\n  vec2 tmpvar_5;\\\\n  tmpvar_5.x = tmpvar_3.x;\\\\n  tmpvar_5.y = tmpvar_4.x;\\\\n  vec2 tmpvar_6;\\\\n  vec2 tmpvar_7;\\\\n  tmpvar_7 = mix (uv_orig, uv, vec2(0.1, 0.1));\\\\n  tmpvar_6 = (tmpvar_7 + ((tmpvar_5 * texsize.zw) * 2.0));\\\\n  vec2 tmpvar_8;\\\\n  tmpvar_8.x = tmpvar_3.y;\\\\n  tmpvar_8.y = tmpvar_4.y;\\\\n  vec2 tmpvar_9;\\\\n  tmpvar_9 = (mix (uv_orig, uv, vec2(0.3, 0.3)) + ((tmpvar_8 * texsize.zw) * 2.0));\\\\n  vec2 tmpvar_10;\\\\n  tmpvar_10.x = tmpvar_3.z;\\\\n  tmpvar_10.y = tmpvar_4.z;\\\\n  vec2 tmpvar_11;\\\\n  tmpvar_11 = (tmpvar_7 + ((tmpvar_10 * texsize.zw) * 2.0));\\\\n  ret_1.x = (texture (sampler_main, tmpvar_6).x - ((texture (sampler_main, tmpvar_6).xyz - \\\\n    ((texture (sampler_blur3, tmpvar_6).xyz * scale3) + bias3)\\\\n  ).x * 0.01));\\\\n  ret_1.y = (texture (sampler_main, tmpvar_9).y - ((texture (sampler_main, tmpvar_9).xyz - \\\\n    ((texture (sampler_blur3, tmpvar_9).xyz * scale3) + bias3)\\\\n  ).y * 0.01));\\\\n  ret_1.z = (texture (sampler_main, tmpvar_11).z - ((texture (sampler_main, tmpvar_11).xyz - \\\\n    ((texture (sampler_blur3, tmpvar_11).xyz * scale3) + bias3)\\\\n  ).z * 0.01));\\\\n  ret_1 = (ret_1 + (-0.004 + (\\\\n    (texture (sampler_noise_lq, (((uv_orig * texsize.xy) * (texsize_noise_lq.zw * 1.2)) + rand_frame.xy)).xyz - 0.5)\\\\n   * 0.1)));\\\\n  vec4 tmpvar_12;\\\\n  tmpvar_12.w = 1.0;\\\\n  tmpvar_12.xyz = ret_1;\\\\n  ret = tmpvar_12.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec3 ret_1;\\\\n  vec2 tmpvar_2;\\\\n  tmpvar_2 = (texsize.zw * 8.0);\\\\n  vec3 tmpvar_3;\\\\n  tmpvar_3 = (((texture (sampler_blur1, \\\\n    (uv + (vec2(1.0, 0.0) * tmpvar_2))\\\\n  ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n    (uv - (vec2(1.0, 0.0) * tmpvar_2))\\\\n  ).xyz * scale1) + bias1));\\\\n  vec3 tmpvar_4;\\\\n  tmpvar_4 = (((texture (sampler_blur1, \\\\n    (uv + (vec2(0.0, 1.0) * tmpvar_2))\\\\n  ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n    (uv - (vec2(0.0, 1.0) * tmpvar_2))\\\\n  ).xyz * scale1) + bias1));\\\\n  vec2 tmpvar_5;\\\\n  tmpvar_5.x = tmpvar_3.z;\\\\n  tmpvar_5.y = tmpvar_4.z;\\\\n  vec2 tmpvar_6;\\\\n  tmpvar_6.x = tmpvar_3.y;\\\\n  tmpvar_6.y = tmpvar_4.y;\\\\n  ret_1 = (mix (vec3(0.2, 0.0, 0.1), vec3(0.8, 0.6, 0.0), texture (sampler_main, (uv - \\\\n    (tmpvar_5 * 0.2)\\\\n  )).yyy) * ((\\\\n    (-(tmpvar_3.y) + tmpvar_4.y)\\\\n   + 1.0) + (\\\\n    (-(tmpvar_3.z) + tmpvar_4.z)\\\\n   * 2.0)));\\\\n  vec3 tmpvar_7;\\\\n  tmpvar_7 = mix (mix (ret_1, vec3(0.3, 0.0, 0.8), vec3((\\\\n    ((texture (sampler_blur1, (uv - (tmpvar_6 * 0.04))).xyz * scale1) + bias1)\\\\n  .x * 1.4))), vec3(1.0, 0.9, 0.4), texture (sampler_main, uv).zzz);\\\\n  ret_1 = tmpvar_7;\\\\n  vec4 tmpvar_8;\\\\n  tmpvar_8.w = 1.0;\\\\n  tmpvar_8.xyz = tmpvar_7;\\\\n  ret = tmpvar_8.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/flexi + amandio c - organic [random mashup].json\":\n/*!****************************************************************************!*\\\n  !*** ./presets/converted/flexi + amandio c - organic [random mashup].json ***!\n  \\****************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":1,\\\"gammaadj\\\":1,\\\"decay\\\":1,\\\"echo_zoom\\\":1,\\\"wrap\\\":0,\\\"darken_center\\\":1,\\\"brighten\\\":1,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"warpanimspeed\\\":0.141,\\\"warpscale\\\":14.497,\\\"zoom\\\":0.99951,\\\"warp\\\":0.75055,\\\"wave_r\\\":0,\\\"wave_g\\\":0,\\\"wave_b\\\":0,\\\"ob_size\\\":0.5,\\\"ob_r\\\":0.01,\\\"ib_size\\\":0.26,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":6,\\\"rad\\\":0.17809,\\\"ang\\\":0.26,\\\"tex_zoom\\\":0.39711,\\\"g\\\":0.7,\\\"b\\\":0.6,\\\"r2\\\":0.4,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x=.11+.22*rand(5);\\\\ny=.1+.16*(2*time%6);\\\\n\\\\nb=.6+.3*q3;\\\\ng=.7+.2*q3;\\\\nr= .7;\\\\n\\\\ng2=.3*g;\\\\nr2=.3*r;\\\\nb2=.3*b;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":6,\\\"additive\\\":1,\\\"rad\\\":0.17809,\\\"ang\\\":0.26,\\\"tex_zoom\\\":0.99999,\\\"g\\\":1,\\\"b\\\":0.4,\\\"a\\\":0.5,\\\"r2\\\":0.2,\\\"g2\\\":0,\\\"b2\\\":0.3,\\\"a2\\\":0.6,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x=.11+.22*rand(5);\\\\ny=.1+.16*(2*time%6);\\\\n\\\\nb=.6+.3*q3;\\\\ng=.7+.2*q3;\\\\nr= .7;\\\\n\\\\ng2=.3*g;\\\\nr2=.3*r;\\\\nb2=.3*b;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":6,\\\"textured\\\":1,\\\"rad\\\":0.17633,\\\"ang\\\":0.26,\\\"tex_zoom\\\":1.19615,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":0.2,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":0.2},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x=.22*rand(6);\\\\ny=.18+.16*(2*time%5);\\\\n\\\\ng=1.5*q3;\\\\nr=1.3*q4;\\\\nb=1.7*q5;\\\\n\\\\ntex_ang=-q1;\\\\ntex_zoom=2+sin(q1);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":6,\\\"textured\\\":1,\\\"rad\\\":0.16284,\\\"ang\\\":0.26,\\\"r2\\\":0.8,\\\"g2\\\":0.8,\\\"b2\\\":0.8,\\\"a2\\\":0.2,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":0.2},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x=.11+.22*rand(5);\\\\ny=.1+.16*(2*time%6);\\\\n\\\\nr=.3*q3;\\\\nb=.2*q2;\\\\ng=.1*q1;\\\\n\\\\ntex_ang=q1;\\\\ntex_zoom=2+1.2*sin(1.5*q1);\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"samples\\\":395,\\\"usedots\\\":1,\\\"r\\\":0.15,\\\"g\\\":0.15,\\\"b\\\":0.15,\\\"a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"usedots\\\":1,\\\"scaling\\\":0.01,\\\"a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"additive\\\":1,\\\"a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"additive\\\":1,\\\"a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"x1 = 0.5;\\\\nx2 = 0.51;\\\\n\\\\ny2 = 1;\\\\ny1 = 0.7;\\\\n\\\\nx3 = 0.8;\\\\ny3 = 0.5;\\\\n\\\\nx4 = 0.2;\\\\ny4 = 0.5;\\\\n\\\\n\\\\nax1 = 0;\\\\nay1 = 0;\\\\nax2 = 0;\\\\nay2 = 0;\\\\nax3 = 0;\\\\nay3 = 0;\\\\n\\\\nvx1 = 0.000;\\\\nvx2 = 0.000;\\\",\\\"frame_eqs_eel\\\":\\\"sx=1+.01*(8*bass%8)*equal(time%(int(24-2*bass)),0);\\\\nsy=1+.01*(8*mid%8) *equal(time%(12+int(24-2*bass)),0);\\\\n\\\\nzoom = 0.99;\\\\n//warp = 0;\\\\nwave_a = 0;\\\\n//pogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogo\\\\nr = 0.12+ max(bass_att,treb_att)*0.004;\\\\nbounce = below(y1,r);\\\\ny1 = y1+vy1;vy1 = if(bounce, abs(vy1)*0.94 + (r-y1)*0.1, vy1-0.00006*60/fps);\\\\nbounce = below(x1,r);x1 = x1+vx1;vx1 = if(bounce, abs(vx1)*0.94 + (r-x1)*0.1, vx1);\\\\nbounce = above(x1,1-r);vx1 = if(bounce, - abs(vx1)*0.94 + (1-r-x1)*0.04, vx1);\\\\nbounce = below(y2,r);y2 = y2 + vy2;vy2 = if(bounce,abs(vy2)*0.94+(r-y2)*.1, vy2-0.00006*60/fps);\\\\nbounce = below(x2,r);x2 = x2+ vx2;vx2 = if(bounce, abs(vx2)*0.94 + (r-x2)*0.1, vx2);\\\\nbounce = above(x2,1-r);vx2 = if(bounce, - abs(vx2)*0.94 + (1-r-x2)*0.1, vx2);\\\\nbounce = below(y3,r);y3 = y3 + vy3;vy3 = if(bounce,abs(vy3)*0.94+(r-y3)*.1, vy3-0.00006*60/fps);\\\\nbounce = below(x3,r);x3 = x3+ vx3;vx3 = if(bounce, abs(vx3)*0.94 + (r-x3)*0.1, vx3);\\\\nbounce = above(x3,1-r);vx3 = if(bounce, - abs(vx3)*0.94 + (1-r-x3)*0.1, vx3);\\\\nbounce = below(y4,r);y4 = y4 + vy4;vy4 = if(bounce,abs(vy4)*0.94+(r-y4)*.1, vy4-0.00006*60/fps);\\\\nbounce = below(x4,r);x4 = x4+ vx4;vx4 = if(bounce, abs(vx4)*0.94 + (r-x4)*0.1, vx4);\\\\nbounce = above(x4,1-r);vx4 = if(bounce, - abs(vx4)*0.94 + (1-r-x4)*0.1, vx4);\\\\nbounce = below( sqrt( sqr(x1+vx1-x2-vx2) + sqr(y1+vy1-y2-vy2)), 2*r);\\\\nref_ang = atan2(x2-x1,y2-y1)+asin(1); // common tangent\\\\nv1 = sqrt(vx1*vx1+vy1*vy1);v2 = sqrt(vx2*vx2+vy2*vy2);w1 = atan2(vx1,vy1);w2 = atan2(vx2,vy2);\\\\nvx1 = if(bounce,sin(ref_ang)*v1*cos(w1-ref_ang) + sin(ref_ang+asin(1))*v2*cos(w2-ref_ang-asin(1)), vx1);\\\\nvy1 = if(bounce,cos(ref_ang)*v1*cos(w1-ref_ang) + cos(ref_ang+asin(1))*v2*cos(w2-ref_ang-asin(1)), vy1);\\\\nvx2 = if(bounce,sin(ref_ang)*v2*cos(w2-ref_ang) + sin(ref_ang+asin(1))*v1*cos(w1-ref_ang-asin(1)), vx2);\\\\nvy2 = if(bounce,cos(ref_ang)*v2*cos(w2-ref_ang) + cos(ref_ang+asin(1))*v1*cos(w1-ref_ang-asin(1)), vy2);\\\\nbounce = below( sqrt( sqr(x1+vx1-x3-vx3) + sqr(y1+vy1-y3-vy3)), 2*r);\\\\nref_ang = atan2(x3-x1,y3-y1)+asin(1); // common tangent\\\\nv1 = sqrt(vx1*vx1+vy1*vy1);v2 = sqrt(vx3*vx3+vy3*vy3);w1 = atan2(vx1,vy1);w2 = atan2(vx3,vy3);\\\\nvx1 = if(bounce,sin(ref_ang)*v1*cos(w1-ref_ang) + sin(ref_ang+asin(1))*v2*cos(w2-ref_ang-asin(1)), vx1);\\\\nvy1 = if(bounce,cos(ref_ang)*v1*cos(w1-ref_ang) + cos(ref_ang+asin(1))*v2*cos(w2-ref_ang-asin(1)), vy1);\\\\nvx3 = if(bounce,sin(ref_ang)*v2*cos(w2-ref_ang) + sin(ref_ang+asin(1))*v1*cos(w1-ref_ang-asin(1)), vx3);\\\\nvy3 = if(bounce,cos(ref_ang)*v2*cos(w2-ref_ang) + cos(ref_ang+asin(1))*v1*cos(w1-ref_ang-asin(1)), vy3);\\\\nbounce = below( sqrt( sqr(x2+vx2-x3-vx3) + sqr(y2+vy2-y3-vy3)), 2*r);\\\\nref_ang = atan2(x3-x2,y3-y2)+asin(1); // common tangent\\\\nv1 = sqrt(vx2*vx2+vy2*vy2);v2 = sqrt(vx3*vx3+vy3*vy3);w1 = atan2(vx2,vy2);w2 = atan2(vx3,vy3);\\\\nvx2 = if(bounce,sin(ref_ang)*v1*cos(w1-ref_ang) + sin(ref_ang+asin(1))*v2*cos(w2-ref_ang-asin(1)), vx2);\\\\nvy2 = if(bounce,cos(ref_ang)*v1*cos(w1-ref_ang) + cos(ref_ang+asin(1))*v2*cos(w2-ref_ang-asin(1)), vy2);\\\\nvx3 = if(bounce,sin(ref_ang)*v2*cos(w2-ref_ang) + sin(ref_ang+asin(1))*v1*cos(w1-ref_ang-asin(1)), vx3);\\\\nvy3 = if(bounce,cos(ref_ang)*v2*cos(w2-ref_ang) + cos(ref_ang+asin(1))*v1*cos(w1-ref_ang-asin(1)), vy3);\\\\nbounce = below( sqrt( sqr(x1+vx1-x4-vx4) + sqr(y1+vy1-y4-vy4)), 2*r);\\\\nref_ang = atan2(x4-x1,y4-y1)+asin(1); // common tangent\\\\nv1 = sqrt(vx1*vx1+vy1*vy1);v2 = sqrt(vx4*vx4+vy4*vy4);w1 = atan2(vx1,vy1);w2 = atan2(vx4,vy4);\\\\nvx1 = if(bounce,sin(ref_ang)*v1*cos(w1-ref_ang) + sin(ref_ang+asin(1))*v2*cos(w2-ref_ang-asin(1)), vx1);\\\\nvy1 = if(bounce,cos(ref_ang)*v1*cos(w1-ref_ang) + cos(ref_ang+asin(1))*v2*cos(w2-ref_ang-asin(1)), vy1);\\\\nvx4 = if(bounce,sin(ref_ang)*v2*cos(w2-ref_ang) + sin(ref_ang+asin(1))*v1*cos(w1-ref_ang-asin(1)), vx4);\\\\nvy4 = if(bounce,cos(ref_ang)*v2*cos(w2-ref_ang) + cos(ref_ang+asin(1))*v1*cos(w1-ref_ang-asin(1)), vy4);\\\\nbounce = below( sqrt( sqr(x2+vx2-x4-vx4) + sqr(y2+vy2-y4-vy4)), 2*r);\\\\nref_ang = atan2(x4-x2,y4-y2)+asin(1); // common tangent\\\\nv1 = sqrt(vx2*vx2+vy2*vy2);v2 = sqrt(vx4*vx4+vy4*vy4);w1 = atan2(vx2,vy2);w2 = atan2(vx4,vy4);\\\\nvx2 = if(bounce,sin(ref_ang)*v1*cos(w1-ref_ang) + sin(ref_ang+asin(1))*v2*cos(w2-ref_ang-asin(1)), vx2);\\\\nvy2 = if(bounce,cos(ref_ang)*v1*cos(w1-ref_ang) + cos(ref_ang+asin(1))*v2*cos(w2-ref_ang-asin(1)), vy2);\\\\nvx4 = if(bounce,sin(ref_ang)*v2*cos(w2-ref_ang) + sin(ref_ang+asin(1))*v1*cos(w1-ref_ang-asin(1)), vx4);\\\\nvy4 = if(bounce,cos(ref_ang)*v2*cos(w2-ref_ang) + cos(ref_ang+asin(1))*v1*cos(w1-ref_ang-asin(1)), vy4);\\\\nbounce = below( sqrt( sqr(x3+vx3-x4-vx4) + sqr(y3+vy3-y4-vy4)), 2*r);\\\\nref_ang = atan2(x4-x3,y4-y3)+asin(1); // common tangent\\\\nv1 = sqrt(vx3*vx3+vy3*vy3);v2 = sqrt(vx4*vx4+vy4*vy4);w1 = atan2(vx3,vy3);w2 = atan2(vx4,vy4);\\\\nvx3 = if(bounce,sin(ref_ang)*v1*cos(w1-ref_ang) + sin(ref_ang+asin(1))*v2*cos(w2-ref_ang-asin(1)), vx3);\\\\nvy3 = if(bounce,cos(ref_ang)*v1*cos(w1-ref_ang) + cos(ref_ang+asin(1))*v2*cos(w2-ref_ang-asin(1)), vy3);\\\\nvx4 = if(bounce,sin(ref_ang)*v2*cos(w2-ref_ang) + sin(ref_ang+asin(1))*v1*cos(w1-ref_ang-asin(1)), vx4);\\\\nvy4 = if(bounce,cos(ref_ang)*v2*cos(w2-ref_ang) + cos(ref_ang+asin(1))*v1*cos(w1-ref_ang-asin(1)), vy4);\\\\n//pogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogo\\\\nq1 = aspectx;\\\\nq2 = aspecty;\\\\nq3 = x1;\\\\nq4 = y1;\\\\nq5 = r;\\\\nq6 = x2;\\\\nq7 = y2;\\\\nq8 = r;\\\\nq9 = x3;\\\\nq10 = y3;\\\\nq11 = r;\\\\nq12 = x4;\\\\nq13 = y4;\\\\nq14 = r;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec3 ret_1;\\\\n  ret_1.z = (texture (sampler_main, uv).z * 0.5);\\\\n  vec2 tmpvar_2;\\\\n  tmpvar_2 = ((uv_orig * texsize.xy) * texsize_noise_lq.zw);\\\\n  vec2 tmpvar_3;\\\\n  tmpvar_3 = (texsize.zw * 4.0);\\\\n  vec2 tmpvar_4;\\\\n  tmpvar_4.x = (((2.0 * \\\\n    ((texture (sampler_blur1, (uv_orig + (vec2(1.0, 0.0) * tmpvar_3))).xyz * scale1) + bias1)\\\\n  ) - (2.0 * \\\\n    ((texture (sampler_blur1, (uv_orig - (vec2(1.0, 0.0) * tmpvar_3))).xyz * scale1) + bias1)\\\\n  )).y * 0.5);\\\\n  tmpvar_4.y = (((2.0 * \\\\n    ((texture (sampler_blur1, (uv_orig + (vec2(0.0, 1.0) * tmpvar_3))).xyz * scale1) + bias1)\\\\n  ) - (2.0 * \\\\n    ((texture (sampler_blur1, (uv_orig - (vec2(0.0, 1.0) * tmpvar_3))).xyz * scale1) + bias1)\\\\n  )).y * 0.5);\\\\n  ret_1.y = texture (sampler_fw_main, clamp ((uv_orig + (\\\\n    (tmpvar_4 * texsize.zw)\\\\n   * 4.0)), 0.0, 1.0)).y;\\\\n  ret_1.y = (ret_1.y + ((\\\\n    (ret_1 - ((texture (sampler_blur1, uv_orig).xyz * scale1) + bias1))\\\\n  .y * 0.025) + -0.014));\\\\n  ret_1.y = (ret_1.y + ((texture (sampler_noise_lq, tmpvar_2).y - 0.5) * 0.02));\\\\n  vec2 tmpvar_5;\\\\n  tmpvar_5.x = (((2.0 * \\\\n    ((texture (sampler_blur1, (uv_orig + (vec2(1.0, 0.0) * tmpvar_3))).xyz * scale1) + bias1)\\\\n  ) - (2.0 * \\\\n    ((texture (sampler_blur1, (uv_orig - (vec2(1.0, 0.0) * tmpvar_3))).xyz * scale1) + bias1)\\\\n  )).x * 0.5);\\\\n  tmpvar_5.y = (((2.0 * \\\\n    ((texture (sampler_blur1, (uv_orig + (vec2(0.0, 1.0) * tmpvar_3))).xyz * scale1) + bias1)\\\\n  ) - (2.0 * \\\\n    ((texture (sampler_blur1, (uv_orig - (vec2(0.0, 1.0) * tmpvar_3))).xyz * scale1) + bias1)\\\\n  )).x * 0.5);\\\\n  ret_1.x = ((texture (sampler_main, (uv - \\\\n    ((tmpvar_5 * texsize.zw) * 4.0)\\\\n  )).x - (ret_1.y * 0.01)) + 0.004);\\\\n  ret_1.x = (ret_1.x + ((\\\\n    (texture (sampler_noise_lq, tmpvar_2).x - 0.5)\\\\n   * 0.01) + (ret_1.z * 0.14)));\\\\n  vec4 tmpvar_6;\\\\n  tmpvar_6.w = 1.0;\\\\n  tmpvar_6.xyz = ret_1;\\\\n  ret = tmpvar_6.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec2 tmpvar_1;\\\\n  tmpvar_1.x = q3;\\\\n  tmpvar_1.y = q4;\\\\n  vec2 tmpvar_2;\\\\n  tmpvar_2.x = q6;\\\\n  tmpvar_2.y = q7;\\\\n  vec2 tmpvar_3;\\\\n  tmpvar_3.x = q9;\\\\n  tmpvar_3.y = q10;\\\\n  vec2 tmpvar_4;\\\\n  tmpvar_4.x = q12;\\\\n  tmpvar_4.y = q13;\\\\n  vec2 tmpvar_5;\\\\n  tmpvar_5 = (texsize.zw * 1.2);\\\\n  vec3 tmpvar_6;\\\\n  tmpvar_6 = (texture (sampler_main, (uv + (vec2(1.0, 0.0) * tmpvar_5))).xyz - texture (sampler_main, (uv - (vec2(1.0, 0.0) * tmpvar_5))).xyz);\\\\n  vec3 tmpvar_7;\\\\n  tmpvar_7 = (texture (sampler_main, (uv + (vec2(0.0, 1.0) * tmpvar_5))).xyz - texture (sampler_main, (uv - (vec2(0.0, 1.0) * tmpvar_5))).xyz);\\\\n  vec2 tmpvar_8;\\\\n  tmpvar_8.x = dot (tmpvar_6, vec3(0.32, 0.49, 0.29));\\\\n  tmpvar_8.y = dot (tmpvar_7, vec3(0.32, 0.49, 0.29));\\\\n  vec2 x_9;\\\\n  x_9 = ((uv - (tmpvar_8 * 8.0)) - (1.0 - tmpvar_1));\\\\n  vec2 tmpvar_10;\\\\n  tmpvar_10.x = dot (tmpvar_6, vec3(0.32, 0.49, 0.29));\\\\n  tmpvar_10.y = dot (tmpvar_7, vec3(0.32, 0.49, 0.29));\\\\n  vec2 x_11;\\\\n  x_11 = ((uv - (tmpvar_10 * 8.0)) - (1.0 - tmpvar_2));\\\\n  vec2 tmpvar_12;\\\\n  tmpvar_12.x = dot (tmpvar_6, vec3(0.32, 0.49, 0.29));\\\\n  tmpvar_12.y = dot (tmpvar_7, vec3(0.32, 0.49, 0.29));\\\\n  vec2 x_13;\\\\n  x_13 = ((uv - (tmpvar_12 * 8.0)) - (1.0 - tmpvar_3));\\\\n  vec2 tmpvar_14;\\\\n  tmpvar_14.x = dot (tmpvar_6, vec3(0.32, 0.49, 0.29));\\\\n  tmpvar_14.y = dot (tmpvar_7, vec3(0.32, 0.49, 0.29));\\\\n  vec2 x_15;\\\\n  x_15 = ((uv - (tmpvar_14 * 8.0)) - (1.0 - tmpvar_4));\\\\n  vec4 tmpvar_16;\\\\n  tmpvar_16.w = 1.0;\\\\n  tmpvar_16.xyz = (mix (texture (sampler_main, uv).xyz, max (\\\\n    max ((vec3((1.0 - pow (\\\\n      sqrt(dot (x_9, x_9))\\\\n    , 0.2))) * vec3(2.0, 1.0, -1.0)), (vec3((1.0 - pow (\\\\n      sqrt(dot (x_11, x_11))\\\\n    , 0.2))) * vec3(2.0, -1.0, 1.0)))\\\\n  , \\\\n    max ((vec3((1.0 - pow (\\\\n      sqrt(dot (x_13, x_13))\\\\n    , 0.2))) * vec3(-1.0, 1.0, 2.0)), (vec3((1.0 - pow (\\\\n      sqrt(dot (x_15, x_15))\\\\n    , 0.2))) * vec3(1.0, -1.0, 2.0)))\\\\n  ), vec3(0.5, 0.5, 0.5)) * 1.25);\\\\n  ret = tmpvar_16.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/flexi + amandio c - organic12-3d-2.json\":\n/*!*******************************************************************!*\\\n  !*** ./presets/converted/flexi + amandio c - organic12-3d-2.json ***!\n  \\*******************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":4,\\\"gammaadj\\\":1,\\\"decay\\\":0.995,\\\"echo_zoom\\\":1.007,\\\"echo_orient\\\":3,\\\"wave_mode\\\":7,\\\"additivewave\\\":1,\\\"wave_thick\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":0.958,\\\"wave_smoothing\\\":0.45,\\\"modwavealphastart\\\":0,\\\"modwavealphaend\\\":1.32,\\\"warpanimspeed\\\":1.459,\\\"warpscale\\\":2.007,\\\"zoom\\\":0.9999,\\\"warp\\\":0.01,\\\"sx\\\":0.9999,\\\"wave_r\\\":0,\\\"wave_g\\\":0,\\\"wave_b\\\":0,\\\"ob_size\\\":0.05,\\\"ob_g\\\":0.1,\\\"ob_b\\\":1,\\\"ob_a\\\":1,\\\"ib_size\\\":0,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"mv_x\\\":25.6,\\\"mv_y\\\":9.6,\\\"mv_l\\\":0,\\\"mv_r\\\":0.5,\\\"mv_g\\\":0.5,\\\"mv_b\\\":0.5,\\\"mv_a\\\":0,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"textured\\\":1,\\\"x\\\":0.09,\\\"y\\\":0.9,\\\"rad\\\":0.22437,\\\"tex_zoom\\\":1.76002,\\\"r2\\\":1,\\\"g2\\\":0,\\\"a2\\\":0.6,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"additive\\\":1,\\\"x\\\":0.26,\\\"y\\\":0.2,\\\"rad\\\":0.39317,\\\"tex_zoom\\\":6.19589,\\\"r\\\":0,\\\"g\\\":0.55,\\\"b\\\":0.5,\\\"g2\\\":0.4,\\\"b2\\\":0.4,\\\"a2\\\":0.07,\\\"border_r\\\":0.3,\\\"border_g\\\":0.7,\\\"border_b\\\":0.8,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":44,\\\"additive\\\":1,\\\"x\\\":0.503,\\\"rad\\\":0.03886,\\\"tex_zoom\\\":0.60986,\\\"g\\\":0.1,\\\"a\\\":0.9,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"rad\\\":0.01,\\\"tex_zoom\\\":0.49981,\\\"r\\\":0,\\\"g2\\\":0,\\\"border_r\\\":0.2,\\\"border_g\\\":0.7,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"samples\\\":282,\\\"sep\\\":20,\\\"usedots\\\":1,\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":3.91581,\\\"smoothing\\\":0.1,\\\"r\\\":0.2,\\\"g\\\":0.3,\\\"a\\\":0.6,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"usedots\\\":1,\\\"thick\\\":1,\\\"scaling\\\":0.89152,\\\"smoothing\\\":0.82,\\\"a\\\":0.1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"scaling\\\":0.89152,\\\"smoothing\\\":0.82,\\\"r\\\":0,\\\"g\\\":0.2,\\\"b\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"spectrum\\\":1,\\\"usedots\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"//******** INITIALIZATION *********\\\\n//---------- some global vars, do not change -------------\\\\navg = 0.01;\\\\nq7 = .25; //MyZoom\\\\nq8 =  rand(2.0)-1.0; //fractal modifier\\\\n//q8 = 1; //#\\\\nq16 = 1 + rand(2); //Tele ; rather fish eye\\\\n//q16 = 1; //#\\\\nq18 = rand(0.8)+.1; //brightness balance back/front\\\\nq30 = 1; //logarithmic Z-Dist storage; unused\\\\nq31 =128;\\\\nstart = 1; travel = 0; RotZ = 0; look = 0; slow = 0; t0 = time+3; lampx = .5; lampy = .5;\\\\ncran0 = rand(1);\\\\nn = 0; loop (10000, gmegabuf(n)=0; n=n+1; ); \\\\nn = 0; loop (10000,  megabuf(n)=0; n=n+1; ); \\\\ntrelx = 0;  trely = 0; trelz = 0;\\\\nreg20 = 1; reg21 = 0; reg22 = 0; reg23 = 0; reg24 = 1; reg25 = 0; reg26 = 0; reg27 = 0; reg28 = 1;\\\\n\\\\n//Find random starting point\\\\nwhile (exec2(\\\\n  ran1 = rand(800)/100;  ran2 = rand(800)/100;  ran3 = rand(800)/100;\\\\n  PosX = rand(5)-2;   PosY = rand(5)-2;   PosZ = rand(5)-2; \\\\n\\\\n//  PosX = 3.3; PosY = 2; PosZ = -2; ran1 = 0; ran2 = 0; ran3 = 0; //#\\\\n\\\\n  c1 = cos(ran1); c2 = cos(ran2); c3 = cos(ran3); \\\\n  s1 = sin(ran1); s2 = sin(ran2); s3 = sin(ran3);\\\\n\\\\n  reg20 = c2*c1; reg21 = c2*s1; reg22 = -s2;\\\\n  reg23 = s3*s2*c1 - c3*s1; reg24 = s3*s2*s1 + c3*c1; reg25 = s3*c2;\\\\n  reg26 = c3*s2*c1 + s3*s1; reg27 = c3*s2*s1 - s3*c1; reg28 = c3*c2;\\\\n\\\\n  //***********BOT*************\\\\n  //Coord. Trans. must exactly match def in warp S. !!!!\\\\n  dist = 0.001;\\\\n  while (exec2(\\\\n    uvx = reg26*dist/q7; uvy = reg27*dist/q7; uvz = reg28*dist/q7;\\\\n    uvx += PosX; uvy += PosY; uvz += PosZ;\\\\n    uvx = 8.0*((uvx/8+30.5 - int(uvx/8+30.5))-.5);\\\\n    uvy = 8.0*((uvy/8+30.5 - int(uvy/8+30.5))-.5);\\\\n    uvz = 8.0*((uvz/8+30.5 - int(uvz/8+30.5))-.5);\\\\n    uvx0 = uvx+q8; uvy0 = uvy+q8; uvz0 = uvz+q8;\\\\n    loop (7+1,\\\\n      uvx = if (uvx > 1, 2-uvx, if(uvx < -1, -2-uvx, uvx));\\\\n      uvy = if (uvy > 1, 2-uvy, if(uvy < -1, -2-uvy, uvy));\\\\n      uvz = if (uvz > 1, 2-uvz, if(uvz < -1, -2-uvz, uvz));\\\\n      slen = uvx*uvx + uvy*uvy + uvz*uvz;\\\\n      uvx = if (slen < 0.25, uvx*4, if (slen < 1, uvx/slen, uvx)) *2.6 + uvx0; \\\\n      uvy = if (slen < 0.25, uvy*4, if (slen < 1, uvy/slen, uvy)) *2.6 + uvy0; \\\\n      uvz = if (slen < 0.25, uvz*4, if (slen < 1, uvz/slen, uvz)) *2.6 + uvz0; \\\\n    );\\\\n    len = sqrt(uvx*uvx + uvy*uvy + uvz*uvz);\\\\n    dist *= 1.05;\\\\n  ,(dist < 0.6)*(len > 30)));\\\\n,(dist < .06))); //end while\\\",\\\"frame_eqs_eel\\\":\\\"fps_ = .0 * fps_ + 1*if(fps<=25,fps,25+.5*(fps-25)); \\\\ndec_s = 1-.06*30/fps_;\\\\nbeat = (time >  t0+3); t0 = if(beat, time, t0);\\\\n\\\\nspeed = min(0.2,dist_-.02) * (1+2*avg) *(1-slow*.0)*.7/q7; //#\\\\nds = ds * dec_s + (1-dec_s)*speed*.25/fps_; \\\\nRotZ = if (RotZ==0,beat*(rand(100)<20*travel)*(rand(10)/10-.3),\\\\n                   bnot(beat*(rand(100)<30))*RotZ);\\\\nslow = if (bnot(slow), beat*(rand(1000*avg)<6), bnot(beat*(rand(100)<50)));\\\\nlook = if (bnot(look), beat*(rand(1000*speed)<12), bnot(beat*(rand(100)<50)));\\\\n\\\\n//Lamp View\\\\nlx = if (beat,rand(150)/200+.15,lx);\\\\nly = if (beat,rand(150)/200+.15,ly);\\\\nlampx = lampx * dec_s + (1-dec_s)*if (look,lx,0.5);\\\\nlampy = lampy * dec_s + (1-dec_s)*if (look,ly,0.5);\\\\nq1 = lampx; q2 = lampy;\\\\n\\\\n//Position \\\\nDirX= reg26; DirY= reg27; DirZ = reg28;\\\\nPosX = PosX + ds*DirX ; PosY = PosY + ds*DirY; PosZ = PosZ + ds*DirZ; \\\\nq4 = PosX; q5 = PosY; q6 = PosZ;\\\\n\\\\nangchg = (.2-dist_)*(dist_ < .2)*2;\\\\ntravel = if (angchg > 0,0,travel+ds);\\\\nv1 = v1 * dec_s + (1-dec_s)* RotZ * ds;\\\\nv2 = v2 *dec_s + (1-dec_s)*angchg *xslope/fps_;\\\\nv3 = v3 *dec_s + (1-dec_s)*(angchg *yslope/fps_ + 2*v1*sin(time*.1));\\\\n//v2 = .008;\\\\n//push old RotMat\\\\nreg30 =reg20; reg31 =reg21; reg32 =reg22; \\\\nreg33 =reg23; reg34 =reg24; reg35 =reg25; \\\\nreg36 =reg26; reg37 =reg27; reg38 =reg28; \\\\n\\\\nn = 0; avg = 0;\\\\nloop (5,\\\\n  n = n+1;\\\\n  //new Rot. Mat for infinitesimal angles\\\\n  ran1 = rand(100)/100;\\\\n  ran2 = rand(100)/200-.25;\\\\n  tx = cos(n*1.57+ran2) * (n <= 4)*ran1; ty = sin(n*1.57+ran2) * (n <= 4)*ran1;\\\\n  c1 = cos(v1); c2 = cos(v2+ty); c3 = cos(v3+tx); \\\\n  s1 = sin(v1); s2 = sin(v2+ty); s3 = sin(v3+tx);\\\\n  reg10 = c2*c1; reg11 = c2*s1; reg12 = -s2;\\\\n  reg13 = s3*s2*c1 - c3*s1; reg14 = s3*s2*s1 + c3*c1; reg15 = s3*c2;\\\\n  reg16 = c3*s2*c1 + s3*s1; reg17 = c3*s2*s1 - s3*c1; reg18 = c3*c2;\\\\n\\\\n  //pop old RotMat\\\\n  reg20 =reg30; reg21 =reg31; reg22 =reg32; \\\\n  reg23 =reg33; reg24 =reg34; reg25 =reg35; \\\\n  reg26 =reg36; reg27 =reg37; reg28 =reg38; \\\\n\\\\n  //Multiply new RotMat by old one\\\\n  q20 = reg10*reg20 + reg11*reg23 + reg12*reg26;\\\\n  q21 = reg10*reg21 + reg11*reg24 + reg12*reg27;\\\\n  q22 = reg10*reg22 + reg11*reg25 + reg12*reg28;\\\\n  q23 = reg13*reg20 + reg14*reg23 + reg15*reg26;\\\\n  q24 = reg13*reg21 + reg14*reg24 + reg15*reg27;\\\\n  q25 = reg13*reg22 + reg14*reg25 + reg15*reg28;\\\\n  q26 = reg16*reg20 + reg17*reg23 + reg18*reg26;\\\\n  q27 = reg16*reg21 + reg17*reg24 + reg18*reg27;\\\\n  q28 = reg16*reg22 + reg17*reg25 + reg18*reg28;\\\\n\\\\n  reg20 =q20; reg21 =q21; reg22 =q22;\\\\n  reg23 =q23; reg24 =q24; reg25 =q25;\\\\n  reg26 =q26; reg27 =q27; reg28 =q28;\\\\n\\\\n  //***********BOT*************\\\\n  //Coord. Trans. must exactly match def in warp S. !!!!\\\\n  dist = 0.002;\\\\n  while (exec2(\\\\n    uvx = reg26*dist/q7; uvy = reg27*dist/q7; uvz = reg28*dist/q7;\\\\n    uvx += PosX; uvy += PosY; uvz += PosZ;\\\\n    uvx = 8.0*((uvx/8+30.5 - int(uvx/8+30.5))-.5);\\\\n    uvy = 8.0*((uvy/8+30.5 - int(uvy/8+30.5))-.5);\\\\n    uvz = 8.0*((uvz/8+30.5 - int(uvz/8+30.5))-.5);\\\\n    uvx0 = uvx+q8; uvy0 = uvy+q8; uvz0 = uvz+q8;\\\\n    loop (7+1,\\\\n      uvx = if (uvx > 1, 2-uvx, if(uvx < -1, -2-uvx, uvx));\\\\n      uvy = if (uvy > 1, 2-uvy, if(uvy < -1, -2-uvy, uvy));\\\\n      uvz = if (uvz > 1, 2-uvz, if(uvz < -1, -2-uvz, uvz));\\\\n      slen = uvx*uvx + uvy*uvy + uvz*uvz;\\\\n      uvx = if (slen < 0.25, uvx*4, if (slen < 1, uvx/slen, uvx)) *2.6 + uvx0; \\\\n      uvy = if (slen < 0.25, uvy*4, if (slen < 1, uvy/slen, uvy)) *2.6 + uvy0; \\\\n      uvz = if (slen < 0.25, uvz*4, if (slen < 1, uvz/slen, uvz)) *2.6 + uvz0; \\\\n    );\\\\n    len = sqrt(uvx*uvx + uvy*uvy + uvz*uvz);\\\\n    dist *= 1.1;\\\\n  ,(dist < 0.6)*(len > 30)));\\\\n  megabuf(n) = megabuf(n)*dec_s + (1-dec_s)*dist; //stores the 4 trial points\\\\n  avg = avg+abs(megabuf(n)/5);\\\\n); //end loop 5\\\\n\\\\nn = 0; avg = 0; loop (5, n=n+1; avg = avg+abs(megabuf(n)/5));\\\\n\\\\nxslope = min(max(2/avg*(megabuf(1)-megabuf(3)),-3),3);\\\\nyslope = min(max(2/avg*(megabuf(4)-megabuf(2)),-3),3);\\\\nmonitor = avg;\\\\ndist_ = dist_*dec_s + (1-dec_s)*dist;\\\\n\\\\nq10 = ds*q7; //compensation of lin. movement in GetDist and zoom uv\\\\nq14 = 1*abs(ds) + 2*(abs(v1) + abs(v2) + abs(v3)) + 1.0/255 + start*.05; \\\\nq19 = .6 + .4*sin(time*.02+cran0*6); //brightness backgd\\\\nstart = start * .9;\\\\nq11 = v1; q12 = v2; q13 = v3;\\\\n//forward comp. of Rotation\\\\nmonitor = q16;\\\\n\\\\n\\\\nbb = bb*0.99 + bass*0.02;\\\\nmm = mm*0.99 + mid*0.02;\\\\ntt = tt*0.99 + treb*0.02;\\\\n\\\\nmx = max(max(bb,mm),tt);\\\\nmn = min(min(bb,mm),tt);\\\\n\\\\nh1 = (bb-mn)/(mx-mn);\\\\nh2 = (mm-mn)/(mx-mn);\\\\nh3 = (tt-mn)/(mx-mn);\\\\n\\\\nv = 0.1333/fps;\\\\nbm = bm + (h1-h2)*v;\\\\nmt = mt + (h2-h3)*v;\\\\nbt = bt + (h1-h3)*v;\\\\n\\\\nw = bm*2;\\\\nq3 = sin(w);\\\\nq9 = cos(w);\\\\n\\\\n\\\\nq17 = bm;\\\\nq18 = mt;\\\\nq19 = bt;\\\",\\\"pixel_eqs_eel\\\":\\\"warp = 0.0; zoom = 1; dx = -q12/q16*(1+0*pow(x-.5,2)); dy = q13/q16*(1+0*pow(y-.5,2)); rot =q11;\\\",\\\"warp\\\":\\\"float sustain;\\\\nfloat xlat_mutabledist;\\\\nfloat xlat_mutablestruc;\\\\nvec2 xlat_mutableuv1;\\\\nvec3 xlat_mutableuv2;\\\\n shader_body { \\\\n  mat3 tmpvar_1;\\\\n  tmpvar_1[uint(0)].x = q20;\\\\n  tmpvar_1[uint(0)].y = q23;\\\\n  tmpvar_1[uint(0)].z = q26;\\\\n  tmpvar_1[1u].x = q21;\\\\n  tmpvar_1[1u].y = q24;\\\\n  tmpvar_1[1u].z = q27;\\\\n  tmpvar_1[2u].x = q22;\\\\n  tmpvar_1[2u].y = q25;\\\\n  tmpvar_1[2u].z = q28;\\\\n  vec3 tmpvar_2;\\\\n  tmpvar_2.x = q4;\\\\n  tmpvar_2.y = q5;\\\\n  tmpvar_2.z = q6;\\\\n  sustain = (1.0123 - q14);\\\\n  vec2 uv_3;\\\\n  vec3 ret_4;\\\\n  vec2 tmpvar_5;\\\\n  tmpvar_5 = (uv - 0.5);\\\\n  xlat_mutableuv1 = ((tmpvar_5 * aspect.xy) * q16);\\\\n  vec4 tmpvar_6;\\\\n  tmpvar_6 = texture (sampler_pc_main, uv);\\\\n  uv_3 = ((tmpvar_5 * (1.0 - \\\\n    (q10 / (1.0 - ((tmpvar_6.z + \\\\n      (0.003921569 * tmpvar_6.y)\\\\n    ) + (q10 * 0.7))))\\\\n  )) + 0.5);\\\\n  vec4 tmpvar_7;\\\\n  tmpvar_7 = fract((8.0 * texture (sampler_noise_lq, (uv_3 + rand_frame.yz))));\\\\n  xlat_mutabledist = tmpvar_7.x;\\\\n  if ((tmpvar_7.y > 0.2)) {\\\\n    vec3 tmpvar_8;\\\\n    tmpvar_8 = (tmpvar_7.xyz - vec3(0.4, 0.5, 0.5));\\\\n    vec2 uvi_9;\\\\n    uvi_9 = ((tmpvar_8.zy * 0.003) + uv_3);\\\\n    vec2 pix_10;\\\\n    vec4 nb2_11;\\\\n    vec4 nb_12;\\\\n    vec2 x_13;\\\\n    x_13 = (uvi_9 - 0.5);\\\\n    pix_10 = (texsize.zw * (1.0 + (\\\\n      sqrt(dot (x_13, x_13))\\\\n     * 8.0)));\\\\n    float tmpvar_14;\\\\n    tmpvar_14 = (q10 * 0.7);\\\\n    vec4 tmpvar_15;\\\\n    tmpvar_15 = texture (sampler_pc_main, (uvi_9 - pix_10));\\\\n    nb_12.x = (1.0 - ((tmpvar_15.z + \\\\n      (0.003921569 * tmpvar_15.y)\\\\n    ) + tmpvar_14));\\\\n    vec4 tmpvar_16;\\\\n    tmpvar_16 = texture (sampler_pc_main, (uvi_9 + (pix_10 * vec2(1.0, -1.0))));\\\\n    nb_12.y = (1.0 - ((tmpvar_16.z + \\\\n      (0.003921569 * tmpvar_16.y)\\\\n    ) + tmpvar_14));\\\\n    vec4 tmpvar_17;\\\\n    tmpvar_17 = texture (sampler_pc_main, (uvi_9 + pix_10));\\\\n    nb_12.z = (1.0 - ((tmpvar_17.z + \\\\n      (0.003921569 * tmpvar_17.y)\\\\n    ) + tmpvar_14));\\\\n    vec4 tmpvar_18;\\\\n    tmpvar_18 = texture (sampler_pc_main, (uvi_9 + (pix_10 * vec2(-1.0, 1.0))));\\\\n    nb_12.w = (1.0 - ((tmpvar_18.z + \\\\n      (0.003921569 * tmpvar_18.y)\\\\n    ) + tmpvar_14));\\\\n    vec4 tmpvar_19;\\\\n    tmpvar_19 = texture (sampler_pc_main, (uvi_9 + (pix_10 * vec2(0.0, -1.0))));\\\\n    nb2_11.x = (1.0 - ((tmpvar_19.z + \\\\n      (0.003921569 * tmpvar_19.y)\\\\n    ) + tmpvar_14));\\\\n    vec4 tmpvar_20;\\\\n    tmpvar_20 = texture (sampler_pc_main, (uvi_9 + (pix_10 * vec2(1.0, 0.0))));\\\\n    nb2_11.y = (1.0 - ((tmpvar_20.z + \\\\n      (0.003921569 * tmpvar_20.y)\\\\n    ) + tmpvar_14));\\\\n    vec4 tmpvar_21;\\\\n    tmpvar_21 = texture (sampler_pc_main, (uvi_9 + (pix_10 * vec2(0.0, 1.0))));\\\\n    nb2_11.z = (1.0 - ((tmpvar_21.z + \\\\n      (0.003921569 * tmpvar_21.y)\\\\n    ) + tmpvar_14));\\\\n    vec4 tmpvar_22;\\\\n    tmpvar_22 = texture (sampler_pc_main, (uvi_9 + (pix_10 * vec2(-1.0, 0.0))));\\\\n    nb2_11.w = (1.0 - ((tmpvar_22.z + \\\\n      (0.003921569 * tmpvar_22.y)\\\\n    ) + tmpvar_14));\\\\n    vec4 tmpvar_23;\\\\n    tmpvar_23 = min (nb_12, nb2_11);\\\\n    nb_12.zw = tmpvar_23.zw;\\\\n    nb_12.xy = min (tmpvar_23.xy, tmpvar_23.zw);\\\\n    xlat_mutabledist = (min (nb_12.x, nb_12.y) + ((0.008 * tmpvar_8.x) * abs(tmpvar_8.y)));\\\\n  };\\\\n  vec4 tmpvar_24;\\\\n  tmpvar_24 = texture (sampler_pc_main, uv_3);\\\\n  float tmpvar_25;\\\\n  tmpvar_25 = min (xlat_mutabledist, (1.0 - (\\\\n    (tmpvar_24.z + (0.003921569 * tmpvar_24.y))\\\\n   + \\\\n    (q10 * 0.7)\\\\n  )));\\\\n  xlat_mutabledist = tmpvar_25;\\\\n  float tmpvar_26;\\\\n  tmpvar_26 = (tmpvar_25 + pow (tmpvar_25, 3.0));\\\\n  vec3 tmpvar_27;\\\\n  tmpvar_27.xy = (xlat_mutableuv1 * tmpvar_26);\\\\n  tmpvar_27.z = tmpvar_26;\\\\n  xlat_mutableuv2 = (((tmpvar_27 / q7) * tmpvar_1) + tmpvar_2);\\\\n  xlat_mutableuv2 = ((fract(\\\\n    ((xlat_mutableuv2 / 8.0) + 0.5)\\\\n  ) - 0.5) * 8.0);\\\\n  float li_28;\\\\n  vec3 zz0_29;\\\\n  vec3 zz_30;\\\\n  zz0_29 = (xlat_mutableuv2 + q8);\\\\n  li_28 = 0.0;\\\\n  zz_30 = ((2.0 * clamp (xlat_mutableuv2, vec3(-1.0, -1.0, -1.0), vec3(1.0, 1.0, 1.0))) - xlat_mutableuv2);\\\\n  float tmpvar_31;\\\\n  tmpvar_31 = dot (zz_30, zz_30);\\\\n  if ((tmpvar_31 <= 0.25)) {\\\\n    zz_30 = (zz_30 * 4.0);\\\\n    li_28 = 24.0;\\\\n  } else {\\\\n    if ((tmpvar_31 <= 1.0)) {\\\\n      zz_30 = (zz_30 / tmpvar_31);\\\\n    };\\\\n  };\\\\n  zz_30 = ((2.6 * zz_30) + zz0_29);\\\\n  zz_30 = ((2.0 * clamp (zz_30, vec3(-1.0, -1.0, -1.0), vec3(1.0, 1.0, 1.0))) - zz_30);\\\\n  float tmpvar_32;\\\\n  tmpvar_32 = dot (zz_30, zz_30);\\\\n  if ((tmpvar_32 <= 0.25)) {\\\\n    zz_30 = (zz_30 * 4.0);\\\\n    li_28 = 24.0;\\\\n  } else {\\\\n    if ((tmpvar_32 <= 1.0)) {\\\\n      zz_30 = (zz_30 / tmpvar_32);\\\\n    };\\\\n  };\\\\n  zz_30 = ((2.6 * zz_30) + zz0_29);\\\\n  zz_30 = ((2.0 * clamp (zz_30, vec3(-1.0, -1.0, -1.0), vec3(1.0, 1.0, 1.0))) - zz_30);\\\\n  float tmpvar_33;\\\\n  tmpvar_33 = dot (zz_30, zz_30);\\\\n  if ((tmpvar_33 <= 0.25)) {\\\\n    zz_30 = (zz_30 * 4.0);\\\\n    li_28 = 24.0;\\\\n  } else {\\\\n    if ((tmpvar_33 <= 1.0)) {\\\\n      zz_30 = (zz_30 / tmpvar_33);\\\\n    };\\\\n  };\\\\n  zz_30 = ((2.6 * zz_30) + zz0_29);\\\\n  zz_30 = ((2.0 * clamp (zz_30, vec3(-1.0, -1.0, -1.0), vec3(1.0, 1.0, 1.0))) - zz_30);\\\\n  float tmpvar_34;\\\\n  tmpvar_34 = dot (zz_30, zz_30);\\\\n  if ((tmpvar_34 <= 0.25)) {\\\\n    zz_30 = (zz_30 * 4.0);\\\\n    li_28 = 24.0;\\\\n  } else {\\\\n    if ((tmpvar_34 <= 1.0)) {\\\\n      zz_30 = (zz_30 / tmpvar_34);\\\\n    };\\\\n  };\\\\n  zz_30 = ((2.6 * zz_30) + zz0_29);\\\\n  zz_30 = ((2.0 * clamp (zz_30, vec3(-1.0, -1.0, -1.0), vec3(1.0, 1.0, 1.0))) - zz_30);\\\\n  float tmpvar_35;\\\\n  tmpvar_35 = dot (zz_30, zz_30);\\\\n  if ((tmpvar_35 <= 0.25)) {\\\\n    zz_30 = (zz_30 * 4.0);\\\\n    li_28 = 24.0;\\\\n  } else {\\\\n    if ((tmpvar_35 <= 1.0)) {\\\\n      zz_30 = (zz_30 / tmpvar_35);\\\\n    };\\\\n  };\\\\n  zz_30 = ((2.6 * zz_30) + zz0_29);\\\\n  zz_30 = ((2.0 * clamp (zz_30, vec3(-1.0, -1.0, -1.0), vec3(1.0, 1.0, 1.0))) - zz_30);\\\\n  float tmpvar_36;\\\\n  tmpvar_36 = dot (zz_30, zz_30);\\\\n  if ((tmpvar_36 <= 0.25)) {\\\\n    zz_30 = (zz_30 * 4.0);\\\\n    li_28 = 24.0;\\\\n  } else {\\\\n    if ((tmpvar_36 <= 1.0)) {\\\\n      zz_30 = (zz_30 / tmpvar_36);\\\\n    };\\\\n  };\\\\n  zz_30 = ((2.6 * zz_30) + zz0_29);\\\\n  zz_30 = ((2.0 * clamp (zz_30, vec3(-1.0, -1.0, -1.0), vec3(1.0, 1.0, 1.0))) - zz_30);\\\\n  float tmpvar_37;\\\\n  tmpvar_37 = dot (zz_30, zz_30);\\\\n  if ((tmpvar_37 <= 0.25)) {\\\\n    zz_30 = (zz_30 * 4.0);\\\\n    li_28 = 24.0;\\\\n  } else {\\\\n    if ((tmpvar_37 <= 1.0)) {\\\\n      zz_30 = (zz_30 / tmpvar_37);\\\\n    };\\\\n  };\\\\n  zz_30 = ((2.6 * zz_30) + zz0_29);\\\\n  zz_30 = ((2.0 * clamp (zz_30, vec3(-1.0, -1.0, -1.0), vec3(1.0, 1.0, 1.0))) - zz_30);\\\\n  float tmpvar_38;\\\\n  tmpvar_38 = dot (zz_30, zz_30);\\\\n  if ((tmpvar_38 <= 0.25)) {\\\\n    zz_30 = (zz_30 * 4.0);\\\\n    li_28 = 24.0;\\\\n  } else {\\\\n    if ((tmpvar_38 <= 1.0)) {\\\\n      zz_30 = (zz_30 / tmpvar_38);\\\\n    };\\\\n  };\\\\n  zz_30 = ((2.6 * zz_30) + zz0_29);\\\\n  vec4 tmpvar_39;\\\\n  tmpvar_39.xyz = zz_30;\\\\n  tmpvar_39.w = li_28;\\\\n  float tmpvar_40;\\\\n  tmpvar_40 = sqrt(dot (zz_30, zz_30));\\\\n  xlat_mutablestruc = (sqrt(dot (tmpvar_39.xyw, tmpvar_39.xyw)) / 24.0);\\\\n  vec4 tmpvar_41;\\\\n  tmpvar_41 = texture (sampler_pc_main, uv_3);\\\\n  float tmpvar_42;\\\\n  float tmpvar_43;\\\\n  tmpvar_43 = (q10 * 0.7);\\\\n  tmpvar_42 = ((log(\\\\n    (1.0 + (tmpvar_40 / 24.0))\\\\n  ) * 0.02) * (1.0 - (1.0 - \\\\n    ((tmpvar_41.z + (0.003921569 * tmpvar_41.y)) + tmpvar_43)\\\\n  )));\\\\n  float tmpvar_44;\\\\n  vec4 tmpvar_45;\\\\n  tmpvar_45 = texture (sampler_pc_main, uv_3);\\\\n  tmpvar_44 = (1.0 - ((tmpvar_45.z + \\\\n    (0.003921569 * tmpvar_45.y)\\\\n  ) + tmpvar_43));\\\\n  if ((((tmpvar_25 <= tmpvar_44) && (tmpvar_40 < 24.0)) && (tmpvar_25 > 0.005))) {\\\\n    ret_4.x = (((1.0 - sustain) * xlat_mutablestruc) + (sustain * mix (texture (sampler_main, uv_3).xyz, \\\\n      ((texture (sampler_blur1, uv_3).xyz * scale1) + bias1)\\\\n    , vec3(\\\\n      (q14 * 4.0)\\\\n    )).x));\\\\n    float x_46;\\\\n    x_46 = ((1.0 - tmpvar_25) * 255.0);\\\\n    float ip_47;\\\\n    ip_47 = float(int(x_46));\\\\n    vec2 tmpvar_48;\\\\n    tmpvar_48.x = (x_46 - ip_47);\\\\n    tmpvar_48.y = (ip_47 / 255.0);\\\\n    ret_4.yz = tmpvar_48;\\\\n  } else {\\\\n    vec3 tmpvar_49;\\\\n    tmpvar_49.y = 0.0;\\\\n    tmpvar_49.x = sustain;\\\\n    tmpvar_49.z = (1.0 - tmpvar_42);\\\\n    vec3 tmpvar_50;\\\\n    tmpvar_50.xy = vec2(0.003921569, 0.0);\\\\n    tmpvar_50.z = (q14 / 6.0);\\\\n    ret_4 = ((texture (sampler_fc_main, uv_3).xyz * tmpvar_49) - tmpvar_50);\\\\n  };\\\\n  vec4 tmpvar_51;\\\\n  tmpvar_51.w = 1.0;\\\\n  tmpvar_51.xyz = ret_4;\\\\n  ret = tmpvar_51.xyz;\\\\n }\\\",\\\"comp\\\":\\\"vec2 xlat_mutabled;\\\\nvec3 xlat_mutabledx;\\\\nvec3 xlat_mutabledy;\\\\n shader_body { \\\\n  vec3 ret_1;\\\\n  xlat_mutabled = (texsize.zw * 1.5);\\\\n  xlat_mutabledx = (texture (sampler_main, (uv_orig + (vec2(1.0, 0.0) * xlat_mutabled))).xyz - texture (sampler_main, (uv_orig - (vec2(1.0, 0.0) * xlat_mutabled))).xyz);\\\\n  xlat_mutabledy = (texture (sampler_main, (uv_orig + (vec2(0.0, 1.0) * xlat_mutabled))).xyz - texture (sampler_main, (uv_orig - (vec2(0.0, 1.0) * xlat_mutabled))).xyz);\\\\n  vec2 tmpvar_2;\\\\n  tmpvar_2.x = xlat_mutabledx.y;\\\\n  tmpvar_2.y = xlat_mutabledy.y;\\\\n  vec2 x_3;\\\\n  x_3 = (tmpvar_2 * 8.0);\\\\n  ret_1 = (((texture (sampler_main, uv).x * \\\\n    (1.0 - sqrt(dot (x_3, x_3)))\\\\n  ) * pow (hue_shader, vec3(6.0, 6.0, 6.0))) * 1.4);\\\\n  vec2 tmpvar_4;\\\\n  tmpvar_4.x = xlat_mutabledx.z;\\\\n  tmpvar_4.y = xlat_mutabledy.z;\\\\n  vec2 x_5;\\\\n  x_5 = (tmpvar_4 * 4.0);\\\\n  vec3 tmpvar_6;\\\\n  tmpvar_6 = mix (ret_1, vec3(1.0, 1.0, 1.0), vec3(sqrt(dot (x_5, x_5))));\\\\n  ret_1 = tmpvar_6;\\\\n  vec4 tmpvar_7;\\\\n  tmpvar_7.w = 1.0;\\\\n  tmpvar_7.xyz = tmpvar_6;\\\\n  ret = tmpvar_7.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/flexi + fishbrain - neon mindblob grafitti.json\":\n/*!***************************************************************************!*\\\n  !*** ./presets/converted/flexi + fishbrain - neon mindblob grafitti.json ***!\n  \\***************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1,\\\"decay\\\":0.955,\\\"echo_zoom\\\":0.997,\\\"echo_alpha\\\":0.5,\\\"wave_mode\\\":7,\\\"additivewave\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":0.49,\\\"wave_smoothing\\\":0,\\\"modwavealphastart\\\":0.71,\\\"modwavealphaend\\\":1.3,\\\"warpscale\\\":16.016,\\\"zoomexp\\\":11.56276,\\\"fshader\\\":1,\\\"zoom\\\":1.05971,\\\"warp\\\":0.13126,\\\"wave_r\\\":0.65,\\\"wave_g\\\":0.65,\\\"wave_b\\\":0.65,\\\"ob_size\\\":0,\\\"ob_a\\\":1,\\\"ib_size\\\":0,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":14,\\\"additive\\\":1,\\\"num_inst\\\":126,\\\"rad\\\":0.0303,\\\"tex_ang\\\":0.62832,\\\"r\\\":0,\\\"b\\\":1,\\\"g2\\\":0,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ma=ma+(above(bass,1)*3.1415*.01*bass);\\\\nma=ma-(above(treb,1)*3.1415*.01*treb);\\\\n\\\\nmx=mx+(.0002*cos(ma));\\\\nmy=my+(.0002*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.8));\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":14,\\\"additive\\\":1,\\\"num_inst\\\":128,\\\"rad\\\":0.03,\\\"tex_ang\\\":0.62832,\\\"r\\\":0,\\\"b\\\":1,\\\"g2\\\":0,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ma=ma+(above(bass,1)*3.1415*.05*bass);\\\\nma=ma-(above(mid,1)*3.1415*.05*mid);\\\\n\\\\nmx=mx+(.0001*cos(ma));\\\\nmy=my+(.0001*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.1));\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":14,\\\"additive\\\":1,\\\"num_inst\\\":32,\\\"rad\\\":0.0297,\\\"tex_ang\\\":0.62832,\\\"r\\\":0,\\\"b\\\":1,\\\"g2\\\":0,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ma=ma+(above(mid,1)*3.1415*.01*mid);\\\\nma=ma-(above(treb,1)*3.1415*.01*treb);\\\\n\\\\nmx=mx+(.0004*cos(ma));\\\\nmy=my+(.0004*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.3));\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":14,\\\"additive\\\":1,\\\"num_inst\\\":16,\\\"rad\\\":0.0303,\\\"tex_ang\\\":0.62832,\\\"r\\\":0,\\\"b\\\":1,\\\"g2\\\":0,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ma=ma+(above(bass,.5)*3.1415*.02*bass);\\\\nma=ma-(above(treb,.5)*3.1415*.02*treb);\\\\n\\\\nmx=mx+(.0008*cos(ma));\\\\nmy=my+(.0008*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.2));\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":2.0231,\\\"smoothing\\\":0,\\\"r\\\":0,\\\"b\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\ncl = 0;\\\",\\\"frame_eqs_eel\\\":\\\"vol = bass*8 + mid*5 + treb*3;\\\\nm = m*0.97 + vol*0.08;\\\\nmonitor = vol;\\\\nbeat = above(vol,res)*above(vol,m)*above(vol,16);\\\\ndiff = (1-beat)*diff + beat*(vol-res);\\\\nres = beat*(vol + m*0.04) + (1-beat)*(res -  (0.1+diff*0.02)*60/fps);\\\\nres = max(0,res);\\\\n\\\\na = beat;\\\",\\\"point_eqs_eel\\\":\\\"tt3 = tt3*0.6 + (value1)*1;\\\\ntt2 = tt2*0.7 + tt3*0.2;\\\\ntt1 = tt1*0.8 + tt2*0.1;\\\\nd = d*0.9 + tt1*0.2;\\\\n\\\\ny = 0.5 + d*sample*(1-sample)*4;\\\\nx =  -0.05 + sample*1.1;\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(bass,1)*3.1415*.05*bass);\\\\nma=ma-(above(mid,1)*3.1415*.05*mid);\\\\n\\\\nmx=mx+(.0001*cos(ma));\\\\nmy=my+(.0001*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.1));\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(mid,1)*3.1415*.01*mid);\\\\nma=ma-(above(treb,1)*3.1415*.01*treb);\\\\n\\\\nmx=mx+(.0004*cos(ma));\\\\nmy=my+(.0004*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.3));\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(bass,.5)*3.1415*.02*bass);\\\\nma=ma-(above(treb,.5)*3.1415*.02*treb);\\\\n\\\\nmx=mx+(.0008*cos(ma));\\\\nmy=my+(.0008*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.2));\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"xx1 = xx1*0.9 + (bass)*0.01;\\\\nxx2 = xx2*0.9 + (treb)*0.01;\\\\nyy1 = yy1*0.94 + (treb+bass)*0.0075;\\\\n\\\\nx1 = 0.5 + (xx1-xx2)*2;\\\\ny1 = 0.4 + yy1;\\\\n\\\\nx1 = max(0,min(1,x1)); y1 = max(0,min(1,y1));\\\\n\\\\nspring = 10;\\\\ngrav = .5;\\\\nresist = 1;\\\\nbounce = 0.75;\\\\ndt = 0.0005*(60/fps);\\\\n\\\\nvx2 = vx2*(1-resist*dt) + dt*((x1+x3-2*x2)*spring);\\\\nvy2 = vy2*(1-resist*dt) + dt*((y1+y3-2*y2)*spring-grav);\\\\nvx3 = vx3*(1-resist*dt) + dt*((x2+x4-2*x3)*spring);\\\\nvy3 = vy3*(1-resist*dt) + dt*((y2+y4-2*y3)*spring-grav);\\\\nvx4 = vx4*(1-resist*dt) + dt*((x3-x4)*spring);\\\\nvy4 = vy4*(1-resist*dt) + dt*((y3-y4)*spring-grav);\\\\n\\\\nx2 = x2 + vx2;\\\\ny2 = y2 + vy2;\\\\nx3 = x3 + vx3;\\\\ny3 = y3 + vy3;\\\\nx4 = x4 + vx4;\\\\ny4 = y4 + vy4;\\\\n\\\\nvx2 = if(above(x2,0),vx2,abs(vx2)*bounce);\\\\nvx2 = if(below(x2,1),vx2,-abs(vx2)*bounce);\\\\nvx3 = if(above(x3,0),vx3,abs(vx3)*bounce);\\\\nvx3 = if(below(x3,1),vx3,-abs(vx3)*bounce);\\\\nvx4 = if(above(x4,0),vx4,abs(vx4)*bounce);\\\\nvx4 = if(below(x4,1),vx4,-abs(vx4)*bounce);\\\\nvy2 = if(above(y2,0),vy2,abs(vy2)*bounce);\\\\nvy2 = if(below(y2,1),vy2,-abs(vy2)*bounce);\\\\nvy3 = if(above(y3,0),vy3,abs(vy3)*bounce);\\\\nvy3 = if(below(y3,1),vy3,-abs(vy3)*bounce);\\\\nvy4 = if(above(y4,0),vy4,abs(vy4)*bounce);\\\\nvy4 = if(below(y4,1),vy4,-abs(vy4)*bounce);\\\\n\\\\n\\\\nq1 = x1; q2 = x2; q3 = x3; q4 = x4;\\\\nq5 = y1; q6 = y2; q7 = y3; q8 = y4;\\\\nq9 =1/ aspectX;\\\\nq10 = 1/aspectY;\\\\n\\\\nzoom = 1;\\\\nr = r*0.96 +(x1-0.5);\\\\nrot = (r*0.1);\\\\n\\\\nq12 = atan2(vx4,vy4);\\\\nq11 = sqrt(vx4*vx4 + vy4*vy4);\\\\n\\\\nzoom = 1.001;\\\\nrot = 0.00;\\\\nwarp = 0.2;\\\\nwave_a = 0;\\\",\\\"pixel_eqs_eel\\\":\\\"dir = -q12*1 + asin(1)*1;\\\\n\\\\nb1 = 0.1; // distance\\\\nm1 = q11*25;//-0.6 + q5*200; // size\\\\nt1 = 0.05; // velocity\\\\n\\\\nxx = q4;\\\\nyy = 1-q8;\\\\n\\\\n\\\\nx1 = xx   +cos(dir+1.5708)*b1;\\\\ny1 = yy -sin(dir+1.5708)*b1;\\\\n\\\\nx2 = xx   -cos(dir+1.5708)*b1;\\\\ny2 = yy +sin(dir+1.5708)*b1;\\\\n\\\\nd1 = sqrt((x1-x)*(x1-x)+(y1-y)*(y1-y))-b1*2;\\\\nsi1 = 1- 1/(1+pow(2,-d1*1000));\\\\n\\\\nd2 = sqrt((x2-x)*(x2-x)+(y2-y)*(y2-y))-b1*2;\\\\nsi2 = 1- 1/(1+pow(2,-d2*1000));\\\\n\\\\nsi3 = -pow(q5,3)*00;\\\\n\\\\ndx = (si1*sin(y1-y)*m1*d1  - si2*sin(y2-y)*m1*d2 + si3*cos(dir)*t1)*2;\\\\ndy = (-si1*sin(x1-x)*m1*d1 + si2*sin(x2-x)*m1*d2 - si3*sin(dir)*t1)*2;\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec3 ret_1;\\\\n  vec2 tmpvar_2;\\\\n  tmpvar_2 = (texsize.zw * 8.0);\\\\n  vec3 tmpvar_3;\\\\n  tmpvar_3 = (((texture (sampler_blur1, \\\\n    (uv + (vec2(1.0, 0.0) * tmpvar_2))\\\\n  ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n    (uv - (vec2(1.0, 0.0) * tmpvar_2))\\\\n  ).xyz * scale1) + bias1));\\\\n  vec3 tmpvar_4;\\\\n  tmpvar_4 = (((texture (sampler_blur1, \\\\n    (uv + (vec2(0.0, 1.0) * tmpvar_2))\\\\n  ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n    (uv - (vec2(0.0, 1.0) * tmpvar_2))\\\\n  ).xyz * scale1) + bias1));\\\\n  vec2 tmpvar_5;\\\\n  tmpvar_5.x = tmpvar_3.z;\\\\n  tmpvar_5.y = tmpvar_4.z;\\\\n  vec2 tmpvar_6;\\\\n  tmpvar_6 = (uv + ((tmpvar_5 * texsize.zw) * 4.0));\\\\n  ret_1.z = (((texture (sampler_main, tmpvar_6).z - \\\\n    ((texture (sampler_main, tmpvar_6).z - ((texture (sampler_blur3, tmpvar_6).xyz * scale3) + bias3).z) * 0.02)\\\\n  ) - 0.008) + ((texture (sampler_noise_lq, \\\\n    (((uv_orig * texsize.xy) * texsize_noise_lq.zw) + rand_frame.xy)\\\\n  ).xyz - 0.5) * 0.1)).x;\\\\n  vec2 tmpvar_7;\\\\n  tmpvar_7.x = tmpvar_3.x;\\\\n  tmpvar_7.y = tmpvar_4.x;\\\\n  vec2 tmpvar_8;\\\\n  tmpvar_8 = ((0.5 + (uv - 0.5)) - (tmpvar_7 * texsize.zw));\\\\n  ret_1.x = texture (sampler_main, tmpvar_8).x;\\\\n  ret_1.x = (ret_1.x + ((\\\\n    (ret_1.x - ((texture (sampler_blur3, tmpvar_8).xyz * scale3) + bias3))\\\\n  .x * 0.4) + 0.006));\\\\n  vec2 tmpvar_9;\\\\n  tmpvar_9.x = tmpvar_3.x;\\\\n  tmpvar_9.y = tmpvar_4.x;\\\\n  vec2 tmpvar_10;\\\\n  tmpvar_10.x = tmpvar_3.y;\\\\n  tmpvar_10.y = tmpvar_4.y;\\\\n  vec2 tmpvar_11;\\\\n  tmpvar_11.x = tmpvar_3.z;\\\\n  tmpvar_11.y = tmpvar_4.z;\\\\n  ret_1.y = texture (sampler_fc_main, (((uv - \\\\n    ((tmpvar_9 * texsize.zw) * 8.0)\\\\n  ) + (\\\\n    (tmpvar_10 * texsize.zw)\\\\n   * 4.0)) + ((tmpvar_11 * texsize.zw) * 8.0))).y;\\\\n  ret_1.y = (ret_1.y * (1.0 + (ret_1.x * 0.1)));\\\\n  ret_1.y = (ret_1.y - (0.004 + (\\\\n    clamp (ret_1.z, 0.0, 1.0)\\\\n   * 0.012)));\\\\n  vec4 tmpvar_12;\\\\n  tmpvar_12.w = 1.0;\\\\n  tmpvar_12.xyz = ret_1;\\\\n  ret = tmpvar_12.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec3 ret_1;\\\\n  vec2 tmpvar_2;\\\\n  tmpvar_2 = (texsize.zw * 4.0);\\\\n  vec3 tmpvar_3;\\\\n  tmpvar_3 = (((texture (sampler_blur1, \\\\n    (uv + (vec2(1.0, 0.0) * tmpvar_2))\\\\n  ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n    (uv - (vec2(1.0, 0.0) * tmpvar_2))\\\\n  ).xyz * scale1) + bias1));\\\\n  vec3 tmpvar_4;\\\\n  tmpvar_4 = (((texture (sampler_blur1, \\\\n    (uv + (vec2(0.0, 1.0) * tmpvar_2))\\\\n  ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n    (uv - (vec2(0.0, 1.0) * tmpvar_2))\\\\n  ).xyz * scale1) + bias1));\\\\n  vec2 tmpvar_5;\\\\n  tmpvar_5.x = tmpvar_3.z;\\\\n  tmpvar_5.y = tmpvar_4.z;\\\\n  vec2 tmpvar_6;\\\\n  tmpvar_6.x = tmpvar_3.y;\\\\n  tmpvar_6.y = tmpvar_4.y;\\\\n  vec2 tmpvar_7;\\\\n  tmpvar_7 = ((uv - (tmpvar_5 * 0.1)) + (tmpvar_6 * 0.06));\\\\n  vec4 tmpvar_8;\\\\n  tmpvar_8 = texture (sampler_main, uv);\\\\n  ret_1 = (((\\\\n    ((texture (sampler_blur2, tmpvar_7).xyz * scale2) + bias2)\\\\n  .x * \\\\n    clamp ((1.0 - tmpvar_8.z), 0.0, 1.0)\\\\n  ) * pow (hue_shader.yxz, vec3(8.0, 8.0, 8.0))) * 3.0);\\\\n  ret_1 = (mix (ret_1, (\\\\n    pow (hue_shader.yzx, vec3(8.0, 8.0, 8.0))\\\\n   * 1.4), vec3((\\\\n    (texture (sampler_main, tmpvar_7).x * 0.8)\\\\n   + \\\\n    ((texture (sampler_blur1, tmpvar_7).xyz * scale1) + bias1)\\\\n  .x))) * clamp ((1.0 - \\\\n    (((texture (sampler_blur1, uv).xyz * scale1) + bias1).y * 4.0)\\\\n  ), 0.0, 1.0));\\\\n  vec2 tmpvar_9;\\\\n  tmpvar_9.x = tmpvar_3.y;\\\\n  tmpvar_9.y = tmpvar_4.y;\\\\n  vec3 tmpvar_10;\\\\n  vec3 tmpvar_11;\\\\n  tmpvar_11 = pow (hue_shader, vec3(8.0, 8.0, 8.0));\\\\n  tmpvar_10 = mix (mix (ret_1, vec3(1.0, 1.0, 1.0), (\\\\n    (tmpvar_11 * texture (sampler_main, clamp ((uv - (tmpvar_9 * 2.0)), 0.0, 1.0)).z)\\\\n   * 1.2)), (tmpvar_11.zxy * 1.8), tmpvar_8.yyy);\\\\n  ret_1 = tmpvar_10;\\\\n  vec4 tmpvar_12;\\\\n  tmpvar_12.w = 1.0;\\\\n  tmpvar_12.xyz = tmpvar_10;\\\\n  ret = tmpvar_12.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/flexi + geiss - pogo cubes vs. tokamak vs. game of life [stahls jelly 4.5 finish].json\":\n/*!******************************************************************************************************************!*\\\n  !*** ./presets/converted/flexi + geiss - pogo cubes vs. tokamak vs. game of life [stahls jelly 4.5 finish].json ***!\n  \\******************************************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1.9,\\\"echo_zoom\\\":1.169,\\\"additivewave\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"wave_a\\\":1.413,\\\"wave_scale\\\":0.418,\\\"wave_smoothing\\\":0,\\\"wave_mystery\\\":-0.66,\\\"modwavealphastart\\\":2,\\\"modwavealphaend\\\":2,\\\"warpanimspeed\\\":0.626,\\\"warpscale\\\":1.331,\\\"zoomexp\\\":1.00001,\\\"zoom\\\":0.99951,\\\"warp\\\":0.08925,\\\"wave_r\\\":0,\\\"wave_g\\\":0,\\\"wave_x\\\":0.24,\\\"wave_y\\\":0.44,\\\"ob_size\\\":0.5,\\\"ob_r\\\":0.01,\\\"ib_size\\\":0.26,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"additive\\\":1,\\\"rad\\\":0.0277,\\\"ang\\\":6.03186,\\\"tex_ang\\\":6.03186,\\\"tex_zoom\\\":0.6839,\\\"g\\\":1,\\\"r2\\\":1,\\\"a2\\\":1,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":1},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"an = an + q6;\\\\nang = an*0.5;\\\\nx = q4;\\\\ny = q5;\\\\nrad = q3*sqrt(2);\\\\n\\\\n\\\\nx = 0.5 + (x-0.5)/q2;\\\\ny = 0.5 + (y-0.5)/q1;\\\\n\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"additive\\\":1,\\\"rad\\\":0.0277,\\\"ang\\\":6.03186,\\\"tex_ang\\\":6.03186,\\\"tex_zoom\\\":0.6839,\\\"g\\\":1,\\\"r2\\\":1,\\\"a2\\\":1,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":1},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"an = an + q9;\\\\nang = an*0.5;\\\\nx = q7;\\\\ny = q8;\\\\nrad = q3*sqrt(2);\\\\n\\\\nx = 0.5 + (x-0.5)/q2;\\\\ny = 0.5 + (y-0.5)/q1;\\\\n\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"additive\\\":1,\\\"rad\\\":0.0277,\\\"ang\\\":6.03186,\\\"tex_ang\\\":6.03186,\\\"tex_zoom\\\":0.6839,\\\"b\\\":1,\\\"r2\\\":1,\\\"g2\\\":0,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":1},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"an = an + q12;\\\\nang = an*0.5;\\\\nx = q10;\\\\ny = q11;\\\\nrad = q3*sqrt(2);\\\\n\\\\nx = 0.5 + (x-0.5)/q2;\\\\ny = 0.5 + (y-0.5)/q1;\\\\n\\\"},{\\\"baseVals\\\":{\\\"sides\\\":48,\\\"additive\\\":1,\\\"num_inst\\\":4,\\\"rad\\\":0.0277,\\\"ang\\\":6.03186,\\\"tex_ang\\\":6.03186,\\\"tex_zoom\\\":0.6839,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"an = an + 0.5*q16/num_inst;\\\\nw = asin(1)*4*instance/num_inst + an;\\\\nx = q6 + sin(w)*q5*0.5;\\\\ny = q7 + cos(w)*q5*0.5;\\\\nrad = q5*0.25;\\\\n\\\\n\\\\n//x = 0.5 + (x-0.5)/q2;\\\\n//y = 0.5 + (y-0.5)/q1;\\\\n\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":2.0231,\\\"smoothing\\\":0,\\\"r\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\ncl = 0;\\\",\\\"frame_eqs_eel\\\":\\\"vol = bass*8 + mid*5 + treb*3;\\\\nm = m*0.97 + vol*0.08;\\\\nmonitor = vol;\\\\nbeat = above(vol,res)*above(vol,m)*above(vol,16);\\\\ndiff = (1-beat)*diff + beat*(vol-res);\\\\nres = beat*(vol + m*0.04) + (1-beat)*(res -  (0.1+diff*0.02)*60/fps);\\\\nres = max(0,res);\\\\n\\\\na = beat;\\\",\\\"point_eqs_eel\\\":\\\"tt3 = tt3*0.6 + (value1)*1;\\\\ntt2 = tt2*0.7 + tt3*0.2;\\\\ntt1 = tt1*0.8 + tt2*0.1;\\\\nd = d*0.9 + tt1*0.2;\\\\n\\\\ny = 0.5 + d*sample*(1-sample)*2;\\\\nx =  -0.05 + sample*1.1;\\\"},{\\\"baseVals\\\":{\\\"spectrum\\\":1,\\\"thick\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"chance = 0;\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"// the velocity vector\\\\n\\\\nx = q3 + sample*sin(q14)*q13*40;\\\\ny = q4 + sample*cos(q14)*q13*40;\\\\n\\\\n// tangential velocity of rotation\\\\n//x = q3 + sample*q16*40;\\\\n//y = q4 - q5/2;\\\\n\\\\n\\\\nx = 0.5 + (x-0.5)/q1;\\\\ny = 0.5 + (y-0.5)/q2;\\\"},{\\\"baseVals\\\":{\\\"spectrum\\\":1,\\\"thick\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"chance = 0;\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"// tangential property of velocity vector\\\\n\\\\nx = q3 + sample*sin(q10)*cos(q14-q10)*q13*40;\\\\ny = q4 + sample*cos(q10)*cos(q14-q10)*q13*40;\\\\n\\\\n// vx\\\\n//x = q3 + sample*q11*40;\\\\n//y = q4;\\\\n\\\\nx = 0.5 + (x-0.5)/q1;\\\\ny = 0.5 + (y-0.5)/q2;\\\"},{\\\"baseVals\\\":{\\\"spectrum\\\":1,\\\"thick\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"chance = 0;\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"// orthogonal property of velocity vector\\\\n\\\\nx = q3 + sample*sin(q10+asin(1))*cos(q14-q10-asin(1))*q13*40;\\\\ny = q4 + sample*cos(q10+asin(1))*cos(q14-q10-asin(1))*q13*40;\\\\n\\\\n// vy\\\\n//x = q3;\\\\n//y = q4 + sample*q12*40;\\\\n\\\\nx = 0.5 + (x-0.5)/q1;\\\\ny = 0.5 + (y-0.5)/q2;\\\"}],\\\"init_eqs_eel\\\":\\\"x1 = 0.5;\\\\ny1 = 0.6;\\\\n\\\\nx2 = 0.5;\\\\ny2 = 0.4;\\\\n\\\\nx3 = 0.5;\\\\ny3 = 0.2;\\\\n\\\\nvr1 = 0.0001;\\\\nvr2 = 0.0;\\\\nvr3 = 0.0;\\\\n\\\\nvx1 = 0;\\\\nvx2 = 0;\\\\nvx3 = 0;\\\",\\\"frame_eqs_eel\\\":\\\"zoom = 1;\\\\nwarp = 0;\\\\nwave_a = 0;\\\\n\\\\nr = 0.03+ (bass_att+treb_att)*0.004;\\\\nmonitor = aspecty;\\\\nvr = sin(vr1)*r;\\\\nbounce = below(y1,r-(aspectx-1)*0.5);y1 = y1+vy1;vy1 = if(bounce, abs(vy1)*0.96 + (r-y1-(aspectx-1)*0.5)*0.1, vy1-0.0003*60/fps);\\\\nvx1 = if(bounce, vx1 + (vr-vx1)*0.15, vx1);vr = if(bounce, vr + (vx1-vr)*0.85 , vr);vr1 = asin(vr/r);\\\\nbounce = above(x1,1-r+(aspecty-1)*0.5);vx1 = if(bounce, - abs(vx1)*0.96 + (1-r-x1+(aspecty-1)*0.5)*0.1, vx1);\\\\nvy1 = if(bounce, vy1 + (vr-vy1)*0.15, vy1);vr = if(bounce, vr + (vy1-vr)*0.85 , vr);vr1 = asin(vr/r);\\\\nbounce = below(x1,r-(aspecty-1)*0.5);x1 = x1+vx1;vx1 = if(bounce, abs(vx1)*0.96 + (r-x1-(aspecty-1)*0.5)*0.1, vx1);\\\\nvy1 = if(bounce, vy1 + (-vr-vy1)*0.15, vy1);vr = if(bounce, vr - (vy1+vr)*0.85 , vr);vr1 = asin(vr/r);\\\\n\\\\nvr = sin(vr2)*r;\\\\nbounce = below(y2,r-(aspectx-1)*0.5);y2 = y2+vy2;vy2 = if(bounce, abs(vy2)*0.96 + (r-y2-(aspectx-1)*0.5)*0.1, vy2-0.0003*60/fps);\\\\nvx2 = if(bounce, vx2 + (vr-vx2)*0.15, vx2);vr = if(bounce, vr + (vx2-vr)*0.85 , vr);vr2 = asin(vr/r);\\\\nbounce = above(x2,1-r+(aspecty-1)*0.5);vx2 = if(bounce, - abs(vx2)*0.96 + (1-r-x2+(aspecty-1)*0.5)*0.1, vx2);\\\\nvy2 = if(bounce, vy2 + (vr-vy2)*0.15, vy2);vr = if(bounce, vr + (vy2-vr)*0.85 , vr);vr2 = asin(vr/r);\\\\nbounce = below(x2,r-(aspecty-1)*0.5);x2 = x2+vx2;vx2 = if(bounce, abs(vx2)*0.96 + (r-x2-(aspecty-1)*0.5)*0.1, vx2);\\\\nvy2 = if(bounce, vy2 + (-vr-vy2)*0.15, vy2);vr = if(bounce, vr - (vy2+vr)*0.85 , vr);vr2 = asin(vr/r);\\\\n\\\\nvr = sin(vr3)*r;\\\\nbounce = below(y3,r-(aspectx-1)*0.5);y3 = y3+vy3;vy3 = if(bounce, abs(vy3)*0.96 + (r-y3-(aspectx-1)*0.5)*0.1, vy3-0.0003*60/fps);\\\\nvx3 = if(bounce, vx3 + (vr-vx3)*0.15, vx3);vr = if(bounce, vr + (vx3-vr)*0.85 , vr);vr3 = asin(vr/r);\\\\nbounce = above(x3,1-r+(aspecty-1)*0.5);vx3 = if(bounce, - abs(vx3)*0.96 + (1-r-x3+(aspecty-1)*0.5)*0.1, vx3);\\\\nvy3 = if(bounce, vy3 + (vr-vy3)*0.15, vy3);vr = if(bounce, vr + (vy3-vr)*0.85 , vr);vr3 = asin(vr/r);\\\\nbounce = below(x3,r-(aspecty-1)*0.5);x3 = x3+vx3;vx3 = if(bounce, abs(vx3)*0.96 + (r-x3-(aspecty-1)*0.5)*0.1, vx3);\\\\nvy3 = if(bounce, vy3 + (-vr-vy3)*0.15, vy3);vr = if(bounce, vr - (vy3+vr)*0.85 , vr);vr3 = asin(vr/r);\\\\n\\\\nbounce = below( sqrt( sqr(x1+vx1-x2-vx2) + sqr(y1+vy1-y2-vy2)), 2*r);\\\\nbounce = bounce*below(sqrt( sqr(x1+vx1-x2-vx2) + sqr(y1+vy1-y2-vy2)),sqrt( sqr(x1-x2) + sqr(y1-y2)));\\\\nref_ang = atan2(x2-x1,y2-y1)+asin(1); // common tangent\\\\nv1 = sqrt(vx1*vx1+vy1*vy1);v2 = sqrt(vx2*vx2+vy2*vy2);w1 = atan2(vx1,vy1);w2 = atan2(vx2,vy2);\\\\nvr = sin(vr1)*r; v2r=sin(vr2)*r;\\\\nvx1 = if(bounce,sin(ref_ang)*v1*cos(w1-ref_ang) + ((vr-v2r)-sin(ref_ang)*v1*cos(w1-ref_ang))*0.1\\\\n              + sin(ref_ang+asin(1))*v2*cos(w2-ref_ang-asin(1)), vx1);\\\\nvy1 = if(bounce,cos(ref_ang)*v1*cos(w1-ref_ang) + ((vr-v2r)-cos(ref_ang)*v1*cos(w1-ref_ang))*0.1\\\\n              + cos(ref_ang+asin(1))*v2*cos(w2-ref_ang-asin(1)), vy1);\\\\nvx2 = if(bounce,sin(ref_ang)*v2*cos(w2-ref_ang) + ((v2r-vr)-sin(ref_ang)*v2*cos(w2-ref_ang))*0.1\\\\n              + sin(ref_ang+asin(1))*v1*cos(w1-ref_ang-asin(1)), vx2);\\\\nvy2 = if(bounce,cos(ref_ang)*v2*cos(w2-ref_ang) + ((v2r-vr)-cos(ref_ang)*v2*cos(w2-ref_ang))*0.1\\\\n              + cos(ref_ang+asin(1))*v1*cos(w1-ref_ang-asin(1)), vy2);\\\\nvr = if(bounce, vr + (cos(w1-ref_ang)*(v1-v2)-vr)*0.9 , vr);vr1 = asin(vr/r);\\\\nv2r = if(bounce, v2r + (cos(w2-ref_ang)*(v2-v1)-v2r)*0.9 , v2r);vr2 = asin(v2r/r);\\\\n\\\\nbounce = below( sqrt( sqr(x1+vx1-x3-vx3) + sqr(y1+vy1-y3-vy3)), 2*r);\\\\nbounce = bounce*below(sqrt( sqr(x1+vx1-x3-vx3) + sqr(y1+vy1-y3-vy3)),sqrt( sqr(x1-x3) + sqr(y1-y3)));\\\\nref_ang = atan2(x3-x1,y3-y1)+asin(1); // common tangent\\\\nv1 = sqrt(vx1*vx1+vy1*vy1);v2 = sqrt(vx3*vx3+vy3*vy3);w1 = atan2(vx1,vy1);w2 = atan2(vx3,vy3);\\\\nvr = sin(vr1)*r; v2r=sin(vr3)*r;\\\\nvx1 = if(bounce,sin(ref_ang)*v1*cos(w1-ref_ang) + ((vr-v2r)-sin(ref_ang)*v1*cos(w1-ref_ang))*0.1\\\\n              + sin(ref_ang+asin(1))*v2*cos(w2-ref_ang-asin(1)), vx1);\\\\nvy1 = if(bounce,cos(ref_ang)*v1*cos(w1-ref_ang) + ((vr-v2r)-cos(ref_ang)*v1*cos(w1-ref_ang))*0.1\\\\n              + cos(ref_ang+asin(1))*v2*cos(w2-ref_ang-asin(1)), vy1);\\\\nvx3 = if(bounce,sin(ref_ang)*v2*cos(w2-ref_ang) + ((v2r-vr)-sin(ref_ang)*v2*cos(w2-ref_ang))*0.1\\\\n              + sin(ref_ang+asin(1))*v1*cos(w1-ref_ang-asin(1)), vx3);\\\\nvy3 = if(bounce,cos(ref_ang)*v2*cos(w2-ref_ang) + ((v2r-vr)-cos(ref_ang)*v2*cos(w2-ref_ang))*0.1\\\\n              + cos(ref_ang+asin(1))*v1*cos(w1-ref_ang-asin(1)), vy3);\\\\nvr = if(bounce, vr + (cos(w1-ref_ang)*(v1-v2)-vr)*0.9 , vr);vr1 = asin(vr/r);\\\\nv2r = if(bounce, v2r + (cos(w2-ref_ang)*(v2-v1)-v2r)*0.9 , v2r);vr3 = asin(v2r/r);\\\\n\\\\nbounce = below( sqrt( sqr(x3+vx3-x2-vx2) + sqr(y3+vy3-y2-vy2)), 2*r);\\\\nbounce = bounce*below(sqrt( sqr(x2+vx2-x3-vx3) + sqr(y2+vy2-y3-vy3)),sqrt( sqr(x2-x3) + sqr(y2-y3)));\\\\nref_ang = atan2(x2-x3,y2-y3)+asin(1); // common tangent\\\\nv1 = sqrt(vx3*vx3+vy3*vy3);v2 = sqrt(vx2*vx2+vy2*vy2);w1 = atan2(vx3,vy3);w2 = atan2(vx2,vy2);\\\\nvr = sin(vr3)*r; v2r=sin(vr2)*r;\\\\nvx3 = if(bounce,sin(ref_ang)*v1*cos(w1-ref_ang) + ((vr-v2r)-sin(ref_ang)*v1*cos(w1-ref_ang))*0.1\\\\n              + sin(ref_ang+asin(1))*v2*cos(w2-ref_ang-asin(1)), vx3);\\\\nvy3 = if(bounce,cos(ref_ang)*v1*cos(w1-ref_ang) + ((vr-v2r)-cos(ref_ang)*v1*cos(w1-ref_ang))*0.1\\\\n              + cos(ref_ang+asin(1))*v2*cos(w2-ref_ang-asin(1)), vy3);\\\\nvx2 = if(bounce,sin(ref_ang)*v2*cos(w2-ref_ang) + ((v2r-vr)-sin(ref_ang)*v2*cos(w2-ref_ang))*0.1\\\\n              + sin(ref_ang+asin(1))*v1*cos(w1-ref_ang-asin(1)), vx2);\\\\nvy2 = if(bounce,cos(ref_ang)*v2*cos(w2-ref_ang) + ((v2r-vr)-cos(ref_ang)*v2*cos(w2-ref_ang))*0.1\\\\n              + cos(ref_ang+asin(1))*v1*cos(w1-ref_ang-asin(1)), vy2);\\\\nvr = if(bounce, vr + (cos(w1-ref_ang)*(v1-v2)-vr)*0.9 , vr);vr3 = asin(vr/r);\\\\nv2r = if(bounce, v2r + (cos(w2-ref_ang)*(v2-v1)-v2r)*0.9 , v2r);vr2 = asin(v2r/r);\\\\n\\\\n\\\\n\\\\n\\\\nq1 = aspectx;\\\\nq2 = aspecty;\\\\nq3 = r*2;\\\\n\\\\nq4  = x1;  q5 = y1;  q6 = vr1;\\\\nq7  = x2;  q8 = y2;  q9 = vr2;\\\\nq10 = x3; q11 = y3; q12 = vr3;\\\\n\\\\nq13 = atan2( (x1+x2+x3)/3 - 0.5, (y1+y2+y3)/3-0.5);\\\\nq14 = sigmoid(sqrt( sqr((x1+x2+x3)/3 - 0.5) + sqr((y1+y2+y3)/3-0.5) ),2)*0.2;\\\",\\\"pixel_eqs_eel\\\":\\\"du = (x*2-1) - (q4+q7+q10-1.5)*2/3;\\\\ndv = (y*2-1) + (q5+q8+q11-1.5)*2/3;\\\\ndist = sqrt(du*du+dv*dv);\\\\nang2 = atan2(du,dv);\\\\nmult = sin(dist*0.05)*0.4*q14;\\\\ndx = mult*sin(ang2*2+q13)*aspectx;\\\\ndy = mult*cos(ang2*2+q13)*aspecty;\\\",\\\"warp\\\":\\\" shader_body { \\\\n  float n_1;\\\\n  vec3 ret_2;\\\\n  vec4 tmpvar_3;\\\\n  tmpvar_3 = texture (sampler_pw_main, uv);\\\\n  ret_2 = tmpvar_3.xyz;\\\\n  n_1 = (clamp ((texture (sampler_pw_main, \\\\n    (uv + texsize.zw)\\\\n  ).x * 999.0), 0.0, 1.0) + clamp ((texture (sampler_pw_main, \\\\n    (uv + (texsize.zw * vec2(1.0, 0.0)))\\\\n  ).x * 999.0), 0.0, 1.0));\\\\n  n_1 = (n_1 + clamp ((texture (sampler_pw_main, \\\\n    (uv + (texsize.zw * vec2(1.0, -1.0)))\\\\n  ).x * 999.0), 0.0, 1.0));\\\\n  n_1 = (n_1 + clamp ((texture (sampler_pw_main, \\\\n    (uv + (texsize.zw * vec2(0.0, 1.0)))\\\\n  ).x * 999.0), 0.0, 1.0));\\\\n  n_1 = (n_1 + clamp ((texture (sampler_pw_main, \\\\n    (uv + (texsize.zw * vec2(0.0, -1.0)))\\\\n  ).x * 999.0), 0.0, 1.0));\\\\n  n_1 = (n_1 + clamp ((texture (sampler_pw_main, \\\\n    (uv + (texsize.zw * vec2(-1.0, 1.0)))\\\\n  ).x * 999.0), 0.0, 1.0));\\\\n  n_1 = (n_1 + clamp ((texture (sampler_pw_main, \\\\n    (uv + (texsize.zw * vec2(-1.0, 0.0)))\\\\n  ).x * 999.0), 0.0, 1.0));\\\\n  n_1 = (n_1 + clamp ((texture (sampler_pw_main, \\\\n    (uv - texsize.zw)\\\\n  ).x * 999.0), 0.0, 1.0));\\\\n  if ((n_1 < 1.9)) {\\\\n    ret_2 = (tmpvar_3.xyz - 0.4);\\\\n  };\\\\n  if ((n_1 > 3.1)) {\\\\n    ret_2 = (ret_2 - 0.4);\\\\n  };\\\\n  bool tmpvar_4;\\\\n  if ((ret_2.x < 0.1)) {\\\\n    tmpvar_4 = (abs((n_1 - 3.0)) < 0.5);\\\\n  } else {\\\\n    tmpvar_4 = bool(0);\\\\n  };\\\\n  if (tmpvar_4) {\\\\n    ret_2 = (ret_2 + 0.4);\\\\n  };\\\\n  vec4 tmpvar_5;\\\\n  tmpvar_5.w = 1.0;\\\\n  tmpvar_5.xyz = ret_2;\\\\n  ret = tmpvar_5.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec3 ret2_1;\\\\n  vec3 ret_2;\\\\n  vec2 tmpvar_3;\\\\n  tmpvar_3 = (texsize.zw * 8.0);\\\\n  vec2 tmpvar_4;\\\\n  tmpvar_4.x = (((texture (sampler_blur1, \\\\n    (uv + (vec2(1.0, 0.0) * tmpvar_3))\\\\n  ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n    (uv - (vec2(1.0, 0.0) * tmpvar_3))\\\\n  ).xyz * scale1) + bias1)).y;\\\\n  tmpvar_4.y = (((texture (sampler_blur1, \\\\n    (uv + (vec2(0.0, 1.0) * tmpvar_3))\\\\n  ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n    (uv - (vec2(0.0, 1.0) * tmpvar_3))\\\\n  ).xyz * scale1) + bias1)).y;\\\\n  vec2 tmpvar_5;\\\\n  tmpvar_5 = (uv + (tmpvar_4 * 0.55));\\\\n  vec4 tmpvar_6;\\\\n  tmpvar_6 = texture (sampler_blur3, uv);\\\\n  ret_2 = (vec3((0.25 * dot (\\\\n    clamp ((2.0 * ((tmpvar_6.xyz * scale3) + bias3)), 0.0, 1.0)\\\\n  , vec3(0.32, 0.49, 0.29)))) - (0.8 * dot (\\\\n    clamp (((20.0 * (\\\\n      (0.6 * ((texture (sampler_blur2, uv).xyz * scale2) + bias2))\\\\n     - 0.01)) - 2.0), 0.0, 1.0)\\\\n  , vec3(0.32, 0.49, 0.29))));\\\\n  vec4 tmpvar_7;\\\\n  tmpvar_7 = texture (sampler_blur1, uv);\\\\n  ret_2 = (ret_2 + dot (clamp (\\\\n    ((30.0 * ((texture (sampler_main, uv).xyz + \\\\n      (((tmpvar_7.xyz * scale1) + bias1) * 0.15)\\\\n    ) - 0.01)) - 2.0)\\\\n  , 0.0, 1.0), vec3(0.32, 0.49, 0.29)));\\\\n  ret_2 = (ret_2 + 1.0);\\\\n  vec3 tmpvar_8;\\\\n  tmpvar_8 = mix (ret_2, (ret_2 * (\\\\n    ((texture (sampler_blur3, tmpvar_5).xyz * scale3) + bias3)\\\\n   - \\\\n    ((texture (sampler_blur1, tmpvar_5).xyz * scale1) + bias1)\\\\n  )), pow (hue_shader, ret_2));\\\\n  ret2_1 = (vec3((-0.5 * dot (\\\\n    ((texture (sampler_blur3, tmpvar_5).xyz * scale3) + bias3)\\\\n  , vec3(0.32, 0.49, 0.29)))) + (0.8 * (\\\\n    (texture (sampler_blur1, tmpvar_5).xyz * scale1)\\\\n   + bias1)));\\\\n  ret2_1 = (ret2_1 - (0.9 * texture (sampler_main, tmpvar_5).xyz));\\\\n  ret2_1 = (ret2_1 - 1.5);\\\\n  vec3 tmpvar_9;\\\\n  tmpvar_9 = mix (ret2_1, (ret2_1 * (\\\\n    ((tmpvar_6.xyz * scale3) + bias3)\\\\n   - \\\\n    ((tmpvar_7.xyz * scale1) + bias1)\\\\n  )), pow (hue_shader.zxy, tmpvar_8));\\\\n  ret2_1 = tmpvar_9;\\\\n  vec3 tmpvar_10;\\\\n  tmpvar_10 = abs((tmpvar_8 - tmpvar_9));\\\\n  ret_2 = (tmpvar_10 * tmpvar_10);\\\\n  ret_2 = (ret_2 * 1.15);\\\\n  vec4 tmpvar_11;\\\\n  tmpvar_11.w = 1.0;\\\\n  tmpvar_11.xyz = ret_2;\\\\n  ret = tmpvar_11.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/flexi - bouncing balls [double mindblob neon mix].json\":\n/*!**********************************************************************************!*\\\n  !*** ./presets/converted/flexi - bouncing balls [double mindblob neon mix].json ***!\n  \\**********************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1,\\\"decay\\\":0.995,\\\"echo_zoom\\\":1.007,\\\"echo_orient\\\":3,\\\"additivewave\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"wave_a\\\":1.413,\\\"wave_scale\\\":0.418,\\\"wave_smoothing\\\":0,\\\"wave_mystery\\\":-0.66,\\\"modwavealphastart\\\":2,\\\"modwavealphaend\\\":2,\\\"warpanimspeed\\\":0.626,\\\"warpscale\\\":8.642,\\\"zoomexp\\\":7.10084,\\\"zoom\\\":0.99951,\\\"warp\\\":0.09014,\\\"wave_r\\\":0,\\\"wave_g\\\":0,\\\"wave_x\\\":0.24,\\\"wave_y\\\":0.44,\\\"ob_size\\\":0,\\\"ob_a\\\":1,\\\"ib_size\\\":0.26,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":48,\\\"additive\\\":1,\\\"rad\\\":0.0277,\\\"ang\\\":6.03186,\\\"tex_ang\\\":6.03186,\\\"tex_zoom\\\":0.6839,\\\"r\\\":0,\\\"g\\\":1,\\\"a2\\\":1,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = q3;\\\\ny = q4;\\\\nrad = q5;\\\\n\\\\n\\\\nx = 0.5 + (x-0.5)/q2;\\\\ny = 0.5 + (y-0.5)/q1;\\\\n\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":48,\\\"additive\\\":1,\\\"rad\\\":0.0277,\\\"ang\\\":6.03186,\\\"tex_ang\\\":6.03186,\\\"tex_zoom\\\":0.6839,\\\"r\\\":0,\\\"b\\\":1,\\\"g2\\\":0,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = q6;\\\\ny = q7;\\\\nrad = q8;\\\\n\\\\nx = 0.5 + (x-0.5)/q2;\\\\ny = 0.5 + (y-0.5)/q1;\\\\n\\\"},{\\\"baseVals\\\":{\\\"sides\\\":48,\\\"rad\\\":0.0277,\\\"ang\\\":6.03186,\\\"tex_ang\\\":6.03186,\\\"tex_zoom\\\":0.6839,\\\"r\\\":0,\\\"g\\\":1,\\\"a2\\\":1,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = q9;\\\\ny = q10;\\\\nrad = q11;\\\\n\\\\nx = 0.5 + (x-0.5)/q2;\\\\ny = 0.5 + (y-0.5)/q1;\\\\n\\\"},{\\\"baseVals\\\":{\\\"sides\\\":48,\\\"additive\\\":1,\\\"thickoutline\\\":1,\\\"rad\\\":0.0277,\\\"ang\\\":6.03186,\\\"tex_ang\\\":6.03186,\\\"tex_zoom\\\":0.6839,\\\"r\\\":0,\\\"g\\\":1,\\\"a\\\":0,\\\"border_a\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = q12;\\\\ny = q13;\\\\nrad = q14;\\\\n\\\\nx = 0.5 + (x-0.5)/q2;\\\\ny = 0.5 + (y-0.5)/q1;\\\\n\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":2.0231,\\\"smoothing\\\":0,\\\"g\\\":0,\\\"b\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\ncl = 0;\\\",\\\"frame_eqs_eel\\\":\\\"vol = bass*8 + mid*5 + treb*3;\\\\nm = m*0.97 + vol*0.08;\\\\nmonitor = vol;\\\\nbeat = above(vol,res)*above(vol,m)*above(vol,16);\\\\ndiff = (1-beat)*diff + beat*(vol-res);\\\\nres = beat*(vol + m*0.04) + (1-beat)*(res -  (0.1+diff*0.02)*60/fps);\\\\nres = max(0,res);\\\\n\\\\na = beat;\\\",\\\"point_eqs_eel\\\":\\\"tt3 = tt3*0.6 + (value1)*1;\\\\ntt2 = tt2*0.7 + tt3*0.2;\\\\ntt1 = tt1*0.8 + tt2*0.1;\\\\nd = d*0.9 + tt1*0.2;\\\\n\\\\ny = 0.5 + d*sample*(1-sample)*2;\\\\nx =  -0.05 + sample*1.1;\\\"},{\\\"baseVals\\\":{\\\"spectrum\\\":1,\\\"g\\\":0,\\\"b\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"chance = 0;\\\",\\\"frame_eqs_eel\\\":\\\"x = if(q9,q15,x);\\\\ny = if(q9,q16,y);\\\\nv = if(q9,q19,v);\\\\nw = if(q9,q20,w);\\\\n\\\\nref_w = if(q9, q10, ref_w);\\\\n\\\\nt1 = x;\\\\nt2 = y;\\\\nt3 = v;\\\\nt4 = w;\\\\nt5 = ref_w;\\\\n\\\\nt8 = 1;\\\",\\\"point_eqs_eel\\\":\\\"x = t1 + sample*sin(t4)*t3*20;\\\\ny = t2 + sample*cos(t4)*t3*20;\\\\n\\\\nx = 0.5 + (x-0.5)/q1;\\\\ny = 0.5 + (y-0.5)/q2;\\\"},{\\\"baseVals\\\":{\\\"spectrum\\\":1,\\\"g\\\":0,\\\"b\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"chance = 0;\\\",\\\"frame_eqs_eel\\\":\\\"x = if(q9,q15,x);\\\\ny = if(q9,q16,y);\\\\nv = if(q9,q19,v);\\\\nw = if(q9,q20,w);\\\\n\\\\nref_w = if(q9, q10, ref_w);\\\\n\\\\nt1 = x;\\\\nt2 = y;\\\\nt3 = v;\\\\nt4 = w;\\\\nt5 = ref_w;\\\\n\\\\nt8 = 1;\\\",\\\"point_eqs_eel\\\":\\\"x = t1 + sample*sin(t5)*t3*20*cos(t4-t5);\\\\ny = t2 + sample*cos(t5)*t3*20*cos(t4-t5);\\\\n\\\\nx = 0.5 + (x-0.5)/q1;\\\\ny = 0.5 + (y-0.5)/q2;\\\"},{\\\"baseVals\\\":{\\\"spectrum\\\":1,\\\"g\\\":0,\\\"b\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"chance = 0;\\\",\\\"frame_eqs_eel\\\":\\\"x = if(q9,q15,x);\\\\ny = if(q9,q16,y);\\\\nv = if(q9,q19,v);\\\\nw = if(q9,q20,w);\\\\n\\\\nref_w = if(q9, q10 + asin(1), ref_w);\\\\n\\\\nt1 = x;\\\\nt2 = y;\\\\nt3 = v;\\\\nt4 = w;\\\\nt5 = ref_w;\\\\n\\\\nt8 = 1;\\\",\\\"point_eqs_eel\\\":\\\"x = t1 + sample*sin(t5)*t3*20*cos(t4-t5);\\\\ny = t2 + sample*cos(t5)*t3*20*cos(t4-t5);\\\\n\\\\nx = 0.5 + (x-0.5)/q1;\\\\ny = 0.5 + (y-0.5)/q2;\\\"}],\\\"init_eqs_eel\\\":\\\"x1 = 0.5;\\\\nx2 = 0.51;\\\\n\\\\ny2 = 0.9;\\\\ny1 = 0.7;\\\\n\\\\nx3 = 0.8;\\\\ny3 = 0.5;\\\\n\\\\nx4 = 0.2;\\\\ny4 = 0.5;\\\\n\\\\n\\\\nax1 = 0;\\\\nay1 = 0;\\\\nax2 = 0;\\\\nay2 = 0;\\\\nax3 = 0;\\\\nay3 = 0;\\\\n\\\\nvx1 = 0.000;\\\\nvx2 = 0.000;\\\",\\\"frame_eqs_eel\\\":\\\"zoom = 1.002;\\\\nwarp = 0.2;\\\\nwave_a = 0;\\\\n//pogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogo\\\\nr = 0.04+ max(bass_att,treb_att)*0.008;\\\\nbounce = below(y1,r);y1 = y1+vy1;vy1 = if(bounce, abs(vy1)*0.94 + (r-y1)*0.1, vy1-0.0003*60/fps);\\\\nbounce = below(x1,r);x1 = x1+vx1;vx1 = if(bounce, abs(vx1)*0.94 + (r-x1)*0.1, vx1);\\\\nbounce = above(x1,1-r);vx1 = if(bounce, - abs(vx1)*0.94 + (1-r-x1)*0.04, vx1);\\\\nbounce = below(y2,r);y2 = y2 + vy2;vy2 = if(bounce,abs(vy2)*0.94+(r-y2)*.1, vy2-0.0003*60/fps);\\\\nbounce = below(x2,r);x2 = x2+ vx2;vx2 = if(bounce, abs(vx2)*0.94 + (r-x2)*0.1, vx2);\\\\nbounce = above(x2,1-r);vx2 = if(bounce, - abs(vx2)*0.94 + (1-r-x2)*0.1, vx2);\\\\nbounce = below(y3,r);y3 = y3 + vy3;vy3 = if(bounce,abs(vy3)*0.94+(r-y3)*.1, vy3-0.0003*60/fps);\\\\nbounce = below(x3,r);x3 = x3+ vx3;vx3 = if(bounce, abs(vx3)*0.94 + (r-x3)*0.1, vx3);\\\\nbounce = above(x3,1-r);vx3 = if(bounce, - abs(vx3)*0.94 + (1-r-x3)*0.1, vx3);\\\\nbounce = below(y4,r);y4 = y4 + vy4;vy4 = if(bounce,abs(vy4)*0.94+(r-y4)*.1, vy4-0.0003*60/fps);\\\\nbounce = below(x4,r);x4 = x4+ vx4;vx4 = if(bounce, abs(vx4)*0.94 + (r-x4)*0.1, vx4);\\\\nbounce = above(x4,1-r);vx4 = if(bounce, - abs(vx4)*0.94 + (1-r-x4)*0.1, vx4);\\\\nbounce = below( sqrt( sqr(x1+vx1-x2-vx2) + sqr(y1+vy1-y2-vy2)), 2*r);\\\\nref_ang = atan2(x2-x1,y2-y1)+asin(1); // common tangent\\\\nv1 = sqrt(vx1*vx1+vy1*vy1);v2 = sqrt(vx2*vx2+vy2*vy2);w1 = atan2(vx1,vy1);w2 = atan2(vx2,vy2);\\\\nvx1 = if(bounce,sin(ref_ang)*v1*cos(w1-ref_ang) + sin(ref_ang+asin(1))*v2*cos(w2-ref_ang-asin(1)), vx1);\\\\nvy1 = if(bounce,cos(ref_ang)*v1*cos(w1-ref_ang) + cos(ref_ang+asin(1))*v2*cos(w2-ref_ang-asin(1)), vy1);\\\\nvx2 = if(bounce,sin(ref_ang)*v2*cos(w2-ref_ang) + sin(ref_ang+asin(1))*v1*cos(w1-ref_ang-asin(1)), vx2);\\\\nvy2 = if(bounce,cos(ref_ang)*v2*cos(w2-ref_ang) + cos(ref_ang+asin(1))*v1*cos(w1-ref_ang-asin(1)), vy2);\\\\nbounce = below( sqrt( sqr(x1+vx1-x3-vx3) + sqr(y1+vy1-y3-vy3)), 2*r);\\\\nref_ang = atan2(x3-x1,y3-y1)+asin(1); // common tangent\\\\nv1 = sqrt(vx1*vx1+vy1*vy1);v2 = sqrt(vx3*vx3+vy3*vy3);w1 = atan2(vx1,vy1);w2 = atan2(vx3,vy3);\\\\nvx1 = if(bounce,sin(ref_ang)*v1*cos(w1-ref_ang) + sin(ref_ang+asin(1))*v2*cos(w2-ref_ang-asin(1)), vx1);\\\\nvy1 = if(bounce,cos(ref_ang)*v1*cos(w1-ref_ang) + cos(ref_ang+asin(1))*v2*cos(w2-ref_ang-asin(1)), vy1);\\\\nvx3 = if(bounce,sin(ref_ang)*v2*cos(w2-ref_ang) + sin(ref_ang+asin(1))*v1*cos(w1-ref_ang-asin(1)), vx3);\\\\nvy3 = if(bounce,cos(ref_ang)*v2*cos(w2-ref_ang) + cos(ref_ang+asin(1))*v1*cos(w1-ref_ang-asin(1)), vy3);\\\\nbounce = below( sqrt( sqr(x2+vx2-x3-vx3) + sqr(y2+vy2-y3-vy3)), 2*r);\\\\nref_ang = atan2(x3-x2,y3-y2)+asin(1); // common tangent\\\\nv1 = sqrt(vx2*vx2+vy2*vy2);v2 = sqrt(vx3*vx3+vy3*vy3);w1 = atan2(vx2,vy2);w2 = atan2(vx3,vy3);\\\\nvx2 = if(bounce,sin(ref_ang)*v1*cos(w1-ref_ang) + sin(ref_ang+asin(1))*v2*cos(w2-ref_ang-asin(1)), vx2);\\\\nvy2 = if(bounce,cos(ref_ang)*v1*cos(w1-ref_ang) + cos(ref_ang+asin(1))*v2*cos(w2-ref_ang-asin(1)), vy2);\\\\nvx3 = if(bounce,sin(ref_ang)*v2*cos(w2-ref_ang) + sin(ref_ang+asin(1))*v1*cos(w1-ref_ang-asin(1)), vx3);\\\\nvy3 = if(bounce,cos(ref_ang)*v2*cos(w2-ref_ang) + cos(ref_ang+asin(1))*v1*cos(w1-ref_ang-asin(1)), vy3);\\\\nbounce = below( sqrt( sqr(x1+vx1-x4-vx4) + sqr(y1+vy1-y4-vy4)), 2*r);\\\\nref_ang = atan2(x4-x1,y4-y1)+asin(1); // common tangent\\\\nv1 = sqrt(vx1*vx1+vy1*vy1);v2 = sqrt(vx4*vx4+vy4*vy4);w1 = atan2(vx1,vy1);w2 = atan2(vx4,vy4);\\\\nvx1 = if(bounce,sin(ref_ang)*v1*cos(w1-ref_ang) + sin(ref_ang+asin(1))*v2*cos(w2-ref_ang-asin(1)), vx1);\\\\nvy1 = if(bounce,cos(ref_ang)*v1*cos(w1-ref_ang) + cos(ref_ang+asin(1))*v2*cos(w2-ref_ang-asin(1)), vy1);\\\\nvx4 = if(bounce,sin(ref_ang)*v2*cos(w2-ref_ang) + sin(ref_ang+asin(1))*v1*cos(w1-ref_ang-asin(1)), vx4);\\\\nvy4 = if(bounce,cos(ref_ang)*v2*cos(w2-ref_ang) + cos(ref_ang+asin(1))*v1*cos(w1-ref_ang-asin(1)), vy4);\\\\nbounce = below( sqrt( sqr(x2+vx2-x4-vx4) + sqr(y2+vy2-y4-vy4)), 2*r);\\\\nref_ang = atan2(x4-x2,y4-y2)+asin(1); // common tangent\\\\nv1 = sqrt(vx2*vx2+vy2*vy2);v2 = sqrt(vx4*vx4+vy4*vy4);w1 = atan2(vx2,vy2);w2 = atan2(vx4,vy4);\\\\nvx2 = if(bounce,sin(ref_ang)*v1*cos(w1-ref_ang) + sin(ref_ang+asin(1))*v2*cos(w2-ref_ang-asin(1)), vx2);\\\\nvy2 = if(bounce,cos(ref_ang)*v1*cos(w1-ref_ang) + cos(ref_ang+asin(1))*v2*cos(w2-ref_ang-asin(1)), vy2);\\\\nvx4 = if(bounce,sin(ref_ang)*v2*cos(w2-ref_ang) + sin(ref_ang+asin(1))*v1*cos(w1-ref_ang-asin(1)), vx4);\\\\nvy4 = if(bounce,cos(ref_ang)*v2*cos(w2-ref_ang) + cos(ref_ang+asin(1))*v1*cos(w1-ref_ang-asin(1)), vy4);\\\\nbounce = below( sqrt( sqr(x3+vx3-x4-vx4) + sqr(y3+vy3-y4-vy4)), 2*r);\\\\nref_ang = atan2(x4-x3,y4-y3)+asin(1); // common tangent\\\\nv1 = sqrt(vx3*vx3+vy3*vy3);v2 = sqrt(vx4*vx4+vy4*vy4);w1 = atan2(vx3,vy3);w2 = atan2(vx4,vy4);\\\\nvx3 = if(bounce,sin(ref_ang)*v1*cos(w1-ref_ang) + sin(ref_ang+asin(1))*v2*cos(w2-ref_ang-asin(1)), vx3);\\\\nvy3 = if(bounce,cos(ref_ang)*v1*cos(w1-ref_ang) + cos(ref_ang+asin(1))*v2*cos(w2-ref_ang-asin(1)), vy3);\\\\nvx4 = if(bounce,sin(ref_ang)*v2*cos(w2-ref_ang) + sin(ref_ang+asin(1))*v1*cos(w1-ref_ang-asin(1)), vx4);\\\\nvy4 = if(bounce,cos(ref_ang)*v2*cos(w2-ref_ang) + cos(ref_ang+asin(1))*v1*cos(w1-ref_ang-asin(1)), vy4);\\\\n//pogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogo\\\\nq1 = aspectx;\\\\nq2 = aspecty;\\\\nq3 = x1;\\\\nq4 = y1;\\\\nq5 = r*2;\\\\nq6 = x2;\\\\nq7 = y2;\\\\nq8 = r*2;\\\\nq9 = x3;\\\\nq10 = y3;\\\\nq11 = r*2;\\\\nq12 = x4;\\\\nq13 = y4;\\\\nq14 = r*2;\\\\nq15 = atan2(vx4,vy4);\\\\nq16 = sqrt(vx4*vx4+vy4*vy4);\\\\nq17 = atan2(vx3,vy3);\\\\nq18 = sqrt(vx3*vx3+vy3*vy3);\\\",\\\"pixel_eqs_eel\\\":\\\"x = 0.5 + (x-0.5)*q2;\\\\ny = 0.5 + (y-0.5)*q1;\\\\n\\\\n\\\\ndir = -q15 + asin(1);\\\\nb1 = 0.075;\\\\nm1 = q16*25;\\\\nxx = q12;\\\\nyy = 1-q13;\\\\nx1 = xx  -sin(dir)*b1;\\\\ny1 = yy  -cos(dir)*b1;\\\\nx2 = xx  +sin(dir)*b1;\\\\ny2 = yy  +cos(dir)*b1;\\\\nd1 = sqrt((x1-x)*(x1-x)+(y1-y)*(y1-y))-b1*2;\\\\nd2 = sqrt((x2-x)*(x2-x)+(y2-y)*(y2-y))-b1*2;\\\\nsi1 = sigmoid(-d1,1000);\\\\nsi2 = sigmoid(-d2,1000);\\\\ndx = (si1*sin(y1-y)*m1*d1  - si2*sin(y2-y)*m1*d2)*3*q1;\\\\ndy = (-si1*sin(x1-x)*m1*d1 + si2*sin(x2-x)*m1*d2)*3*q2;\\\\n\\\\ndir = -q17 + asin(1);\\\\nm1 = q18*25;\\\\nxx = q9;\\\\nyy = 1-q10;\\\\nx1 = xx  -sin(dir)*b1;\\\\ny1 = yy  -cos(dir)*b1;\\\\nx2 = xx  +sin(dir)*b1;\\\\ny2 = yy  +cos(dir)*b1;\\\\nd1 = sqrt((x1-x)*(x1-x)+(y1-y)*(y1-y))-b1*2;\\\\nd2 = sqrt((x2-x)*(x2-x)+(y2-y)*(y2-y))-b1*2;\\\\nsi1 = sigmoid(-d1,1000);\\\\nsi2 = sigmoid(-d2,1000);\\\\ndx = dx + (si1*sin(y1-y)*m1*d1  - si2*sin(y2-y)*m1*d2)*3*q1;\\\\ndy = dy + (-si1*sin(x1-x)*m1*d1 + si2*sin(x2-x)*m1*d2)*3*q2;\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec3 ret_1;\\\\n  vec2 tmpvar_2;\\\\n  tmpvar_2 = (texsize.zw * 8.0);\\\\n  vec3 tmpvar_3;\\\\n  tmpvar_3 = (((texture (sampler_blur1, \\\\n    (uv + (vec2(1.0, 0.0) * tmpvar_2))\\\\n  ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n    (uv - (vec2(1.0, 0.0) * tmpvar_2))\\\\n  ).xyz * scale1) + bias1));\\\\n  vec3 tmpvar_4;\\\\n  tmpvar_4 = (((texture (sampler_blur1, \\\\n    (uv + (vec2(0.0, 1.0) * tmpvar_2))\\\\n  ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n    (uv - (vec2(0.0, 1.0) * tmpvar_2))\\\\n  ).xyz * scale1) + bias1));\\\\n  vec2 tmpvar_5;\\\\n  tmpvar_5.x = tmpvar_3.z;\\\\n  tmpvar_5.y = tmpvar_4.z;\\\\n  vec2 tmpvar_6;\\\\n  tmpvar_6 = (uv + ((tmpvar_5 * texsize.zw) * 4.0));\\\\n  ret_1.z = (((texture (sampler_main, tmpvar_6).z - \\\\n    ((texture (sampler_main, tmpvar_6).z - ((texture (sampler_blur3, tmpvar_6).xyz * scale3) + bias3).z) * 0.02)\\\\n  ) - 0.008) + ((texture (sampler_noise_lq, \\\\n    (((uv_orig * texsize.xy) * texsize_noise_lq.zw) + rand_frame.xy)\\\\n  ).xyz - 0.5) * 0.1)).x;\\\\n  vec2 tmpvar_7;\\\\n  tmpvar_7.x = tmpvar_3.x;\\\\n  tmpvar_7.y = tmpvar_4.x;\\\\n  vec2 tmpvar_8;\\\\n  tmpvar_8 = ((0.5 + (uv - 0.5)) - (tmpvar_7 * texsize.zw));\\\\n  ret_1.x = texture (sampler_main, tmpvar_8).x;\\\\n  ret_1.x = (ret_1.x + ((\\\\n    (ret_1.x - ((texture (sampler_blur3, tmpvar_8).xyz * scale3) + bias3))\\\\n  .x * 0.4) + 0.006));\\\\n  vec2 tmpvar_9;\\\\n  tmpvar_9.x = tmpvar_3.x;\\\\n  tmpvar_9.y = tmpvar_4.x;\\\\n  vec2 tmpvar_10;\\\\n  tmpvar_10.x = tmpvar_3.y;\\\\n  tmpvar_10.y = tmpvar_4.y;\\\\n  vec2 tmpvar_11;\\\\n  tmpvar_11.x = tmpvar_3.z;\\\\n  tmpvar_11.y = tmpvar_4.z;\\\\n  ret_1.y = texture (sampler_fc_main, (((uv - \\\\n    ((tmpvar_9 * texsize.zw) * 8.0)\\\\n  ) + (\\\\n    (tmpvar_10 * texsize.zw)\\\\n   * 4.0)) + ((tmpvar_11 * texsize.zw) * 8.0))).y;\\\\n  ret_1.y = (ret_1.y * (1.0 + (ret_1.x * 0.1)));\\\\n  ret_1.y = (ret_1.y - (0.004 + (\\\\n    clamp (ret_1.z, 0.0, 1.0)\\\\n   * 0.04)));\\\\n  vec4 tmpvar_12;\\\\n  tmpvar_12.w = 1.0;\\\\n  tmpvar_12.xyz = ret_1;\\\\n  ret = tmpvar_12.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec3 ret_1;\\\\n  vec2 tmpvar_2;\\\\n  tmpvar_2 = (texsize.zw * 4.0);\\\\n  vec3 tmpvar_3;\\\\n  tmpvar_3 = (((texture (sampler_blur1, \\\\n    (uv + (vec2(1.0, 0.0) * tmpvar_2))\\\\n  ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n    (uv - (vec2(1.0, 0.0) * tmpvar_2))\\\\n  ).xyz * scale1) + bias1));\\\\n  vec3 tmpvar_4;\\\\n  tmpvar_4 = (((texture (sampler_blur1, \\\\n    (uv + (vec2(0.0, 1.0) * tmpvar_2))\\\\n  ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n    (uv - (vec2(0.0, 1.0) * tmpvar_2))\\\\n  ).xyz * scale1) + bias1));\\\\n  vec2 tmpvar_5;\\\\n  tmpvar_5.x = tmpvar_3.z;\\\\n  tmpvar_5.y = tmpvar_4.z;\\\\n  vec2 tmpvar_6;\\\\n  tmpvar_6.x = tmpvar_3.y;\\\\n  tmpvar_6.y = tmpvar_4.y;\\\\n  vec2 tmpvar_7;\\\\n  tmpvar_7 = ((uv - (tmpvar_5 * 0.1)) + (tmpvar_6 * 0.06));\\\\n  vec4 tmpvar_8;\\\\n  tmpvar_8 = texture (sampler_main, uv);\\\\n  ret_1 = (((\\\\n    ((texture (sampler_blur2, tmpvar_7).xyz * scale2) + bias2)\\\\n  .x * \\\\n    clamp ((1.0 - tmpvar_8.z), 0.0, 1.0)\\\\n  ) * pow (hue_shader.yxz, vec3(8.0, 8.0, 8.0))) * 3.0);\\\\n  ret_1 = (mix (ret_1, (\\\\n    pow (hue_shader.yzx, vec3(8.0, 8.0, 8.0))\\\\n   * 1.4), vec3((\\\\n    (texture (sampler_main, tmpvar_7).x * 0.8)\\\\n   + \\\\n    ((texture (sampler_blur1, tmpvar_7).xyz * scale1) + bias1)\\\\n  .x))) * clamp ((1.0 - \\\\n    (((texture (sampler_blur1, uv).xyz * scale1) + bias1).y * 4.0)\\\\n  ), 0.0, 1.0));\\\\n  vec2 tmpvar_9;\\\\n  tmpvar_9.x = tmpvar_3.y;\\\\n  tmpvar_9.y = tmpvar_4.y;\\\\n  vec3 tmpvar_10;\\\\n  vec3 tmpvar_11;\\\\n  tmpvar_11 = pow (hue_shader, vec3(8.0, 8.0, 8.0));\\\\n  tmpvar_10 = mix (mix (ret_1, vec3(1.0, 1.0, 1.0), (\\\\n    (tmpvar_11 * texture (sampler_main, clamp ((uv - (tmpvar_9 * 2.0)), 0.0, 1.0)).z)\\\\n   * 1.2)), (tmpvar_11.zxy * 1.8), tmpvar_8.yyy);\\\\n  ret_1 = tmpvar_10;\\\\n  vec4 tmpvar_12;\\\\n  tmpvar_12.w = 1.0;\\\\n  tmpvar_12.xyz = tmpvar_10;\\\\n  ret = tmpvar_12.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/flexi - mom, why the sky looks different today.json\":\n/*!*******************************************************************************!*\\\n  !*** ./presets/converted/flexi - mom, why the sky looks different today.json ***!\n  \\*******************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1,\\\"decay\\\":1,\\\"echo_zoom\\\":1,\\\"echo_alpha\\\":0.5,\\\"wave_thick\\\":1,\\\"wave_brighten\\\":0,\\\"wave_a\\\":0.004,\\\"wave_scale\\\":0.267,\\\"wave_smoothing\\\":0,\\\"wave_mystery\\\":-0.44,\\\"modwavealphastart\\\":1,\\\"modwavealphaend\\\":1,\\\"warpscale\\\":16.016,\\\"zoomexp\\\":11.56276,\\\"zoom\\\":1.05971,\\\"warp\\\":0.13126,\\\"wave_y\\\":0.04,\\\"ob_size\\\":0,\\\"ob_a\\\":1,\\\"ib_size\\\":0,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0,\\\"mv_b\\\":0,\\\"mv_a\\\":0,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"thickoutline\\\":1,\\\"rad\\\":0.01,\\\"tex_ang\\\":0.12566,\\\"tex_zoom\\\":1.51878,\\\"g\\\":0.99,\\\"b\\\":1,\\\"a\\\":0.1,\\\"g2\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"rad\\\":0.80013,\\\"ang\\\":4.64954,\\\"tex_zoom\\\":1.24471,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":0.77,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thickoutline\\\":1,\\\"x\\\":1,\\\"rad\\\":3.0054,\\\"tex_ang\\\":0.12566,\\\"tex_zoom\\\":1.51878,\\\"r\\\":0,\\\"g\\\":1,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thickoutline\\\":1,\\\"x\\\":1,\\\"rad\\\":0.39872,\\\"tex_ang\\\":0.12566,\\\"tex_zoom\\\":1.51878,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"scaling\\\":2.0231,\\\"smoothing\\\":0,\\\"r\\\":0,\\\"g\\\":0,\\\"b\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\ncl = 0;\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"tt3 = tt3*0.6 + (value1)*1;\\\\ntt2 = tt2*0.7 + tt3*0.2;\\\\ntt1 = tt1*0.8 + tt2*0.1;\\\\nd = d*0.9 + tt1*0.2;\\\\n\\\\ny = 0.5 + d*sample*(1-sample)*4;\\\\nx =  -0.05 + sample*1.1;\\\"},{\\\"baseVals\\\":{\\\"scaling\\\":2.0231,\\\"smoothing\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\ncl = 0;\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"tt3 = tt3*0.6 + (value1)*1;\\\\ntt2 = tt2*0.7 + tt3*0.2;\\\\ntt1 = tt1*0.8 + tt2*0.1;\\\\nd = d*0.9 + tt1*0.2;\\\\n\\\\ny = 0.5 + d*sample*(1-sample)*4;\\\\nx =  -0.05 + sample*1.1;\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":100,\\\"smoothing\\\":0.6,\\\"r\\\":0,\\\"g\\\":0.4,\\\"a\\\":0.3,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"t1 = q1;\\\\nt2 = q2;\\\\nt3 = q3;\\\\nt4 = q4;\\\\nt5 = q5;\\\\nt6 = q6;\\\\nt7 = q7;\\\\nt8 = q8;\\\",\\\"point_eqs_eel\\\":\\\"sample = 1-sample;\\\\nxxx = xx;\\\\nyyy = yy;\\\\nxx = pow(sample,5)*t1 + 5*pow(sample,4)*(1-sample)*t1 + 10*pow(sample,3)*sqr(1-sample)*t2\\\\n+ 10*sqr(sample)*pow(1-sample,3)*t3 + 5*pow(1-sample,4)*sample*t4 + pow(1-sample,5)*t4;\\\\n\\\\nyy = pow(sample,5)*t5 + 5*pow(sample,4)*(1-sample)*t5 + 10*pow(sample,3)*sqr(1-sample)*t6\\\\n+ 10*sqr(sample)*pow(1-sample,3)*t7 + 5*pow(1-sample,4)*sample*t8 + pow(1-sample,5)*t8;\\\\nd = 1/sqrt(sqr(xx-xxx)+sqr(yy-yyy));\\\\nx = xx + sample*(1-sample)*(value1-value2)*(yy-yyy)*d;\\\\ny = yy - sample*(1-sample)*(value1-value2)*(xx-xxx)*d;\\\"},{\\\"baseVals\\\":{\\\"usedots\\\":1,\\\"scaling\\\":2.44415,\\\"smoothing\\\":0,\\\"r\\\":0,\\\"g\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\ncl = 0;\\\",\\\"frame_eqs_eel\\\":\\\"t8 = 1;\\\",\\\"point_eqs_eel\\\":\\\"t8 = -t8;\\\\ny = (1+t8)*0.01;\\\\nx = sample;\\\"}],\\\"init_eqs_eel\\\":\\\"q11 = 0.5/asin(1);\\\",\\\"frame_eqs_eel\\\":\\\"zoom = 1;\\\\nv = v*0.9 + (bass-treb)*0.04;\\\\nt = t+ v*0.01;\\\\nq12 = time*0.1 + t;\\\\nq13 = 0.25 + (bass_att-treb_att)*0.01;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec2 my_uv_1;\\\\n  vec2 d_2;\\\\n  vec3 ret_3;\\\\n  vec2 tmpvar_4;\\\\n  tmpvar_4 = (texsize.zw * 4.0);\\\\n  vec3 tmpvar_5;\\\\n  tmpvar_5 = (((texture (sampler_blur1, \\\\n    fract((uv + (vec2(1.0, 0.0) * tmpvar_4)))\\\\n  ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n    fract((uv - (vec2(1.0, 0.0) * tmpvar_4)))\\\\n  ).xyz * scale1) + bias1));\\\\n  vec3 tmpvar_6;\\\\n  tmpvar_6 = (((texture (sampler_blur1, \\\\n    fract((uv + (vec2(0.0, 1.0) * tmpvar_4)))\\\\n  ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n    fract((uv - (vec2(0.0, 1.0) * tmpvar_4)))\\\\n  ).xyz * scale1) + bias1));\\\\n  vec3 tmpvar_7;\\\\n  tmpvar_7 = ((texture (sampler_blur1, uv).xyz * scale1) + bias1);\\\\n  d_2 = -(tmpvar_4);\\\\n  float tmpvar_8;\\\\n  tmpvar_8 = (d_2 * 4.0).x;\\\\n  vec2 tmpvar_9;\\\\n  tmpvar_9.x = tmpvar_5.y;\\\\n  tmpvar_9.y = tmpvar_6.y;\\\\n  vec2 tmpvar_10;\\\\n  tmpvar_10.x = tmpvar_5.x;\\\\n  tmpvar_10.y = tmpvar_6.x;\\\\n  vec2 tmpvar_11;\\\\n  tmpvar_11 = ((uv - (tmpvar_9 * d_2)) - (tmpvar_10 * tmpvar_8));\\\\n  ret_3.y = texture (sampler_fc_main, (tmpvar_11 - floor(tmpvar_11))).y;\\\\n  ret_3.y = (ret_3.y + ((\\\\n    (ret_3.y - tmpvar_7.y)\\\\n   * 0.042) + -0.0075));\\\\n  vec2 tmpvar_12;\\\\n  tmpvar_12.x = tmpvar_5.x;\\\\n  tmpvar_12.y = tmpvar_6.x;\\\\n  vec2 tmpvar_13;\\\\n  tmpvar_13.x = tmpvar_5.z;\\\\n  tmpvar_13.y = tmpvar_6.z;\\\\n  my_uv_1 = ((uv - (tmpvar_12 * d_2)) - (tmpvar_13 * tmpvar_8));\\\\n  ret_3.x = texture (sampler_fc_main, (my_uv_1 - floor(my_uv_1))).x;\\\\n  ret_3.x = (ret_3.x + ((\\\\n    (ret_3.x - tmpvar_7.x)\\\\n   * 0.042) + -0.0075));\\\\n  vec2 tmpvar_14;\\\\n  tmpvar_14.x = tmpvar_5.z;\\\\n  tmpvar_14.y = tmpvar_6.z;\\\\n  vec2 tmpvar_15;\\\\n  tmpvar_15.x = tmpvar_5.y;\\\\n  tmpvar_15.y = tmpvar_6.y;\\\\n  my_uv_1 = ((uv - (tmpvar_14 * d_2)) - (tmpvar_15 * tmpvar_8));\\\\n  ret_3.z = texture (sampler_fc_main, (my_uv_1 - floor(my_uv_1))).z;\\\\n  ret_3.z = (ret_3.z + ((\\\\n    (ret_3.z - tmpvar_7.z)\\\\n   * 0.042) + -0.0075));\\\\n  vec4 tmpvar_16;\\\\n  tmpvar_16.w = 1.0;\\\\n  tmpvar_16.xyz = ret_3;\\\\n  ret = tmpvar_16.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec2 uv_1;\\\\n  uv_1 = uv;\\\\n  vec3 ret_2;\\\\n  float tmpvar_3;\\\\n  tmpvar_3 = -(q12);\\\\n  vec2 tmpvar_4;\\\\n  tmpvar_4 = ((uv - 0.5) * aspect.wz);\\\\n  float tmpvar_5;\\\\n  float tmpvar_6;\\\\n  tmpvar_6 = (min (abs(\\\\n    (tmpvar_4.x / tmpvar_4.y)\\\\n  ), 1.0) / max (abs(\\\\n    (tmpvar_4.x / tmpvar_4.y)\\\\n  ), 1.0));\\\\n  float tmpvar_7;\\\\n  tmpvar_7 = (tmpvar_6 * tmpvar_6);\\\\n  tmpvar_7 = (((\\\\n    ((((\\\\n      ((((-0.01213232 * tmpvar_7) + 0.05368138) * tmpvar_7) - 0.1173503)\\\\n     * tmpvar_7) + 0.1938925) * tmpvar_7) - 0.3326756)\\\\n   * tmpvar_7) + 0.9999793) * tmpvar_6);\\\\n  tmpvar_7 = (tmpvar_7 + (float(\\\\n    (abs((tmpvar_4.x / tmpvar_4.y)) > 1.0)\\\\n  ) * (\\\\n    (tmpvar_7 * -2.0)\\\\n   + 1.570796)));\\\\n  tmpvar_5 = (tmpvar_7 * sign((tmpvar_4.x / tmpvar_4.y)));\\\\n  if ((abs(tmpvar_4.y) > (1e-08 * abs(tmpvar_4.x)))) {\\\\n    if ((tmpvar_4.y < 0.0)) {\\\\n      if ((tmpvar_4.x >= 0.0)) {\\\\n        tmpvar_5 += 3.141593;\\\\n      } else {\\\\n        tmpvar_5 = (tmpvar_5 - 3.141593);\\\\n      };\\\\n    };\\\\n  } else {\\\\n    tmpvar_5 = (sign(tmpvar_4.x) * 1.570796);\\\\n  };\\\\n  vec2 tmpvar_8;\\\\n  tmpvar_8.x = ((tmpvar_5 * q11) - tmpvar_3);\\\\n  tmpvar_8.y = (((q13 * \\\\n    log(sqrt(dot (tmpvar_4, tmpvar_4)))\\\\n  ) + (tmpvar_5 * q11)) + tmpvar_3);\\\\n  uv_1 = (0.5 + (0.5 - abs(\\\\n    ((fract((tmpvar_8 * 0.5)) * 2.0) - 1.0)\\\\n  )));\\\\n  vec4 tmpvar_9;\\\\n  tmpvar_9 = texture (sampler_main, uv_1);\\\\n  ret_2 = (vec3(dot (tmpvar_9.xyz, vec3(0.32, 0.49, 0.29))) * mix (vec3(1.0, 1.0, 1.0), vec3(0.2, 0.5, 1.0), tmpvar_9.xxx));\\\\n  ret_2 = (ret_2 * 2.0);\\\\n  vec4 tmpvar_10;\\\\n  tmpvar_10.w = 1.0;\\\\n  tmpvar_10.xyz = ret_2;\\\\n  ret = tmpvar_10.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/flexi - patternton, district of media, capitol of the united abstractions of fractopia.json\":\n/*!***********************************************************************************************************************!*\\\n  !*** ./presets/converted/flexi - patternton, district of media, capitol of the united abstractions of fractopia.json ***!\n  \\***********************************************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1,\\\"decay\\\":1,\\\"echo_zoom\\\":1,\\\"echo_alpha\\\":0.5,\\\"wave_thick\\\":1,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"wave_a\\\":0.004,\\\"wave_scale\\\":0.242,\\\"wave_smoothing\\\":0,\\\"wave_mystery\\\":-0.44,\\\"modwavealphastart\\\":1,\\\"modwavealphaend\\\":1,\\\"warpanimspeed\\\":0.88,\\\"warpscale\\\":9.181,\\\"zoomexp\\\":0.65309,\\\"zoom\\\":0.87866,\\\"warp\\\":0.04914,\\\"wave_y\\\":0.04,\\\"ob_size\\\":0.05,\\\"ob_a\\\":1,\\\"ib_size\\\":0,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"ib_a\\\":1,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0,\\\"mv_b\\\":0,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"thickoutline\\\":1,\\\"y\\\":0.04,\\\"rad\\\":0.01,\\\"tex_ang\\\":0.12566,\\\"tex_zoom\\\":1.51878,\\\"r\\\":0,\\\"a\\\":0,\\\"g2\\\":0,\\\"b2\\\":0.01,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"additive\\\":1,\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"x\\\":0.49,\\\"rad\\\":1.32907,\\\"tex_zoom\\\":0.49831,\\\"g\\\":1,\\\"b\\\":1,\\\"a\\\":0.99,\\\"g2\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thickoutline\\\":1,\\\"x\\\":1,\\\"rad\\\":3.0054,\\\"tex_ang\\\":0.12566,\\\"tex_zoom\\\":1.51878,\\\"r\\\":0,\\\"g\\\":1,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thickoutline\\\":1,\\\"x\\\":1,\\\"rad\\\":0.39872,\\\"tex_ang\\\":0.12566,\\\"tex_zoom\\\":1.51878,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":2.0231,\\\"smoothing\\\":0,\\\"r\\\":0,\\\"b\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\ncl = 0;\\\",\\\"frame_eqs_eel\\\":\\\"r = 1; g = 0; b = 1;\\\",\\\"point_eqs_eel\\\":\\\"tt3 = tt3*0.6 + (value1)*1;\\\\ntt2 = tt2*0.7 + tt3*0.2;\\\\ntt1 = tt1*0.8 + tt2*0.1;\\\\nd = d*0.9 + tt1*0.2;\\\\n\\\\ny = 0.6 + d*sample*(1-sample)*2;\\\\nx =  -0.05 + sample*1.1;\\\"},{\\\"baseVals\\\":{\\\"scaling\\\":2.44415,\\\"smoothing\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\ncl = 0;\\\",\\\"frame_eqs_eel\\\":\\\"t8 = 1;\\\",\\\"point_eqs_eel\\\":\\\"t8 = -t8;\\\\ny = sample;\\\\nx = 0.5 + t8*0.005;\\\\n\\\\npi3 = 3.1415*2*0.3333;\\\\nt = time + sample*2;\\\\nc=2;\\\\n\\\\nr = sin(t)*c;\\\\ng = sin(t+pi3)*c;\\\\n\\\\nb = sin(t-pi3)*c;\\\\n\\\\n\\\\nr = if(above(r,1),1,r);\\\\nr = if(below(r,0),0,r);\\\\ng = if(above(g,1),1,g);\\\\ng = if(below(g,0),0,g);\\\\nb = if(above(b,1),1,b);\\\\nb = if(below(b,0),0,b);\\\\n\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":100,\\\"smoothing\\\":0.6,\\\"r\\\":0,\\\"g\\\":0.4,\\\"a\\\":0.3,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"t1 = q1;\\\\nt2 = q2;\\\\nt3 = q3;\\\\nt4 = q4;\\\\nt5 = q5;\\\\nt6 = q6;\\\\nt7 = q7;\\\\nt8 = q8;\\\",\\\"point_eqs_eel\\\":\\\"sample = 1-sample;\\\\nxxx = xx;\\\\nyyy = yy;\\\\nxx = pow(sample,5)*t1 + 5*pow(sample,4)*(1-sample)*t1 + 10*pow(sample,3)*sqr(1-sample)*t2\\\\n+ 10*sqr(sample)*pow(1-sample,3)*t3 + 5*pow(1-sample,4)*sample*t4 + pow(1-sample,5)*t4;\\\\n\\\\nyy = pow(sample,5)*t5 + 5*pow(sample,4)*(1-sample)*t5 + 10*pow(sample,3)*sqr(1-sample)*t6\\\\n+ 10*sqr(sample)*pow(1-sample,3)*t7 + 5*pow(1-sample,4)*sample*t8 + pow(1-sample,5)*t8;\\\\nd = 1/sqrt(sqr(xx-xxx)+sqr(yy-yyy));\\\\nx = xx + sample*(1-sample)*(value1-value2)*(yy-yyy)*d;\\\\ny = yy - sample*(1-sample)*(value1-value2)*(xx-xxx)*d;\\\"},{\\\"baseVals\\\":{\\\"usedots\\\":1,\\\"scaling\\\":2.44415,\\\"smoothing\\\":0,\\\"r\\\":0,\\\"g\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\ncl = 0;\\\",\\\"frame_eqs_eel\\\":\\\"t8 = 1;\\\",\\\"point_eqs_eel\\\":\\\"t8 = -t8;\\\\ny = (1+t8)*0.01;\\\\nx = sample;\\\"}],\\\"init_eqs_eel\\\":\\\"x1 = 0.9;\\\\ny1 = 0.5;\\\\n\\\\nx2 = 0.5; y2 = 0.5;\\\\nx3 = 0.5; y3 = 0.5;\\\\nx4 = 0.5; y4 = 0.5;\\\",\\\"frame_eqs_eel\\\":\\\"zoom = 1;\\\\n//warp = 0;\\\\nscale = 1;\\\\nangle = time*.1;\\\\ntranslation_x = 0;\\\\ntranslation_y = 0.12;\\\\n\\\\na_r = cos(angle)*scale;\\\\na_i = sin(angle)*scale;\\\\nb_r = translation_x;\\\\nb_i = translation_y;\\\\n\\\\n//complex inverted\\\\nscale = 1.6;\\\\nangle = 0;\\\\ntranslation_u = 0;\\\\ntranslation_v = 0;\\\\n\\\\n// c\\\\nq15 = cos(angle)*scale;\\\\nq16 = sin(angle)*scale;\\\\n\\\\n// d\\\\nq17 = translation_u;\\\\nq18 = translation_v;\\\\n\\\\n// c^(-1)\\\\nc_inv_r = q15/(q15*q15+q16*q16);\\\\nc_inv_i = q16/(q15*q15+q16*q16);\\\\n\\\\n// a*c^(-1)\\\\nq11 = (a_r*c_inv_r - a_i*c_inv_i);\\\\nq12 = (a_r*c_inv_i - a_i*c_inv_r);\\\\n\\\\n// (bc-ad)\\\\nbcad_r = (b_r*q15 - b_i*q16)-(a_r*q17-a_i*q18);\\\\nbcad_i = (b_r*q16 - b_i*q15)-(a_r*q18-a_i*q17);\\\\n\\\\n// mu*c^(-1)\\\\nq13 = bcad_r*c_inv_r - bcad_i*c_inv_i;\\\\nq14 = bcad_r*c_inv_i - bcad_i*c_inv_r;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n  float conway_1;\\\\n  vec3 ret_2;\\\\n  vec2 tmpvar_3;\\\\n  tmpvar_3.x = (((\\\\n    ((texture (sampler_blur2, (uv + vec2(0.02, 0.0))).xyz * scale2) + bias2)\\\\n   - \\\\n    ((texture (sampler_blur2, (uv - vec2(0.02, 0.0))).xyz * scale2) + bias2)\\\\n  ).y * 1280.0) * texsize.z);\\\\n  tmpvar_3.y = (((\\\\n    ((texture (sampler_blur2, (uv + vec2(0.0, 0.02))).xyz * scale2) + bias2)\\\\n   - \\\\n    ((texture (sampler_blur2, (uv - vec2(0.0, 0.02))).xyz * scale2) + bias2)\\\\n  ).y * 1024.0) * texsize.w);\\\\n  ret_2.y = texture (sampler_pc_main, (uv - (tmpvar_3 * 0.004))).y;\\\\n  ret_2.y = (ret_2.y + ((\\\\n    ((ret_2.y - ((texture (sampler_blur1, uv).xyz * scale1) + bias1).y) - 0.1)\\\\n   * 0.1) + 0.02));\\\\n  vec2 tmpvar_4;\\\\n  tmpvar_4 = (vec2(0.0, 1.0) * texsize.zw);\\\\n  ret_2.z = (texture (sampler_fc_main, (uv - tmpvar_4)).z - 0.004);\\\\n  conway_1 = (texture (sampler_pw_main, (uv_orig - texsize.zw)).x + texture (sampler_pw_main, (uv_orig + (vec2(0.0, -1.0) * texsize.zw))).x);\\\\n  conway_1 = (conway_1 + texture (sampler_pw_main, (uv_orig + (vec2(1.0, -1.0) * texsize.zw))).x);\\\\n  conway_1 = (conway_1 + texture (sampler_pw_main, (uv_orig + (vec2(-1.0, 0.0) * texsize.zw))).x);\\\\n  conway_1 = (conway_1 + texture (sampler_pw_main, (uv_orig + (vec2(1.0, 0.0) * texsize.zw))).x);\\\\n  conway_1 = (conway_1 + texture (sampler_pw_main, (uv_orig + (vec2(-1.0, 1.0) * texsize.zw))).x);\\\\n  conway_1 = (conway_1 + texture (sampler_pw_main, (uv_orig + tmpvar_4)).x);\\\\n  conway_1 = (conway_1 + texture (sampler_pw_main, (uv_orig + texsize.zw)).x);\\\\n  conway_1 = (conway_1 - fract(conway_1));\\\\n  float tmpvar_5;\\\\n  tmpvar_5 = clamp (texture (sampler_pc_main, uv_orig).x, 0.0, 1.0);\\\\n  ret_2.x = (clamp ((1.0 - \\\\n    abs((conway_1 - 3.0))\\\\n  ), 0.0, 1.0) * (1.0 - tmpvar_5));\\\\n  ret_2.x = (ret_2.x + (clamp (\\\\n    max ((1.0 - abs((conway_1 - 2.0))), (1.0 - abs((conway_1 - 3.0))))\\\\n  , 0.0, 1.0) * tmpvar_5));\\\\n  vec4 tmpvar_6;\\\\n  tmpvar_6.w = 1.0;\\\\n  tmpvar_6.xyz = ret_2;\\\\n  ret = tmpvar_6.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec2 moebius_1;\\\\n  vec3 ret_2;\\\\n  vec2 tmpvar_3;\\\\n  tmpvar_3.x = q11;\\\\n  tmpvar_3.y = q12;\\\\n  vec2 tmpvar_4;\\\\n  tmpvar_4.x = q17;\\\\n  tmpvar_4.y = q18;\\\\n  vec2 tmpvar_5;\\\\n  vec2 tmpvar_6;\\\\n  tmpvar_6 = (uv - 0.5);\\\\n  tmpvar_5 = (tmpvar_6 * aspect.xy);\\\\n  vec2 tmpvar_7;\\\\n  tmpvar_7.x = ((tmpvar_5.x * q15) - (tmpvar_5.y * q16));\\\\n  tmpvar_7.y = ((tmpvar_5.x * q16) - (tmpvar_5.y * q15));\\\\n  vec2 tmpvar_8;\\\\n  tmpvar_8 = (tmpvar_7 + tmpvar_4);\\\\n  vec2 tmpvar_9;\\\\n  tmpvar_9.x = ((q13 * tmpvar_8.x) + (q14 * tmpvar_8.y));\\\\n  tmpvar_9.y = ((q14 * tmpvar_8.x) - (q13 * tmpvar_8.y));\\\\n  moebius_1 = (((tmpvar_9 / \\\\n    ((tmpvar_8.x * tmpvar_8.x) + (tmpvar_8.y * tmpvar_8.y))\\\\n  ) + tmpvar_3) * 0.5);\\\\n  float tmpvar_10;\\\\n  tmpvar_10 = sqrt(dot (moebius_1, moebius_1));\\\\n  moebius_1 = (0.5 + ((\\\\n    (1.0 - abs(((\\\\n      fract((moebius_1 * 0.5))\\\\n     * 2.0) - 1.0)))\\\\n   - 0.5) * 0.95));\\\\n  vec2 tmpvar_11;\\\\n  tmpvar_11 = (0.5 + (tmpvar_6 * 0.2));\\\\n  ret_2 = (texture (sampler_main, tmpvar_11).z * vec3(0.4, 0.0, 0.7));\\\\n  ret_2 = (mix (ret_2, vec3(0.0, 1.0, 1.0), vec3(clamp (texture (sampler_fc_main, moebius_1).y, 0.0, 1.0))) * (1.4 - pow (\\\\n    (tmpvar_10 * 0.8)\\\\n  , 0.3)));\\\\n  vec3 tmpvar_12;\\\\n  tmpvar_12 = mix (mix (mix (ret_2, vec3(4.0, 1.0, 0.0), vec3(\\\\n    ((clamp ((texture (sampler_fc_main, tmpvar_11).y - texture (sampler_pc_main, tmpvar_11).y), 0.0, 1.0) * 4.0) * (tmpvar_10 * tmpvar_10))\\\\n  )), vec3(-4.0, -4.0, -4.0), texture (sampler_main, tmpvar_11).xxx), vec3(2.0, 2.0, 2.0), vec3((texture (sampler_pc_main, tmpvar_11).x * 0.75)));\\\\n  ret_2 = tmpvar_12;\\\\n  vec4 tmpvar_13;\\\\n  tmpvar_13.w = 1.0;\\\\n  tmpvar_13.xyz = tmpvar_12;\\\\n  ret = tmpvar_13.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/flexi - swing out on the spiral.json\":\n/*!****************************************************************!*\\\n  !*** ./presets/converted/flexi - swing out on the spiral.json ***!\n  \\****************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1.56,\\\"decay\\\":1,\\\"echo_zoom\\\":0.362,\\\"echo_orient\\\":1,\\\"wave_thick\\\":1,\\\"wave_brighten\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":1.599,\\\"wave_smoothing\\\":0,\\\"wave_mystery\\\":-0.5,\\\"modwavealphastart\\\":2,\\\"modwavealphaend\\\":2,\\\"warpscale\\\":0.107,\\\"zoomexp\\\":0.1584,\\\"fshader\\\":1,\\\"warp\\\":0.01,\\\"wave_r\\\":0.51,\\\"wave_g\\\":0.5,\\\"ob_size\\\":0,\\\"ob_a\\\":1,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"ib_a\\\":1,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0.5,\\\"mv_r\\\":0,\\\"mv_g\\\":0,\\\"mv_b\\\":0,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"thickoutline\\\":1,\\\"rad\\\":0.50126,\\\"tex_zoom\\\":0.99996,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"g2\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = 0.5+sin(time*0.618)*0.2;\\\\ny = 0.5+cos(time*1.618)*0.2;\\\\nrad = bass*0.05;\\\\nborder_r = 1-(sin(time*1.25)*0.3+0.7);\\\\nborder_g = 1-(sin(time)*0.3+0.3);\\\\nborder_b = 1-(sin(time/3)*0.5+0.5);\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"thickoutline\\\":1,\\\"rad\\\":0.50126,\\\"g\\\":1,\\\"b\\\":1,\\\"g2\\\":0,\\\"b2\\\":1,\\\"border_g\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = 0.5+sin(time*2.618)*0.3;\\\\ny = 0.5+cos(time*3.14)*0.3;\\\\nrad = bass*0.05;\\\\nborder_r = 1-(sin(time*1.25)*0.3+0.7);\\\\nborder_g = 1-(sin(time)*0.3+0.3);\\\\nborder_b = 1-(sin(time/3)*0.5+0.5);\\\\n\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"thickoutline\\\":1,\\\"rad\\\":0.50126,\\\"tex_zoom\\\":0.9998,\\\"g\\\":1,\\\"b\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = 0.5+sin(-time*2.618)*0.4;\\\\ny = 0.5+cos(-time*1.14)*0.4;\\\\nrad = bass*0.05;\\\\nborder_r = 1-(sin(time*1.25)*0.3+0.7);\\\\nborder_g = 1-(sin(time)*0.3+0.3);\\\\nborder_b = 1-(sin(time/3)*0.5+0.5);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"scaling\\\":0.16188,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":25.12601,\\\"smoothing\\\":1,\\\"a\\\":0.1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"q11 = 0.5/asin(1);\\\",\\\"frame_eqs_eel\\\":\\\"//zoom = 0.99;\\\\nib_r = sin(time*1.25*4)*0.3+0.7;\\\\nib_g = sin(time*4)*0.3+0.3;\\\\nib_b = sin(time/3*4)*0.5+0.5;\\\\n\\\\nxx1 = xx1*0.9 + (bass)*0.01;\\\\nxx2 = xx2*0.9 + (treb)*0.01;\\\\nyy1 = yy1*0.94 + (treb+bass)*0.0075;\\\\n\\\\nx1 = 0.5 + (xx1-xx2)*3;\\\\ny1 = 0.4 + yy1;\\\\n\\\\nx1 = max(0,min(1,x1)); y1 = max(0,min(1,y1));\\\\n\\\\nspring = 25;\\\\ngrav = 1.1;\\\\nresist = 1;\\\\nbounce = 0.85;\\\\ndt = 0.0002*(60/fps);\\\\n\\\\nvx2 = vx2*(1-resist*dt) + dt*((x1+x3-2*x2)*spring);\\\\nvy2 = vy2*(1-resist*dt) + dt*((y1+y3-2*y2)*spring-grav);\\\\nvx3 = vx3*(1-resist*dt) + dt*((x2+x4-2*x3)*spring);\\\\nvy3 = vy3*(1-resist*dt) + dt*((y2+y4-2*y3)*spring-grav);\\\\nvx4 = vx4*(1-resist*dt) + dt*((x3-x4)*spring);\\\\nvy4 = vy4*(1-resist*dt) + dt*((y3-y4)*spring-grav);\\\\n\\\\nx2 = x2 + vx2;\\\\ny2 = y2 + vy2;\\\\nx3 = x3 + vx3;\\\\ny3 = y3 + vy3;\\\\nx4 = x4 + vx4;\\\\ny4 = y4 + vy4;\\\\n\\\\nvx2 = if(above(x2,0),vx2,abs(vx2)*bounce);\\\\nvx2 = if(below(x2,1),vx2,-abs(vx2)*bounce);\\\\nvx3 = if(above(x3,0),vx3,abs(vx3)*bounce);\\\\nvx3 = if(below(x3,1),vx3,-abs(vx3)*bounce);\\\\nvx4 = if(above(x4,0),vx4,abs(vx4)*bounce);\\\\nvx4 = if(below(x4,1),vx4,-abs(vx4)*bounce);\\\\nvy2 = if(above(y2,0),vy2,abs(vy2)*bounce);\\\\nvy2 = if(below(y2,1),vy2,-abs(vy2)*bounce);\\\\nvy3 = if(above(y3,0),vy3,abs(vy3)*bounce);\\\\nvy3 = if(below(y3,1),vy3,-abs(vy3)*bounce);\\\\nvy4 = if(above(y4,0),vy4,abs(vy4)*bounce);\\\\nvy4 = if(below(y4,1),vy4,-abs(vy4)*bounce);\\\\nq4 = x4;\\\\nq8 = y4;\\\\n\\\\nq1 = aspectx;\\\\nq2 = aspecty;\\\\n\\\\nzoom = 1;\\\\nwarp = 0;\\\\nbb = bb*0.99 + bass*0.02;\\\\nmm = mm*0.99 + mid*0.02;\\\\ntt = tt*0.99 + treb*0.02;\\\\n\\\\nmx = max(max(bb,mm),tt);\\\\nmn = min(min(bb,mm),tt);\\\\n\\\\nob_r = (bb-mn)/(mx-mn);\\\\nob_b = (mm-mn)/(mx-mn);\\\\nob_g = (tt-mn)/(mx-mn);\\\\nq6 = atan2(vx4,vy4);\\\\nq5 = sqrt(vx4*vx4 + vy4*vy4);\\\\n\\\\na = a*0.95 + q5;\\\\n\\\\ns = s*0.9 + a;\\\\nq3 = s*0.1;\\\\nt = t + 0.1/fps;\\\\nt = if(above(t,2),t-2,t);\\\\nq12 = -t;\\\\nmonitor = t;\\\\nwave_a = 0;\\\",\\\"pixel_eqs_eel\\\":\\\"x = 0.5 + (x-0.5)*q1;\\\\ny = 0.5 + (y-0.5)*q2;\\\\n\\\\ndir = -q6*1 + asin(1)*0;\\\\n\\\\nxx = q4;\\\\nyy = 1-q8;\\\\n\\\\ndx = 0; dy = 0;\\\\n\\\\nd = sqrt((x-xx)*(x-xx)+(y-yy)*(y-yy));\\\\n\\\\nr = 0.08;\\\\nv = -15*q5;\\\\ndx = v*sin(dir)*(r-d)*(1-sigmoid(d-r,200))*q2;\\\\ndy = v*cos(dir)*(r-d)*(1-sigmoid(d-r,200))*q1;\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec3 tmpvar_1;\\\\n  vec4 tmpvar_2;\\\\n  tmpvar_2 = texture (sampler_main, uv);\\\\n  tmpvar_1 = vec3((((tmpvar_2.x + tmpvar_2.y) + tmpvar_2.z) * 0.33333));\\\\n  vec4 tmpvar_3;\\\\n  tmpvar_3.w = 1.0;\\\\n  tmpvar_3.xyz = ((texture (sampler_main, clamp (\\\\n    (uv - ((vec2(0.0, 0.0168) * (tmpvar_1 - 0.35).xy) * (tmpvar_1 - 0.4).xy))\\\\n  , 0.0, 1.0)).xyz - 0.001) + ((texture (sampler_noise_lq, \\\\n    (((uv_orig * texsize.xy) * (texsize_noise_lq.zw * 2.0)) + rand_frame.xy)\\\\n  ) - 0.5) * 0.04).xyz);\\\\n  ret = tmpvar_3.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec2 tmpvar_1;\\\\n  tmpvar_1 = ((uv - 0.5).yx * aspect.zw);\\\\n  float tmpvar_2;\\\\n  float tmpvar_3;\\\\n  tmpvar_3 = (min (abs(\\\\n    (tmpvar_1.x / tmpvar_1.y)\\\\n  ), 1.0) / max (abs(\\\\n    (tmpvar_1.x / tmpvar_1.y)\\\\n  ), 1.0));\\\\n  float tmpvar_4;\\\\n  tmpvar_4 = (tmpvar_3 * tmpvar_3);\\\\n  tmpvar_4 = (((\\\\n    ((((\\\\n      ((((-0.01213232 * tmpvar_4) + 0.05368138) * tmpvar_4) - 0.1173503)\\\\n     * tmpvar_4) + 0.1938925) * tmpvar_4) - 0.3326756)\\\\n   * tmpvar_4) + 0.9999793) * tmpvar_3);\\\\n  tmpvar_4 = (tmpvar_4 + (float(\\\\n    (abs((tmpvar_1.x / tmpvar_1.y)) > 1.0)\\\\n  ) * (\\\\n    (tmpvar_4 * -2.0)\\\\n   + 1.570796)));\\\\n  tmpvar_2 = (tmpvar_4 * sign((tmpvar_1.x / tmpvar_1.y)));\\\\n  if ((abs(tmpvar_1.y) > (1e-08 * abs(tmpvar_1.x)))) {\\\\n    if ((tmpvar_1.y < 0.0)) {\\\\n      if ((tmpvar_1.x >= 0.0)) {\\\\n        tmpvar_2 += 3.141593;\\\\n      } else {\\\\n        tmpvar_2 = (tmpvar_2 - 3.141593);\\\\n      };\\\\n    };\\\\n  } else {\\\\n    tmpvar_2 = (sign(tmpvar_1.x) * 1.570796);\\\\n  };\\\\n  vec2 tmpvar_5;\\\\n  tmpvar_5.x = (tmpvar_2 * q11);\\\\n  tmpvar_5.y = (((0.5 * \\\\n    log(sqrt(dot (tmpvar_1, tmpvar_1)))\\\\n  ) - (tmpvar_2 * q11)) + q12);\\\\n  vec4 tmpvar_6;\\\\n  tmpvar_6.w = 1.0;\\\\n  tmpvar_6.xyz = pow (texture (sampler_main, (0.5 + (\\\\n    (0.5 - abs(((\\\\n      fract((tmpvar_5 * 0.5))\\\\n     * 2.0) - 1.0)))\\\\n   * vec2(0.96, 1.0)))).xyz, vec3(0.618034, 0.618034, 0.618034));\\\\n  ret = tmpvar_6.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/flexi - what is the matrix.json\":\n/*!***********************************************************!*\\\n  !*** ./presets/converted/flexi - what is the matrix.json ***!\n  \\***********************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1,\\\"decay\\\":1,\\\"echo_zoom\\\":1,\\\"echo_alpha\\\":0.5,\\\"wave_thick\\\":1,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"wave_a\\\":0.004,\\\"wave_scale\\\":0.242,\\\"wave_smoothing\\\":0,\\\"wave_mystery\\\":-0.44,\\\"modwavealphastart\\\":1,\\\"modwavealphaend\\\":1,\\\"warpanimspeed\\\":0.397,\\\"warpscale\\\":15.099,\\\"zoomexp\\\":0.65309,\\\"zoom\\\":0.87866,\\\"warp\\\":0.04027,\\\"wave_y\\\":0.04,\\\"ob_size\\\":0,\\\"ob_a\\\":1,\\\"ib_size\\\":0,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"ib_a\\\":1,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0,\\\"mv_b\\\":0,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"thickoutline\\\":1,\\\"y\\\":0.04,\\\"rad\\\":0.01,\\\"tex_ang\\\":0.12566,\\\"tex_zoom\\\":1.51878,\\\"r\\\":0,\\\"a\\\":0,\\\"g2\\\":0,\\\"b2\\\":0.01,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"additive\\\":1,\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"x\\\":0.49,\\\"rad\\\":1.32907,\\\"tex_zoom\\\":0.49831,\\\"g\\\":1,\\\"b\\\":1,\\\"a\\\":0.99,\\\"g2\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thickoutline\\\":1,\\\"x\\\":1,\\\"rad\\\":3.0054,\\\"tex_ang\\\":0.12566,\\\"tex_zoom\\\":1.51878,\\\"r\\\":0,\\\"g\\\":1,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thickoutline\\\":1,\\\"x\\\":1,\\\"rad\\\":0.39872,\\\"tex_ang\\\":0.12566,\\\"tex_zoom\\\":1.51878,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":2.0231,\\\"smoothing\\\":0,\\\"r\\\":0,\\\"b\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\ncl = 0;\\\",\\\"frame_eqs_eel\\\":\\\"r = 1; g = 0; b = 1;\\\",\\\"point_eqs_eel\\\":\\\"tt3 = tt3*0.6 + (value1)*1;\\\\ntt2 = tt2*0.7 + tt3*0.2;\\\\ntt1 = tt1*0.8 + tt2*0.1;\\\\nd = d*0.9 + tt1*0.2;\\\\n\\\\ny = 0.6 + d*sample*(1-sample)*2;\\\\nx =  -0.05 + sample*1.1;\\\"},{\\\"baseVals\\\":{\\\"scaling\\\":2.44415,\\\"smoothing\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\ncl = 0;\\\",\\\"frame_eqs_eel\\\":\\\"t8 = 1;\\\",\\\"point_eqs_eel\\\":\\\"t8 = -t8;\\\\ny = sample;\\\\nx = 0.5 + t8*0.005;\\\\n\\\\npi3 = 3.1415*2*0.3333;\\\\nt = time + sample*2;\\\\nc=2;\\\\n\\\\nr = sin(t)*c;\\\\ng = sin(t+pi3)*c;\\\\n\\\\nb = sin(t-pi3)*c;\\\\n\\\\n\\\\nr = if(above(r,1),1,r);\\\\nr = if(below(r,0),0,r);\\\\ng = if(above(g,1),1,g);\\\\ng = if(below(g,0),0,g);\\\\nb = if(above(b,1),1,b);\\\\nb = if(below(b,0),0,b);\\\\n\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":100,\\\"smoothing\\\":0.6,\\\"r\\\":0,\\\"g\\\":0.4,\\\"a\\\":0.3,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"t1 = q1;\\\\nt2 = q2;\\\\nt3 = q3;\\\\nt4 = q4;\\\\nt5 = q5;\\\\nt6 = q6;\\\\nt7 = q7;\\\\nt8 = q8;\\\",\\\"point_eqs_eel\\\":\\\"sample = 1-sample;\\\\nxxx = xx;\\\\nyyy = yy;\\\\nxx = pow(sample,5)*t1 + 5*pow(sample,4)*(1-sample)*t1 + 10*pow(sample,3)*sqr(1-sample)*t2\\\\n+ 10*sqr(sample)*pow(1-sample,3)*t3 + 5*pow(1-sample,4)*sample*t4 + pow(1-sample,5)*t4;\\\\n\\\\nyy = pow(sample,5)*t5 + 5*pow(sample,4)*(1-sample)*t5 + 10*pow(sample,3)*sqr(1-sample)*t6\\\\n+ 10*sqr(sample)*pow(1-sample,3)*t7 + 5*pow(1-sample,4)*sample*t8 + pow(1-sample,5)*t8;\\\\nd = 1/sqrt(sqr(xx-xxx)+sqr(yy-yyy));\\\\nx = xx + sample*(1-sample)*(value1-value2)*(yy-yyy)*d;\\\\ny = yy - sample*(1-sample)*(value1-value2)*(xx-xxx)*d;\\\"},{\\\"baseVals\\\":{\\\"usedots\\\":1,\\\"scaling\\\":2.44415,\\\"smoothing\\\":0,\\\"r\\\":0,\\\"g\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\ncl = 0;\\\",\\\"frame_eqs_eel\\\":\\\"t8 = 1;\\\",\\\"point_eqs_eel\\\":\\\"t8 = -t8;\\\\ny = (1+t8)*0.01;\\\\nx = sample;\\\"}],\\\"init_eqs_eel\\\":\\\"x1 = 0.9;\\\\ny1 = 0.5;\\\\n\\\\nx2 = 0.5; y2 = 0.5;\\\\nx3 = 0.5; y3 = 0.5;\\\\nx4 = 0.5; y4 = 0.5;\\\",\\\"frame_eqs_eel\\\":\\\"zoom = 0.998;\\\\n//warp = 0;\\\\nscale = 1;\\\\nangle = time*.02;\\\\ntranslation_x = 0;\\\\ntranslation_y = 0.12;\\\\n\\\\na_r = cos(angle)*scale;\\\\na_i = sin(angle)*scale;\\\\nb_r = translation_x;\\\\nb_i = translation_y;\\\\n\\\\n//complex inverted\\\\nscale = 1;\\\\nangle = sin(time*0.1337)*0.3*0;\\\\ntranslation_u = 0;\\\\ntranslation_v = -0.2;\\\\n\\\\n// c\\\\nq15 = cos(angle)*scale;\\\\nq16 = sin(angle)*scale;\\\\n\\\\n// d\\\\nq17 = translation_u;\\\\nq18 = translation_v;\\\\n\\\\n// c^(-1)\\\\nc_inv_r = q15/(q15*q15+q16*q16);\\\\nc_inv_i = q16/(q15*q15+q16*q16);\\\\n\\\\n// a*c^(-1)\\\\nq11 = (a_r*c_inv_r - a_i*c_inv_i);\\\\nq12 = (a_r*c_inv_i - a_i*c_inv_r);\\\\n\\\\n// (bc-ad)\\\\nbcad_r = (b_r*q15 - b_i*q16)-(a_r*q17-a_i*q18);\\\\nbcad_i = (b_r*q16 - b_i*q15)-(a_r*q18-a_i*q17);\\\\n\\\\n// mu*c^(-1)\\\\nq13 = bcad_r*c_inv_r - bcad_i*c_inv_i;\\\\nq14 = bcad_r*c_inv_i - bcad_i*c_inv_r;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n  float conway_1;\\\\n  vec3 ret_2;\\\\n  vec2 tmpvar_3;\\\\n  tmpvar_3.x = (((\\\\n    ((texture (sampler_blur2, (uv + vec2(0.02, 0.0))).xyz * scale2) + bias2)\\\\n   - \\\\n    ((texture (sampler_blur2, (uv - vec2(0.02, 0.0))).xyz * scale2) + bias2)\\\\n  ).y * 1280.0) * texsize.z);\\\\n  tmpvar_3.y = (((\\\\n    ((texture (sampler_blur2, (uv + vec2(0.0, 0.02))).xyz * scale2) + bias2)\\\\n   - \\\\n    ((texture (sampler_blur2, (uv - vec2(0.0, 0.02))).xyz * scale2) + bias2)\\\\n  ).y * 1024.0) * texsize.w);\\\\n  ret_2.y = texture (sampler_pc_main, (uv - (tmpvar_3 * 0.004))).y;\\\\n  ret_2.y = (ret_2.y + ((\\\\n    ((ret_2.y - ((texture (sampler_blur1, uv).xyz * scale1) + bias1).y) - 0.1)\\\\n   * 0.1) + 0.02));\\\\n  ret_2.z = (texture (sampler_fc_main, (0.5 + (\\\\n    (uv - 0.5)\\\\n   * 0.992))).z - 0.004);\\\\n  conway_1 = (texture (sampler_pw_main, (uv_orig - texsize.zw)).x + texture (sampler_pw_main, (uv_orig + (vec2(0.0, -1.0) * texsize.zw))).x);\\\\n  conway_1 = (conway_1 + texture (sampler_pw_main, (uv_orig + (vec2(1.0, -1.0) * texsize.zw))).x);\\\\n  conway_1 = (conway_1 + texture (sampler_pw_main, (uv_orig + (vec2(-1.0, 0.0) * texsize.zw))).x);\\\\n  conway_1 = (conway_1 + texture (sampler_pw_main, (uv_orig + (vec2(1.0, 0.0) * texsize.zw))).x);\\\\n  conway_1 = (conway_1 + texture (sampler_pw_main, (uv_orig + (vec2(-1.0, 1.0) * texsize.zw))).x);\\\\n  conway_1 = (conway_1 + texture (sampler_pw_main, (uv_orig + (vec2(0.0, 1.0) * texsize.zw))).x);\\\\n  conway_1 = (conway_1 + texture (sampler_pw_main, (uv_orig + texsize.zw)).x);\\\\n  conway_1 = (conway_1 - fract(conway_1));\\\\n  float tmpvar_4;\\\\n  tmpvar_4 = clamp (texture (sampler_pc_main, uv_orig).x, 0.0, 1.0);\\\\n  ret_2.x = (clamp ((1.0 - \\\\n    abs((conway_1 - 3.0))\\\\n  ), 0.0, 1.0) * (1.0 - tmpvar_4));\\\\n  ret_2.x = (ret_2.x + (clamp (\\\\n    max ((1.0 - abs((conway_1 - 2.0))), (1.0 - abs((conway_1 - 3.0))))\\\\n  , 0.0, 1.0) * tmpvar_4));\\\\n  vec4 tmpvar_5;\\\\n  tmpvar_5.w = 1.0;\\\\n  tmpvar_5.xyz = ret_2;\\\\n  ret = tmpvar_5.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec2 moebius_1;\\\\n  vec3 ret_2;\\\\n  vec2 tmpvar_3;\\\\n  tmpvar_3.x = q11;\\\\n  tmpvar_3.y = q12;\\\\n  vec2 tmpvar_4;\\\\n  tmpvar_4.x = q17;\\\\n  tmpvar_4.y = q18;\\\\n  vec2 tmpvar_5;\\\\n  vec2 tmpvar_6;\\\\n  tmpvar_6 = (uv - 0.5);\\\\n  tmpvar_5 = (tmpvar_6 * aspect.xy);\\\\n  vec2 tmpvar_7;\\\\n  tmpvar_7.x = ((tmpvar_5.x * q15) - (tmpvar_5.y * q16));\\\\n  tmpvar_7.y = ((tmpvar_5.x * q16) - (tmpvar_5.y * q15));\\\\n  vec2 tmpvar_8;\\\\n  tmpvar_8 = (tmpvar_7 + tmpvar_4);\\\\n  vec2 tmpvar_9;\\\\n  tmpvar_9.x = ((q13 * tmpvar_8.x) + (q14 * tmpvar_8.y));\\\\n  tmpvar_9.y = ((q14 * tmpvar_8.x) - (q13 * tmpvar_8.y));\\\\n  moebius_1 = (((tmpvar_9 / \\\\n    ((tmpvar_8.x * tmpvar_8.x) + (tmpvar_8.y * tmpvar_8.y))\\\\n  ) + tmpvar_3) * 0.5);\\\\n  float tmpvar_10;\\\\n  tmpvar_10 = sqrt(dot (moebius_1, moebius_1));\\\\n  moebius_1 = (0.5 + ((\\\\n    (1.0 - abs(((\\\\n      fract((moebius_1 * 0.5))\\\\n     * 2.0) - 1.0)))\\\\n   - 0.5) * 0.99));\\\\n  vec3 tmpvar_11;\\\\n  tmpvar_11 = mix (mix (mix (\\\\n    mix (mix ((mix (ret_2, vec3(0.2, 0.6, 1.0), vec3(\\\\n      (texture (sampler_pc_main, moebius_1).y * 2.0)\\\\n    )) * (vec3(1.0, 1.0, 1.0) - vec3(\\\\n      ((((texture (sampler_blur1, \\\\n        (0.5 + (tmpvar_6 * 0.5))\\\\n      ).xyz * scale1) + bias1).y * 2.0) * tmpvar_10)\\\\n    ))), vec3(1.0, 1.0, 1.0), texture (sampler_pc_main, moebius_1).xxx), vec3(4.0, 1.0, 0.0), vec3(clamp (((texture (sampler_pc_main, \\\\n      (0.5 + (tmpvar_6 * 0.2))\\\\n    ).y * 2.0) * (\\\\n      (tmpvar_10 * tmpvar_10)\\\\n     * tmpvar_10)), 0.0, 1.0)))\\\\n  , vec3(0.1, 0.0, 0.0), vec3(\\\\n    clamp ((((texture (sampler_blur1, \\\\n      (0.5 + (tmpvar_6 * 0.2))\\\\n    ).xyz * scale1) + bias1).x * 12.0), 0.0, 1.0)\\\\n  )), (vec3(0.5, 0.8, 1.0) * texture (sampler_pc_main, uv).z), vec3((\\\\n    clamp ((((texture (sampler_blur1, \\\\n      (0.5 + (tmpvar_6 * 0.2))\\\\n    ).xyz * scale1) + bias1).x * 4.0), 0.0, 1.0)\\\\n   * 1.4))), vec3(1.0, 1.0, 1.0), texture (sampler_pc_main, (0.5 + (tmpvar_6 * 0.2))).xxx);\\\\n  ret_2 = tmpvar_11;\\\\n  vec4 tmpvar_12;\\\\n  tmpvar_12.w = 1.0;\\\\n  tmpvar_12.xyz = tmpvar_11;\\\\n  ret = tmpvar_12.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/gunthry is out back bloodying up the pine trees - adm atomising (v) the disintigrate (n).json\":\n/*!*************************************************************************************************************************!*\\\n  !*** ./presets/converted/gunthry is out back bloodying up the pine trees - adm atomising (v) the disintigrate (n).json ***!\n  \\*************************************************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":1,\\\"gammaadj\\\":1.7,\\\"decay\\\":1,\\\"echo_zoom\\\":1.002,\\\"echo_orient\\\":1,\\\"wave_mode\\\":7,\\\"additivewave\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":1.157,\\\"wave_smoothing\\\":0.63,\\\"modwavealphastart\\\":0.71,\\\"modwavealphaend\\\":1.3,\\\"fshader\\\":1,\\\"dx\\\":0.00001,\\\"dy\\\":0.00001,\\\"warp\\\":0.01,\\\"wave_r\\\":0.65,\\\"wave_g\\\":0.65,\\\"wave_b\\\":0.65,\\\"ob_size\\\":0.005,\\\"ob_a\\\":0.2,\\\"ib_size\\\":0.005,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":14,\\\"num_inst\\\":512,\\\"rad\\\":0.1026,\\\"tex_ang\\\":0.62832,\\\"r2\\\":1,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ma=ma+(above(bass,1)*3.1415*.01*bass);\\\\nma=ma-(above(treb,1)*3.1415*.01*treb);\\\\n\\\\nmx=mx+(.0002*cos(ma));\\\\nmy=my+(.0002*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\nrad=(bass+treb)/100;\\\\na=(above(bass+mid+treb,.8));\\\\nr=int(rand(100))/100;\\\\ng=int(rand(100))/100;\\\\nb=int(rand(100))/100;\\\\nr2=int(rand(100))/100;\\\\ng2=int(rand(100))/100;\\\\nb2=int(rand(100))/100;\\\\nr_border=int(rand(100))/100;\\\\ng_border=int(rand(100))/100;\\\\nb_border=int(rand(100))/100;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":23,\\\"num_inst\\\":1024,\\\"rad\\\":0.10262,\\\"ang\\\":0.43982,\\\"tex_ang\\\":0.62832,\\\"a\\\":0.5,\\\"r2\\\":1,\\\"g2\\\":0,\\\"a2\\\":0.5,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ma=ma+(above(bass,1)*3.1415*.05*bass);\\\\nma=ma-(above(mid,1)*3.1415*.05*mid);\\\\n\\\\nmx=mx+(.0001*cos(ma));\\\\nmy=my+(.0001*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\nrad=(bass+treb)/75;\\\\na=(above(bass+mid+treb,.1));\\\\nr=int(rand(100))/100;\\\\ng=int(rand(100))/100;\\\\nb=int(rand(100))/100;\\\\nr2=int(rand(100))/100;\\\\ng2=int(rand(100))/100;\\\\nb2=int(rand(100))/100;\\\\nr_border=int(rand(100))/100;\\\\ng_border=int(rand(100))/100;\\\\nb_border=int(rand(100))/100;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":14,\\\"additive\\\":1,\\\"num_inst\\\":256,\\\"rad\\\":0.20269,\\\"tex_ang\\\":0.62832,\\\"r2\\\":1,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ma=ma+(above(mid,1)*3.1415*.01*mid);\\\\nma=ma-(above(treb,1)*3.1415*.01*treb);\\\\n\\\\nmx=mx+(.0004*cos(ma));\\\\nmy=my+(.0004*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.3));\\\"},{\\\"baseVals\\\":{\\\"sides\\\":14,\\\"additive\\\":1,\\\"num_inst\\\":256,\\\"rad\\\":0.22389,\\\"tex_ang\\\":0.62832,\\\"r2\\\":1,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ma=ma+(above(bass,.5)*3.1415*.02*bass);\\\\nma=ma-(above(treb,.5)*3.1415*.02*treb);\\\\n\\\\nmx=mx+(.0008*cos(ma));\\\\nmy=my+(.0008*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.2));\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(bass,1)*3.1415*.01*bass);\\\\nma=ma-(above(treb,1)*3.1415*.01*treb);\\\\n\\\\nmx=mx+(.0002*cos(ma));\\\\nmy=my+(.0002*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.8));\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(bass,1)*3.1415*.05*bass);\\\\nma=ma-(above(mid,1)*3.1415*.05*mid);\\\\n\\\\nmx=mx+(.0001*cos(ma));\\\\nmy=my+(.0001*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.1));\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(mid,1)*3.1415*.01*mid);\\\\nma=ma-(above(treb,1)*3.1415*.01*treb);\\\\n\\\\nmx=mx+(.0004*cos(ma));\\\\nmy=my+(.0004*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.3));\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(bass,.5)*3.1415*.02*bass);\\\\nma=ma-(above(treb,.5)*3.1415*.02*treb);\\\\n\\\\nmx=mx+(.0008*cos(ma));\\\\nmy=my+(.0008*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.2));\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"bass_tick = above(bass_att,bass_tick)*2 + (1-above(bass_att,bass_tick))*\\\\n((bass_tick-1.3)*0.96+1.3);\\\\ntreb_tick = above(treb_att,treb_tick)*2 + (1-above(treb_att,treb_tick))*\\\\n((treb_tick-1.3)*0.96+1.3);\\\\nmid_tick = above(mid_att,mid_tick)*2 + (1-above(mid_att,mid_tick))*\\\\n((mid_tick-1.3)*0.96+1.3);\\\\nbass_shift = equal(bass_tick,2)*0.95*sin(time*5) + (1-equal(bass_tick,2))*bass_shift;\\\\ntreb_shift = equal(treb_tick,2)*0.95*sin(time*5) + (1-equal(treb_tick,2))*treb_shift;\\\\nmid_shift = equal(mid_tick,2)*0.95*sin(time*5) + (1-equal(mid_tick,2))*mid_shift;\\\\n\\\\n//wave_x = wave_x + 0.12*sin(time);\\\\n//wave_y =wave_y + 0.12*cos(time);\\\\nwave_r = wave_r + bass_shift;\\\\nwave_g = wave_g + mid_shift;\\\\nwave_b = wave_b + treb_shift;\\\\nq1 = bass_shift;\\\\nq2= mid_shift;\\\\nq3 = treb_shift;\\\\nzoom = zoom + abs(0.05*(treb/2*cos(bass_att*treb_shift)*bass_shift));\\\\nq4=sin(time);\\\\nq5=tan(time);\\\",\\\"pixel_eqs_eel\\\":\\\"thresh = above(bass_att,thresh)*2+(1-above(bass_att,thresh))*((thresh-1.3)*0.96+1.3);\\\\ndx_r = equal(thresh,2)*0.015*sin(5*time)+(1-equal(thresh,2))*dx_r;\\\\ndy_r = equal(thresh,2)*0.015*sin(6*time)+(1-equal(thresh,2))*dy_r;\\\\n\\\\nrot = rot - 0.25*abs(((bass_att*q3)+0.55*q1)*(0.5*sin(time)-cos(0.5-2*(2.5*rad))));\\\\nrot = rot - 0.5*if (above(bass_att,((q1*q2*q3)/3)),(sin(12*rad))*(6.5*rad)*2*dy-r,dx_r);\\\\nzoom = zoom + equal(zoom,0)*dy_r;\\\\nrot = rot + 0.25*(q1/6+(q2*q1));\\\\ncx = cx - 0.25*(cos(time)-0.5*sin(time*1.2));\\\\ncy = cy - 0.25*(sin(time)+0.5*cos(1.22*time));\\\\ndx = dx + dx_r;\\\\ndy = dy + dy_r;\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec2 uv_1;\\\\n  vec3 ret_2;\\\\n  ret_2 = ((1.25 * (\\\\n    (texture (sampler_blur3, uv).xyz * scale3)\\\\n   + bias3)) - (0.25 * (\\\\n    (texture (sampler_blur1, uv).xyz * scale1)\\\\n   + bias1)));\\\\n  vec3 theta_3;\\\\n  theta_3 = (1.33 * ((texture (sampler_blur1, \\\\n    clamp (ret_2.xy, 0.0, 1.0)\\\\n  ).xyz * scale1) + bias1));\\\\n  uv_1 = (uv * (1.0 + (0.15 * \\\\n    (sin(theta_3) / cos(theta_3))\\\\n  )).xy);\\\\n  vec3 theta_4;\\\\n  theta_4 = (1.33 * ((texture (sampler_blur1, \\\\n    clamp (ret_2.xy, 0.0, 1.0)\\\\n  ).xyz * scale1) + bias1));\\\\n  uv_1 = (uv_1 - (0.075 * (\\\\n    sin(theta_4)\\\\n   / \\\\n    cos(theta_4)\\\\n  )).xy);\\\\n  float tmpvar_5;\\\\n  tmpvar_5 = dot (texsize.zw, texsize.zw);\\\\n  ret_2 = (max (max (texture (sampler_main, uv_1).xyz, texture (sampler_main, \\\\n    (((uv_1 - 0.5) * (1.0 - (8.0 * \\\\n      sqrt(tmpvar_5)\\\\n    ))) + 0.5)\\\\n  ).xyz), texture (sampler_main, (\\\\n    ((uv_1 - 0.5) * (1.0 + (8.0 * sqrt(tmpvar_5))))\\\\n   + 0.5)).xyz) - 0.024);\\\\n  vec4 tmpvar_6;\\\\n  tmpvar_6.w = 1.0;\\\\n  tmpvar_6.xyz = ret_2;\\\\n  ret = tmpvar_6.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec2 uv_1;\\\\n  vec3 ret3_2;\\\\n  vec3 ret_3;\\\\n  vec2 tmpvar_4;\\\\n  tmpvar_4 = (((uv - 0.5) * vec2(-1.0, 1.0)) + 0.5);\\\\n  vec3 tmpvar_5;\\\\n  tmpvar_5 = abs(((texture (sampler_main, uv).xyz * \\\\n    clamp ((((\\\\n      (texture (sampler_blur2, uv).xyz * scale2)\\\\n     + bias2) * 2.8) - 0.13), 0.0, 1.0)\\\\n  ) - (texture (sampler_main, tmpvar_4).xyz * \\\\n    clamp ((((\\\\n      (texture (sampler_blur2, tmpvar_4).xyz * scale2)\\\\n     + bias2) * 2.8) - 0.13), 0.0, 1.0)\\\\n  )));\\\\n  ret3_2 = (tmpvar_5 * sqrt(tmpvar_5));\\\\n  ret3_2 = (ret3_2 * vec3(0.9, 1.6, 2.3));\\\\n  ret3_2 = (ret3_2 * 3.0);\\\\n  vec3 tmpvar_6;\\\\n  tmpvar_6 = pow (ret3_2, (1.0 - ret3_2));\\\\n  ret3_2 = tmpvar_6;\\\\n  uv_1 = (uv * 2.0);\\\\n  vec2 tmpvar_7;\\\\n  tmpvar_7 = floor((fract(\\\\n    (uv_1 * 0.5)\\\\n  ) * 2.0));\\\\n  uv_1 = ((fract(uv_1) * (1.0 - tmpvar_7)) + (tmpvar_7 * fract(\\\\n    (1.0 - uv_1)\\\\n  )));\\\\n  vec2 tmpvar_8;\\\\n  tmpvar_8.x = rad;\\\\n  tmpvar_8.y = uv_1.y;\\\\n  uv_1 = tmpvar_8;\\\\n  vec2 tmpvar_9;\\\\n  tmpvar_9 = ((0.5 - tmpvar_8.yx) + 0.5);\\\\n  ret_3 = (texture (sampler_main, tmpvar_8.yx).xyz * clamp ((\\\\n    (((texture (sampler_blur2, tmpvar_8.yx).xyz * scale2) + bias2) * 2.8)\\\\n   - 0.13), 0.0, 1.0));\\\\n  vec3 tmpvar_10;\\\\n  tmpvar_10 = mix (ret_3, (texture (sampler_main, tmpvar_9).xyz * clamp (\\\\n    ((((texture (sampler_blur2, tmpvar_9).xyz * scale2) + bias2) * 2.8) - 0.13)\\\\n  , 0.0, 1.0)), vec3(0.5, 0.5, 0.5));\\\\n  ret_3 = (tmpvar_10 * tmpvar_10);\\\\n  ret_3 = (ret_3 * vec3(0.9, 1.6, 2.3));\\\\n  ret_3 = (ret_3 * 3.0);\\\\n  vec3 tmpvar_11;\\\\n  tmpvar_11 = max (tmpvar_6, (0.8 * vec3((0.5 * \\\\n    dot (ret_3, vec3(0.32, 0.49, 0.29))\\\\n  ))));\\\\n  ret_3 = tmpvar_11;\\\\n  vec4 tmpvar_12;\\\\n  tmpvar_12.w = 1.0;\\\\n  tmpvar_12.xyz = tmpvar_11;\\\\n  ret = tmpvar_12.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/high-altitude basket unraveling - singh grooves nitrogen argon nz+.json\":\n/*!***************************************************************************************************!*\\\n  !*** ./presets/converted/high-altitude basket unraveling - singh grooves nitrogen argon nz+.json ***!\n  \\***************************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":4,\\\"gammaadj\\\":1,\\\"decay\\\":0.995,\\\"echo_zoom\\\":1,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":1,\\\"wave_mode\\\":6,\\\"additivewave\\\":1,\\\"wave_thick\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":2.103,\\\"wave_smoothing\\\":0.54,\\\"wave_mystery\\\":0.38,\\\"modwavealphastart\\\":0.81,\\\"modwavealphaend\\\":1.4,\\\"warpscale\\\":1.331,\\\"warp\\\":0.01,\\\"wave_r\\\":0,\\\"wave_g\\\":0,\\\"wave_b\\\":0,\\\"ob_size\\\":0.005,\\\"ob_a\\\":1,\\\"ib_size\\\":0.005,\\\"ib_a\\\":1,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":1.85,\\\"mv_r\\\":0.5,\\\"mv_g\\\":0.5,\\\"mv_b\\\":0.5,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"sides\\\":64,\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"rad\\\":0.53526,\\\"tex_zoom\\\":1.35028,\\\"g\\\":1,\\\"b\\\":1,\\\"a\\\":0.4,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":0.5,\\\"border_b\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":14,\\\"num_inst\\\":78,\\\"x\\\":0.6,\\\"rad\\\":0.02217,\\\"tex_zoom\\\":60.80383,\\\"g\\\":1,\\\"b\\\":1,\\\"a\\\":0.9,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_g\\\":0.59,\\\"border_a\\\":1},\\\"init_eqs_eel\\\":\\\"t1 = int(rand(10))/10;\\\\nt2 = .2 + int(rand(8))/10;\\\",\\\"frame_eqs_eel\\\":\\\"speed = .02;\\\\ntrel = int(time*speed)- time*speed+1;\\\\nk1 = instance/num_inst; \\\\nk1 = k1 - int(k1);\\\\ndist = 1.4-k1; //################# soll 1 sein\\\\n//dist = dist - int(dist);\\\\n\\\\n\\\\nfov = .1;\\\\narg = dist-.02*time;\\\\nposx = fov/dist * (sin(arg*13) + .2*sin(dist*332));\\\\nposy = fov/dist * (cos(arg*36)+ .2*sin(dist*332));\\\\n\\\\nxl = .5 + posx;\\\\nyl = .5 + posy;\\\\n\\\\ntime2 = time/4 + cos(instance) ;\\\\nxw = .5 + .5 * (sin(arg*14) + .02*cos(arg*1131)) ;\\\\nyw = time2 - int(time2);\\\\n\\\\nx = if(bnot(q19),xl,xw);\\\\ny = if(bnot(q19),yl,yw);\\\\n\\\\nang = time * sin(k1*44)*12;\\\\na = t1; border_a = 0; a2 = t2;\\\\nrad = .01/dist;\\\\n\\\\nr = .5 + .3* sin(instance+arg); \\\\nb = .5 + .3* sin(instance-2+arg); \\\\ng = .5 + .3* sin(instance*2+arg);\\\\n\\\\n\\\"},{\\\"baseVals\\\":{\\\"sides\\\":63,\\\"x\\\":0.503,\\\"y\\\":0.67,\\\"rad\\\":0.05033,\\\"tex_zoom\\\":0.49981,\\\"r\\\":0,\\\"g\\\":1,\\\"b\\\":1,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"y\\\":0.51,\\\"rad\\\":0.19869,\\\"tex_ang\\\":1.00531,\\\"tex_zoom\\\":0.49981,\\\"g\\\":0.4,\\\"a\\\":0.7,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"samples\\\":128,\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":0.89152,\\\"smoothing\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"samples\\\":100,\\\"usedots\\\":1,\\\"thick\\\":1,\\\"scaling\\\":0.89152,\\\"smoothing\\\":0,\\\"a\\\":0.1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"scaling\\\":0.89152,\\\"smoothing\\\":0.82,\\\"a\\\":0.1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"spectrum\\\":1,\\\"usedots\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"q8=0;\\\",\\\"frame_eqs_eel\\\":\\\"chng=sin(time*.5);\\\\ncthr=.9999;\\\\nmq21=if(above(chng,cthr),rand(3),mq21);\\\\nmq22=if(above(chng,cthr),rand(3),mq22);\\\\nmq23=if(above(chng,cthr),rand(3),mq23);\\\\nmq24=if(above(chng,cthr),rand(2),mq24);\\\\nmq25=if(above(chng,cthr),rand(2),mq25);\\\\nmq26=if(above(chng,cthr),rand(2),mq26);\\\\nmq27=if(above(chng,cthr),rand(1),mq27);\\\\nmq28=if(above(chng,cthr),rand(1),mq28);\\\\nmq29=if(above(chng,cthr),rand(1)*.3,mq29);\\\\nmq31=if(above(chng,cthr),rand(1)*.3,mq31);\\\\nmonitor=chng;\\\\nq21=mq21;q22=mq22;q23=mq23;q24=mq24;q25=mq25;q26=mq26;\\\\nq27=mq27;q28=mq28;q29=mq29;q31=mq31;\\\\n\\\\nmonitor=mq1;\\\\nvol=bass+treb+mid;\\\\natime=atime+vol;\\\\nq11=.4+sin(atime*.006        )*.4;\\\\nq12=.4+cos(atime*.00613828348)*.4;\\\\nq13=.4+sin(atime*.00598593455)*.4;\\\\nmonitor=q13;\\\\n\\\\nwarp=0;\\\\nq8 =oldq8+ 0.0003*(pow(1+1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps);\\\\noldq8 = q8;\\\\nwave_r = 0.5+0.5*sin(1.123*q8);\\\\nwave_g = 0.5+0.5*sin(q8*1.576);\\\\nwave_b = 0.5+0.5*cos(q8*1.465);\\\\nib_a =0.2*bass;\\\",\\\"pixel_eqs_eel\\\":\\\"dx=dx+0.008*sin((y*2-1)*meshx)+0.008*sin((y*2-1)*meshx*1.3333);\\\\ndy=dy+0.008*cos((x*2-1)*meshx*1.3333)+0.008*cos((x*2-1)*meshx);\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec3 ret_1;\\\\n  vec4 tmpvar_2;\\\\n  tmpvar_2 = texture (sampler_main, uv);\\\\n  ret_1 = tmpvar_2.xyz;\\\\n  vec4 tmpvar_3;\\\\n  tmpvar_3 = texture (sampler_noisevol_hq, (((vec3(0.05, 0.05, 0.0) * uv.xyy) * (\\\\n    (q27 * texsize.xyy)\\\\n   * texsize_noisevol_hq.zww)) + ((time * vec3(0.0, 0.0, 1.0)) * q29)));\\\\n  if (((tmpvar_2.x > (q21 * q13)) && (tmpvar_2.x <= (q24 * q11)))) {\\\\n    ret_1.y = (tmpvar_2.y - (tmpvar_3.x * 0.5));\\\\n  };\\\\n  if (((ret_1.y > (q22 * q11)) && (ret_1.y <= (q25 * q12)))) {\\\\n    ret_1.z = (tmpvar_2.z - (tmpvar_3.y * 0.5));\\\\n  };\\\\n  if (((ret_1.z > (q23 * q12)) && (ret_1.z <= (q26 * q13)))) {\\\\n    ret_1.x = (tmpvar_2.x - (tmpvar_3.z * 0.5));\\\\n  };\\\\n  ret_1 = (ret_1 + ((ret_1 - \\\\n    ((texture (sampler_blur1, uv).xyz * scale1) + bias1)\\\\n  ) * 0.2));\\\\n  ret_1 = (ret_1 - 0.02);\\\\n  vec4 tmpvar_4;\\\\n  tmpvar_4.w = 1.0;\\\\n  tmpvar_4.xyz = ret_1;\\\\n  ret = tmpvar_4.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec2 uv_1;\\\\n  vec3 ret_2;\\\\n  uv_1 = (0.05 + (0.9 * uv));\\\\n  vec4 tmpvar_3;\\\\n  tmpvar_3 = texture (sampler_main, uv_1);\\\\n  ret_2 = tmpvar_3.xyz;\\\\n  vec4 tmpvar_4;\\\\n  tmpvar_4 = texture (sampler_noisevol_hq, (((vec3(0.05, 0.05, 0.0) * uv_1.xyy) * (\\\\n    (q28 * texsize.xyy)\\\\n   * texsize_noisevol_hq.zww)) + ((time * vec3(0.0, 0.0, 1.0)) * q31)));\\\\n  if (((tmpvar_3.x > (q26 * q13)) && (tmpvar_3.x <= (q23 * q11)))) {\\\\n    ret_2.z = (tmpvar_3.z - (tmpvar_4.x * 0.5));\\\\n  };\\\\n  if (((tmpvar_3.y > (q25 * q11)) && (tmpvar_3.y <= (q22 * q12)))) {\\\\n    ret_2.x = (tmpvar_3.x - (tmpvar_4.y * 0.5));\\\\n  };\\\\n  if (((ret_2.z > (q24 * q12)) && (ret_2.z <= (q21 * q13)))) {\\\\n    ret_2.y = (tmpvar_3.y - (tmpvar_4.z * 0.5));\\\\n  };\\\\n  ret_2 = (abs((\\\\n    ((texture (sampler_blur1, uv_1).xyz * scale1) + bias1)\\\\n   - ret_2)) * 6.0);\\\\n  ret_2 = (ret_2 * 1.333);\\\\n  vec4 tmpvar_5;\\\\n  tmpvar_5.w = 1.0;\\\\n  tmpvar_5.xyz = ret_2;\\\\n  ret = tmpvar_5.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/martin + flexi - diamond cutter [prismaticvortex.com] - camille - i wish i wish i wish i was constrained.json\":\n/*!*****************************************************************************************************************************************!*\\\n  !*** ./presets/converted/martin + flexi - diamond cutter [prismaticvortex.com] - camille - i wish i wish i wish i was constrained.json ***!\n  \\*****************************************************************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":4,\\\"gammaadj\\\":1.98,\\\"decay\\\":0.5,\\\"echo_zoom\\\":1,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":3,\\\"wave_mode\\\":7,\\\"additivewave\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":1.157,\\\"wave_smoothing\\\":0.63,\\\"modwavealphastart\\\":0.71,\\\"modwavealphaend\\\":1.3,\\\"warpscale\\\":1.331,\\\"zoom\\\":0.9995,\\\"warp\\\":0.009,\\\"wave_r\\\":0.65,\\\"wave_g\\\":0.65,\\\"wave_b\\\":0.65,\\\"ob_size\\\":0.5,\\\"ob_r\\\":0.01,\\\"ib_size\\\":0.26,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0,\\\"mv_a\\\":0,\\\"b1x\\\":0.7,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":14,\\\"num_inst\\\":512,\\\"rad\\\":0.1026,\\\"tex_ang\\\":0.62832,\\\"r2\\\":1,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ma=ma+(above(bass,1)*3.1415*.01*bass);\\\\nma=ma-(above(treb,1)*3.1415*.01*treb);\\\\n\\\\nmx=mx+(.0002*cos(ma));\\\\nmy=my+(.0002*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\nrad=(bass+treb)/100;\\\\na=(above(bass+mid+treb,.8));\\\\nr=int(rand(100))/100;\\\\ng=int(rand(100))/100;\\\\nb=int(rand(100))/100;\\\\nr2=int(rand(100))/100;\\\\ng2=int(rand(100))/100;\\\\nb2=int(rand(100))/100;\\\\nr_border=int(rand(100))/100;\\\\ng_border=int(rand(100))/100;\\\\nb_border=int(rand(100))/100;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":23,\\\"num_inst\\\":1024,\\\"rad\\\":0.10262,\\\"ang\\\":0.43982,\\\"tex_ang\\\":0.62832,\\\"a\\\":0.5,\\\"r2\\\":1,\\\"g2\\\":0,\\\"a2\\\":0.5,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ma=ma+(above(bass,1)*3.1415*.05*bass);\\\\nma=ma-(above(mid,1)*3.1415*.05*mid);\\\\n\\\\nmx=mx+(.0001*cos(ma));\\\\nmy=my+(.0001*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\nrad=(bass+treb)/75;\\\\na=(above(bass+mid+treb,.1));\\\\nr=int(rand(100))/100;\\\\ng=int(rand(100))/100;\\\\nb=int(rand(100))/100;\\\\nr2=int(rand(100))/100;\\\\ng2=int(rand(100))/100;\\\\nb2=int(rand(100))/100;\\\\nr_border=int(rand(100))/100;\\\\ng_border=int(rand(100))/100;\\\\nb_border=int(rand(100))/100;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":14,\\\"additive\\\":1,\\\"num_inst\\\":256,\\\"rad\\\":0.20269,\\\"tex_ang\\\":0.62832,\\\"r2\\\":1,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ma=ma+(above(mid,1)*3.1415*.01*mid);\\\\nma=ma-(above(treb,1)*3.1415*.01*treb);\\\\n\\\\nmx=mx+(.0004*cos(ma));\\\\nmy=my+(.0004*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.3));\\\"},{\\\"baseVals\\\":{\\\"sides\\\":14,\\\"additive\\\":1,\\\"num_inst\\\":256,\\\"rad\\\":0.22389,\\\"tex_ang\\\":0.62832,\\\"r2\\\":1,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ma=ma+(above(bass,.5)*3.1415*.02*bass);\\\\nma=ma-(above(treb,.5)*3.1415*.02*treb);\\\\n\\\\nmx=mx+(.0008*cos(ma));\\\\nmy=my+(.0008*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.2));\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(bass,1)*3.1415*.01*bass);\\\\nma=ma-(above(treb,1)*3.1415*.01*treb);\\\\n\\\\nmx=mx+(.0002*cos(ma));\\\\nmy=my+(.0002*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.8));\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(bass,1)*3.1415*.05*bass);\\\\nma=ma-(above(mid,1)*3.1415*.05*mid);\\\\n\\\\nmx=mx+(.0001*cos(ma));\\\\nmy=my+(.0001*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.1));\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(mid,1)*3.1415*.01*mid);\\\\nma=ma-(above(treb,1)*3.1415*.01*treb);\\\\n\\\\nmx=mx+(.0004*cos(ma));\\\\nmy=my+(.0004*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.3));\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(bass,.5)*3.1415*.02*bass);\\\\nma=ma-(above(treb,.5)*3.1415*.02*treb);\\\\n\\\\nmx=mx+(.0008*cos(ma));\\\\nmy=my+(.0008*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.2));\\\"}],\\\"init_eqs_eel\\\":\\\"x1 = 2;\\\\ny1= 2;\\\\nz1 = 2;\\\",\\\"frame_eqs_eel\\\":\\\"// raytraced sphere code\\\\n\\\\nd = 20; // distance of the sphere, the farther you're away the more you'll see on the horizon\\\\nz = 4; // distance of the pane where the scene is projected on, wider distance = smaller apex angle of the camera, very small distances = fish eyes view\\\\n\\\\nzz = 1 + bass_att*0; // linear zoom\\\\n\\\\npi = asin(1)*2;\\\\npi2inv = 0.5/pi;\\\\nmaskangle = asin( 1/d);\\\\nq32 = maskangle; // hit = (cameras angle < mask_angle)\\\\nq31 = d;\\\\nq30 = z;\\\\nq29 = pi2inv;\\\\nq28 = pi;\\\\nq27 = 1/zz;\\\\n\\\\nv = 0.4;\\\\nj1 = j1*0.95 + sqr(bass*4)*v;\\\\nj2 = j2*0.95 + sqr(mid*4)*v;\\\\nj3 = j3*0.95 + sqr(treb*4)*v;\\\\n\\\\nn = n + j1*0.0152;\\\\nn1 = n1 + j2*0.0152;\\\\nn2 = n2 + j3*0.0152;\\\\n\\\\nvol=(bass+mid+treb)*0.25;\\\\nvol=vol;\\\\nq3=vol;\\\\nmtime = mtime+vol*0.01;\\\\nq1=mtime;\\\\n\\\\nzoom = zoom + 0.015*vol;\\\\n\\\\nw1 = n*0.01;    // solid angles to rotate the sphere in its origin\\\\nw2 = n1*0.01;\\\\nw3 = n2*0.01;\\\\n\\\\nq20 = cos(w1);\\\\nq21 = sin(w1);\\\\nq22 = cos(w2);\\\\nq23 = sin(w2);\\\\nq24 = cos(w3);\\\\nq25 = sin(w3);\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec2 tmpvar_1;\\\\n  tmpvar_1 = (((uv_orig * texsize.xy) * (texsize_noise_lq.zw * 1.5)) + rand_frame.xy);\\\\n  vec4 tmpvar_2;\\\\n  tmpvar_2.w = 1.0;\\\\n  tmpvar_2.xyz = ((texture (sampler_main, (\\\\n    mix (uv_orig, uv, vec2(((dot (texture (sampler_main, \\\\n      mix (uv_orig, uv, vec2(4.0, 4.0))\\\\n    ).xyz, vec3(0.32, 0.49, 0.29)) - dot (\\\\n      ((texture (sampler_blur2, mix (uv_orig, uv, vec2(-12.0, -12.0))).xyz * scale2) + bias2)\\\\n    , vec3(0.32, 0.49, 0.29))) * 12.0)))\\\\n   + \\\\n    (((texture (sampler_noise_lq, tmpvar_1) - 0.5).xy * texsize.zw) * 0.5)\\\\n  )).xyz + (\\\\n    (texture (sampler_noise_lq, tmpvar_1) - 0.5)\\\\n   * 0.006).xyz) + -0.0006);\\\\n  ret = tmpvar_2.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec2 uv_1;\\\\n  vec3 ret2_2;\\\\n  vec2 uv2_3;\\\\n  vec3 ret_4;\\\\n  uv2_3.y = uv.y;\\\\n  uv2_3.x = (1.0 - uv.x);\\\\n  uv2_3 = (0.5 + ((uv2_3 - 0.5) * 0.98));\\\\n  uv_1 = (0.5 + ((uv - 0.5) * 0.98));\\\\n  vec2 tmpvar_5;\\\\n  tmpvar_5 = (texsize.zw * 4.0);\\\\n  vec3 tmpvar_6;\\\\n  tmpvar_6 = (((texture (sampler_blur1, \\\\n    (uv_1 + (vec2(1.0, 0.0) * tmpvar_5))\\\\n  ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n    (uv_1 - (vec2(1.0, 0.0) * tmpvar_5))\\\\n  ).xyz * scale1) + bias1));\\\\n  vec3 tmpvar_7;\\\\n  tmpvar_7 = (((texture (sampler_blur1, \\\\n    (uv_1 + (vec2(0.0, 1.0) * tmpvar_5))\\\\n  ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n    (uv_1 - (vec2(0.0, 1.0) * tmpvar_5))\\\\n  ).xyz * scale1) + bias1));\\\\n  vec3 tmpvar_8;\\\\n  tmpvar_8.z = 0.0;\\\\n  tmpvar_8.x = dot (tmpvar_6, vec3(0.32, 0.49, 0.29));\\\\n  tmpvar_8.y = dot (tmpvar_7, vec3(0.32, 0.49, 0.29));\\\\n  vec4 tmpvar_9;\\\\n  tmpvar_9 = texture (sampler_noisevol_hq, ((vec3(0.05, 0.05, 0.0) * (\\\\n    ((uv_1.xyy + (tmpvar_8 * 0.5)) * texsize.xyy)\\\\n   * texsize_noisevol_hq.zww)) + (vec3(0.0, 0.0, 0.2) * time)));\\\\n  vec2 tmpvar_10;\\\\n  tmpvar_10.x = dot (tmpvar_6, vec3(0.32, 0.49, 0.29));\\\\n  tmpvar_10.y = dot (tmpvar_7, vec3(0.32, 0.49, 0.29));\\\\n  uv_1 = (uv_1 - (tmpvar_10 * 0.04));\\\\n  vec2 tmpvar_11;\\\\n  tmpvar_11.x = dot (((\\\\n    (texture (sampler_blur1, (uv2_3 + (vec2(1.0, 0.0) * tmpvar_5))).xyz * scale1)\\\\n   + bias1) - (\\\\n    (texture (sampler_blur1, (uv2_3 - (vec2(1.0, 0.0) * tmpvar_5))).xyz * scale1)\\\\n   + bias1)), vec3(0.32, 0.49, 0.29));\\\\n  tmpvar_11.y = dot (((\\\\n    (texture (sampler_blur1, (uv2_3 + (vec2(0.0, 1.0) * tmpvar_5))).xyz * scale1)\\\\n   + bias1) - (\\\\n    (texture (sampler_blur1, (uv2_3 - (vec2(0.0, 1.0) * tmpvar_5))).xyz * scale1)\\\\n   + bias1)), vec3(0.32, 0.49, 0.29));\\\\n  uv2_3 = (uv2_3 - (tmpvar_11 * 0.04));\\\\n  ret_4 = (abs((\\\\n    ((texture (sampler_main, uv_1).xyz + ((texture (sampler_blur1, uv_1).xyz * scale1) + bias1)) - ((texture (sampler_blur2, uv_1).xyz * scale2) + bias2))\\\\n   - \\\\n    ((texture (sampler_blur3, uv_1).xyz * scale3) + bias3)\\\\n  )) * (dot (tmpvar_9, vec4(0.32, 0.49, 0.29, 0.0)) * 3.0));\\\\n  ret2_2 = (abs((\\\\n    ((texture (sampler_main, uv2_3).xyz + ((texture (sampler_blur1, uv2_3).xyz * scale1) + bias1)) - ((texture (sampler_blur2, uv2_3).xyz * scale2) + bias2))\\\\n   - \\\\n    ((texture (sampler_blur3, uv2_3).xyz * scale3) + bias3)\\\\n  )) * (dot (tmpvar_9, vec4(0.32, 0.49, 0.29, 0.0)) * 3.0));\\\\n  ret2_2 = (0.5 - pow (ret2_2, vec3(0.5, 0.5, 0.5)));\\\\n  ret_4 = (pow (ret_4, vec3(0.5, 0.5, 0.5)) - (0.3 - ret2_2));\\\\n  vec4 tmpvar_12;\\\\n  tmpvar_12.w = 1.0;\\\\n  tmpvar_12.xyz = ret_4;\\\\n  ret = tmpvar_12.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/martin - The Bridge of Khazad-Dum.json\":\n/*!******************************************************************!*\\\n  !*** ./presets/converted/martin - The Bridge of Khazad-Dum.json ***!\n  \\******************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":4,\\\"gammaadj\\\":1.98,\\\"decay\\\":0.5,\\\"echo_zoom\\\":0.952,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":3,\\\"wave_mode\\\":4,\\\"additivewave\\\":1,\\\"wave_thick\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":0.527,\\\"wave_smoothing\\\":0.45,\\\"modwavealphastart\\\":0,\\\"modwavealphaend\\\":1.32,\\\"warpanimspeed\\\":1.459,\\\"warpscale\\\":2.007,\\\"zoom\\\":0.9999,\\\"warp\\\":0.01,\\\"sx\\\":0.9999,\\\"wave_r\\\":0.8,\\\"wave_g\\\":0.49,\\\"ob_size\\\":0.015,\\\"ob_b\\\":1,\\\"ib_size\\\":0.26,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":1.85,\\\"mv_r\\\":0.5,\\\"mv_g\\\":0.5,\\\"mv_b\\\":0.5,\\\"mv_a\\\":0,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"sides\\\":33,\\\"additive\\\":1,\\\"num_inst\\\":81,\\\"rad\\\":0.04896,\\\"tex_ang\\\":1.00531,\\\"tex_zoom\\\":1.53117,\\\"g\\\":1,\\\"b\\\":1,\\\"a\\\":0,\\\"g2\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\\ntrel = time/8;\\\\nk1 = instance/num_inst;\\\\nk2 = k1 + trel - int(k1+trel);\\\\n\\\\ny0 = k2+.01 ;\\\\n\\\\nxwidth = .1*(cos(6*k1)+3); //breite\\\\nxofs = .1*cos(k2*6+trel)*y0;\\\\nx = .5 + .4*xwidth*(.2+y0)*sin(k1*1383*xwidth) + xofs;\\\\n//xwidth in der letzten Klammer : Test\\\\n\\\\ny = y0;\\\\n\\\\nbright = 1-sqr(y0); \\\\na = max(bright,0); a2 = 0;\\\\nrad = .4*y0+.1 - .0*sin(k1*954);\\\\n\\\\nr = .0; g = 0; b = .0;\\\\nr2 = 0; g2 = 0; b2= .48; //## rot mit ampl. mod !\\\\nadditive = 1; ///sonst andere farben im warp-s gestoert\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":12,\\\"additive\\\":1,\\\"num_inst\\\":571,\\\"x\\\":0.26,\\\"y\\\":0.2,\\\"rad\\\":0.39317,\\\"tex_zoom\\\":0.9355,\\\"g2\\\":0,\\\"a2\\\":0.2,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"mov1 = q1;\\\\nRotMode = q3;\\\\nburst = q10;\\\\ncopies = q14;\\\\ncopy = (instance%copies)/copies;\\\\nk1 = int(instance/copies)*copies/num_inst;\\\\nk1 = int(k1*burst)/burst+k1/burst;\\\\n\\\\nmov1 = mov1 + k1 -copy*q2;//dt\\\\nmov1 = mov1 - int(mov1);\\\\n\\\\nRotMode = RotMode - copy*q4;\\\\nrota = mov1 * RotMode*q5*2 ;\\\\nmov1 = mov1*(1-RotMode) + RotMode*(.5+.025*k1);\\\\n\\\\nmov1 = pow(mov1,.9); //Schneller bei t=0;\\\\n\\\\nTht = sin(k1*k1*123.2)*(.2 + RotMode*.0);\\\\nPhi = k1*1613.3+rota;\\\\nv0 = (1.0 + .3*cos(k1*13234.7))*q5;\\\\n\\\\nz0 = q18/q5; //proximity\\\\n\\\\nt0 = .4;\\\\nspur = (mov1-t0) * above(mov1-t0,0)*q15 ;\\\\npy = spur*sin(copy*6.28);\\\\npx = spur*cos(copy*6.28);\\\\n\\\\nfov = z0*2; //kein vol hier, sonst y-skal daneben\\\\nox = (mov1-q19)*v0*sin(Tht) * cos(Phi); //### -.5 bis .5\\\\noy = mov1*v0*(1-mov1)*cos(2*Tht) -.25;\\\\noz = mov1*v0*sin(Tht)*sin(Phi); \\\\n\\\\nox = ox +  (k1-.5)*q17 +px; \\\\noy = oy -py;\\\\noz = oz +py*3;\\\\n\\\\n//flim = below(((ox+oy+oz)*800)%32,q13-.1); //ctrl\\\\n//flim = q13/(((ox+oy+oz)*600)%16+1); //ctrl\\\\nrad = .025*z0/(oz+z0)*(1-mov1*.5);\\\\n\\\\nx = .5 + fov*ox/(oz+z0);\\\\ny = .5 + fov*oy/(oz+z0);\\\\nvis = above(mov1,q11)*below(mov1,q12)*above(oz,-z0);\\\\n\\\\na = vis*.7/sqrt(copies)*(1+above(spur,0));\\\\na2 = 0.;\\\\ng = flim;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":13,\\\"additive\\\":1,\\\"num_inst\\\":212,\\\"x\\\":0.65,\\\"y\\\":0.38,\\\"rad\\\":1.26467,\\\"tex_zoom\\\":0.73678,\\\"g\\\":1,\\\"a\\\":0.3,\\\"r2\\\":1,\\\"g2\\\":0,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_b\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"//q25 = time/4;\\\\n//trel = 2* (q25/2-int(q25/2));\\\\ntrel = q25;\\\\ncopies = 1;\\\\ncopy = (instance%copies)/copies;\\\\nk1 = int(instance/copies)*copies/num_inst;\\\\nk2 = k1 + .5;\\\\ntrel = trel ;\\\\nt0 = .5; //do not change\\\\n\\\\nphase = above(trel,t0);\\\\nmov1 = bnot(phase)* (t0-trel + .01*k1);\\\\nmov2 = phase * (trel-t0); //####\\\\n//mov2 = pow(mov2,.8);\\\\nstray = 1.2-phase;\\\\n\\\\nTht = 3.14*sin(1234.2*k1+time*bnot(phase)) * stray ;\\\\nPhi = 3245.1*k1;\\\\n\\\\nsize0 = .02;\\\\nox = mov1*q27 + sin(Tht)*cos(phi)* (size0+mov2*(2+k1));\\\\noy = mov1*12 + cos(Tht)* (size0+4*mov2*k2)*(1-mov2*k2)/2;\\\\noz = mov1*8 + sin(Tht)*sin(phi)* (size0+mov2*2*(2+k1));\\\\n\\\\nz0 = 1;\\\\nrad = .03 / (oz+z0)/(1+trel*rand(100)/50);\\\\n\\\\nx = .5 + ox/(oz+z0);\\\\ny = q29+.2+ oy/(oz+z0);\\\\n\\\\na = .1*bnot(phase)+phase*max(0,1-mov2*0)*above(oz+z0,0)*.8; \\\"},{\\\"baseVals\\\":{\\\"sides\\\":14,\\\"additive\\\":1,\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"num_inst\\\":31,\\\"x\\\":0.75,\\\"y\\\":0.6,\\\"rad\\\":0.01,\\\"tex_zoom\\\":0.3357,\\\"g\\\":1,\\\"a\\\":0.5,\\\"r2\\\":1,\\\"g2\\\":0,\\\"border_r\\\":0.2,\\\"border_g\\\":0.7,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"samples\\\":75,\\\"sep\\\":20,\\\"usedots\\\":1,\\\"additive\\\":1,\\\"scaling\\\":7.858,\\\"smoothing\\\":0.1,\\\"g\\\":0,\\\"b\\\":0,\\\"a\\\":0.2,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"usedots\\\":1,\\\"thick\\\":1,\\\"scaling\\\":0.89152,\\\"smoothing\\\":0.82,\\\"a\\\":0.1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"scaling\\\":0.89152,\\\"smoothing\\\":0.82,\\\"r\\\":0,\\\"g\\\":0.2,\\\"b\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"spectrum\\\":1,\\\"usedots\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"t0a = time; t0 = time+.5;\\\\nspb_ = .5; ;\\\\nvolb = .5; volx = .5;\\\\nvol_= 1; index = 0; mov1 = 0;\\\",\\\"frame_eqs_eel\\\":\\\"dec_med = pow (0.85, 30/fps); dec_slow = pow (0.95, 30/fps);\\\\nvol = (bass+med+treb)/1.5; vol_ = vol_*dec_slow + (1-dec_slow)*vol;\\\\n\\\\nis_beat = above(vol, .1+vol_+2*peak) * above (time, t0+spb_*.45);\\\\nt0a  = if(is_beat,t0,t0a); t0 = if(is_beat,time,t0);\\\\npeak = if(is_beat,vol,peak*dec_med);\\\\nindex = (index + is_beat) %128;\\\\nspb_ = if(is_beat,spb_ *.9 +.1*min(t0-t0a + .01,2), spb_);\\\\n\\\\nq20 = vol_;\\\\nq21 = above(vol,2.7*vol_);\\\\nq22 = max(0,peak-.0)+.01;\\\\nhpeak = hpeak*dec_med + (1-dec_med)*q21;\\\\nq23 = hpeak * (1+rand(8));\\\\nq24 = is_beat;\\\\nvolb = bnot(q24)*volb + q24*vol_; //# vol oder vol_ ?\\\\nvolx = volx + .2/fps*max(min(volb-volx,1),-1)*bnot(RotMode);\\\\n\\\\n// *********** CENTRAL TIMELINE **************\\\\nrotmode = max(min(sin(mov1/2.4-1.5)*4-3,1),0); //####\\\\nstop = if(bnot(stop),bnot(index%24),below(lo,1))*bnot(rotmode);\\\\n//tmp = status%16;\\\\nspread = if (below(lo,1),spread,rand(2)*rand(12)/20);\\\\ncopies = if (below(lo,1),copies,3+rand(2)*rand(8));\\\\nspur  = if (below(lo,1),spur, above(copies,5)*.1);\\\\nbursts = if (below(lo,1),bursts,1+rand(2)*rand(6));\\\\nxbase = if (below(lo,1),xbase,rand(2)*(rand(10)/10-.5));\\\\nvs0 = if (is_beat * bnot(index%77),rand(5)/4-.7,vs0);\\\\nvshift =  vshift + 3/fps*max(min((vs0-vshift),.04),-.04);\\\\n//*********** SMOOTH MOVEMENTS q1 - q8 for SHAPE2 ********\\\\n//FONTAENE\\\\nspeed = .15/fps/spb_;\\\\ntmp = mov1; mov1 = mov1+speed; q2 = mov1-tmp; q1 = mov1;\\\\n\\\\n//ROTATION\\\\n//evtl q5 mit rotmode fixieren statt volx blockieren\\\\ntmp = RotMode; q3 = RotMode; q4 = RotMode-tmp;\\\\n\\\\n//VOLUME\\\\ntmp = volx; q5 = volx; q6 = q5-tmp; //nicht aendern waehrend Rotation\\\\n\\\\n//********* SWITCHES SHAPE2 *************\\\\nq10 = bursts; //num bursts\\\\nlo = if(stop,lo+speed,0); //ident. wie bei mov 1!!\\\\nhi = if(above(lo,1),0,hi+speed); //ident. wie bei mov 1!!\\\\nq11 = lo; //fade out\\\\nq12 = hi;\\\\nq13 = sqrt(q22)*0; //blink effect, ca. 0..16\\\\nq14 = copies; //copies - noch implementieren\\\\nq15 = spur*(1-RotMode); //Ampl. multiple spurs; nur mit >8 copies !\\\\nq16 = 0; //reserved for spur start\\\\nq17 = spread * (1-rotmode); //hor. spread, max. ca. 0.4\\\\nq18 = 1/min(max(sin(mov1/2)*10,1),4); //proximity - smaller values: closer;\\\\nq19 = xbase;\\\\n//********* CONTROL PARAMETERS SHAPE3 *************\\\\nxtime = if (stop*q21*above(xtime,2),0,xtime+.2/fps); //impact\\\\nq25 = xtime;\\\\nq26 = if (below(xtime,.55),pow(32,-sqr(xtime-.55)*512),pow(2,-sqr(xtime-.55)*3));\\\\nq27 = sin(time/29)*4; //x-direction impact\\\\n\\\\n//********* GENERAL CONTROL PARAMETERS ***************\\\\nwind = wind+.5/fps * (volx-1.5);\\\\nq28 = wind;//wind direction - warp shader\\\\nq29 = vshift ;// in warp+comp+impact shape\\\\nq30 = max(sin(mov1/2.2)*sin(time/7),0)+q26;// front cloud dens. - comp.\\\\nq31 = q5*2-2 + sin(time/17); //back cloud lighting - comp shader\\\\nq32 = 3+2*sin(time/27); //back cloud density - comp shader\\\\n\\\\nmonitor = vshift;;\\\",\\\"pixel_eqs_eel\\\":\\\"zoom = 1;\\\\ndy = -.00;\\\\nwarp =.0;\\\",\\\"warp\\\":\\\"mat2 ofs;\\\\nfloat xlat_mutablegreen;\\\\nfloat xlat_mutablek1;\\\\nfloat xlat_mutablered;\\\\nvec2 xlat_mutableuv2;\\\\nfloat xlat_mutablewave;\\\\nfloat xlat_mutablezv;\\\\n shader_body { \\\\n  mat2 tmpvar_1;\\\\n  tmpvar_1[uint(0)].x = texsize.z;\\\\n  tmpvar_1[uint(0)].y = 0.0;\\\\n  tmpvar_1[1u].x = 0.0;\\\\n  tmpvar_1[1u].y = texsize.w;\\\\n  ofs = (tmpvar_1 * 4.0);\\\\n  float delta_2;\\\\n  float ky_3;\\\\n  vec2 tmpvar_4;\\\\n  tmpvar_4.x = (uv.x - 0.5);\\\\n  tmpvar_4.y = ((uv.y - 0.5) + q29);\\\\n  vec2 v_5;\\\\n  v_5.x = ofs[0].x;\\\\n  v_5.y = ofs[1].x;\\\\n  vec2 v_6;\\\\n  v_6.x = ofs[0].x;\\\\n  v_6.y = ofs[1].x;\\\\n  vec2 v_7;\\\\n  v_7.x = ofs[0].y;\\\\n  v_7.y = ofs[1].y;\\\\n  vec2 v_8;\\\\n  v_8.x = ofs[0].y;\\\\n  v_8.y = ofs[1].y;\\\\n  vec2 tmpvar_9;\\\\n  tmpvar_9.x = (texture (sampler_main, (uv + v_5)) - texture (sampler_main, (uv - v_6))).x;\\\\n  tmpvar_9.y = (texture (sampler_main, (uv + v_7)) - texture (sampler_main, (uv - v_8))).x;\\\\n  xlat_mutablered = (0.5 * texture (sampler_main, (uv - (0.004 * tmpvar_9))).x);\\\\n  xlat_mutablered = (xlat_mutablered + (0.5 * texture (sampler_main, uv).x));\\\\n  vec2 tmpvar_10;\\\\n  tmpvar_10.x = tmpvar_4.x;\\\\n  tmpvar_10.y = (0.0078125 * (float(\\\\n    int((tmpvar_4.y * 128.0))\\\\n  ) + abs(\\\\n    (fract((tmpvar_4.y * 128.0)) - 0.5)\\\\n  )));\\\\n  vec2 tmpvar_11;\\\\n  tmpvar_11 = (tmpvar_10 * 4.0);\\\\n  ky_3 = clamp ((-0.5 - tmpvar_11.y), 0.0, 1.0);\\\\n  xlat_mutablek1 = (abs((\\\\n    fract((tmpvar_11.x * 2.0))\\\\n   - 0.5)) * 8.0);\\\\n  xlat_mutablek1 = (xlat_mutablek1 - sign(xlat_mutablek1));\\\\n  delta_2 = (0.1 + (rand_preset * 0.05)).x;\\\\n  xlat_mutablek1 = (xlat_mutablek1 - ((\\\\n    (4.0 * sign(xlat_mutablek1))\\\\n   * ky_3) * ky_3));\\\\n  ky_3 = clamp ((ky_3 - delta_2), 0.0, 1.0);\\\\n  xlat_mutablek1 = (xlat_mutablek1 - ((\\\\n    (8.0 * sign(xlat_mutablek1))\\\\n   * ky_3) * ky_3));\\\\n  ky_3 = clamp ((ky_3 - delta_2), 0.0, 1.0);\\\\n  xlat_mutablek1 = (xlat_mutablek1 - ((\\\\n    (12.0 * sign(xlat_mutablek1))\\\\n   * ky_3) * ky_3));\\\\n  ky_3 = clamp ((ky_3 - delta_2), 0.0, 1.0);\\\\n  xlat_mutablek1 = (xlat_mutablek1 - ((\\\\n    (16.0 * sign(xlat_mutablek1))\\\\n   * ky_3) * ky_3));\\\\n  ky_3 = clamp ((ky_3 - delta_2), 0.0, 1.0);\\\\n  float tmpvar_12;\\\\n  tmpvar_12 = clamp (xlat_mutablek1, -1.6, 1.6);\\\\n  xlat_mutablek1 = tmpvar_12;\\\\n  xlat_mutablegreen = (cos((tmpvar_12 * 2.0)) - 0.1);\\\\n  xlat_mutablewave = ((sin(\\\\n    ((q1 * 8.0) - (uv.x * 6.0))\\\\n  ) / 2.0) * q3);\\\\n  xlat_mutablewave = ((xlat_mutablewave * float(\\\\n    (xlat_mutablewave >= 0.0)\\\\n  )) + (q30 * 0.02));\\\\n  xlat_mutablered = (xlat_mutablered + ((\\\\n    (xlat_mutablewave / abs(sin((\\\\n      (1.0/(tmpvar_12))\\\\n     + \\\\n      (q1 / 8.0)\\\\n    ))))\\\\n   * xlat_mutablegreen) * ky_3));\\\\n  xlat_mutablezv = ((time * 0.08) + (0.2 * sin(\\\\n    ((uv * 16.0) + time)\\\\n  ))).x;\\\\n  vec2 tmpvar_13;\\\\n  tmpvar_13.x = q28;\\\\n  tmpvar_13.y = (0.2 * time);\\\\n  xlat_mutableuv2 = ((tmpvar_4 * 2.0) + tmpvar_13);\\\\n  vec3 tmpvar_14;\\\\n  tmpvar_14.xy = xlat_mutableuv2;\\\\n  tmpvar_14.z = xlat_mutablezv;\\\\n  vec3 tmpvar_15;\\\\n  tmpvar_15.xy = (xlat_mutableuv2 * vec2(2.0, 2.0));\\\\n  tmpvar_15.z = (xlat_mutablezv * 2.0);\\\\n  vec3 tmpvar_16;\\\\n  tmpvar_16.xy = (xlat_mutableuv2 * vec2(4.0, 4.0));\\\\n  tmpvar_16.z = (xlat_mutablezv * 3.0);\\\\n  vec3 tmpvar_17;\\\\n  tmpvar_17.xy = (xlat_mutableuv2 * vec2(8.0, 8.0));\\\\n  tmpvar_17.z = (xlat_mutablezv * 7.0);\\\\n  xlat_mutableuv2 = (tmpvar_4 + ((\\\\n    ((texture (sampler_noisevol_hq, tmpvar_14).z + (texture (sampler_noisevol_hq, tmpvar_15).z / 2.0)) + (texture (sampler_noisevol_hq, tmpvar_16).z / 4.0))\\\\n   + \\\\n    (texture (sampler_noisevol_hq, tmpvar_17).z / 8.0)\\\\n  ) * 0.1));\\\\n  vec3 tmpvar_18;\\\\n  tmpvar_18.x = xlat_mutablered;\\\\n  tmpvar_18.y = xlat_mutablegreen;\\\\n  tmpvar_18.z = ((1.0 + xlat_mutableuv2.y) * sqrt(dot (xlat_mutableuv2, xlat_mutableuv2)));\\\\n  vec4 tmpvar_19;\\\\n  tmpvar_19.w = 1.0;\\\\n  tmpvar_19.xyz = ((tmpvar_18 * 0.8) - 0.005);\\\\n  ret = tmpvar_19.xyz;\\\\n }\\\",\\\"comp\\\":\\\"float trel;\\\\nfloat vshift;\\\\nvec3 xlat_mutableret1;\\\\nvec2 xlat_mutablers;\\\\nvec2 xlat_mutablers0;\\\\nfloat xlat_mutablesmoke;\\\\nfloat xlat_mutablesmoke2;\\\\nvec2 xlat_mutableuv_l;\\\\nfloat xlat_mutablew;\\\\nfloat xlat_mutablez;\\\\n shader_body { \\\\n  trel = (time / 2.0);\\\\n  vshift = (0.5 - q29);\\\\n  vec2 tmpvar_1;\\\\n  tmpvar_1.x = rand_preset.x;\\\\n  tmpvar_1.y = ((-0.1 - (rand_preset.y / 2.0)) + vshift);\\\\n  vec2 tmpvar_2;\\\\n  tmpvar_2.y = 0.0;\\\\n  tmpvar_2.x = (0.005 * time);\\\\n  xlat_mutableuv_l = (uv + tmpvar_2);\\\\n  vec2 tmpvar_3;\\\\n  vec2 tmpvar_4;\\\\n  tmpvar_4 = (uv - 0.5);\\\\n  tmpvar_3 = sin(((\\\\n    (tmpvar_4 * aspect.xy)\\\\n   + 0.5) - (tmpvar_1 * aspect.xy)));\\\\n  vec2 tmpvar_5;\\\\n  tmpvar_5 = fract(uv);\\\\n  vec3 tmpvar_6;\\\\n  tmpvar_6 = vec3((texture (sampler_fc_main, tmpvar_5).x + (2.0 * (\\\\n    (texture (sampler_blur2, tmpvar_5).xyz * scale2)\\\\n   + bias2).x)));\\\\n  vec3 tmpvar_7;\\\\n  tmpvar_7.x = tmpvar_6.x;\\\\n  tmpvar_7.y = pow (tmpvar_6.x, 2.1);\\\\n  tmpvar_7.z = pow (tmpvar_6.x, 4.0);\\\\n  xlat_mutablew = ((uv.y - (\\\\n    ((dot (texture (sampler_noise_hq, vec2((xlat_mutableuv_l.x / 6.0))), vec4(0.32, 0.49, 0.29, 0.0)) + uv.x) - 0.5)\\\\n   / 4.0)) - vshift);\\\\n  xlat_mutablez = (0.2 / xlat_mutablew);\\\\n  float tmpvar_8;\\\\n  tmpvar_8 = clamp ((-0.2 - (\\\\n    (8.0 * q5)\\\\n   * xlat_mutablew)), 0.0, 1.0);\\\\n  xlat_mutablers0.x = (((uv.x - 0.5) * (1.0 + \\\\n    abs(xlat_mutablez)\\\\n  )) * 2.0);\\\\n  xlat_mutablers0.y = xlat_mutablez;\\\\n  xlat_mutablers0 = (xlat_mutablers0 * ((4.0 * \\\\n    float((xlat_mutablez <= 0.0))\\\\n  ) + 1.0));\\\\n  vec2 tmpvar_9;\\\\n  tmpvar_9.x = 0.0;\\\\n  tmpvar_9.y = (1.5 + xlat_mutablew);\\\\n  vec2 x_10;\\\\n  x_10 = (xlat_mutablers0 - tmpvar_9);\\\\n  float tmpvar_11;\\\\n  tmpvar_11 = ((q26 / sqrt(\\\\n    dot (x_10, x_10)\\\\n  )) / 4.0);\\\\n  xlat_mutablers0 = (xlat_mutablers0 * (1.0 + (tmpvar_11 * tmpvar_11)));\\\\n  xlat_mutablers.x = (xlat_mutablers0 * 2.0).x;\\\\n  xlat_mutablers.y = (xlat_mutablers0.y + (trel * 0.5));\\\\n  float tmpvar_12;\\\\n  tmpvar_12 = (texture (sampler_main, uv).y * tmpvar_8);\\\\n  vec3 tmpvar_13;\\\\n  tmpvar_13.xy = (xlat_mutablers * 2.0);\\\\n  tmpvar_13.z = (0.2 * trel);\\\\n  float tmpvar_14;\\\\n  tmpvar_14 = dot (((\\\\n    ((2.0 * clamp ((texture (sampler_noisevol_hq, \\\\n      (tmpvar_13 * float((xlat_mutablez >= 0.0)))\\\\n    ) - 0.2), 0.0, 1.0)).xyz * clamp ((texture (sampler_noise_hq, (xlat_mutablers / 16.0)) - 0.5), 0.0, 1.0).x)\\\\n   / \\\\n    sqrt(abs(xlat_mutablez))\\\\n  ) + tmpvar_11), vec3(0.32, 0.49, 0.29));\\\\n  vec3 tmpvar_15;\\\\n  tmpvar_15.x = tmpvar_14;\\\\n  tmpvar_15.y = pow (tmpvar_14, 2.1);\\\\n  tmpvar_15.z = pow (tmpvar_14, 6.0);\\\\n  xlat_mutableret1 = (((\\\\n    ((uv.y * (1.0 + q23)) + (0.1 / sqrt(dot (tmpvar_3, tmpvar_3))))\\\\n   * vec3(0.1, 0.1, 0.2)) * tmpvar_8) + (clamp (tmpvar_15, 0.0, 1.0) * (1.0 - \\\\n    clamp ((-1.0 - (12.0 * xlat_mutablew)), 0.0, 1.0)\\\\n  )));\\\\n  xlat_mutableret1 = (xlat_mutableret1 * clamp ((1.0 - \\\\n    (tmpvar_12 * 8.0)\\\\n  ), 0.0, 1.0));\\\\n  vec4 tmpvar_16;\\\\n  tmpvar_16 = texture (sampler_main, fract((tmpvar_4 + 0.5)));\\\\n  xlat_mutablesmoke = (tmpvar_16.z * (tmpvar_16.z * q5));\\\\n  xlat_mutableret1 = (xlat_mutableret1 * clamp ((1.0 - \\\\n    ((xlat_mutablesmoke * q32) * tmpvar_8)\\\\n  ), 0.0, 1.0));\\\\n  xlat_mutablesmoke2 = (texture (sampler_main, ((tmpvar_4 / 2.0) + 0.5)).z * q30);\\\\n  xlat_mutableret1 = (xlat_mutableret1 + (clamp (tmpvar_7, 0.0, 1.0) - (\\\\n    ((xlat_mutablez * clamp ((xlat_mutablesmoke + \\\\n      (xlat_mutablew * q31)\\\\n    ), 0.0, 1.0)) * vec3(1.0, 0.4, 0.1))\\\\n   * tmpvar_8)));\\\\n  float tmpvar_17;\\\\n  tmpvar_17 = clamp (((\\\\n    (tmpvar_12 * xlat_mutablez)\\\\n   * xlat_mutablez) / 16.0), 0.0, 1.0);\\\\n  vec3 tmpvar_18;\\\\n  tmpvar_18.x = tmpvar_17;\\\\n  tmpvar_18.y = pow (tmpvar_17, 2.1);\\\\n  tmpvar_18.z = pow (tmpvar_17, 6.0);\\\\n  xlat_mutableret1 = (xlat_mutableret1 + clamp (tmpvar_18, 0.0, 1.0));\\\\n  xlat_mutableret1 = (xlat_mutableret1 * clamp ((\\\\n    (((dot (texture (sampler_noise_mq, vec2(\\\\n      ((xlat_mutableuv_l.x / 4.0) + (0.02 * trel))\\\\n    )), vec4(0.32, 0.49, 0.29, 0.0)) / 6.0) - uv.y) + 0.8)\\\\n   * 32.0), 0.0, 1.0));\\\\n  vec3 tmpvar_19;\\\\n  tmpvar_19.x = xlat_mutablesmoke2;\\\\n  tmpvar_19.y = pow (xlat_mutablesmoke2, 2.1);\\\\n  tmpvar_19.z = pow (xlat_mutablesmoke2, 6.0);\\\\n  xlat_mutableret1 = ((xlat_mutableret1 * clamp (\\\\n    (1.0 - xlat_mutablesmoke2)\\\\n  , 0.0, 1.0)) + clamp (tmpvar_19, 0.0, 1.0));\\\\n  vec4 tmpvar_20;\\\\n  tmpvar_20.w = 1.0;\\\\n  tmpvar_20.xyz = (1.0 - exp((\\\\n    -(xlat_mutableret1)\\\\n   * 2.0)));\\\\n  ret = tmpvar_20.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/martin - angel flight.json\":\n/*!******************************************************!*\\\n  !*** ./presets/converted/martin - angel flight.json ***!\n  \\******************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":0,\\\"gammaadj\\\":1.980001,\\\"decay\\\":0.5,\\\"echo_zoom\\\":0.999998,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":3,\\\"wave_mode\\\":7,\\\"wave_dots\\\":1,\\\"wave_thick\\\":1,\\\"wave_brighten\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":0.39158,\\\"wave_scale\\\":0.01,\\\"wave_smoothing\\\":0.504,\\\"wave_mystery\\\":-1,\\\"modwavealphastart\\\":0.71,\\\"modwavealphaend\\\":1.3,\\\"warpanimspeed\\\":1.4595,\\\"warpscale\\\":2.0067,\\\"zoom\\\":0.9999,\\\"warp\\\":0.01,\\\"sx\\\":0.9999,\\\"wave_r\\\":0.7,\\\"wave_g\\\":0,\\\"ob_r\\\":1,\\\"ob_g\\\":1,\\\"ob_b\\\":1,\\\"ib_size\\\":0.26,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0,\\\"mv_r\\\":0.5,\\\"mv_g\\\":0.5,\\\"mv_b\\\":0.5,\\\"mv_a\\\":0,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"textured\\\":1,\\\"x\\\":0.3,\\\"rad\\\":0.379365,\\\"tex_ang\\\":0.628319,\\\"tex_zoom\\\":4.141529,\\\"r\\\":0.3,\\\"g\\\":0.7,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":0.7,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = q1/6 + .5;\\\\ny = q2/6 + .5;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":5,\\\"textured\\\":1,\\\"rad\\\":0.986,\\\"tex_ang\\\":3.14159,\\\"tex_zoom\\\":0.99979,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ang =sin(time/65) ;// ang + (bass*.2) + (time*.4);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":5,\\\"additive\\\":1,\\\"x\\\":0.9,\\\"rad\\\":0.22613,\\\"g\\\":0.6,\\\"g2\\\":0,\\\"b2\\\":0.4,\\\"a2\\\":0.3,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"t_rel = 5*time;\\\\nt1 = int(t_rel);\\\",\\\"frame_eqs_eel\\\":\\\"dx =  rand(1000)/1000-.5;\\\\ndy =  rand(1000)/1000-.5;\\\\n\\\\nx = .5 + dx*(1-q22/4);\\\\ny = .5 + dy*(1-q22/4);\\\\n\\\\nang = time;\\\\n\\\\na = 1;\\\\nrad = .1*q24+0.08 +q22/40;\\\"},{\\\"baseVals\\\":{\\\"additive\\\":1,\\\"textured\\\":1,\\\"x\\\":0.51,\\\"rad\\\":0.249779,\\\"tex_ang\\\":0.125664,\\\"tex_zoom\\\":5.536972,\\\"r\\\":0.6,\\\"g\\\":0.3,\\\"b\\\":0.4,\\\"a\\\":0.6,\\\"g2\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"a = max(q22-2,0);\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"samples\\\":256,\\\"spectrum\\\":1,\\\"usedots\\\":1,\\\"scaling\\\":0.5033,\\\"g\\\":0.6,\\\"b\\\":0.4},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\\nt_abs = sample;\\\\nt_rel = sample-time/1;\\\\nampl = time;\\\\n\\\\nox = ampl*10*sin (t_abs*68);\\\\noy = ampl*10*cos (t_abs*28);\\\\noz = ampl*10*cos (t_abs*128);\\\\n\\\\n\\\\nr = 1;\\\\ng = .5 ;\\\\nb = 1 ;\\\\na=q26/18;\\\\n\\\\nxang = t1 ;\\\\nyang = t1*2;\\\\nzang = t1;\\\\nfov = 0.12;\\\\n\\\\n\\\\n// Rotation um x,y,z\\\\n\\\\nmx = ox*cos(zang) - oy*sin(zang);\\\\nmy = ox*sin(zang) + oy*cos(zang);\\\\n\\\\nox = mx;\\\\noy = my;\\\\nmx = ox*cos(yang) + oz*sin(yang);\\\\nmz = -ox*sin(yang) + oz*cos(yang);\\\\nox = mx;\\\\noz = mz;\\\\nmy = oy*cos(xang) - oz*sin(xang);\\\\nmz = oy*sin(xang) + oz*cos(xang);\\\\noy = my;\\\\noz = mz;\\\\n\\\\noz = oz - 6;\\\\nx = ox*fov/oz +0.5;\\\\n//x = (x-.5)*0.75 + 0.5;\\\\ny = oy*fov/oz + 0.5;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"a = max(sin(time/8)-.5,0);\\\\nr = .4; g = .2; b = .7;\\\\n\\\\nx = sample + .01*cos(sample*243+time);\\\\ny = .5+.5*sin(time/13) + .02*sin(sample*143);\\\\na = .7 ;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"dec_med = pow (0.9, 30/fps);\\\\ndec_slow = pow (0.99, 30/fps);\\\\nbeat = max (max (bass, mid), treb);\\\\navg = avg*dec_slow + beat*(1-dec_slow);\\\\nis_beat = above(beat, .5+avg+peak) * above (time, t0+.2);\\\\nt0 = is_beat*time + (1-is_beat)*t0;\\\\npeak = is_beat * beat + (1-is_beat)*peak*dec_med;\\\\nindex = (index + is_beat) %8;\\\\nindex2 = (index2 + is_beat*bnot(index))%4;\\\\nindex3 = (index3 + is_beat*bnot(index)*bnot(index2))%3;\\\\n\\\\n\\\\nq20 = avg;\\\\nq21 = beat;\\\\nq22 = peak;\\\\nq23 = index;\\\\nq24 = is_beat;\\\\nq26 = bass + mid + treb;\\\\n\\\\n//k1 =  is_beat*bnot(index)*bnot(index2);\\\\n\\\\nk1 =  is_beat*equal(index,0);\\\\np1 =  k1*(p1+1) + (1-k1)*p1;\\\\np2 = dec_slow * p2+ (1-dec_slow)*p1;\\\\nrott = p2 * 3.14159265359/2;\\\\n\\\\nq27 = 8-index;\\\\nq28 = .5 + sin(time/7)/10;\\\\nq29 = index4;\\\\n\\\\nmv_a = 0.2;\\\\nt_rel = time/3;\\\\nwave_a = max(sin(time/8)-.5,0);\\\\nwave_a = 0;\\\\nwave_x = .5+.5*sin(time/13);\\\\n\\\\nq1 = cos(rott);\\\\nq2 = sin(rott);\\\\nq3 = -q2;\\\\nq4 = q1;\\\\n\\\\nmovez = movez + .01 * 30/fps ;\\\\nq29 = movez;\\\\n\\\\n\\\\nzoom = 1;\\\\nrot = .0;\\\\ndx = .003\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec2 tmpvar_1;\\\\n  tmpvar_1 = (((uv - vec2(0.5, 0.5)) * texsize.xy) * 0.03);\\\\n  vec4 tmpvar_2;\\\\n  tmpvar_2.w = 1.0;\\\\n  tmpvar_2.xyz = ((0.99 * texture (sampler_main, (uv + \\\\n    (((clamp (\\\\n      (sin(tmpvar_1) / cos(tmpvar_1))\\\\n    , vec2(-12.0, -12.0), vec2(12.0, 12.0)) * cos(\\\\n      (tmpvar_1.yx * tmpvar_1.yx)\\\\n    )) * texsize.zw) * 12.0)\\\\n  )).xyz) - 0.01);\\\\n  ret = tmpvar_2.xyz;\\\\n }\\\",\\\"comp\\\":\\\"vec3 xlat_mutableret1;\\\\nvec2 xlat_mutableuv2;\\\\n shader_body { \\\\n  vec2 uv_1;\\\\n  float inten_2;\\\\n  float dist_3;\\\\n  uv_1 = (uv - 0.5);\\\\n  uv_1 = (uv_1 * aspect.xy);\\\\n  dist_3 = (1.0 - fract((0.25 + q29)));\\\\n  inten_2 = (sqrt(dist_3) * (1.0 - (dist_3 * dist_3)));\\\\n  xlat_mutableret1 = max (vec3(0.0, 0.0, 0.0), (texture (sampler_main, fract(\\\\n    (((2.0 * uv_1) * dist_3) + 0.5)\\\\n  )).xyz * inten_2));\\\\n  xlat_mutableuv2.x = -(uv_1.y);\\\\n  xlat_mutableuv2.y = uv_1.x;\\\\n  dist_3 = (1.0 - fract((0.5 + q29)));\\\\n  inten_2 = (sqrt(dist_3) * (1.0 - (dist_3 * dist_3)));\\\\n  xlat_mutableret1 = max (xlat_mutableret1, (texture (sampler_main, fract(\\\\n    (((2.0 * xlat_mutableuv2) * dist_3) + 0.5)\\\\n  )).xyz * inten_2));\\\\n  dist_3 = (1.0 - fract((0.75 + q29)));\\\\n  inten_2 = (sqrt(dist_3) * (1.0 - (dist_3 * dist_3)));\\\\n  xlat_mutableret1 = max (xlat_mutableret1, (texture (sampler_main, fract(\\\\n    (((2.0 * uv_1) * dist_3) + 0.5)\\\\n  )).xyz * inten_2));\\\\n  xlat_mutableuv2.x = -(uv_1.y);\\\\n  xlat_mutableuv2.y = uv_1.x;\\\\n  dist_3 = (1.0 - fract((1.0 + q29)));\\\\n  inten_2 = (sqrt(dist_3) * (1.0 - (dist_3 * dist_3)));\\\\n  xlat_mutableret1 = max (xlat_mutableret1, (texture (sampler_main, fract(\\\\n    (((2.0 * xlat_mutableuv2) * dist_3) + 0.5)\\\\n  )).xyz * inten_2));\\\\n  vec4 tmpvar_4;\\\\n  tmpvar_4.w = 1.0;\\\\n  tmpvar_4.xyz = (xlat_mutableret1 * 3.0);\\\\n  ret = tmpvar_4.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/martin - another kind of groove.json\":\n/*!****************************************************************!*\\\n  !*** ./presets/converted/martin - another kind of groove.json ***!\n  \\****************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1.980001,\\\"decay\\\":0.5,\\\"echo_zoom\\\":0.952379,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":3,\\\"wave_mode\\\":4,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":0.391579,\\\"wave_scale\\\":1.575857,\\\"wave_smoothing\\\":0.45,\\\"wave_mystery\\\":0.08,\\\"modwavealphastart\\\":0,\\\"modwavealphaend\\\":1.32,\\\"warpanimspeed\\\":1.4595,\\\"warpscale\\\":2.0067,\\\"zoom\\\":0.9999,\\\"warp\\\":0.01,\\\"sx\\\":0.9999,\\\"wave_r\\\":0.5,\\\"wave_g\\\":0.79,\\\"ob_size\\\":0,\\\"ob_a\\\":0.8,\\\"ib_size\\\":0.26,\\\"mv_x\\\":31.999998,\\\"mv_y\\\":24.000004,\\\"mv_l\\\":0.05,\\\"mv_r\\\":0.4999,\\\"mv_g\\\":0.4999,\\\"mv_b\\\":0.4999,\\\"mv_a\\\":0,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"textured\\\":1,\\\"rad\\\":0.545996,\\\"ang\\\":2.199115,\\\"tex_ang\\\":0.502655,\\\"tex_zoom\\\":2.02311,\\\"g\\\":1,\\\"b\\\":0.9,\\\"a\\\":0.6,\\\"r2\\\":0.8,\\\"g2\\\":0.8,\\\"b2\\\":0.8,\\\"a2\\\":0.6,\\\"border_b\\\":0,\\\"border_a\\\":0.7},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"tex_ang =  1 + sin(time/9);\\\\nrad = q29;\\\\ntex_zoom = (2 + sin(time/17));\\\\nadditive = q22/6;\\\\ntextured = 1-bnot(q23)*q24;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":34,\\\"thickoutline\\\":1,\\\"rad\\\":0.728634,\\\"tex_zoom\\\":0.9355,\\\"r\\\":0.5,\\\"g\\\":0.55,\\\"b\\\":0.5,\\\"a\\\":0.0999,\\\"r2\\\":0.7,\\\"g2\\\":0.4,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"x\\\":0.503,\\\"rad\\\":0.01,\\\"tex_zoom\\\":0.609857,\\\"g\\\":0.1,\\\"a\\\":0.9,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_b\\\":0.5,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = .5 + rand(10)/25;\\\\ny = .5 + rand(10)/25;\\\\nang = rand(6);\\\\nr = rand(4)/3;\\\\ng = rand(4)/3;\\\\nb = rand(4)/3;\\\\nr2 = b;\\\\ng2 = r;\\\\nb2 = g;\\\\na = min(q21/2 ,.9);\\\\nrad = a/9 ;\\\\n\\\\na = .5;a2 = .8;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":63,\\\"textured\\\":1,\\\"y\\\":1,\\\"rad\\\":0.548217,\\\"tex_zoom\\\":0.499805,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"samples\\\":142,\\\"sep\\\":120,\\\"usedots\\\":1,\\\"additive\\\":1,\\\"scaling\\\":0.01,\\\"smoothing\\\":0.82,\\\"a\\\":0.6,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t1 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt2 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt3 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt4 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt5 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt6 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt7 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt8 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\n\\\",\\\"frame_eqs_eel\\\":\\\"t2 = t2 + bass_att;\\\",\\\"point_eqs_eel\\\":\\\"\\\\nt_abs = sample;\\\\nt_rel = sample-time/8;\\\\n\\\\nox =  sin (sample*110) ;\\\\noy =  cos (sample*110);\\\\n\\\\noz = 4+1/(t_rel - int(t_rel));\\\\n\\\\nr = .3;\\\\ng = 0.7;\\\\nb = 1;\\\\n\\\\na = .8;\\\\n\\\\nxang = 0;\\\\nyang = 0;\\\\nzang = 0;\\\\nfov = .5;\\\\n\\\\n\\\\n// Rotation um x,y,z\\\\n\\\\nmx = ox*cos(zang) - oy*sin(zang);\\\\nmy = ox*sin(zang) + oy*cos(zang);\\\\n\\\\nox = mx;\\\\noy = my;\\\\nmx = ox*cos(yang) + oz*sin(yang);\\\\nmz = -ox*sin(yang) + oz*cos(yang);\\\\nox = mx;\\\\noz = mz;\\\\nmy = oy*cos(xang) - oz*sin(xang);\\\\nmz = oy*sin(xang) + oz*cos(xang);\\\\noy = my;\\\\noz = mz;\\\\n\\\\nx = ox*fov/oz +0.45;\\\\ny = oy*fov/oz + 0.45;\\\"},{\\\"baseVals\\\":{\\\"usedots\\\":1,\\\"thick\\\":1,\\\"scaling\\\":0.891519,\\\"smoothing\\\":0.82,\\\"a\\\":0.1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t1 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt2 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt3 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt4 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt5 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt6 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt7 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt8 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\n\\\",\\\"frame_eqs_eel\\\":\\\"tm = time*.1;\\\\nt1 = t1*sin(tm*t4) + (1-t1)*sin(tm*t7);\\\\nt2 = t2*sin(tm*t5) + (1-t2)*sin(tm*t8);\\\\nt3 = t3*sin(tm*t6) + (1-t3)*sin(tm*1);\\\\n\\\\ntic = min(time - tin,1);\\\\ntin = time;\\\\n\\\\ntva = (tic*q1*.5);\\\\ntvb = (tic*q2*.5);\\\\ntvc = (tic*q3*.5);\\\\n\\\\nq1 = tva;\\\\nq2 = tvb;\\\\nq3 = tvc;\\\\n\\\\nsz = .5;\\\\nlen = q4;\\\\nt4 = len;\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"scaling\\\":0.891519,\\\"smoothing\\\":0.82,\\\"r\\\":0,\\\"g\\\":0.2,\\\"b\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t1 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt2 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt3 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt4 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt5 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt6 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt7 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt8 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\n\\\",\\\"frame_eqs_eel\\\":\\\"tm = time*.1;\\\\nt1 = t1*sin(tm*t4) + (1-t1)*sin(tm*t7);\\\\nt2 = t2*sin(tm*t5) + (1-t2)*sin(tm*t8);\\\\nt3 = t3*sin(tm*t6) + (1-t3)*sin(tm*1);\\\\n\\\\ntic = min(time - tin,1);\\\\ntin = time;\\\\n\\\\ntva = (tic*q1*.5);\\\\ntvb = (tic*q2*.5);\\\\ntvc = (tic*q3*.5);\\\\n\\\\nq1 = tva;\\\\nq2 = tvb;\\\\nq3 = tvc;\\\\n\\\\nsz = .5;\\\\nlen = 1;\\\\nt4 = len;\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"spectrum\\\":1,\\\"usedots\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"dec_med = pow (0.9, 30/fps);\\\\ndec_slow = pow (0.99, 30/fps);\\\\nbeat = max (max (bass, mid), treb);\\\\navg = avg*dec_slow + beat*(1-dec_slow);\\\\nis_beat = above(beat, .5+avg+peak) * above (time, t0+.2);\\\\nt0 = is_beat*time + (1-is_beat)*t0;\\\\npeak = is_beat * beat + (1-is_beat)*peak*dec_med;\\\\nindex = (index + is_beat) %4;\\\\nindex2 = (index2 + is_beat*bnot(index))%4;\\\\nindex3 = (index3 + is_beat*bnot(index)*bnot(index2))%3;\\\\n\\\\n\\\\nq20 = avg;\\\\nq21 = beat;\\\\nq22 = max(peak,4);\\\\nq23 = index;\\\\nq24 = is_beat;\\\\nq26 = max(bass + mid + treb,3);\\\\n\\\\ngo = go*dec_slow + (1-dec_slow) * equal(index2,2);\\\\n\\\\nmovez = movez + .1*(1+.3*q26)*30/fps * go;\\\\nq30 = movez;\\\\n\\\\nk1 =  is_beat*equal(index,0);\\\\np1 =  k1*(p1+1) + (1-k1)*p1;\\\\np2 = dec_med * p2+ (1-dec_med)*p1;\\\\np3 = dec_med * p3+ (1-dec_med)*p2;\\\\nrott = p3*3.1416/2;\\\\n\\\\nq1 = cos(rott);\\\\nq2 = sin(rott);\\\\nq3 = -q2;\\\\nq4 = q1;\\\\n\\\\n\\\\nstr = str * dec_slow + (1-dec_slow) * index3;\\\\nq27 = 4 - str;\\\\n\\\\ngrid = grid*(dec_med) + (1-dec_med)* equal(index2,2)*bnot(index);\\\\nmv_a = grid * .6;\\\\n\\\\nrot1 = dec_med * rot1 + (1-dec_med) * bnot(index2) ;\\\\nq28 = rot1 ;\\\\n\\\\ncopy = copy * dec_slow + (1-dec_slow)*index3;\\\\nq29 = .3*copy;\\\",\\\"pixel_eqs_eel\\\":\\\"dx = 0.02*q28;\\\\nrot = .04*q2;\\\\nzoom = .96 + .1*sin(time/7);\\\\n//zoom = 1.04;\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec2 zz_1;\\\\n  mat2 tmpvar_2;\\\\n  tmpvar_2[uint(0)] = _qa.xy;\\\\n  tmpvar_2[1u] = _qa.zw;\\\\n  zz_1 = (((\\\\n    (uv - vec2(0.5, 0.5))\\\\n   * texsize.xy) * 0.01) * tmpvar_2);\\\\n  zz_1 = -(zz_1.yx);\\\\n  vec4 tmpvar_3;\\\\n  tmpvar_3.w = 1.0;\\\\n  tmpvar_3.xyz = ((texture (sampler_main, (uv + \\\\n    (((clamp (\\\\n      (sin(zz_1.yx) / cos(zz_1.yx))\\\\n    , vec2(-8.0, -8.0), vec2(8.0, 8.0)) * cos(\\\\n      (4.0 * zz_1)\\\\n    )) * texsize.zw) * 16.0)\\\\n  )).xyz * 0.99) - 0.01);\\\\n  ret = tmpvar_3.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec2 uv3_1;\\\\n  vec2 uv2_2;\\\\n  vec2 tmpvar_3;\\\\n  tmpvar_3 = ((uv - 0.5) * aspect.xy);\\\\n  float tmpvar_4;\\\\n  tmpvar_4 = (0.1 / (sqrt(\\\\n    dot (tmpvar_3, tmpvar_3)\\\\n  ) + 0.1));\\\\n  vec2 tmpvar_5;\\\\n  float tmpvar_6;\\\\n  tmpvar_6 = (ang / 3.14);\\\\n  tmpvar_5.x = tmpvar_6;\\\\n  tmpvar_5.y = (q27 * tmpvar_4);\\\\n  uv2_2.y = (tmpvar_5.y + (0.1 * q30));\\\\n  uv2_2.x = (tmpvar_6 + (0.2 * time));\\\\n  vec2 tmpvar_7;\\\\n  tmpvar_7.x = tmpvar_6;\\\\n  tmpvar_7.y = (4.0 * tmpvar_4);\\\\n  uv3_1.y = (tmpvar_7.y - (0.2 * q30));\\\\n  uv3_1.x = tmpvar_7.x;\\\\n  vec2 tmpvar_8;\\\\n  tmpvar_8 = fract(uv3_1);\\\\n  uv3_1 = tmpvar_8;\\\\n  float tmpvar_9;\\\\n  tmpvar_9 = clamp ((1.0 - (4.0 * rad)), 0.0, 1.0);\\\\n  vec4 tmpvar_10;\\\\n  tmpvar_10.w = 1.0;\\\\n  tmpvar_10.xyz = (((\\\\n    (3.0 * max (((2.0 * texture (sampler_main, uv2_2).xyz) + texture (sampler_main, tmpvar_8).xyz), ((2.0 * \\\\n      ((texture (sampler_blur2, fract(uv2_2)).xyz * scale2) + bias2)\\\\n    ) + (\\\\n      (texture (sampler_blur2, fract(tmpvar_8)).xyz * scale2)\\\\n     + bias2))))\\\\n   * rad) + (\\\\n    ((uv.y * pow ((1.0 - rad), 8.0)) * roam_cos)\\\\n  .xyz * tmpvar_9)) + ((tmpvar_9 * 2.0) * (\\\\n    (texture (sampler_blur1, fract(uv)).xyz * scale1)\\\\n   + bias1)));\\\\n  ret = tmpvar_10.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/martin - bombyx mori.json\":\n/*!*****************************************************!*\\\n  !*** ./presets/converted/martin - bombyx mori.json ***!\n  \\*****************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":4,\\\"gammaadj\\\":1.98,\\\"decay\\\":0.5,\\\"echo_zoom\\\":1,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":3,\\\"wave_mode\\\":6,\\\"additivewave\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"darken_center\\\":1,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":0.236,\\\"wave_smoothing\\\":0,\\\"wave_mystery\\\":-0.64,\\\"modwavealphastart\\\":0.81,\\\"modwavealphaend\\\":1.4,\\\"warpanimspeed\\\":1.459,\\\"warpscale\\\":2.007,\\\"zoom\\\":0.9999,\\\"warp\\\":0.01,\\\"sx\\\":0.9999,\\\"wave_r\\\":0,\\\"wave_b\\\":0.6,\\\"ob_size\\\":0.005,\\\"ob_a\\\":0.8,\\\"ib_size\\\":0.26,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":1.85,\\\"mv_r\\\":0.5,\\\"mv_g\\\":0.5,\\\"mv_b\\\":0.5,\\\"mv_a\\\":0,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":18,\\\"num_inst\\\":4,\\\"x\\\":0.83,\\\"rad\\\":0.14349,\\\"tex_ang\\\":3.76991,\\\"tex_zoom\\\":5.27784,\\\"r\\\":0,\\\"g\\\":1,\\\"b\\\":1,\\\"a\\\":0.5,\\\"r2\\\":1,\\\"g2\\\":0.2,\\\"b2\\\":1,\\\"border_b\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"d = .3+(frame%8)/8*.2;\\\\n//d = .3;\\\\nk1 = instance/num_inst*6.28;\\\\nd = .3 + q22/8 ;\\\\n\\\\nx = .5 + d*cos(k1);\\\\ny = .5 + d*sin(k1);\\\\n\\\\na = min(1, .2+ .8*q22/2*((q27)%2));\\\\na2 = 0;\\\\nr = .6 + .4*sin(time/4+1.56);\\\\nb = .6 + .4*sin(time/4+3.14);\\\\ng = .6 + .4*sin(time/4);\\\\n\\\\nr0 = r0 * bnot(q24) + (.5+.5*sin(time))*q24;\\\\ng0 = g0 * bnot(q24) + (.5+.5*sin(time*1.7))*q24;\\\\nb0 = (2-r0-g0)/2;\\\\n\\\\nr = r0;\\\\nb = b0;\\\\ng = g0;\\\\n\\\\nr2 = 1-g;\\\\ng2 = 1-b;\\\\nb2 = 1-r;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":32,\\\"num_inst\\\":4,\\\"rad\\\":0.16218,\\\"tex_zoom\\\":1.8315,\\\"g\\\":1,\\\"b\\\":1,\\\"a\\\":0.9,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"a = q24/2; a2 = 0;\\\\na = min(1, .2+ .8*q22/2*((q27)%2));\\\\n\\\\nr = rand(10)/10;\\\\ng = rand(10)/10;\\\\nb = rand(10)/10;\\\\n\\\\nrad = .06*q22;\\\\n\\\\n\\\\n\\\\n\\\\nd = .3+(frame%8)/8*.2;\\\\nd = .3 + q22/12;\\\\n\\\\nx = .5 + d*cos(6.28*instance/num_inst);\\\\ny = .5 + d*sin(6.28*instance/num_inst);\\\\na = min(1, .2+ .8*q22/2*((q27)%2));\\\\nb = 1; g = 1;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":63,\\\"textured\\\":1,\\\"rad\\\":8.85459,\\\"tex_zoom\\\":0.03204,\\\"g\\\":1,\\\"b\\\":1,\\\"a\\\":0.4,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"x\\\":0.4,\\\"rad\\\":0.14741,\\\"tex_zoom\\\":1.59918,\\\"g\\\":0.4,\\\"r2\\\":1,\\\"g2\\\":0.6,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"a = q24*.3;\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"samples\\\":128,\\\"scaling\\\":0.89152,\\\"smoothing\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"t1 = t1 * bnot(q24) + (.5+.5*sin(time))*q24;\\\\nt2 = t2 * bnot(q24) + (.5+.5*sin(time*1.7))*q24;\\\",\\\"point_eqs_eel\\\":\\\"x = sample ;\\\\ny = .5;\\\\n\\\\na = q22*((q27+1)%2);\\\\n//a = 1;\\\\na = q24*((q27+1)%2)/2+.0;\\\\n\\\\nr = t1; b = t2; g = (2-r0-g0)/2;\\\\n;\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"scaling\\\":0.89152,\\\"smoothing\\\":0,\\\"a\\\":0.1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"scaling\\\":0.89152,\\\"smoothing\\\":0.82,\\\"a\\\":0.1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"spectrum\\\":1,\\\"usedots\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ra = .8;\\\\nrb = .5;\\\\npib = 6.28318530718;\\\\n\\\\n\\\\ntic = min(time-tin,.1);\\\\ntin = if(equal(sample,0),time,tin);\\\\n\\\\nmod = 1.5 + .5*sin(time*.15);\\\\nmed = 1.5 + .5*sin(time*.134);\\\\nmed = 5;\\\\namod = 3;\\\\n\\\\nvr = rand(10001)*.0001;\\\\nrb = rb + rand(10001)*.0001*.1;\\\\n\\\\na = vr;\\\\n\\\\nsa = vr*pib*.5;\\\\nsp = sa*mod + q1*1.3;\\\\nsam = sa*med - q1*.219;\\\\n\\\\nox = ra*sin(sam*pib);\\\\noy = ra*cos(sam*pib);\\\\nox = ox + rb*-cos(sp)*sin(sam*pib);\\\\noz = rb*-sin(sp);\\\\noy = oy + rb*-cos(sp)*cos(sam*pib);\\\\n\\\\n\\\\nxang = time*.132;\\\\nxang = q2;\\\\nyang = time*.153;\\\\nyang = q3;\\\\nzang = time*.110;\\\\nzang = q4;\\\\nfov = 0.6 + 0.2*sin(time);\\\\nfov = .5;\\\\n\\\\nmx = ox*cos(zang) - oy*sin(zang);\\\\nmy = ox*sin(zang) + oy*cos(zang);\\\\nox = mx;\\\\noy = my;\\\\nmx = ox*cos(yang) + oz*sin(yang);\\\\nmz = -ox*sin(yang) + oz*cos(yang);\\\\nox = mx;\\\\noz = mz;\\\\nmy = oy*cos(xang) - oz*sin(xang);\\\\nmz = oy*sin(xang) + oz*cos(xang);\\\\noy = my;\\\\noz = mz;\\\\n\\\\noz = oz - 2;\\\\nx = ox*fov/oz + 0.5;\\\\nx = (x-.5)*0.75 + 0.5;\\\\ny = oy*fov/oz + 0.5;\\\\n\\\"}],\\\"init_eqs_eel\\\":\\\"speed_=1;\\\",\\\"frame_eqs_eel\\\":\\\"dec_med = pow (0.9, 30/fps);\\\\ndec_slow = pow (0.96, 30/fps);\\\\nbeat = max (max (bass, mid), treb);\\\\navg = avg*dec_slow + beat*(1-dec_slow);\\\\nis_beat = above(beat, 0.2+avg+peak) * above (time, t0+.1);\\\\nt0 = is_beat*time + (1-is_beat)*t0;\\\\npeak = is_beat * beat + (1-is_beat)*peak*dec_med;\\\\nindex = (index + is_beat) %12;\\\\nindex2 = (index2 + is_beat*bnot(index))%8;\\\\n\\\\nq20 = avg;\\\\nq21 = beat;\\\\nq22 = peak;\\\\nq24 = is_beat;\\\\nvol = (bass_att + mid_att + treb_att)/2;\\\\nvol_ = dec_med * vol_ + (1-dec_med)* vol;\\\\nvol__ = dec_med * vol__ + (1-dec_med)* vol_;\\\\nq27 = index + 1;\\\\nq28 = index2 + 2;\\\\n\\\\nk1 =  is_beat*equal(index%4,0);\\\\np1 =  k1*(p1+1) + (1-k1)*p1;\\\\np2 = dec_med * p2+ (1-dec_med)*p1;\\\\nrott = p2 * 3.1416/4;\\\\n\\\\nq1 = cos(rott);\\\\nq2 = sin(rott);\\\\nq3 = -q2;\\\\nq4 = q1;\\\\n\\\\ntrig = q24 * bnot(index%8);\\\\nvx = vx*bnot(trig) + trig* (rand(100)/100-.5);\\\\nvy = vy*bnot(trig) + trig* (rand(100)/100-.5);\\\\nvz = vz*bnot(trig) + trig* (rand(100)/100-.5);\\\\n\\\\nspeed = min(vol_-vol__+.5,1);\\\\nspeed = max(speed,-.5);\\\\nspeed_ = bnot(trig)*speed_ + trig*speed;\\\\nspg = dec_med*spg + (1-dec_med)*speed_;\\\\nmovz = movz + 1/fps*(speed_+0*vol_/6);\\\\nq9 = movz;\\\\nq12 = min(q22,6)*2;\\\\n\\\\n//puls = puls*dec_med + (1-dec_med)*q22;\\\\n\\\\nq13 = 2* sin(movz/3-time/11);\\\\n\\\\ntrig = bnot(index%4) * q24;\\\\ndir = bnot(trig)*dir + trig*(rand(10)-5);\\\\ntrel = trel + .1/fps*dir;\\\\nq5 = cos(trel-movz);\\\\nq6 = sin(trel/2-movz);\\\\nq7 = -q6;\\\\nq8 = q5;\\\\n\\\\nang0 = ang0*dec_med + vz*(1-dec_med);\\\\nq17 = ang0*2;\\\\nq30 = .2*sin(time/8);\\\\n\\\\nq31 = .5 + .5*sin(time/3.3);\\\\n\\\\nzoom = 1;\\\\nrot = .0;\\\\ndx = .00;\\\\nmonitor = q28;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\"vec3 xlat_mutablemus;\\\\n shader_body { \\\\n  vec2 d_1;\\\\n  vec2 uv6_2;\\\\n  vec2 uv1_3;\\\\n  vec2 tmpvar_4;\\\\n  tmpvar_4 = (uv - 0.5);\\\\n  uv1_3 = tmpvar_4;\\\\n  uv6_2 = tmpvar_4;\\\\n  float x_5;\\\\n  x_5 = (abs(tmpvar_4.x) - abs(tmpvar_4.y));\\\\n  float tmpvar_6;\\\\n  tmpvar_6 = (12.0 * sqrt((x_5 * x_5)));\\\\n  vec2 tmpvar_7;\\\\n  tmpvar_7 = normalize(tmpvar_4);\\\\n  d_1 = tmpvar_7;\\\\n  float tmpvar_8;\\\\n  tmpvar_8 = (float(mod (q28, 2.0)));\\\\n  if ((tmpvar_8 == 0.0)) {\\\\n    d_1 = ((q1 * tmpvar_7) - (q2 / tmpvar_7));\\\\n  };\\\\n  uv1_3 = (tmpvar_4 + ((-0.06 * \\\\n    dot (((texture (sampler_blur1, uv).xyz * scale1) + bias1), vec3(0.32, 0.49, 0.29))\\\\n  ) * normalize(tmpvar_4)));\\\\n  uv1_3 = (uv1_3 - (clamp (\\\\n    ((sin(tmpvar_6) / cos(tmpvar_6)) * d_1)\\\\n  , vec2(-4.0, -4.0), vec2(4.0, 4.0)) / 60.0));\\\\n  uv6_2 = (0.4 * cos((\\\\n    (uv1_3 * 2.0)\\\\n   * q28)));\\\\n  xlat_mutablemus = (clamp (vec3((0.0006 / \\\\n    (sqrt(dot (uv6_2, uv6_2)) - (0.002 * (q27 + (8.0 * q28))))\\\\n  )), 0.0, 1.0) * q31);\\\\n  xlat_mutablemus = (xlat_mutablemus * (1.0 + roam_cos).xyz);\\\\n  vec4 tmpvar_9;\\\\n  tmpvar_9.w = 1.0;\\\\n  tmpvar_9.xyz = ((0.4 * (\\\\n    ((texture (sampler_main, ((uv1_3 * \\\\n      (0.8 + (0.2 * tmpvar_6))\\\\n    ) + 0.5)).xyz + xlat_mutablemus) * 0.95)\\\\n   - 0.025)) + (0.6 * texture (sampler_main, uv_orig)).xyz);\\\\n  ret = tmpvar_9.xyz;\\\\n }\\\",\\\"comp\\\":\\\"vec3 xlat_mutableneu;\\\\nvec3 xlat_mutableret2;\\\\nvec2 xlat_mutablers0;\\\\nvec2 xlat_mutablerss;\\\\nvec2 xlat_mutableuv2;\\\\n shader_body { \\\\n  vec2 uv_1;\\\\n  vec2 ofs_2;\\\\n  vec3 ret1_3;\\\\n  vec2 uv5_4;\\\\n  uv_1 = ((uv - 0.5) * aspect.xy);\\\\n  vec2 tmpvar_5;\\\\n  tmpvar_5.x = q5;\\\\n  tmpvar_5.y = q6;\\\\n  uv_1 = (uv_1 + (tmpvar_5 / 4.0));\\\\n  uv5_4 = uv_1;\\\\n  mat2 tmpvar_6;\\\\n  tmpvar_6[uint(0)] = _qb.xy;\\\\n  tmpvar_6[1u] = _qb.zw;\\\\n  uv_1 = (uv_1 * tmpvar_6);\\\\n  float tmpvar_7;\\\\n  float tmpvar_8;\\\\n  tmpvar_8 = (min (abs(\\\\n    (uv5_4.y / uv5_4.x)\\\\n  ), 1.0) / max (abs(\\\\n    (uv5_4.y / uv5_4.x)\\\\n  ), 1.0));\\\\n  float tmpvar_9;\\\\n  tmpvar_9 = (tmpvar_8 * tmpvar_8);\\\\n  tmpvar_9 = (((\\\\n    ((((\\\\n      ((((-0.01213232 * tmpvar_9) + 0.05368138) * tmpvar_9) - 0.1173503)\\\\n     * tmpvar_9) + 0.1938925) * tmpvar_9) - 0.3326756)\\\\n   * tmpvar_9) + 0.9999793) * tmpvar_8);\\\\n  tmpvar_9 = (tmpvar_9 + (float(\\\\n    (abs((uv5_4.y / uv5_4.x)) > 1.0)\\\\n  ) * (\\\\n    (tmpvar_9 * -2.0)\\\\n   + 1.570796)));\\\\n  tmpvar_7 = (tmpvar_9 * sign((uv5_4.y / uv5_4.x)));\\\\n  if ((abs(uv5_4.x) > (1e-08 * abs(uv5_4.y)))) {\\\\n    if ((uv5_4.x < 0.0)) {\\\\n      if ((uv5_4.y >= 0.0)) {\\\\n        tmpvar_7 += 3.141593;\\\\n      } else {\\\\n        tmpvar_7 = (tmpvar_7 - 3.141593);\\\\n      };\\\\n    };\\\\n  } else {\\\\n    tmpvar_7 = (sign(uv5_4.y) * 1.570796);\\\\n  };\\\\n  xlat_mutablers0.x = (((tmpvar_7 / 3.1416) * 6.0) * q28);\\\\n  float tmpvar_10;\\\\n  tmpvar_10 = (1.5 / sqrt(dot (uv_1, uv_1)));\\\\n  xlat_mutablers0.y = tmpvar_10;\\\\n  vec2 tmpvar_11;\\\\n  tmpvar_11.x = (xlat_mutablers0.x + (q9 * 4.0));\\\\n  tmpvar_11.y = (tmpvar_10 + ((q9 * q28) * 4.0));\\\\n  xlat_mutablerss = (tmpvar_11 / 12.0);\\\\n  vec2 tmpvar_12;\\\\n  tmpvar_12.x = q5;\\\\n  tmpvar_12.y = q6;\\\\n  ofs_2 = (0.1 * tmpvar_12.yx);\\\\n  float tmpvar_13;\\\\n  float tmpvar_14;\\\\n  tmpvar_14 = -(q9);\\\\n  tmpvar_13 = fract(tmpvar_14);\\\\n  mat2 tmpvar_15;\\\\n  tmpvar_15[uint(0)].x = 1.0;\\\\n  tmpvar_15[uint(0)].y = -0.0;\\\\n  tmpvar_15[1u].x = 0.0;\\\\n  tmpvar_15[1u].y = 1.0;\\\\n  xlat_mutableuv2 = ((uv_1 * (\\\\n    (q13 * tmpvar_13)\\\\n   * tmpvar_15)) * aspect.yx);\\\\n  xlat_mutableneu = (3.0 * texture (sampler_main, fract((\\\\n    (xlat_mutableuv2 + 0.5)\\\\n   + ofs_2)))).xyz;\\\\n  ret1_3 = max (vec3(0.0, 0.0, 0.0), (xlat_mutableneu * (1.0 - \\\\n    (tmpvar_13 * tmpvar_13)\\\\n  )));\\\\n  float tmpvar_16;\\\\n  tmpvar_16 = fract((tmpvar_14 + 0.3333333));\\\\n  mat2 tmpvar_17;\\\\n  tmpvar_17[uint(0)].x = -0.4990803;\\\\n  tmpvar_17[uint(0)].y = -0.8665558;\\\\n  tmpvar_17[1u].x = 0.8665558;\\\\n  tmpvar_17[1u].y = -0.4990803;\\\\n  xlat_mutableuv2 = ((uv_1 * (\\\\n    (q13 * tmpvar_16)\\\\n   * tmpvar_17)) * aspect.yx);\\\\n  xlat_mutableneu = (3.0 * texture (sampler_main, fract((\\\\n    (xlat_mutableuv2 + 0.5)\\\\n   + ofs_2)))).xyz;\\\\n  ret1_3 = max (ret1_3, (xlat_mutableneu * (1.0 - \\\\n    (tmpvar_16 * tmpvar_16)\\\\n  )));\\\\n  float tmpvar_18;\\\\n  tmpvar_18 = fract((tmpvar_14 + 0.6666667));\\\\n  mat2 tmpvar_19;\\\\n  tmpvar_19[uint(0)].x = -0.5018377;\\\\n  tmpvar_19[uint(0)].y = 0.8649619;\\\\n  tmpvar_19[1u].x = -0.8649619;\\\\n  tmpvar_19[1u].y = -0.5018377;\\\\n  xlat_mutableuv2 = ((uv_1 * (\\\\n    (q13 * tmpvar_18)\\\\n   * tmpvar_19)) * aspect.yx);\\\\n  xlat_mutableneu = (3.0 * texture (sampler_main, fract((\\\\n    (xlat_mutableuv2 + 0.5)\\\\n   + ofs_2)))).xyz;\\\\n  ret1_3 = max (ret1_3, (xlat_mutableneu * (1.0 - \\\\n    (tmpvar_18 * tmpvar_18)\\\\n  )));\\\\n  float tmpvar_20;\\\\n  tmpvar_20 = fract((tmpvar_14 + 1.0));\\\\n  mat2 tmpvar_21;\\\\n  tmpvar_21[uint(0)].x = 0.9999949;\\\\n  tmpvar_21[uint(0)].y = 0.003185092;\\\\n  tmpvar_21[1u].x = -0.003185092;\\\\n  tmpvar_21[1u].y = 0.9999949;\\\\n  xlat_mutableuv2 = ((uv_1 * (\\\\n    (q13 * tmpvar_20)\\\\n   * tmpvar_21)) * aspect.yx);\\\\n  xlat_mutableneu = (3.0 * texture (sampler_main, fract((\\\\n    (xlat_mutableuv2 + 0.5)\\\\n   + ofs_2)))).xyz;\\\\n  ret1_3 = max (ret1_3, (xlat_mutableneu * (1.0 - \\\\n    (tmpvar_20 * tmpvar_20)\\\\n  )));\\\\n  vec2 tmpvar_22;\\\\n  tmpvar_22.x = (ret1_3.x + ret1_3.z);\\\\n  tmpvar_22.y = (ret1_3.x - ret1_3.y);\\\\n  xlat_mutableret2 = (((\\\\n    (texture (sampler_blur1, fract((xlat_mutablerss + (tmpvar_22 / 2.0)))).xyz * scale1)\\\\n   + bias1) / tmpvar_10) * 12.0);\\\\n  vec4 tmpvar_23;\\\\n  tmpvar_23.w = 1.0;\\\\n  tmpvar_23.xyz = ((ret1_3 + (\\\\n    ((bass_att * 0.004) / sqrt(dot (uv_1, uv_1)))\\\\n   * roam_sin).xyz) + (sqrt(xlat_mutableret2.zxy) * clamp (\\\\n    (1.0 - (ret1_3 * 4.0))\\\\n  , 0.0, 1.0)));\\\\n  ret = tmpvar_23.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/martin - castle in the air.json\":\n/*!***********************************************************!*\\\n  !*** ./presets/converted/martin - castle in the air.json ***!\n  \\***********************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":2,\\\"gammaadj\\\":1.98,\\\"decay\\\":0.5,\\\"echo_zoom\\\":1,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":3,\\\"wave_mode\\\":7,\\\"additivewave\\\":1,\\\"wave_thick\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":0.958,\\\"wave_smoothing\\\":0.45,\\\"modwavealphastart\\\":0,\\\"modwavealphaend\\\":1.32,\\\"warpanimspeed\\\":1.459,\\\"warpscale\\\":2.007,\\\"zoom\\\":0.9999,\\\"warp\\\":0.01,\\\"sx\\\":0.9999,\\\"wave_r\\\":0,\\\"wave_g\\\":0,\\\"wave_b\\\":0,\\\"ob_size\\\":0,\\\"ob_g\\\":0.1,\\\"ob_b\\\":1,\\\"ob_a\\\":1,\\\"ib_size\\\":0,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"mv_x\\\":25.6,\\\"mv_y\\\":9.6,\\\"mv_l\\\":0,\\\"mv_r\\\":0.5,\\\"mv_g\\\":0.5,\\\"mv_b\\\":0.5,\\\"mv_a\\\":0,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"textured\\\":1,\\\"x\\\":0.09,\\\"y\\\":0.9,\\\"rad\\\":0.22437,\\\"tex_zoom\\\":1.76002,\\\"r2\\\":1,\\\"g2\\\":0,\\\"a2\\\":0.6,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"additive\\\":1,\\\"x\\\":0.26,\\\"y\\\":0.2,\\\"rad\\\":0.39317,\\\"tex_zoom\\\":6.19589,\\\"r\\\":0,\\\"g\\\":0.55,\\\"b\\\":0.5,\\\"g2\\\":0.4,\\\"b2\\\":0.4,\\\"a2\\\":0.07,\\\"border_r\\\":0.3,\\\"border_g\\\":0.7,\\\"border_b\\\":0.8,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":44,\\\"additive\\\":1,\\\"x\\\":0.503,\\\"rad\\\":0.03886,\\\"tex_zoom\\\":0.60986,\\\"g\\\":0.1,\\\"a\\\":0.9,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"rad\\\":0.01,\\\"tex_zoom\\\":0.49981,\\\"r\\\":0,\\\"g2\\\":0,\\\"border_r\\\":0.2,\\\"border_g\\\":0.7,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"samples\\\":282,\\\"sep\\\":20,\\\"usedots\\\":1,\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":3.91581,\\\"smoothing\\\":0.1,\\\"r\\\":0.2,\\\"g\\\":0.3,\\\"a\\\":0.6,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"usedots\\\":1,\\\"thick\\\":1,\\\"scaling\\\":0.89152,\\\"smoothing\\\":0.82,\\\"a\\\":0.1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"scaling\\\":0.89152,\\\"smoothing\\\":0.82,\\\"r\\\":0,\\\"g\\\":0.2,\\\"b\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"spectrum\\\":1,\\\"usedots\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"//******** INITIALIZATION *********\\\\n//---------- some global vars, do not change -------------\\\\navg = 0.01;\\\\nq7 = .2; //MyZoom\\\\nq8 =  rand(200)/100-1; //fractal modifier\\\\n//q8 = -0; //#\\\\nq16 = 1.2; //Tele\\\\nq18 = rand(0.8)+.1; //brightness balance back/front\\\\nq17 = 2.6; //fractal density factor ffac\\\\nstart = 1; travel = 0; RotZ = 0; look = 0; slow = 0; t0 = time+3; lampx = .5; lampy = .5;\\\\ncran0 = rand(1);\\\\nn = 0; loop (10000, gmegabuf(n)=0; n=n+1; ); \\\\nn = 0; loop (10000,  megabuf(n)=0; n=n+1; ); \\\\ntrelx = 0;  trely = 0; trelz = 0;\\\\nreg20 = 1; reg21 = 0; reg22 = 0; reg23 = 0; reg24 = 1; reg25 = 0; reg26 = 0; reg27 = 0; reg28 = 1;\\\\n\\\\n//Find random starting point\\\\nwhile (exec2(\\\\n  ran1 = rand(800)/100;  ran2 = rand(800)/100;  ran3 = rand(800)/100;\\\\n  PosX = rand(10)-5;   PosY = rand(10)-5;   PosZ = rand(10)-5; \\\\n\\\\n//  PosX = 3.3; PosY = 2; PosZ = -2; ran1 = 0; ran2 = 0; ran3 = 0; //#\\\\n\\\\n  c1 = cos(ran1); c2 = cos(ran2); c3 = cos(ran3); \\\\n  s1 = sin(ran1); s2 = sin(ran2); s3 = sin(ran3);\\\\n\\\\n  reg20 = c2*c1; reg21 = c2*s1; reg22 = -s2;\\\\n  reg23 = s3*s2*c1 - c3*s1; reg24 = s3*s2*s1 + c3*c1; reg25 = s3*c2;\\\\n  reg26 = c3*s2*c1 + s3*s1; reg27 = c3*s2*s1 - s3*c1; reg28 = c3*c2;\\\\n\\\\n  //***********BOT*************\\\\n  //Coord. Trans. must exactly match def in warp S. !!!!\\\\n  dist = 0.001;\\\\n  while (exec2(\\\\n    uvx = reg26*dist/q7; uvy = reg27*dist/q7; uvz = reg28*dist/q7;\\\\n    uvx += PosX; uvy += PosY; uvz += PosZ;\\\\n    uvx = 8.0*((uvx/8+30.5 - int(uvx/8+30.5))-.5);\\\\n    uvy = 8.0*((uvy/8+30.5 - int(uvy/8+30.5))-.5);\\\\n    uvz = 8.0*((uvz/8+30.5 - int(uvz/8+30.5))-.5);\\\\n    uvx0 = uvx+q8; uvy0 = uvy+q8; uvz0 = uvz+q8;\\\\n    loop (7+1,\\\\n      uvx = if (uvx > 1, 2-uvx, if(uvx < -1, -2-uvx, uvx));\\\\n      uvy = if (uvy > 1, 2-uvy, if(uvy < -1, -2-uvy, uvy));\\\\n      uvz = if (uvz > 1, 2-uvz, if(uvz < -1, -2-uvz, uvz));\\\\n      slen = uvx*uvx + uvy*uvy + uvz*uvz;\\\\n      uvx = if (slen < 0.25, uvx*4, if (slen < 1, uvx/slen, uvx)) *q17 + uvx0; \\\\n      uvy = if (slen < 0.25, uvy*4, if (slen < 1, uvy/slen, uvy)) *q17 + uvy0; \\\\n      uvz = if (slen < 0.25, uvz*4, if (slen < 1, uvz/slen, uvz)) *q17 + uvz0; \\\\n    );\\\\n    len = sqrt(uvx*uvx + uvy*uvy + uvz*uvz);\\\\n    dist *= 1.05;\\\\n  ,(dist < 0.6)*(len > 30)));\\\\n,(dist < .06))); //end while\\\",\\\"frame_eqs_eel\\\":\\\"fps_ = .0 * fps_ + 1*if(fps<=25,fps,25+.5*(fps-25)); \\\\ndec_s = 1-.03*30/fps_;\\\\ndec_m = 1-.1*30/fps_;\\\\nbeat = (time >  t0+3); t0 = if(beat, time, t0);\\\\n\\\\nspeed = min(0.2,dist_-.02) * (1+2*avg) *(1-slow*.0)*.1/q7; //#\\\\nds = ds * dec_s + (1-dec_s)*speed*.4/fps_; \\\\nRotZ = if (travel > 2,.5,0);\\\\nvol = vol*dec_m + (1-dec_m)*(bass_att +mid_att + treb_att)/4;\\\\nq1 = vol/2+.3;\\\\n//Position \\\\nDirX= reg26; DirY= reg27; DirZ = reg28;\\\\nPosX = PosX + ds*DirX ; PosY = PosY + ds*DirY; PosZ = PosZ + ds*DirZ; \\\\nq4 = PosX; q5 = PosY; q6 = PosZ;\\\\n\\\\nangchg = (.1-dist_)*(dist_ < .1);\\\\ntravel = if (angchg > 0,0,travel+ds);\\\\nv1 = v1 * dec_s + (1-dec_s)* RotZ * ds/2;\\\\nv2 = v2 *dec_s + (1-dec_s)*angchg *xslope/fps_;\\\\nv3 = v3 *dec_s + (1-dec_s)*(angchg *yslope/fps_ + 2*v1*sin(time*.1));\\\\n//v1 = 0.00;\\\\n//push old RotMat\\\\nreg30 =reg20; reg31 =reg21; reg32 =reg22; \\\\nreg33 =reg23; reg34 =reg24; reg35 =reg25; \\\\nreg36 =reg26; reg37 =reg27; reg38 =reg28; \\\\n\\\\nn = 0; avg = 0;\\\\nloop (5,\\\\n  n = n+1;\\\\n  //new Rot. Mat for infinitesimal angles\\\\n  ran1 = rand(100)/100;\\\\n  ran2 = rand(100)/200-.25;\\\\n  tx = cos(n*1.57+ran2) * (n <= 4)*ran1; ty = sin(n*1.57+ran2) * (n <= 4)*ran1;\\\\n  c1 = cos(v1); c2 = cos(v2+ty); c3 = cos(v3+tx); \\\\n  s1 = sin(v1); s2 = sin(v2+ty); s3 = sin(v3+tx);\\\\n  reg10 = c2*c1; reg11 = c2*s1; reg12 = -s2;\\\\n  reg13 = s3*s2*c1 - c3*s1; reg14 = s3*s2*s1 + c3*c1; reg15 = s3*c2;\\\\n  reg16 = c3*s2*c1 + s3*s1; reg17 = c3*s2*s1 - s3*c1; reg18 = c3*c2;\\\\n\\\\n  //pop old RotMat\\\\n  reg20 =reg30; reg21 =reg31; reg22 =reg32; \\\\n  reg23 =reg33; reg24 =reg34; reg25 =reg35; \\\\n  reg26 =reg36; reg27 =reg37; reg28 =reg38; \\\\n\\\\n  //Multiply new RotMat by old one\\\\n  q20 = reg10*reg20 + reg11*reg23 + reg12*reg26;\\\\n  q21 = reg10*reg21 + reg11*reg24 + reg12*reg27;\\\\n  q22 = reg10*reg22 + reg11*reg25 + reg12*reg28;\\\\n  q23 = reg13*reg20 + reg14*reg23 + reg15*reg26;\\\\n  q24 = reg13*reg21 + reg14*reg24 + reg15*reg27;\\\\n  q25 = reg13*reg22 + reg14*reg25 + reg15*reg28;\\\\n  q26 = reg16*reg20 + reg17*reg23 + reg18*reg26;\\\\n  q27 = reg16*reg21 + reg17*reg24 + reg18*reg27;\\\\n  q28 = reg16*reg22 + reg17*reg25 + reg18*reg28;\\\\n\\\\n  reg20 =q20; reg21 =q21; reg22 =q22;\\\\n  reg23 =q23; reg24 =q24; reg25 =q25;\\\\n  reg26 =q26; reg27 =q27; reg28 =q28;\\\\n\\\\n  //***********BOT*************\\\\n  //Coord. Trans. must exactly match def in warp S. !!!!\\\\n  dist = 0.002;\\\\n  while (exec2(\\\\n    uvx = reg26*dist/q7; uvy = reg27*dist/q7; uvz = reg28*dist/q7;\\\\n    uvx += PosX; uvy += PosY; uvz += PosZ;\\\\n    uvx = 8.0*((uvx/8+30.5 - int(uvx/8+30.5))-.5);\\\\n    uvy = 8.0*((uvy/8+30.5 - int(uvy/8+30.5))-.5);\\\\n    uvz = 8.0*((uvz/8+30.5 - int(uvz/8+30.5))-.5);\\\\n    uvx0 = uvx+q8; uvy0 = uvy+q8; uvz0 = uvz+q8;\\\\n    loop (7+1,\\\\n      uvx = if (uvx > 1, 2-uvx, if(uvx < -1, -2-uvx, uvx));\\\\n      uvy = if (uvy > 1, 2-uvy, if(uvy < -1, -2-uvy, uvy));\\\\n      uvz = if (uvz > 1, 2-uvz, if(uvz < -1, -2-uvz, uvz));\\\\n      slen = uvx*uvx + uvy*uvy + uvz*uvz;\\\\n      uvx = if (slen < 0.25, uvx*4, if (slen < 1, uvx/slen, uvx)) *q17 + uvx0; \\\\n      uvy = if (slen < 0.25, uvy*4, if (slen < 1, uvy/slen, uvy)) *q17 + uvy0; \\\\n      uvz = if (slen < 0.25, uvz*4, if (slen < 1, uvz/slen, uvz)) *q17 + uvz0; \\\\n    );\\\\n    len = sqrt(uvx*uvx + uvy*uvy + uvz*uvz);\\\\n    dist *= 1.1;\\\\n  ,(dist < 0.6)*(len > 30)));\\\\n  megabuf(n) = megabuf(n)*dec_s + (1-dec_s)*dist; //stores the 4 trial points\\\\n  avg = avg+abs(megabuf(n)/5);\\\\n); //end loop 5\\\\n\\\\nn = 0; avg = 0; loop (5, n=n+1; avg = avg+abs(megabuf(n)/5));\\\\n\\\\nxslope = min(max(2/avg*(megabuf(1)-megabuf(3)),-3),3);\\\\nyslope = min(max(2/avg*(megabuf(4)-megabuf(2)),-3),3);\\\\nmonitor = avg;\\\\ndist_ = dist_*dec_s + (1-dec_s)*dist;\\\\n\\\\nq10 = ds*q7; //compensation of lin. movement in GetDist and zoom uv\\\\nq14 = 1*abs(ds) + 2*(abs(v1) + abs(v2) + abs(v3)) + start*.05; \\\\nq19 = .6 + .4*sin(time*.02+cran0*6); //brightness backgd\\\\nstart = start * .9;\\\\n\\\\nwarp = 0.0; zoom = 1; \\\\ndx = -v2/q16; dy = v3/q16; rot = v1;\\\\nvx = vx -v2/q16; vy = vy +v3/q16; vz = vz + v1;\\\\nq11 = vx;  q12 = vy;\\\\nmovz = movz + ds;\\\\nq13 = movz;\\\\nmonitor = q13;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\"float sustain;\\\\nfloat ffac;\\\\nfloat xlat_mutabledist;\\\\nfloat xlat_mutablelimit;\\\\nfloat xlat_mutablestruc;\\\\nvec2 xlat_mutableuv1;\\\\nvec3 xlat_mutableuv2;\\\\n shader_body { \\\\n  mat3 tmpvar_1;\\\\n  tmpvar_1[uint(0)].x = q20;\\\\n  tmpvar_1[uint(0)].y = q23;\\\\n  tmpvar_1[uint(0)].z = q26;\\\\n  tmpvar_1[1u].x = q21;\\\\n  tmpvar_1[1u].y = q24;\\\\n  tmpvar_1[1u].z = q27;\\\\n  tmpvar_1[2u].x = q22;\\\\n  tmpvar_1[2u].y = q25;\\\\n  tmpvar_1[2u].z = q28;\\\\n  vec3 tmpvar_2;\\\\n  tmpvar_2.x = q4;\\\\n  tmpvar_2.y = q5;\\\\n  tmpvar_2.z = q6;\\\\n  sustain = (0.98 - q14);\\\\n  ffac = q17;\\\\n  vec2 uv_3;\\\\n  uv_3 = (((uv - 0.5) * (1.0 - \\\\n    (q10 / (1.0 - ((texture (sampler_blur1, uv).xyz * scale1) + bias1).z))\\\\n  )) + 0.5);\\\\n  xlat_mutableuv1 = (((uv_orig - 0.5) * aspect.xy) * q16);\\\\n  vec4 tmpvar_4;\\\\n  tmpvar_4 = fract((8.0 * texture (sampler_noise_lq, (uv_3 + rand_frame.yz))));\\\\n  vec3 tmpvar_5;\\\\n  tmpvar_5 = tmpvar_4.xyz;\\\\n  if ((tmpvar_4.y > (0.4 * rad))) {\\\\n    vec3 tmpvar_6;\\\\n    tmpvar_6 = (tmpvar_4.xyz - vec3(0.5, 0.5, 0.5));\\\\n    vec4 nb2_7;\\\\n    vec4 nb_8;\\\\n    vec2 tmpvar_9;\\\\n    tmpvar_9 = (0.0078125 * floor((\\\\n      (128.0 * texture (sampler_pc_main, (uv_3 - texsize.zw)).yz)\\\\n     + vec2(0.5, 0.5))));\\\\n    nb_8.x = (1.0 - (tmpvar_9.y + (0.015625 * \\\\n      (tmpvar_9.x - 0.5)\\\\n    )));\\\\n    vec2 tmpvar_10;\\\\n    tmpvar_10 = (0.0078125 * floor((\\\\n      (128.0 * texture (sampler_pc_main, (uv_3 + (texsize.zw * vec2(1.0, -1.0)))).yz)\\\\n     + vec2(0.5, 0.5))));\\\\n    nb_8.y = (1.0 - (tmpvar_10.y + (0.015625 * \\\\n      (tmpvar_10.x - 0.5)\\\\n    )));\\\\n    vec2 tmpvar_11;\\\\n    tmpvar_11 = (0.0078125 * floor((\\\\n      (128.0 * texture (sampler_pc_main, (uv_3 + texsize.zw)).yz)\\\\n     + vec2(0.5, 0.5))));\\\\n    nb_8.z = (1.0 - (tmpvar_11.y + (0.015625 * \\\\n      (tmpvar_11.x - 0.5)\\\\n    )));\\\\n    vec2 tmpvar_12;\\\\n    tmpvar_12 = (0.0078125 * floor((\\\\n      (128.0 * texture (sampler_pc_main, (uv_3 + (texsize.zw * vec2(-1.0, 1.0)))).yz)\\\\n     + vec2(0.5, 0.5))));\\\\n    nb_8.w = (1.0 - (tmpvar_12.y + (0.015625 * \\\\n      (tmpvar_12.x - 0.5)\\\\n    )));\\\\n    vec2 tmpvar_13;\\\\n    tmpvar_13 = (0.0078125 * floor((\\\\n      (128.0 * texture (sampler_pc_main, (uv_3 + (texsize.zw * vec2(0.0, -1.0)))).yz)\\\\n     + vec2(0.5, 0.5))));\\\\n    nb2_7.x = (1.0 - (tmpvar_13.y + (0.015625 * \\\\n      (tmpvar_13.x - 0.5)\\\\n    )));\\\\n    vec2 tmpvar_14;\\\\n    tmpvar_14 = (0.0078125 * floor((\\\\n      (128.0 * texture (sampler_pc_main, (uv_3 + (texsize.zw * vec2(1.0, 0.0)))).yz)\\\\n     + vec2(0.5, 0.5))));\\\\n    nb2_7.y = (1.0 - (tmpvar_14.y + (0.015625 * \\\\n      (tmpvar_14.x - 0.5)\\\\n    )));\\\\n    vec2 tmpvar_15;\\\\n    tmpvar_15 = (0.0078125 * floor((\\\\n      (128.0 * texture (sampler_pc_main, (uv_3 + (texsize.zw * vec2(0.0, 1.0)))).yz)\\\\n     + vec2(0.5, 0.5))));\\\\n    nb2_7.z = (1.0 - (tmpvar_15.y + (0.015625 * \\\\n      (tmpvar_15.x - 0.5)\\\\n    )));\\\\n    vec2 tmpvar_16;\\\\n    tmpvar_16 = (0.0078125 * floor((\\\\n      (128.0 * texture (sampler_pc_main, (uv_3 + (texsize.zw * vec2(-1.0, 0.0)))).yz)\\\\n     + vec2(0.5, 0.5))));\\\\n    nb2_7.w = (1.0 - (tmpvar_16.y + (0.015625 * \\\\n      (tmpvar_16.x - 0.5)\\\\n    )));\\\\n    vec4 tmpvar_17;\\\\n    tmpvar_17 = min (nb_8, nb2_7);\\\\n    nb_8.zw = tmpvar_17.zw;\\\\n    nb_8.xy = min (tmpvar_17.xy, tmpvar_17.zw);\\\\n    xlat_mutabledist = (min (nb_8.x, nb_8.y) + ((0.006 * tmpvar_6.x) * abs(tmpvar_6.y)));\\\\n  } else {\\\\n    xlat_mutabledist = tmpvar_5.x;\\\\n  };\\\\n  vec2 tmpvar_18;\\\\n  tmpvar_18 = (0.0078125 * floor((\\\\n    (128.0 * texture (sampler_pc_main, uv_3).yz)\\\\n   + vec2(0.5, 0.5))));\\\\n  xlat_mutabledist = (min (xlat_mutabledist, (1.0 - \\\\n    (tmpvar_18.y + (0.015625 * (tmpvar_18.x - 0.5)))\\\\n  )) - (q10 * 0.8));\\\\n  xlat_mutablelimit = (15.0 + (10.0 * xlat_mutabledist));\\\\n  vec3 tmpvar_19;\\\\n  tmpvar_19.xy = (xlat_mutableuv1 * xlat_mutabledist);\\\\n  tmpvar_19.z = xlat_mutabledist;\\\\n  xlat_mutableuv2 = (((tmpvar_19 / q7) * tmpvar_1) + tmpvar_2);\\\\n  xlat_mutableuv2 = ((fract(\\\\n    ((xlat_mutableuv2 / 8.0) + 0.5)\\\\n  ) - 0.5) * 8.0);\\\\n  int iterations_21;\\\\n  vec3 zz0_22;\\\\n  vec3 zz_23;\\\\n  zz_23 = xlat_mutableuv2;\\\\n  zz0_22 = (xlat_mutableuv2 + q8);\\\\n  iterations_21 = int((8.0 - float(\\\\n    (xlat_mutabledist > 0.8)\\\\n  )));\\\\n  for (int n_20 = 0; n_20 <= iterations_21; n_20++) {\\\\n    zz_23 = ((2.0 * clamp (zz_23, vec3(-1.0, -1.0, -1.0), vec3(1.0, 1.0, 1.0))) - zz_23);\\\\n    zz_23 = (zz_23 * (clamp (\\\\n      max ((0.25 / dot (zz_23, zz_23)), 0.25)\\\\n    , 0.0, 1.0) * 4.0));\\\\n    zz_23 = ((ffac * zz_23) + zz0_22);\\\\n  };\\\\n  xlat_mutablestruc = (sqrt(dot (zz_23.xz, zz_23.xz)) / xlat_mutablelimit);\\\\n  vec2 tmpvar_24;\\\\n  tmpvar_24 = (0.0078125 * floor((\\\\n    (128.0 * vec2((1.0 - xlat_mutabledist)))\\\\n   + vec2(0.5, 0.5))));\\\\n  vec2 tmpvar_25;\\\\n  tmpvar_25.x = ((64.0 * (\\\\n    (1.0 - xlat_mutabledist)\\\\n   - tmpvar_24.x)) + 0.5);\\\\n  tmpvar_25.y = tmpvar_24.x;\\\\n  vec3 tmpvar_26;\\\\n  float tmpvar_27;\\\\n  tmpvar_27 = (q14 * 2.0);\\\\n  tmpvar_26.x = (((1.0 - sustain) * xlat_mutablestruc) + (sustain * mix (texture (sampler_main, uv_3).xyz, \\\\n    ((texture (sampler_blur1, uv_3).xyz * scale1) + bias1)\\\\n  , vec3(tmpvar_27)).x));\\\\n  tmpvar_26.yz = tmpvar_25;\\\\n  vec3 tmpvar_28;\\\\n  tmpvar_28.y = 1.0;\\\\n  tmpvar_28.x = sustain;\\\\n  tmpvar_28.z = 1.0;\\\\n  vec3 tmpvar_29;\\\\n  tmpvar_29.y = 0.0;\\\\n  tmpvar_29.x = 0.003921569;\\\\n  tmpvar_29.z = (0.01568628 * (0.2 + rad));\\\\n  vec4 tmpvar_30;\\\\n  tmpvar_30.w = 1.0;\\\\n  tmpvar_30.xyz = mix (tmpvar_26, ((\\\\n    mix (texture (sampler_main, uv_3).xyz, ((texture (sampler_blur1, uv_3).xyz * scale1) + bias1), vec3(tmpvar_27))\\\\n   * tmpvar_28) - tmpvar_29), vec3(clamp ((\\\\n    sqrt(dot (zz_23, zz_23))\\\\n   - xlat_mutablelimit), 0.0, 1.0)));\\\\n  ret = tmpvar_30.xyz;\\\\n }\\\",\\\"comp\\\":\\\"float xlat_mutableinten;\\\\nfloat xlat_mutabletmp;\\\\nvec2 xlat_mutableuv1;\\\\nvec2 xlat_mutableuv2;\\\\nfloat xlat_mutablez;\\\\n shader_body { \\\\n  float t_rel_2;\\\\n  vec3 ret1_3;\\\\n  float struc_4;\\\\n  xlat_mutableuv1 = ((uv * aspect.xy) - vec2(0.5, 0.5));\\\\n  vec4 tmpvar_5;\\\\n  tmpvar_5 = texture (sampler_main, uv);\\\\n  float tmpvar_6;\\\\n  vec4 tmpvar_7;\\\\n  tmpvar_7 = texture (sampler_blur1, uv);\\\\n  tmpvar_6 = mix (min ((1.0 - tmpvar_5.z), (1.0 - \\\\n    ((texture (sampler_blur2, uv).xyz * scale2) + bias2)\\\\n  .z)), (1.0 - (\\\\n    (tmpvar_7.xyz * scale1)\\\\n   + bias1).z), 0.5);\\\\n  struc_4 = ((mix (tmpvar_5.xyz, \\\\n    ((tmpvar_7.xyz * scale1) + bias1)\\\\n  , vec3(tmpvar_6)).x * (1.0 - tmpvar_6)) * tmpvar_6);\\\\n  vec2 tmpvar_8;\\\\n  tmpvar_8.x = q11;\\\\n  tmpvar_8.y = q12;\\\\n  xlat_mutableuv2 = ((xlat_mutableuv1 * 0.2) - (tmpvar_8 * 0.2));\\\\n  vec2 uvi_9;\\\\n  uvi_9 = (xlat_mutableuv2 * 4.0);\\\\n  float zv_10;\\\\n  zv_10 = (0.008 * time);\\\\n  xlat_mutabletmp = clamp (dot ((texture (sampler_noise_hq, \\\\n    (xlat_mutableuv2 + (0.03 * ((\\\\n      (dot (texture (sampler_noise_hq, uvi_9), vec4(0.32, 0.49, 0.29, 0.0)) + (dot (texture (sampler_noise_hq, (\\\\n        (uvi_9 * 2.0)\\\\n       + zv_10)), vec4(0.32, 0.49, 0.29, 0.0)) / 2.0))\\\\n     + \\\\n      (dot (texture (sampler_noise_hq, ((uvi_9 * 4.0) + (2.0 * zv_10))), vec4(0.32, 0.49, 0.29, 0.0)) / 4.0)\\\\n    ) + (\\\\n      dot (texture (sampler_noise_hq, ((uvi_9 * 8.0) + (4.0 * zv_10))), vec4(0.32, 0.49, 0.29, 0.0))\\\\n     / 8.0))))\\\\n  ) - 0.4), vec4(0.32, 0.49, 0.29, 0.0)), 0.0, 1.0);\\\\n  float tmpvar_11;\\\\n  tmpvar_11 = clamp ((pow (xlat_mutabletmp, 1.2) * sign(xlat_mutabletmp)), 0.0, 1.0);\\\\n  xlat_mutabletmp = tmpvar_11;\\\\n  vec3 tmpvar_12;\\\\n  tmpvar_12.xy = vec2(0.1, 0.1);\\\\n  tmpvar_12.z = (1.2 - uv.y);\\\\n  ret1_3 = ((tmpvar_12 + 0.07) + ((\\\\n    clamp (((tmpvar_6 * 2.0) - 1.5), 0.0, 1.0)\\\\n   * tmpvar_11) * 4.0));\\\\n  t_rel_2 = (q13 * 6.0);\\\\n  for (int n_1 = 1; n_1 <= 3; n_1++) {\\\\n    xlat_mutablez = (1.0 - fract((\\\\n      (float(n_1) / 3.0)\\\\n     - \\\\n      (fract(-(t_rel_2)) / 3.0)\\\\n    )));\\\\n    xlat_mutableinten = (((1.0 - xlat_mutablez) * xlat_mutablez) * 2.0);\\\\n    vec2 tmpvar_13;\\\\n    tmpvar_13.x = q11;\\\\n    tmpvar_13.y = q12;\\\\n    xlat_mutableuv2 = (((xlat_mutablez * xlat_mutableuv1) / 4.0) - (tmpvar_13 / 6.0));\\\\n    vec2 uvi_14;\\\\n    uvi_14 = (xlat_mutableuv2 * 4.0);\\\\n    float zv_15;\\\\n    zv_15 = (0.008 * time);\\\\n    xlat_mutabletmp = clamp (dot ((\\\\n      (texture (sampler_noise_hq, (xlat_mutableuv2 + (0.03 * (\\\\n        ((dot (texture (sampler_noise_hq, uvi_14), vec4(0.32, 0.49, 0.29, 0.0)) + (dot (texture (sampler_noise_hq, \\\\n          ((uvi_14 * 2.0) + zv_15)\\\\n        ), vec4(0.32, 0.49, 0.29, 0.0)) / 2.0)) + (dot (texture (sampler_noise_hq, (\\\\n          (uvi_14 * 4.0)\\\\n         + \\\\n          (2.0 * zv_15)\\\\n        )), vec4(0.32, 0.49, 0.29, 0.0)) / 4.0))\\\\n       + \\\\n        (dot (texture (sampler_noise_hq, ((uvi_14 * 8.0) + (4.0 * zv_15))), vec4(0.32, 0.49, 0.29, 0.0)) / 8.0)\\\\n      )))) - (xlat_mutablez * 0.5))\\\\n     - 0.3), vec4(0.32, 0.49, 0.29, 0.0)), 0.0, 1.0);\\\\n    xlat_mutabletmp = (((\\\\n      clamp ((xlat_mutabletmp * sign(xlat_mutabletmp)), 0.0, 1.0)\\\\n     * xlat_mutableinten) * q1) * 2.0);\\\\n    ret1_3 = (((ret1_3 + \\\\n      ((vec3(4.0, 3.0, 0.8) * q1) * struc_4)\\\\n    ) * clamp (\\\\n      (1.0 - xlat_mutabletmp)\\\\n    , 0.0, 1.0)) + xlat_mutabletmp);\\\\n  };\\\\n  vec4 tmpvar_16;\\\\n  tmpvar_16.w = 1.0;\\\\n  tmpvar_16.xyz = (1.0 - exp((-1.6 * ret1_3)));\\\\n  ret = tmpvar_16.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/martin - chain breaker.json\":\n/*!*******************************************************!*\\\n  !*** ./presets/converted/martin - chain breaker.json ***!\n  \\*******************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":4,\\\"gammaadj\\\":1.98,\\\"decay\\\":0.5,\\\"echo_zoom\\\":1,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":3,\\\"additivewave\\\":1,\\\"wave_dots\\\":1,\\\"wave_thick\\\":1,\\\"wave_brighten\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":0.527,\\\"wave_smoothing\\\":0,\\\"wave_mystery\\\":0.6,\\\"modwavealphastart\\\":0,\\\"modwavealphaend\\\":1.32,\\\"warpanimspeed\\\":1.459,\\\"warpscale\\\":2.007,\\\"zoom\\\":0.9999,\\\"warp\\\":0.01,\\\"sx\\\":0.9999,\\\"wave_g\\\":0.49,\\\"ob_a\\\":1,\\\"ib_size\\\":0.26,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":1.85,\\\"mv_r\\\":0.5,\\\"mv_g\\\":0.5,\\\"mv_b\\\":0.5,\\\"mv_a\\\":0,\\\"b2x\\\":0.6,\\\"b3x\\\":0.4,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"sides\\\":8,\\\"additive\\\":1,\\\"num_inst\\\":256,\\\"rad\\\":0.03632,\\\"tex_ang\\\":1.00531,\\\"tex_zoom\\\":1.53117,\\\"g\\\":1,\\\"b\\\":1,\\\"a\\\":0,\\\"g2\\\":0,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":5,\\\"additive\\\":1,\\\"num_inst\\\":256,\\\"x\\\":0.26,\\\"y\\\":0.2,\\\"rad\\\":0.39317,\\\"tex_zoom\\\":0.9355,\\\"g2\\\":0,\\\"a2\\\":0.2,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"n = (instance);\\\\nFLen = reg00;\\\\nSLen = reg00/2;\\\\n\\\\nz0 = 10;\\\\ny0 = gmegabuf(2000+n+FLen)/z0;\\\\nx0 = gmegabuf(2000+n)/z0;\\\\n\\\\na0 = (gmegabuf(n+10000));\\\\n\\\\nk1 = instance/num_inst-.5;\\\\nx = .5 + x0 + sin(k1*8*sin(q12*.07)) * sin(q11*.13)*q3*.7; \\\\ny = .5 + q32*(y0 + sin(k1*8*sin(q14*.1)) * sin(q13*.2)*q3*.7); \\\\n\\\\narg = q2/8;\\\\nhigh = exp(-500*pow(arg+.5-instance/num_inst,2));\\\\nhigh += exp(-500*pow(-arg+.5-instance/num_inst,2));\\\\n\\\\nexc = sqrt((pow(x-.5,2)+pow(y-.5,2)));\\\\nrad0 = above(z0,0)*min (.1, a0/60)+.005;\\\\nrad0 = rad0 * (1+2*exc) * (1+high);\\\\n\\\\np1 = .5 + sin(q12)/2;\\\\np2 = .5 + sin(q13*1.4)/2;\\\\n//p1 = rand(1)-.5;\\\\n//p2 = rand(1)-.5;\\\\nexc = ((pow(x-p1,2)+pow(y-p2,2)));\\\\nrad = min(rad0 * (1 + .004*q3/abs(exc)),1) ;\\\\n\\\\na = min(a0*8+.4,1);\\\\n\\\\nk1 = instance/num_inst*5 + high;\\\\nw = 1-exp(-treb_att/2-.5);\\\\ng = w + (1-w)*sin(k1);\\\\nr = w + (1-w)*sin(k1-6.28/3);\\\\nb = w + (1-w)*sin(k1-6.28*2/3);\\\\n\\\\na2 = a/4;\\\\ng2 = g*0; b2 = b*0; r2 = r*0;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":13,\\\"additive\\\":1,\\\"num_inst\\\":5,\\\"x\\\":0.65,\\\"y\\\":0.38,\\\"rad\\\":0.57049,\\\"tex_zoom\\\":0.73678,\\\"a\\\":0.7,\\\"g2\\\":0,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_b\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"k1 = instance/num_inst;\\\\nx = .5 + .3*sin(instance*k1*413);\\\\ny = .5 + .3 * sin(instance*k1*113);\\\\n\\\\nrad = .1 + .4*sin(k1*333);\\\\n\\\\nr =  .5*sin(k1*234);\\\\nb =  .5*sin(k1*534);\\\\ng =  .5*sin(k1*34);\\\"},{\\\"baseVals\\\":{\\\"sides\\\":14,\\\"additive\\\":1,\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"x\\\":0.6,\\\"y\\\":0.55,\\\"rad\\\":0.97237,\\\"ang\\\":1.25664,\\\"tex_zoom\\\":0.34933,\\\"g\\\":0.6,\\\"g2\\\":0,\\\"b2\\\":1,\\\"border_r\\\":0.2,\\\"border_g\\\":0.7,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sep\\\":120,\\\"spectrum\\\":1,\\\"additive\\\":1,\\\"scaling\\\":7.52386,\\\"smoothing\\\":0,\\\"r\\\":0,\\\"a\\\":0.7},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"FLen = reg00;\\\\n\\\\nn = int(sample*FLen);\\\\nvol = (value1+value2) * (1+ .1 / (sample+.03));\\\\n\\\\nchg = min(max(vol- gmegabuf(n),-1),1);\\\\ndec = if (chg>0, 1-chg*0.3, 1+chg*0.2);\\\\n\\\\nchg = q1 -q2;\\\\ndec = .94 - abs(chg) * if (chg> 0, .2,.1);\\\\n\\\\ndec = min(max(dec,0),1);\\\\ngmegabuf(n) = gmegabuf(n)*dec + vol*(1-dec);\\\\n\\\\ndec = q2/4;\\\\n//dec = .90;\\\\ndec = max(min(dec,1),.1);\\\\n\\\\ngmegabuf(n) = gmegabuf(n)*dec + gmegabuf(n+(q2<.8))*(1-dec);\\\\ngmegabuf(n+10000) = gmegabuf(n+10000)*.2 + .8* vol/3;\\\\na = .0;\\\\nx = sample;\\\\ny = .2 + gmegabuf(n+0)*.23;\\\"},{\\\"baseVals\\\":{\\\"samples\\\":256,\\\"usedots\\\":1,\\\"scaling\\\":0.89152,\\\"smoothing\\\":0.82,\\\"a\\\":0.9,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"samples\\\":32,\\\"thick\\\":1,\\\"scaling\\\":0.89152,\\\"smoothing\\\":0.82,\\\"r\\\":0,\\\"g\\\":0.2,\\\"b\\\":0.6,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"spectrum\\\":1,\\\"usedots\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"n = 0;\\\\nloop (50000,\\\\ngmegabuf(n) = 0;\\\\nmegabuf(n) = 0;\\\\nn = n+1;\\\\n);\\\\n\\\\nsw1 = rand(8);\\\\nsw2 = rand(8);\\\\nsw3 = rand(8);\\\\nsw4 = rand(8);\\\",\\\"frame_eqs_eel\\\":\\\"flen = 512; //Wave Punkte\\\\nreg00 = FLen;\\\\nSLen = FLen/2;\\\\ndec_m = pow(.94, 30/fps);\\\\n\\\\n//Volume\\\\nn = 0; vol = 0;\\\\nloop (SLen,\\\\n  vol = vol + pow(gmegabuf(n),2)/FLen;  \\\\n  n = n+1;\\\\n);\\\\nvol = sqrt(vol)/2;\\\\nvol_ = vol_*dec_m + (1-dec_m)* (vol);\\\\n\\\\n//switches\\\\nlev1 = lev1 * dec_m + (1-dec_m) * gmegabuf(1);\\\\nlev2 = lev2 * dec_m + (1-dec_m) * gmegabuf(20);\\\\nlev3 = lev3 * dec_m + (1-dec_m) * gmegabuf(50);\\\\nlev4 = lev4 * dec_m + (1-dec_m) * gmegabuf(100);\\\\nsw1 = sw1 + (lev1-gmegabuf(1)>0)/fps;\\\\nsw2 = sw2 + (lev2-gmegabuf(20)>0)/fps;\\\\nsw3 = sw3 + (lev3-gmegabuf(50)>0)/fps;\\\\nsw4 = sw4 + (lev4-gmegabuf(100)>0)/fps;\\\\n\\\\ndif = (1+sin(sw3/4))*16+2;\\\\nofs = sin(sw2/3)*8;\\\\nn = 0; k1 = frame*0; \\\\nloop (SLen,\\\\n      m1 = (n)%SLen;\\\\n      m2 = (n+ofs)%SLen;\\\\n\\\\n      k = (m1+dif)%SLen;\\\\n      i = (SLen+m2-dif)%SLen;\\\\n\\\\n      in1 = (gmegabuf(m1)-gmegabuf(k))/pow(vol_+.03,.8)*1.2;\\\\n      in2 = (gmegabuf(m2)-gmegabuf(i))/pow(vol_+.03,.8)*1.2;\\\\n\\\\n      dec = if (pow(gmegabuf(2000+n),2) + pow(gmegabuf(2000+FLen+n),2)> in1*in1+in2*in2,.8,.94) ;\\\\n      dec = pow (dec, 30/fps); \\\\n\\\\n      gmegabuf(2000+n) =       gmegabuf(2000+n)*dec      +(1-dec)* in1;\\\\n      gmegabuf(2000+FLen+n) =  gmegabuf(2000+FLen+n)*dec +(1-dec)* in2;\\\\n      n=n+1;\\\\n);\\\\n\\\\nq1 = (bass+treb+mid)/3;\\\\nq2 = (bass_att+treb_att+mid_att)/3;\\\\nq3 = vol_;\\\\nq11 = sw1;\\\\nq12 = sw2;\\\\nq13 = sw3;\\\\nq14 = sw4;\\\\n\\\\nrot = 0; zoom = .98; warp = .3; rot = 0;\\\\n\\\\nq32 = aspecty;\\\\nmonitor = dif;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec4 tmpvar_1;\\\\n  tmpvar_1.w = 1.0;\\\\n  tmpvar_1.xyz = ((texture (sampler_main, uv).xyz * clamp (\\\\n    (q1 - 0.8)\\\\n  , 0.0, 1.0)) * 0.92);\\\\n  ret = tmpvar_1.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec3 ret_1;\\\\n  ret_1 = (texture (sampler_main, uv).xyz + ((texture (sampler_blur2, uv).xyz * scale2) + bias2));\\\\n  ret_1 = (ret_1 + ((0.8 * \\\\n    (hue_shader - 0.8)\\\\n  ) * (1.0 - uv.y)));\\\\n  vec4 tmpvar_2;\\\\n  tmpvar_2.w = 1.0;\\\\n  tmpvar_2.xyz = ret_1;\\\\n  ret = tmpvar_2.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/martin - disco mix 4.json\":\n/*!*****************************************************!*\\\n  !*** ./presets/converted/martin - disco mix 4.json ***!\n  \\*****************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":0,\\\"gammaadj\\\":1.980001,\\\"decay\\\":0.5,\\\"echo_zoom\\\":0.999998,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":3,\\\"wave_mode\\\":2,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":20.944651,\\\"wave_smoothing\\\":0,\\\"wave_mystery\\\":0.08,\\\"modwavealphastart\\\":0,\\\"modwavealphaend\\\":1.32,\\\"warpanimspeed\\\":1.4595,\\\"warpscale\\\":2.0067,\\\"zoom\\\":0.9999,\\\"warp\\\":0.01,\\\"sx\\\":0.9999,\\\"wave_r\\\":0,\\\"wave_g\\\":0.99,\\\"ob_size\\\":0.015,\\\"ob_b\\\":1,\\\"ib_size\\\":0.26,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":1.85,\\\"mv_r\\\":0.4999,\\\"mv_g\\\":0.4999,\\\"mv_b\\\":0.4999,\\\"mv_a\\\":0,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"textured\\\":1,\\\"y\\\":0.47,\\\"rad\\\":0.24057,\\\"tex_zoom\\\":0.14057,\\\"g\\\":0.3,\\\"b\\\":0.5,\\\"g2\\\":0,\\\"b2\\\":0.3,\\\"a2\\\":1,\\\"border_b\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\\nx = .5; y = .5;\\\\na = q24; \\\\na2 = q24;\\\\n//a = 1;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"additive\\\":1,\\\"thickoutline\\\":1,\\\"rad\\\":0.05134,\\\"tex_zoom\\\":0.12288,\\\"r\\\":0.3,\\\"g\\\":0.2,\\\"b\\\":0.2,\\\"a\\\":0.7,\\\"g2\\\":0,\\\"border_r\\\":0,\\\"border_g\\\":0.5,\\\"border_b\\\":0.5,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"r = .5 + .3 * sin(time);\\\\ng = .5 + .3 * sin(time/1.5);\\\\nb = .5 + .3 * sin(time/3.7);\\\\n\\\\nr2 = 0; b2 = 0; g2 = 0;\\\\n\\\\na = .05; a2 = 0;\\\"},{\\\"baseVals\\\":{\\\"x\\\":0.503,\\\"rad\\\":0.01,\\\"tex_zoom\\\":0.609857,\\\"r\\\":0,\\\"a\\\":0,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\\ndy = .1 * sin(time*14);;\\\\ndx = q1*dy;\\\\n\\\\nx = .5 + dx;\\\\ny = .5 + dy;\\\\n\\\\na = q25; a2 = q25;\\\\nrad = q21/110;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":63,\\\"textured\\\":1,\\\"y\\\":1,\\\"rad\\\":0.548217,\\\"tex_zoom\\\":0.499805,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"samples\\\":100,\\\"thick\\\":1,\\\"scaling\\\":0.045052,\\\"smoothing\\\":0.1,\\\"a\\\":0.6},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"t2 = .45 + rand(10)/100;\\\",\\\"point_eqs_eel\\\":\\\"k1 = bnot((sample*100+time)%2);\\\\n\\\\ndy = .015*above(sin(sample*11),0) \\\\n    +.008*above(sin(time+sample*74),0)\\\\n    +.008*above(sin(time+sample*128),0);\\\\n \\\\ndx = .01*above(sin(sample*27),0) + \\\\n      +.01*above(sin(time+sample*134),0);\\\\n\\\\nx = .2*(sample-.5) + .5 + dx;\\\\ny = t2 + dy;\\\\n\\\\na = q24 * k1 * bnot(q27%4);\\\\n\\\\nr = .6; g = 0; b = .6;\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"scaling\\\":0.891519,\\\"smoothing\\\":0.82,\\\"a\\\":0.02,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"tm = time*.1;\\\\nt1 = t1*sin(tm*t4) + (1-t1)*sin(tm*t7);\\\\nt2 = t2*sin(tm*t5) + (1-t2)*sin(tm*t8);\\\\nt3 = t3*sin(tm*t6) + (1-t3)*sin(tm*1);\\\\n\\\\ntic = min(time - tin,1);\\\\ntin = time;\\\\n\\\\ntva = (tic*q1*.5);\\\\ntvb = (tic*q2*.5);\\\\ntvc = (tic*q3*.5);\\\\n\\\\nq1 = tva;\\\\nq2 = tvb;\\\\nq3 = tvc;\\\\n\\\\nsz = .5;\\\\nlen = q4;\\\\nt4 = len;\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"scaling\\\":0.891519,\\\"smoothing\\\":0.82,\\\"r\\\":0,\\\"g\\\":0.2,\\\"b\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"tm = time*.1;\\\\nt1 = t1*sin(tm*t4) + (1-t1)*sin(tm*t7);\\\\nt2 = t2*sin(tm*t5) + (1-t2)*sin(tm*t8);\\\\nt3 = t3*sin(tm*t6) + (1-t3)*sin(tm*1);\\\\n\\\\ntic = min(time - tin,1);\\\\ntin = time;\\\\n\\\\ntva = (tic*q1*.5);\\\\ntvb = (tic*q2*.5);\\\\ntvc = (tic*q3*.5);\\\\n\\\\nq1 = tva;\\\\nq2 = tvb;\\\\nq3 = tvc;\\\\n\\\\nsz = .5;\\\\nlen = 1;\\\\nt4 = len;\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"spectrum\\\":1,\\\"usedots\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"xk = 0;\\\",\\\"frame_eqs_eel\\\":\\\"dec_med = pow (0.8, 30/fps);\\\\ndec_slow = pow (0.95, 30/fps);\\\\ndec_xlow = pow (0.995, 30/fps);\\\\nbeat = max (max (bass, mid), treb); \\\\navg = avg*dec_slow + beat*(1-dec_slow);\\\\nis_beat = above(beat, .2+avg+peak) * above (time, t0+.2);\\\\nt0 = is_beat*time + (1-is_beat)*t0;\\\\npeak = is_beat * beat + (1-is_beat)*peak*dec_med;\\\\nindex = (index + is_beat) %16;\\\\nindex2 = (index2 + is_beat*bnot(index))%2;\\\\n\\\\nq20 = avg;\\\\nq21 = beat;\\\\nq22 = peak;\\\\nq23 = index;\\\\nq24 = is_beat;\\\\nq26 = bass_att + mid_att + treb_att;\\\\nq27 = index + 1;\\\\n\\\\npeakx = above(q22,1.5*maxp);\\\\nmaxp = max(maxp, q22);\\\\nmaxp = maxp*dec_xlow;\\\\n\\\\nk1 =  is_beat*equal(index%3,0);\\\\np1 =  k1*(p1+1) + (1-k1)*p1;\\\\np2 = dec_med * p2+ (1-dec_med)*p1;\\\\nrott = p2 * 3.1416/4;\\\\n\\\\nq1 = cos(rott);\\\\nq2 = sin(rott);\\\\nq3 = -q2;\\\\nq4 = q1;\\\\n\\\\ntrig = q24 * bnot(index%4);\\\\ndir = dir + trig * q26*(rand(100)/100-.5)/2 + peakx;\\\\ndir_ = dir_ * dec_slow + dir*(1-dec_slow);\\\\ndir__ = dir__ * dec_slow + dir_*(1-dec_slow);\\\\n\\\\nq5 = cos(dir__); \\\\nq6 = sin(dir__);\\\\n\\\\nspeed = speed * bnot(trig) + trig*q26*5/fps ;\\\\nspeed_= speed_* dec_slow + speed*(1-dec_slow);\\\\n\\\\nmovx = movx + speed_*q6;\\\\nmovy = movy + speed_*q5;\\\\n\\\\n//movx = movx + speed;\\\\n//movy = movy + speed;\\\\n\\\\n\\\\nq7 = movx;\\\\nq8 = movy;\\\\n\\\\ntilt = dir - dir__;\\\\ntilt_ = dec_slow*tilt_ + (1-dec_slow)*tilt;\\\\n\\\\n\\\\nmonitor = maxp;\\\\nq9 = cos(tilt_*speed_);\\\\nq10 = sin(tilt_*speed_);\\\\n\\\\nq12 = time;\\\",\\\"pixel_eqs_eel\\\":\\\"zoom = 1.3;\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec2 uv_1;\\\\n  vec2 uv6_2;\\\\n  vec2 tmpvar_3;\\\\n  tmpvar_3 = ((uv - 0.5) * aspect.xy);\\\\n  float tmpvar_4;\\\\n  tmpvar_4 = ((2.0 * sqrt(\\\\n    dot (tmpvar_3, tmpvar_3)\\\\n  )) + (rand_frame * 64.0)).x;\\\\n  uv_1 = (uv + (clamp (\\\\n    ((sin(tmpvar_4) / cos(tmpvar_4)) * normalize(tmpvar_3))\\\\n  , vec2(-2.0, -2.0), vec2(2.0, 2.0)) / 20.0));\\\\n  uv6_2 = (0.4 * sin((tmpvar_3 * 22.0)));\\\\n  vec4 tmpvar_5;\\\\n  tmpvar_5.w = 1.0;\\\\n  tmpvar_5.xyz = (((q24 * \\\\n    (((texture (sampler_main, uv_1).xyz - (\\\\n      ((texture (sampler_blur1, fract(uv_1)).xyz * scale1) + bias1)\\\\n     * 0.04)) + (0.15 * (vec3(\\\\n      (0.1 / sqrt(dot (uv6_2, uv6_2)))\\\\n    ) * roam_cos.xyz))) - 0.02)\\\\n  ) * 0.98) + ((1.0 - q24) * texture (sampler_main, uv_orig).xyz));\\\\n  ret = tmpvar_5.xyz;\\\\n }\\\",\\\"comp\\\":\\\"vec3 xlat_mutableret1;\\\\nvec2 xlat_mutablers;\\\\n shader_body { \\\\n  vec2 uv1_1;\\\\n  mat2 tmpvar_2;\\\\n  tmpvar_2[uint(0)].x = q9;\\\\n  tmpvar_2[uint(0)].y = -(q10);\\\\n  tmpvar_2[1u].x = q10;\\\\n  tmpvar_2[1u].y = q9;\\\\n  uv1_1 = (((uv_orig - 0.5) * aspect.xy) * tmpvar_2);\\\\n  uv1_1 = (uv1_1 * aspect.yx);\\\\n  float tmpvar_3;\\\\n  tmpvar_3 = (3.0 / abs(uv1_1.y));\\\\n  xlat_mutablers.x = (uv1_1.x * tmpvar_3);\\\\n  xlat_mutablers.y = (tmpvar_3 / 2.0);\\\\n  mat2 tmpvar_4;\\\\n  tmpvar_4[uint(0)].x = q5;\\\\n  tmpvar_4[uint(0)].y = -(q6);\\\\n  tmpvar_4[1u].x = q6;\\\\n  tmpvar_4[1u].y = q5;\\\\n  xlat_mutablers = (tmpvar_4 * xlat_mutablers);\\\\n  vec2 tmpvar_5;\\\\n  tmpvar_5.x = q7;\\\\n  tmpvar_5.y = q8;\\\\n  xlat_mutablers = (xlat_mutablers + tmpvar_5);\\\\n  xlat_mutableret1 = ((texture (sampler_blur1, fract(\\\\n    (xlat_mutablers / 12.0)\\\\n  )).xyz * scale1) + bias1);\\\\n  vec2 tmpvar_6;\\\\n  tmpvar_6.y = 0.0;\\\\n  tmpvar_6.x = q5;\\\\n  vec4 tmpvar_7;\\\\n  tmpvar_7.w = 1.0;\\\\n  tmpvar_7.xyz = (((xlat_mutableret1 * 32.0) / tmpvar_3) + ((\\\\n    ((q22 * sqrt(tmpvar_3)) / 4.0)\\\\n   * \\\\n    sin(((uv1_1 - q12) * q27))\\\\n  .x) * texture (sampler_main, (\\\\n    (((4.0 * xlat_mutableret1) / tmpvar_3).xy + ((uv1_1 / 2.0) / (0.5 + abs(uv1_1.y))))\\\\n   + tmpvar_6)).xyz));\\\\n  ret = tmpvar_7.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/martin - extreme heat.json\":\n/*!******************************************************!*\\\n  !*** ./presets/converted/martin - extreme heat.json ***!\n  \\******************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1.98,\\\"decay\\\":0.5,\\\"echo_zoom\\\":0.952,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":3,\\\"wave_mode\\\":5,\\\"additivewave\\\":1,\\\"wave_thick\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":0.474,\\\"wave_smoothing\\\":0.45,\\\"modwavealphastart\\\":0,\\\"modwavealphaend\\\":1.32,\\\"warpanimspeed\\\":1.459,\\\"warpscale\\\":2.007,\\\"zoom\\\":0.9999,\\\"warp\\\":0.01,\\\"sx\\\":0.9999,\\\"wave_r\\\":0.8,\\\"wave_g\\\":0.49,\\\"ob_size\\\":0,\\\"ob_a\\\":0.3,\\\"ib_size\\\":0.26,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":1.85,\\\"mv_r\\\":0.5,\\\"mv_g\\\":0.5,\\\"mv_b\\\":0.5,\\\"mv_a\\\":0,\\\"b1x\\\":0.8,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":7,\\\"additive\\\":1,\\\"num_inst\\\":1024,\\\"rad\\\":0.04896,\\\"tex_ang\\\":1.00531,\\\"tex_zoom\\\":1.53117,\\\"r\\\":0,\\\"g\\\":1,\\\"b\\\":1,\\\"a\\\":0,\\\"g2\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"max_age = reg00;\\\\nn = instance*12;\\\\n\\\\nx0 = gmegabuf (n);\\\\ny0 = gmegabuf (n+1);\\\\nz0 = gmegabuf (n+2); \\\\nif (z0 < -100, rad = 0; gmegabuf(n+8) = max_age,\\\\n  rad0 = pow(1-gmegabuf(n+8)/max_age,0.2)/z0* gmegabuf(n+7) + 0.01;\\\\n  rad = abs(rad0)*0.032 ;\\\\n\\\\n  x = 0.5 + x0/z0;\\\\n  y = 0.5 + y0/z0;\\\\n);\\\\n\\\\na = 1; a2 = 0.2;\\\\n\\\\ng = .8; g2 = .0;\\\\n//b = (gmegabuf(n+7)>0)*0.04/abs(rad0); b2 = 0;\\\\nb = (rand(10)>3)*0.2 + 0.2*(z0<0); b2 =0;\\\\n\\\\n\\\"},{\\\"baseVals\\\":{\\\"sides\\\":12,\\\"thickoutline\\\":1,\\\"x\\\":0.9,\\\"y\\\":0.7,\\\"rad\\\":0.02958,\\\"tex_zoom\\\":0.9355,\\\"g\\\":0.5,\\\"b\\\":1,\\\"g2\\\":0,\\\"b2\\\":0.4,\\\"border_r\\\":0.3,\\\"border_g\\\":0.7,\\\"border_b\\\":0.8,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"a = 1;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":44,\\\"textured\\\":1,\\\"rad\\\":1.397,\\\"tex_zoom\\\":0.44799,\\\"a\\\":0.5,\\\"r2\\\":1,\\\"g2\\\":0,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":34,\\\"thickoutline\\\":1,\\\"x\\\":0.65,\\\"y\\\":0.8,\\\"rad\\\":0.14595,\\\"tex_zoom\\\":0.3357,\\\"g2\\\":0,\\\"border_r\\\":0.2,\\\"border_g\\\":0.7,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"a = q22;\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"samples\\\":160,\\\"sep\\\":20,\\\"usedots\\\":1,\\\"additive\\\":1,\\\"scaling\\\":7.858,\\\"smoothing\\\":0.1,\\\"r\\\":0.2,\\\"g\\\":0.3,\\\"a\\\":0.6},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"x = rand(100)/100;\\\\ny =  0.5 - (1-0.7)/q32- 0.15*(rand(100)/100-0.5);\\\\na = 0.15;\\\\n\\\\nr= 0; b=1; g = 0;\\\"},{\\\"baseVals\\\":{\\\"usedots\\\":1,\\\"thick\\\":1,\\\"scaling\\\":0.89152,\\\"smoothing\\\":0.82,\\\"a\\\":0.1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"scaling\\\":0.89152,\\\"smoothing\\\":0.82,\\\"r\\\":0,\\\"g\\\":0.2,\\\"b\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"spectrum\\\":1,\\\"usedots\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"max_age =  4.5; // Sekunden\\\\nreg00 = max_age;\\\\n\\\\nn = 0;\\\\nloop (12*1024, gmegabuf(n) = max_age-1 + rand(2); n+=1);\\\\n\\\\n\\\\nq9 = (rand(25)-10)*2;\\\\nq3 = rand (100)/100;\\\\nq4 = rand (100)/100;\\\\n\\\\n//q2 = q3 = q4 = 0;\\\\n//record\\\\n// 0 : xpos\\\\n// 1 : ypos\\\\n// 2 : zpos\\\\n// 3 :vx\\\\n// 4 :vy\\\\n// 5 :vz\\\\n\\\\n\\\\n// 8 : age\\\",\\\"frame_eqs_eel\\\":\\\"dec_fast = 1 - 0.22*40/fps;\\\\ndec_med  = 1 - 0.15*40/fps;\\\\ndec_slow = 1 - 0.04* 40/fps;\\\\n\\\\nvol = (bass+med+treb)/3;\\\\nvol_ = vol_*dec_slow + (1-dec_slow)*vol;\\\\nbeat = vol;\\\\nis_beat = above(beat, 1+peak*4) * above (time, t0+.2);\\\\nt0   = if (is_beat,time,t0);\\\\npeak = if (is_beat, beat, peak*dec_med);\\\\n\\\\nindex = (index + is_beat) %1024;\\\\nind1 = ind1*dec_med + (1-dec_fast)*index;\\\\nind2 = ind2*dec_med + (1-dec_fast)*ind1;\\\\nq27 = ind2;\\\\nq24 = is_beat;\\\\n\\\\n//Partikel\\\\nran1 = if (is_beat, rand(100)/100-0.5, ran1);\\\\nran2 = if (is_beat, rand(100)/50+1, ran2);\\\\nran1_ = dec_med * ran1_ + (1-dec_med)*ran1;\\\\nhigh = ran2 > 2.9;\\\\nq5 = ran1_;\\\\n\\\\nn = 0;\\\\npush = max(0,vol-vol_alt)*vol_; air = 0.1*dt; \\\\ndt = 1/fps;\\\\nv00 = pow(push,0.25)+0.4; Free = 512; New = 0;\\\\n\\\\ny0 = -0.68; yobf = y0+0.1;\\\\nloop (512,\\\\n   megabuf (n) = gmegabuf (n);\\\\n   megabuf (n+1) = gmegabuf (n+1);\\\\n   megabuf (n+2) = gmegabuf (n+2);\\\\n  if (gmegabuf(n+8) > max_age,\\\\n    if (band(push >= dt*10 * !high,New < 200), \\\\n    Free -= 1; New +=1;\\\\n    // Init Neues Partikel\\\\n     Tht = rand (100) / 500 * (1+high*1.5);\\\\n     Phi   = rand (12);\\\\n     v0 = v00 * (1 + rand(10)/40);\\\\n     gmegabuf (n) = ran1*1.7;\\\\n     gmegabuf (n+1) = y0 + 2.2 * high;\\\\n     gmegabuf (n+2) = 2;\\\\n     gmegabuf (n+3) = v0*sin(Tht) * cos(Phi);\\\\n     gmegabuf (n+4) = v0*cos(4*Tht) * (1-high*1.5);\\\\n     gmegabuf (n+5) = v0*sin(Tht)*sin(Phi)*1.5*vol;\\\\n     gmegabuf (n+7) = 0;\\\\n     gmegabuf (n+8) = rand(100)/100;,0)\\\\n  ,\\\\n  //Integration\\\\n   Free -= 1;\\\\n   gmegabuf (n)   += gmegabuf(n+3)*dt;\\\\n   gmegabuf (n+1) += gmegabuf(n+4)*dt;\\\\n   gmegabuf (n+2) += gmegabuf(n+5)*dt;\\\\n\\\\n   gmegabuf (n+3) *= (1-air);\\\\n   gmegabuf (n+4) *= (1-air);\\\\n   gmegabuf (n+4) -= 0.8*dt;\\\\n   gmegabuf (n+5) *= (1-air);\\\\n   gmegabuf (n+7) = (gmegabuf(n+1)>yobf) * min(1,18*(gmegabuf(n+1)-yobf));\\\\n   if (band(gmegabuf(n+1)<yobf,gmegabuf(n+4)<0),gmegabuf(8) = max_age,0);\\\\n//  gmegabuf(n+7)=1;\\\\n   gmegabuf (n+8) += dt;);\\\\nn += 12);\\\\n  \\\\n//Kopien\\\\nn = 0;\\\\nloop (512,\\\\n  m = 511*12+n;\\\\n  gmegabuf (m) = (gmegabuf(n) + megabuf(n))/2;  \\\\n  gmegabuf (m+1) = (gmegabuf(n+1) + megabuf(n+1))/2;  \\\\n  gmegabuf (m+2) = (gmegabuf(n+2) + megabuf(n+2))/2;  \\\\n  gmegabuf (m+7) = gmegabuf(n+7);  \\\\n  gmegabuf (m+8) = gmegabuf(n+8);  \\\\nn += 12);\\\\n\\\\n\\\\n\\\\ndec = if (bass>bass1,0.5,0.9);\\\\nbass1 = bass1*dec + bass*(1-dec);\\\\nq1 = min(1,max(0,bass1-1.5) * abs(q3-0.5)*3);\\\\n\\\\nq10 = max (vol_-0.1,0.1);\\\\nvol_alt = vol;\\\\n\\\\n\\\\nq32 = aspecty;\\\\n\\\\n\\\\nnew1 = if (new>0,new,new1);\\\\n\\\\nmonitor = New1;\\\",\\\"pixel_eqs_eel\\\":\\\"dy = -.007*y;\\\\nwarp =.0;\\\\nrot = .025*sin(q27+x*7+y*0)*0.2/(abs(y-0.7)+0.1) * q10;// * (1-2*(y>0.7));\\\\nzoom = 1.003 + 0.2*max(0,y-0.7);\\\",\\\"warp\\\":\\\"vec2 ver;\\\\nfloat xlat_mutablecloud;\\\\nvec2 xlat_mutabledz;\\\\nvec2 xlat_mutableuv1;\\\\nvec2 xlat_mutableuv2;\\\\nfloat xlat_mutablez;\\\\n shader_body { \\\\n  vec2 tmpvar_1;\\\\n  tmpvar_1.y = 0.0;\\\\n  tmpvar_1.x = texsize.z;\\\\n  vec2 tmpvar_2;\\\\n  tmpvar_2.x = 0.0;\\\\n  tmpvar_2.y = texsize.w;\\\\n  ver = (tmpvar_2 * 2.0);\\\\n  vec3 ret_3;\\\\n  xlat_mutabledz.x = (2.0 * dot (vec3((texture (sampler_main, \\\\n    (uv + tmpvar_1)\\\\n  ).z - texture (sampler_main, \\\\n    (uv - tmpvar_1)\\\\n  ).z)), vec3(0.32, 0.49, 0.29)));\\\\n  xlat_mutabledz.y = (2.0 * dot (vec3((texture (sampler_main, \\\\n    (uv + ver)\\\\n  ).z - texture (sampler_main, \\\\n    (uv - ver)\\\\n  ).z)), vec3(0.32, 0.49, 0.29)));\\\\n  vec2 tmpvar_4;\\\\n  tmpvar_4.x = q3;\\\\n  tmpvar_4.y = (0.4 + (q4 * 0.4));\\\\n  xlat_mutableuv1 = (uv_orig - tmpvar_4);\\\\n  vec4 tmpvar_5;\\\\n  tmpvar_5 = texture (sampler_main, uv_orig);\\\\n  xlat_mutablez = ((0.8 * (xlat_mutableuv1.y - 0.4)) - (mix (tmpvar_5.x, \\\\n    ((texture (sampler_blur1, uv_orig).xyz * scale1) + bias1)\\\\n  .x, 0.5) * 0.03));\\\\n  vec2 tmpvar_6;\\\\n  tmpvar_6.x = (xlat_mutableuv1.x * xlat_mutablez);\\\\n  tmpvar_6.y = xlat_mutablez;\\\\n  vec2 tmpvar_7;\\\\n  tmpvar_7.x = 0.0;\\\\n  tmpvar_7.y = (-(time) * 0.014);\\\\n  xlat_mutableuv2 = (tmpvar_6 + tmpvar_7);\\\\n  vec2 tmpvar_8;\\\\n  tmpvar_8.x = 0.0;\\\\n  tmpvar_8.y = (time * 0.004);\\\\n  vec2 uvi_9;\\\\n  uvi_9 = ((xlat_mutableuv2 * 1.5) + tmpvar_8);\\\\n  float zv_10;\\\\n  zv_10 = (0.002 * time);\\\\n  xlat_mutablecloud = (1.0 - (1.5 * abs(\\\\n    (texture (sampler_noise_hq, ((xlat_mutableuv2 + (0.07 * \\\\n      abs((((\\\\n        (dot (texture (sampler_noise_hq, uvi_9), vec4(0.32, 0.49, 0.29, 0.0)) + (dot (texture (sampler_noise_hq, (\\\\n          (uvi_9 * 2.0)\\\\n         + zv_10)), vec4(0.32, 0.49, 0.29, 0.0)) / 2.0))\\\\n       + \\\\n        (dot (texture (sampler_noise_hq, ((uvi_9 * 4.0) + zv_10)), vec4(0.32, 0.49, 0.29, 0.0)) / 4.0)\\\\n      ) + (\\\\n        dot (texture (sampler_noise_hq, ((uvi_9 * 8.0) + zv_10)), vec4(0.32, 0.49, 0.29, 0.0))\\\\n       / -8.0)) - 1.0))\\\\n    )) / 2.0)) - 0.5)\\\\n  ))).x;\\\\n  xlat_mutablecloud = (xlat_mutablecloud * clamp ((\\\\n    (texture (sampler_noise_hq, (xlat_mutableuv2 * vec2(2.0, 0.5))).x + 0.5)\\\\n   - \\\\n    (3.0 * abs(xlat_mutableuv2.x))\\\\n  ), 0.0, 1.0));\\\\n  vec2 tmpvar_11;\\\\n  tmpvar_11.x = 0.0;\\\\n  tmpvar_11.y = ((-0.01 * time) * (0.125 * float(\\\\n    int((8.0 * pow (xlat_mutablecloud, 4.0)))\\\\n  )));\\\\n  float tmpvar_12;\\\\n  tmpvar_12 = (texture (sampler_noise_hq, (18.0 * (\\\\n    (xlat_mutableuv2 + (0.05 * xlat_mutablecloud))\\\\n   + tmpvar_11))) - 0.75).x;\\\\n  xlat_mutablecloud = (xlat_mutablecloud * (1.0 + (\\\\n    (0.2 * tmpvar_12)\\\\n   * \\\\n    (xlat_mutablecloud * xlat_mutablecloud)\\\\n  )));\\\\n  ret_3.x = ((0.3 * xlat_mutablecloud) + (0.7 * tmpvar_5.xyz)).x;\\\\n  xlat_mutableuv1 = (uv - vec2(0.0, 0.71));\\\\n  vec4 tmpvar_13;\\\\n  tmpvar_13 = texture (sampler_blur1, uv);\\\\n  float tmpvar_14;\\\\n  tmpvar_14 = clamp (((12.0 * \\\\n    (((10.0 * xlat_mutableuv1.y) + ((\\\\n      (tmpvar_13.xyz * scale1)\\\\n     + bias1).x / 2.0)) - 1.0)\\\\n  ) + tmpvar_12), 0.0, 1.0);\\\\n  xlat_mutableuv1 = (uv - 0.7);\\\\n  ret_3.z = (((\\\\n    ((((4.0 * tmpvar_14) * (1.0 - tmpvar_14)) * clamp ((tmpvar_5.x - 0.2), 0.0, 1.0)) + texture (sampler_main, (uv + (xlat_mutabledz * 0.003))).z)\\\\n   - \\\\n    (0.03 * sqrt(dot (xlat_mutabledz, xlat_mutabledz)))\\\\n  ) - (\\\\n    pow (((tmpvar_13.xyz * scale1) + bias1).z, 8.0)\\\\n   * 0.2)) - 0.01);\\\\n  ret_3.y = (texture (sampler_main, mix (uv, uv_orig, vec2(0.5, 0.5))).y * (0.85 - (0.2 * \\\\n    ((tmpvar_13.xyz * scale1) + bias1)\\\\n  .y)));\\\\n  ret_3.x = (ret_3.x + ((texture (sampler_noise_lq, \\\\n    (2.0 * xlat_mutableuv2)\\\\n  ) * 0.08) * clamp (\\\\n    (1.0 - (3.0 * ret_3.x))\\\\n  , 0.0, 1.0)).x);\\\\n  vec4 tmpvar_15;\\\\n  tmpvar_15.w = 1.0;\\\\n  tmpvar_15.xyz = ret_3;\\\\n  ret = tmpvar_15.xyz;\\\\n }\\\",\\\"comp\\\":\\\"float dunk;\\\\nfloat xlat_mutablenoise;\\\\nvec2 xlat_mutablers;\\\\nvec2 xlat_mutablers0;\\\\nfloat xlat_mutablesmask;\\\\nfloat xlat_mutablesmoke;\\\\nvec2 xlat_mutableuv1;\\\\nfloat xlat_mutablez;\\\\n shader_body { \\\\n  vec2 tmpvar_1;\\\\n  tmpvar_1.y = 0.0;\\\\n  tmpvar_1.x = texsize.z;\\\\n  dunk = ((rand_preset.x * 0.3) + 0.1);\\\\n  vec2 uv_2;\\\\n  vec3 ret_3;\\\\n  uv_2 = (uv + (texsize.zw / 2.0));\\\\n  xlat_mutableuv1 = (uv_2 - vec2(0.0, 0.7));\\\\n  xlat_mutablesmask = (((10.0 * xlat_mutableuv1.y) + (\\\\n    ((texture (sampler_blur1, uv_2).xyz * scale1) + bias1)\\\\n  .x / 2.0)) - 1.0);\\\\n  float tmpvar_4;\\\\n  tmpvar_4 = clamp (((2.0 * xlat_mutablesmask) + 0.3), 0.0, 1.0);\\\\n  xlat_mutablenoise = ((3.0 * (1.0 - tmpvar_4)) * texture (sampler_noise_lq, ((xlat_mutableuv1 * 1.5) + (rand_frame * 0.2).xy)).x);\\\\n  float tmpvar_5;\\\\n  tmpvar_5 = clamp (((12.0 * xlat_mutablesmask) + (xlat_mutablenoise / 2.0)), 0.0, 1.0);\\\\n  xlat_mutablez = ((0.35 / xlat_mutableuv1.y) + (xlat_mutablenoise / 2.0));\\\\n  xlat_mutablers0.x = (xlat_mutableuv1.x * xlat_mutablez);\\\\n  xlat_mutablers0.y = xlat_mutablez;\\\\n  vec2 tmpvar_6;\\\\n  tmpvar_6.x = (xlat_mutablers0.x + (time / 4.0));\\\\n  tmpvar_6.y = (xlat_mutablez + (time * 0.21));\\\\n  xlat_mutablers = (tmpvar_6 * tmpvar_5);\\\\n  float t_7;\\\\n  t_7 = ((texture (sampler_main, uv_2).x - dunk) * (1.0 - (tmpvar_5 * \\\\n    pow (uv_2.y, 4.0)\\\\n  )));\\\\n  float tmpvar_8;\\\\n  tmpvar_8 = clamp (((1.2 * t_7) - 0.2), 0.0, 1.0);\\\\n  t_7 = tmpvar_8;\\\\n  vec3 tmpvar_9;\\\\n  tmpvar_9.x = tmpvar_8;\\\\n  tmpvar_9.y = (tmpvar_8 * tmpvar_8);\\\\n  tmpvar_9.z = pow (tmpvar_8, 8.0);\\\\n  vec3 tmpvar_10;\\\\n  tmpvar_10 = clamp ((tmpvar_9 / vec3(0.8, 0.8, 0.8)), 0.0, 1.0);\\\\n  float t_11;\\\\n  t_11 = ((texture (sampler_blur2, (uv_2 + 0.03)).xyz * scale2) + bias2).x;\\\\n  float tmpvar_12;\\\\n  tmpvar_12 = clamp (((1.2 * t_11) - 0.2), 0.0, 1.0);\\\\n  t_11 = tmpvar_12;\\\\n  vec3 tmpvar_13;\\\\n  tmpvar_13.x = tmpvar_12;\\\\n  tmpvar_13.y = (tmpvar_12 * tmpvar_12);\\\\n  tmpvar_13.z = pow (tmpvar_12, 8.0);\\\\n  vec3 tmpvar_14;\\\\n  tmpvar_14 = clamp ((tmpvar_13 / vec3(0.8, 0.8, 0.8)), 0.0, 1.0);\\\\n  ret_3 = ((tmpvar_10 * (tmpvar_10 * \\\\n    (3.0 - (2.0 * tmpvar_10))\\\\n  )) + ((\\\\n    (((1.0 - texture (sampler_main, uv_2).x) * (1.0 - tmpvar_5)) * abs((texture (sampler_main, (uv_2 - tmpvar_1)).x - texture (sampler_main, (uv_2 + tmpvar_1)).x)))\\\\n   * \\\\n    (tmpvar_14 * (tmpvar_14 * (3.0 - (2.0 * tmpvar_14))))\\\\n  ) * q9));\\\\n  xlat_mutablesmoke = ((texture (sampler_blur1, uv_2).xyz * scale1) + bias1).z;\\\\n  vec2 tmpvar_15;\\\\n  tmpvar_15.x = uv_2.x;\\\\n  tmpvar_15.y = ((0.85 - xlat_mutableuv1.y) + ((\\\\n    ((texture (sampler_noise_hq, xlat_mutablers) + texture (sampler_noise_hq, ((xlat_mutablers / 4.0) - (time / 8.0)))) - 1.0)\\\\n  .x * 0.2) * q10));\\\\n  float t_16;\\\\n  t_16 = ((texture (sampler_main, tmpvar_15).x + texture (sampler_main, tmpvar_15).y) - dunk);\\\\n  float tmpvar_17;\\\\n  tmpvar_17 = clamp (((1.2 * t_16) - 0.2), 0.0, 1.0);\\\\n  t_16 = tmpvar_17;\\\\n  vec3 tmpvar_18;\\\\n  tmpvar_18.x = tmpvar_17;\\\\n  tmpvar_18.y = (tmpvar_17 * tmpvar_17);\\\\n  tmpvar_18.z = pow (tmpvar_17, 8.0);\\\\n  vec3 tmpvar_19;\\\\n  tmpvar_19 = clamp ((tmpvar_18 / vec3(0.8, 0.8, 0.8)), 0.0, 1.0);\\\\n  ret_3 = (ret_3 + ((\\\\n    (tmpvar_19 * (tmpvar_19 * (3.0 - (2.0 * tmpvar_19))))\\\\n   * tmpvar_5) * 0.85));\\\\n  float tmpvar_20;\\\\n  tmpvar_20 = ((3.6 * tmpvar_4) * (1.0 - tmpvar_4));\\\\n  ret_3 = (ret_3 * (clamp (\\\\n    (1.0 - (xlat_mutablesmoke * (1.0 - tmpvar_20)))\\\\n  , 0.0, 1.0) * clamp (\\\\n    (1.0 - (tmpvar_20 * float((rand_preset.x > 0.5))))\\\\n  , 0.0, 1.0)));\\\\n  vec3 tmpvar_21;\\\\n  tmpvar_21.z = 0.0;\\\\n  tmpvar_21.xy = (((texture (sampler_blur3, uv_2).xyz * scale3) + bias3).xy * vec2(3.0, 5.0));\\\\n  ret_3 = (ret_3 + ((xlat_mutablesmoke * \\\\n    dot (tmpvar_21, vec3(0.32, 0.49, 0.29))\\\\n  ) * vec3(1.0, 0.84, 0.62)));\\\\n  float tmpvar_22;\\\\n  tmpvar_22 = clamp (((1.2 * \\\\n    clamp (texture (sampler_main, uv_2).y, 0.0, 1.0)\\\\n  ) - 0.2), 0.0, 1.0);\\\\n  vec3 tmpvar_23;\\\\n  tmpvar_23.x = tmpvar_22;\\\\n  tmpvar_23.y = (tmpvar_22 * tmpvar_22);\\\\n  tmpvar_23.z = pow (tmpvar_22, 8.0);\\\\n  vec3 tmpvar_24;\\\\n  tmpvar_24 = clamp ((tmpvar_23 / vec3(0.8, 0.8, 0.8)), 0.0, 1.0);\\\\n  ret_3 = (ret_3 + (tmpvar_24 * (tmpvar_24 * \\\\n    (3.0 - (2.0 * tmpvar_24))\\\\n  )));\\\\n  float tmpvar_25;\\\\n  tmpvar_25 = clamp (0.52, 0.0, 1.0);\\\\n  vec3 tmpvar_26;\\\\n  tmpvar_26.x = tmpvar_25;\\\\n  tmpvar_26.y = (tmpvar_25 * tmpvar_25);\\\\n  tmpvar_26.z = pow (tmpvar_25, 8.0);\\\\n  vec3 tmpvar_27;\\\\n  tmpvar_27 = clamp ((tmpvar_26 / vec3(0.8, 0.8, 0.8)), 0.0, 1.0);\\\\n  vec3 tmpvar_28;\\\\n  tmpvar_28 = mix (clamp (ret_3, 0.0, 1.0), (tmpvar_27 * (tmpvar_27 * \\\\n    (3.0 - (2.0 * tmpvar_27))\\\\n  )), vec3((pow (\\\\n    ((1.0 - uv_2.y) - ((uv_2.x - 0.5) * (q3 - 0.5)))\\\\n  , 4.0) * q1)));\\\\n  ret_3 = tmpvar_28;\\\\n  vec4 tmpvar_29;\\\\n  tmpvar_29.w = 1.0;\\\\n  tmpvar_29.xyz = tmpvar_28;\\\\n  ret = tmpvar_29.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/martin - frosty caves 2.json\":\n/*!********************************************************!*\\\n  !*** ./presets/converted/martin - frosty caves 2.json ***!\n  \\********************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1.98,\\\"decay\\\":0.5,\\\"echo_zoom\\\":1,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":3,\\\"wave_mode\\\":7,\\\"additivewave\\\":1,\\\"wave_thick\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":0.698,\\\"wave_smoothing\\\":0.45,\\\"modwavealphastart\\\":0,\\\"modwavealphaend\\\":1.32,\\\"warpanimspeed\\\":1.459,\\\"warpscale\\\":2.007,\\\"zoom\\\":0.9999,\\\"warp\\\":0.01,\\\"sx\\\":0.9999,\\\"wave_r\\\":0,\\\"wave_g\\\":0,\\\"wave_b\\\":0,\\\"ob_size\\\":0,\\\"ob_g\\\":0.1,\\\"ob_b\\\":1,\\\"ob_a\\\":1,\\\"ib_size\\\":0,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"mv_x\\\":25.6,\\\"mv_y\\\":9.6,\\\"mv_l\\\":5,\\\"mv_g\\\":0.5,\\\"mv_a\\\":0,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"textured\\\":1,\\\"x\\\":0.09,\\\"y\\\":0.9,\\\"rad\\\":0.22437,\\\"tex_zoom\\\":1.76002,\\\"r2\\\":1,\\\"g2\\\":0,\\\"a2\\\":0.6,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"additive\\\":1,\\\"x\\\":0.26,\\\"y\\\":0.2,\\\"rad\\\":0.39317,\\\"tex_zoom\\\":6.19589,\\\"r\\\":0,\\\"g\\\":0.55,\\\"b\\\":0.5,\\\"g2\\\":0.4,\\\"b2\\\":0.4,\\\"a2\\\":0.07,\\\"border_r\\\":0.3,\\\"border_g\\\":0.7,\\\"border_b\\\":0.8,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"additive\\\":1,\\\"x\\\":0.803,\\\"rad\\\":0.314,\\\"tex_zoom\\\":1.49332,\\\"g\\\":1,\\\"b\\\":1,\\\"a\\\":0,\\\"g2\\\":0,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_b\\\":0.5,\\\"border_a\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"rad\\\":0.01,\\\"tex_zoom\\\":0.49981,\\\"r\\\":0,\\\"g2\\\":0,\\\"border_r\\\":0.2,\\\"border_g\\\":0.7,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"samples\\\":132,\\\"sep\\\":20,\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":0.48454,\\\"smoothing\\\":0.1,\\\"g\\\":0,\\\"b\\\":0.2,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"usedots\\\":1,\\\"thick\\\":1,\\\"scaling\\\":0.89152,\\\"smoothing\\\":0.82,\\\"a\\\":0.1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"scaling\\\":0.89152,\\\"smoothing\\\":0.82,\\\"r\\\":0,\\\"g\\\":0.2,\\\"b\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"spectrum\\\":1,\\\"usedots\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"n = 0; loop (20000, megabuf(n)=0; gmegabuf(n)=0; n +=1; );\\\\n\\\\nMINBPM = 30; MAXBPM = 230; num_res = 100;\\\\nindex = 0;\\\\nloop (num_res,\\\\n  n = 12*index;\\\\n  BPM      = minbpm * pow(maxbpm/minbpm,index/num_res);\\\\n  gmegabuf(n) = BPM;\\\\n  index += 1;);\\\\npi = 3.1416;\\\\nOCTAVE = (num_res) * log(2) / log (MAXBPM / MINBPM);\\\\n\\\\nq7 = .15; //MyZoom\\\\nq8 =  0.2 + rand(1); //fractal modifier\\\\nq16 = 1.6; //#fish eye\\\\nstart = 1; travel = 0; RotZ = 0; t0 = time+3;\\\\ncran0 = rand(1);\\\\ntrelx = 0;  trely = 0; trelz = 0;\\\\nreg20 = 1; reg21 = 0; reg22 = 0; reg23 = 0; reg24 = 1; reg25 = 0; reg26 = 0; reg27 = 0; reg28 = 1;\\\\n\\\\n//Find random starting point\\\\nwhile (exec2(\\\\n  ran1 = rand(8); ran2 = rand(8); ran3 = rand(8);\\\\n  PosX = rand(8); PosY = rand(8); PosZ = rand(8); \\\\n\\\\n  c1 = cos(ran1); c2 = cos(ran2); c3 = cos(ran3); \\\\n  s1 = sin(ran1); s2 = sin(ran2); s3 = sin(ran3);\\\\n\\\\n  reg20 = c2*c1; reg21 = c2*s1; reg22 = -s2;\\\\n  reg23 = s3*s2*c1 - c3*s1; reg24 = s3*s2*s1 + c3*c1; reg25 = s3*c2;\\\\n  reg26 = c3*s2*c1 + s3*s1; reg27 = c3*s2*s1 - s3*c1; reg28 = c3*c2;\\\\n\\\\n  //***********BOT*************\\\\n  //Coord. Trans. must exactly match def in warp S. !!!!\\\\n  dist = 0.001;\\\\n  while (exec2(\\\\n    uvx = reg26*dist/q7; uvy = reg27*dist/q7; uvz = reg28*dist/q7;\\\\n    uvx += PosX; uvy += PosY; uvz += PosZ;\\\\n    uvx = 1+2*((uvx/4+30.5 - int(uvx/4+30.5))-.5);\\\\n    uvy = 2+2*((uvy/4+30.5 - int(uvy/4+30.5))-.5);\\\\n    uvz = 3+2*((uvz/4+30.5 - int(uvz/4+30.5))-.5);\\\\n    uvx0 = uvx+q8; uvy0 = uvy+q8; uvz0 = uvz+q8;\\\\n    loop (7+1,\\\\n      uvx = if (uvx > 1, 2-uvx, if(uvx < -1, -2-uvx, uvx));\\\\n      uvy = if (uvy > 1, 2-uvy, if(uvy < -1, -2-uvy, uvy));\\\\n      uvz = if (uvz > 1, 2-uvz, if(uvz < -1, -2-uvz, uvz));\\\\n      slen = uvx*uvx + uvy*uvy + uvz*uvz;\\\\n      uvx = if (slen < 0.25, uvx*4, if (slen < 1, uvx/slen, uvx)) *2.6 + uvx0; \\\\n      uvy = if (slen < 0.25, uvy*4, if (slen < 1, uvy/slen, uvy)) *2.6 + uvy0; \\\\n      uvz = if (slen < 0.25, uvz*4, if (slen < 1, uvz/slen, uvz)) *2.6 + uvz0; \\\\n    );\\\\n    len = sqrt(uvx*uvx + uvy*uvy + uvz*uvz);\\\\n    dist *= 1.05;\\\\n  ,(dist < 0.6)*(len > 30)));\\\\n,(dist < .06))); //end while\\\",\\\"frame_eqs_eel\\\":\\\"dt = min (1/fps,0.1);\\\\ndec_f = 0.8; dec_m = 1 - 4*dt; dec_s = 1 - dt;\\\\nvol = (bass+mid/2+treb)/3;\\\\nvol_ = vol_*dec_m + (1-dec_m)*vol;\\\\ndec = dec_s;\\\\nvol2 = vol2*dec + (1-dec)*min(3,vol);\\\\nmaxvol = if (vol>maxvol,vol,maxvol*dec_s);\\\\n\\\\nexcite = vol-vol_;\\\\nindex = 0; maxind1 = 0; mean = 0;\\\\nloop (num_res, \\\\n  n = index*12;  omega=gmegabuf(n) * 2*pi/60;\\\\n  gmegabuf (n+1) *= 1- 0.25*dt; \\\\n  EC_Steps = int (10*dt*omega)+1; dt1 = dt/EC_Steps;\\\\n  ex = excite ;\\\\n  loop (EC_Steps, // Euler-Cauchy \\\\n    gmegabuf (n+1) += (ex - sqr(omega)*gmegabuf(n+2)) * dt1;\\\\n    gmegabuf (n+2) += gmegabuf(n+1) * dt1);\\\\n  beatcos  = gmegabuf(n+1);  beatsin = gmegabuf(n+2)*omega;\\\\n  quad     = sqrt (pow(beatsin,2) + pow(beatcos,2)) ;\\\\n   mean += quad/num_res;\\\\n  gmegabuf (n+3) = gmegabuf(n+3) *dec_m +  quad* (1-dec_m);\\\\n  if (gmegabuf(n+3) > gmegabuf(maxind1*12+3), maxind1 = index, 0); \\\\nindex += 1;);\\\\nquali = gmegabuf(maxind1*12+3)/mean;\\\\n\\\\nBPM   = minbpm * pow(maxbpm/minbpm,maxind1/num_res);\\\\nif (BPM>160, BPM/=2,0);\\\\ntrel1 += (BPM/60*pi+excite*cosb) * (maxvol>0.7)*dt;\\\\nq32 = trel1;\\\\n\\\\nspeed = (0.15 + dist_*0.25)* (1+avg)/q7*(0.34+vol_*0.34)*(q8+0.8);\\\\nds = ds * dec_s + (1-dec_s)*speed*.25*dt; \\\\nRotZ = 0.8*pow (sin(time/12),5);\\\\n\\\\n//Position \\\\nDirX= reg26; DirY= reg27; DirZ = reg28;\\\\nPosX += ds*DirX ; PosY += ds*DirY; PosZ += ds*DirZ; \\\\nq4 = PosX; q5 = PosY; q6 = PosZ;\\\\n\\\\nangchg = max(0,.4-dist_);\\\\nv1 = v1 * dec_m + (1-dec_m)* RotZ * ds;\\\\ndec = 1-3*dt;\\\\nv2p = v2p *dec + (1-dec)*(angchg*xslope + p2*0.02)*dt;\\\\nv3p = v3p *dec + (1-dec)*(angchg*yslope + p3*0.02)*dt ;\\\\nv2 = v2 *dec + (1-dec)* v2p;\\\\nv3 = v3 *dec + (1-dec)* v3p;\\\\np3 = sign(v3);\\\\np4 = sign(v2);\\\\n//push old RotMat\\\\nreg30 =reg20; reg31 =reg21; reg32 =reg22; \\\\nreg33 =reg23; reg34 =reg24; reg35 =reg25; \\\\nreg36 =reg26; reg37 =reg27; reg38 =reg28; \\\\n\\\\nn = 0; avg = 0;\\\\nloop (5,\\\\n  n = n+1;\\\\n  //new Rot. Mat for infinitesimal angles\\\\n  ran1 = rand(100)/100;\\\\n  ran2 = rand(100)/200-.25;\\\\n  tx = cos(n*1.57+ran2) * (n <= 4)*ran1; ty = sin(n*1.57+ran2) * (n <= 4)*ran1;\\\\n  c1 = cos(v1); c2 = cos(v2+ty); c3 = cos(v3+tx); \\\\n  s1 = sin(v1); s2 = sin(v2+ty); s3 = sin(v3+tx);\\\\n  reg10 = c2*c1; reg11 = c2*s1; reg12 = -s2;\\\\n  reg13 = s3*s2*c1 - c3*s1; reg14 = s3*s2*s1 + c3*c1; reg15 = s3*c2;\\\\n  reg16 = c3*s2*c1 + s3*s1; reg17 = c3*s2*s1 - s3*c1; reg18 = c3*c2;\\\\n\\\\n  //pop old RotMat\\\\n  reg20 =reg30; reg21 =reg31; reg22 =reg32; \\\\n  reg23 =reg33; reg24 =reg34; reg25 =reg35; \\\\n  reg26 =reg36; reg27 =reg37; reg28 =reg38; \\\\n\\\\n  //Multiply new RotMat by old one\\\\n  q20 = reg10*reg20 + reg11*reg23 + reg12*reg26;\\\\n  q21 = reg10*reg21 + reg11*reg24 + reg12*reg27;\\\\n  q22 = reg10*reg22 + reg11*reg25 + reg12*reg28;\\\\n  q23 = reg13*reg20 + reg14*reg23 + reg15*reg26;\\\\n  q24 = reg13*reg21 + reg14*reg24 + reg15*reg27;\\\\n  q25 = reg13*reg22 + reg14*reg25 + reg15*reg28;\\\\n  q26 = reg16*reg20 + reg17*reg23 + reg18*reg26;\\\\n  q27 = reg16*reg21 + reg17*reg24 + reg18*reg27;\\\\n  q28 = reg16*reg22 + reg17*reg25 + reg18*reg28;\\\\n\\\\n  reg20 =q20; reg21 =q21; reg22 =q22;\\\\n  reg23 =q23; reg24 =q24; reg25 =q25;\\\\n  reg26 =q26; reg27 =q27; reg28 =q28;\\\\n\\\\n  //***********BOT*************\\\\n  //Coord. Trans. must exactly match def in warp S. !!!!\\\\n  dist = 0.002;\\\\n  while (exec2(\\\\n    uvx = reg26*dist/q7; uvy = reg27*dist/q7; uvz = reg28*dist/q7;\\\\n    uvx += PosX; uvy += PosY; uvz += PosZ;\\\\n//    uvx = 8.0*((uvx/8+30.5 - int(uvx/8+30.5))-.5);\\\\n//    uvy = 8.0*((uvy/8+30.5 - int(uvy/8+30.5))-.5);\\\\n//    uvz = 8.0*((uvz/8+30.5 - int(uvz/8+30.5))-.5);\\\\n    uvx = 1+2*((uvx/4+30.5 - int(uvx/4+30.5))-.5);\\\\n    uvy = 2+2*((uvy/4+30.5 - int(uvy/4+30.5))-.5);\\\\n    uvz = 3+2*((uvz/4+30.5 - int(uvz/4+30.5))-.5);\\\\n    uvx0 = uvx+q8; uvy0 = uvy+q8; uvz0 = uvz+q8;\\\\n    loop (7+1,\\\\n      uvx = if (uvx > 1, 2-uvx, if(uvx < -1, -2-uvx, uvx));\\\\n      uvy = if (uvy > 1, 2-uvy, if(uvy < -1, -2-uvy, uvy));\\\\n      uvz = if (uvz > 1, 2-uvz, if(uvz < -1, -2-uvz, uvz));\\\\n      slen = uvx*uvx + uvy*uvy + uvz*uvz;\\\\n      uvx = if (slen < 0.25, uvx*4, if (slen < 1, uvx/slen, uvx)) *2.6 + uvx0; \\\\n      uvy = if (slen < 0.25, uvy*4, if (slen < 1, uvy/slen, uvy)) *2.6 + uvy0; \\\\n      uvz = if (slen < 0.25, uvz*4, if (slen < 1, uvz/slen, uvz)) *2.6 + uvz0; \\\\n    );\\\\n    len = sqrt(uvx*uvx + uvy*uvy + uvz*uvz);\\\\n    dist *= 1.1;\\\\n  ,(dist < 0.6)*(len > 30)));\\\\n  megabuf(n) = megabuf(n)*dec_s + (1-dec_s)*dist; //stores the 4 trial points\\\\n  avg = avg+abs(megabuf(n)/5);\\\\n); //end loop 5\\\\nn = 0; avg = 0; loop (5, n=n+1; avg = avg+abs(megabuf(n)/5));\\\\n\\\\nxslope = min(max(8*(megabuf(1)-megabuf(3)),-2),2);\\\\nyslope = min(max(8*(megabuf(4)-megabuf(2)),-2),2);\\\\ndist_ = dist_*dec_m + (1-dec_m)*dist;\\\\n\\\\nq10 = ds*q7; //compensation of lin. movement in GetDist and zoom uv\\\\nq14 = 1*abs(ds) + 2*(abs(v1) + abs(v2) + abs(v3)) + 1.0/255 + start*.0; \\\\nstart = start * .9;\\\\nreg52 = -v2; reg53 = v3;\\\\n//forward comp. of Rotation\\\\nwarp = 0.0; zoom = 1;  \\\\nrot = v1;\\\\n\\\\n//light ctrl\\\\nsinb = sin(trel1);\\\\ncosb = cos(trel1);\\\\n\\\\nbt1 = sinb*sinb_<0; bt2 = cosb*cosb_<0;\\\\n\\\\nif (bt1, b1x = rand(2)-1; b1y = rand(2)-1;,0);\\\\nif (bt2, b2x = rand(2)-1; b2y = rand(2)-1;,0);\\\\nsinb_=sinb; cosb_=cosb;\\\\n\\\\nbri = vol2*0.012*sqrt(100/bpm)+excite*0.01;\\\\nmov = sqrt (v3*v3+v2*v2)/dt; \\\\n\\\\nq1= b1x*abs(b1x);\\\\nq2= b1y*abs(b1y);\\\\n\\\\nq17 =b2x*0.4;\\\\nq18= b2y*0.4;\\\\n\\\\nlen = pow(q1,2)+ pow(q2,2);\\\\nq3 = pow(sinb,2)*bri * (1+len*4)* max(0,1-5*mov);\\\\nq19= pow(cosb,2)*bri*1.2;\\\\n\\\\nmonitor = q8;\\\\n//frei: q9, q11, q12, q13, q15, q29m q30, q31, q32\\\",\\\"pixel_eqs_eel\\\":\\\"warp = 0.0; zoom = 1; \\\\ntx = tan((2*x-1)*0.9);\\\\nty = tan((2*y-1)*0.9);\\\\n\\\\ndx = reg52/q16* (1+0.5*abs(tx)); \\\\ndy = reg53/q16* (1+0.5*abs(ty)); \\\\n\\\\n\\\\ndx += reg53*ty*(x-0.5)*1; \\\\ndy += reg52*tx*(y-0.5)*1; \\\\n\\\\n//muss experimentell an tele angepasst werden; momentan 1.5 !!!\\\",\\\"warp\\\":\\\"float sustain;\\\\nfloat pix;\\\\nvec3 mod1;\\\\nfloat xlat_mutabledist;\\\\nfloat xlat_mutablestruc;\\\\nvec2 xlat_mutableuv1;\\\\nvec3 xlat_mutableuv2;\\\\n shader_body { \\\\n  mat3 tmpvar_1;\\\\n  tmpvar_1[uint(0)].x = q20;\\\\n  tmpvar_1[uint(0)].y = q23;\\\\n  tmpvar_1[uint(0)].z = q26;\\\\n  tmpvar_1[1u].x = q21;\\\\n  tmpvar_1[1u].y = q24;\\\\n  tmpvar_1[1u].z = q27;\\\\n  tmpvar_1[2u].x = q22;\\\\n  tmpvar_1[2u].y = q25;\\\\n  tmpvar_1[2u].z = q28;\\\\n  vec3 tmpvar_2;\\\\n  tmpvar_2.x = q4;\\\\n  tmpvar_2.y = q5;\\\\n  tmpvar_2.z = q6;\\\\n  sustain = (0.97 - q14);\\\\n  pix = (texsize.z * 2.0);\\\\n  mod1 = (rand_preset.xyz - 0.5);\\\\n  vec2 uv_3;\\\\n  vec3 ret_4;\\\\n  vec2 tmpvar_5;\\\\n  tmpvar_5 = (uv - 0.5);\\\\n  xlat_mutableuv1 = ((tmpvar_5 * aspect.xy) * q16);\\\\n  vec4 tmpvar_6;\\\\n  tmpvar_6 = texture (sampler_pw_main, uv);\\\\n  uv_3 = ((tmpvar_5 * (1.0 - \\\\n    (q10 / (1.0 - (tmpvar_6.z + (0.003921569 * tmpvar_6.y))))\\\\n  )) + 0.5);\\\\n  vec4 tmpvar_7;\\\\n  tmpvar_7 = fract((8.0 * texture (sampler_noise_lq, (uv_3 + rand_frame.yz))));\\\\n  xlat_mutabledist = tmpvar_7.x;\\\\n  if ((tmpvar_7.y > 0.16)) {\\\\n    vec4 nb2_8;\\\\n    vec4 nb_9;\\\\n    vec4 tmpvar_10;\\\\n    tmpvar_10 = texture (sampler_pw_main, (uv_3 + vec2(-(pix))));\\\\n    nb_9.x = (1.0 - (tmpvar_10.z + (0.003921569 * tmpvar_10.y)));\\\\n    vec4 tmpvar_11;\\\\n    tmpvar_11 = texture (sampler_pw_main, (uv_3 + (pix * vec2(1.0, -1.0))));\\\\n    nb_9.y = (1.0 - (tmpvar_11.z + (0.003921569 * tmpvar_11.y)));\\\\n    vec4 tmpvar_12;\\\\n    tmpvar_12 = texture (sampler_pw_main, (uv_3 + vec2(pix)));\\\\n    nb_9.z = (1.0 - (tmpvar_12.z + (0.003921569 * tmpvar_12.y)));\\\\n    vec4 tmpvar_13;\\\\n    tmpvar_13 = texture (sampler_pw_main, (uv_3 + (pix * vec2(-1.0, 1.0))));\\\\n    nb_9.w = (1.0 - (tmpvar_13.z + (0.003921569 * tmpvar_13.y)));\\\\n    vec4 tmpvar_14;\\\\n    tmpvar_14 = texture (sampler_pw_main, (uv_3 + (pix * vec2(0.0, -1.0))));\\\\n    nb2_8.x = (1.0 - (tmpvar_14.z + (0.003921569 * tmpvar_14.y)));\\\\n    vec4 tmpvar_15;\\\\n    tmpvar_15 = texture (sampler_pw_main, (uv_3 + (pix * vec2(1.0, 0.0))));\\\\n    nb2_8.y = (1.0 - (tmpvar_15.z + (0.003921569 * tmpvar_15.y)));\\\\n    vec4 tmpvar_16;\\\\n    tmpvar_16 = texture (sampler_pw_main, (uv_3 + (pix * vec2(0.0, 1.0))));\\\\n    nb2_8.z = (1.0 - (tmpvar_16.z + (0.003921569 * tmpvar_16.y)));\\\\n    vec4 tmpvar_17;\\\\n    tmpvar_17 = texture (sampler_pw_main, (uv_3 + (pix * vec2(-1.0, 0.0))));\\\\n    nb2_8.w = (1.0 - (tmpvar_17.z + (0.003921569 * tmpvar_17.y)));\\\\n    vec4 tmpvar_18;\\\\n    tmpvar_18 = min (nb_9, nb2_8);\\\\n    nb_9.zw = tmpvar_18.zw;\\\\n    nb_9.xy = min (tmpvar_18.xy, tmpvar_18.zw);\\\\n    xlat_mutabledist = ((min (nb_9.x, nb_9.y) + (\\\\n      (0.006 * (tmpvar_7.xyz - 0.5).x)\\\\n     * tmpvar_7.y)) - (q10 * 0.5));\\\\n  };\\\\n  float theta_19;\\\\n  theta_19 = (xlat_mutabledist * 1.35);\\\\n  float theta_20;\\\\n  theta_20 = (xlat_mutabledist * 1.35);\\\\n  vec3 tmpvar_21;\\\\n  tmpvar_21.xy = (xlat_mutableuv1 * ((\\\\n    sin(theta_19)\\\\n   / \\\\n    cos(theta_19)\\\\n  ) / 1.35));\\\\n  tmpvar_21.z = ((sin(theta_20) / cos(theta_20)) / 1.35);\\\\n  xlat_mutableuv2 = (((tmpvar_21 / q7) * tmpvar_1) + tmpvar_2);\\\\n  xlat_mutableuv2 = (((\\\\n    fract(((xlat_mutableuv2 / 4.0) + 0.5))\\\\n   - 0.5) * 2.0) + vec3(1.0, 2.0, 3.0));\\\\n  vec3 zz0_23;\\\\n  vec3 zz_24;\\\\n  zz_24 = xlat_mutableuv2;\\\\n  zz0_23 = (xlat_mutableuv2 + q8);\\\\n  for (int n_22 = 0; n_22 <= 8; n_22++) {\\\\n    zz_24 = ((2.0 * clamp (zz_24, vec3(-1.0, -1.0, -1.0), vec3(1.0, 1.0, 1.0))) - zz_24);\\\\n    zz_24 = (zz_24 * max ((1.0/(\\\\n      dot (zz_24, zz_24)\\\\n    )), 1.0));\\\\n    zz_24 = ((2.6 * zz_24) + zz0_23);\\\\n  };\\\\n  vec4 tmpvar_25;\\\\n  tmpvar_25.w = 0.0;\\\\n  tmpvar_25.xyz = zz_24;\\\\n  float tmpvar_26;\\\\n  tmpvar_26 = sqrt(dot (zz_24, zz_24));\\\\n  vec4 tmpvar_27;\\\\n  tmpvar_27.w = 0.0;\\\\n  tmpvar_27.xyz = mod1;\\\\n  xlat_mutablestruc = ((1.0 - (\\\\n    (1.4 * dot (tmpvar_25, tmpvar_27))\\\\n   / 40.0)) - (xlat_mutabledist * 0.3));\\\\n  if (((tmpvar_26 < 40.0) && (xlat_mutabledist > (0.04 * \\\\n    (1.0 - rad)\\\\n  )))) {\\\\n    ret_4.x = mix (xlat_mutablestruc, texture (sampler_main, uv_3).x, sustain);\\\\n    float x_28;\\\\n    x_28 = ((1.0 - xlat_mutabledist) * 255.0);\\\\n    float ip_29;\\\\n    ip_29 = float(int(x_28));\\\\n    vec2 tmpvar_30;\\\\n    tmpvar_30.x = (x_28 - ip_29);\\\\n    tmpvar_30.y = (ip_29 / 255.0);\\\\n    ret_4.yz = tmpvar_30;\\\\n  } else {\\\\n    ret_4 = ((texture (sampler_fc_main, uv_3) * sustain) - 0.003921569).xyz;\\\\n  };\\\\n  vec4 tmpvar_31;\\\\n  tmpvar_31.w = 1.0;\\\\n  tmpvar_31.xyz = ret_4;\\\\n  ret = tmpvar_31.xyz;\\\\n }\\\",\\\"comp\\\":\\\"float xlat_mutablecross1;\\\\nvec2 xlat_mutabledz1;\\\\nfloat xlat_mutablerdist;\\\\nvec2 xlat_mutableuv0;\\\\nvec2 xlat_mutableuv4;\\\\nvec2 xlat_mutableuva;\\\\nvec2 xlat_mutableuvb;\\\\n shader_body { \\\\n  vec2 tmpvar_1;\\\\n  tmpvar_1.x = q1;\\\\n  tmpvar_1.y = q2;\\\\n  vec2 tmpvar_2;\\\\n  tmpvar_2.x = q17;\\\\n  tmpvar_2.y = q18;\\\\n  vec2 uv_3;\\\\n  vec3 ret_4;\\\\n  uv_3 = (uv + (texsize.zw / 2.0));\\\\n  xlat_mutableuv0 = uv_3;\\\\n  vec2 uvi_5;\\\\n  uvi_5 = (uv_3 + vec2(0.002, 0.0));\\\\n  float tmpvar_6;\\\\n  tmpvar_6 = mix (((texture (sampler_blur1, uvi_5).xyz * scale1) + bias1).x, texture (sampler_main, uvi_5).x, 0.1);\\\\n  vec2 uvi_7;\\\\n  uvi_7 = (uv_3 - vec2(0.002, 0.0));\\\\n  float tmpvar_8;\\\\n  tmpvar_8 = mix (((texture (sampler_blur1, uvi_7).xyz * scale1) + bias1).x, texture (sampler_main, uvi_7).x, 0.1);\\\\n  xlat_mutabledz1.x = ((tmpvar_6 * float(\\\\n    (tmpvar_6 > 0.02)\\\\n  )) - (tmpvar_8 * float(\\\\n    (tmpvar_8 > 0.02)\\\\n  )));\\\\n  vec2 uvi_9;\\\\n  uvi_9 = (uv_3 + vec2(0.0, 0.002));\\\\n  float tmpvar_10;\\\\n  tmpvar_10 = mix (((texture (sampler_blur1, uvi_9).xyz * scale1) + bias1).x, texture (sampler_main, uvi_9).x, 0.1);\\\\n  vec2 uvi_11;\\\\n  uvi_11 = (uv_3 - vec2(0.0, 0.002));\\\\n  float tmpvar_12;\\\\n  tmpvar_12 = mix (((texture (sampler_blur1, uvi_11).xyz * scale1) + bias1).x, texture (sampler_main, uvi_11).x, 0.1);\\\\n  xlat_mutabledz1.y = ((tmpvar_10 * float(\\\\n    (tmpvar_10 > 0.02)\\\\n  )) - (tmpvar_12 * float(\\\\n    (tmpvar_12 > 0.02)\\\\n  )));\\\\n  uv_3 = (uv_3 + (xlat_mutabledz1 * 0.26));\\\\n  xlat_mutablerdist = ((texture (sampler_blur1, uv_3).xyz * scale1) + bias1).z;\\\\n  vec4 tmpvar_13;\\\\n  tmpvar_13.w = 0.0;\\\\n  tmpvar_13.xyz = texture (sampler_noise_hq, vec2(((xlat_mutablerdist * 0.05) + (time * 0.02)))).xyz;\\\\n  vec4 tmpvar_14;\\\\n  tmpvar_14 = mix (tmpvar_13, roam_sin, vec4(0.5, 0.5, 0.5, 0.5));\\\\n  xlat_mutableuv4 = (uv_3 - 0.4);\\\\n  xlat_mutableuva = ((xlat_mutableuv4 - tmpvar_1) - ((\\\\n    ((texture (sampler_blur1, uv_3).xyz * scale1) + bias1)\\\\n  .x * 0.4) * float(\\\\n    (xlat_mutablerdist > 0.2)\\\\n  )));\\\\n  xlat_mutableuvb = ((xlat_mutableuv4 - tmpvar_2) - ((\\\\n    (texture (sampler_blur1, uv_3).xyz * scale1)\\\\n   + bias1).x * 0.4));\\\\n  float angle_15;\\\\n  float tmpvar_16;\\\\n  tmpvar_16 = abs(xlat_mutableuva.x);\\\\n  if ((xlat_mutableuva.y >= 0.0)) {\\\\n    angle_15 = (1.0 - ((xlat_mutableuva.y - tmpvar_16) / (xlat_mutableuva.y + tmpvar_16)));\\\\n  } else {\\\\n    angle_15 = (3.0 - ((xlat_mutableuva.y + tmpvar_16) / (tmpvar_16 - xlat_mutableuva.y)));\\\\n  };\\\\n  float tmpvar_17;\\\\n  if ((xlat_mutableuva.x < 0.0)) {\\\\n    tmpvar_17 = -(angle_15);\\\\n  } else {\\\\n    tmpvar_17 = angle_15;\\\\n  };\\\\n  xlat_mutablecross1 = ((pow (\\\\n    sin((3.141593 * (tmpvar_17 + (5.1 * q20))))\\\\n  , 1.5) + (xlat_mutablerdist / 2.0)) + 0.1);\\\\n  vec3 tmpvar_18;\\\\n  tmpvar_18 = vec3((((1.0/(\\\\n    dot (xlat_mutableuva, xlat_mutableuva)\\\\n  )) / xlat_mutablecross1) * q3));\\\\n  vec3 tmpvar_19;\\\\n  tmpvar_19 = vec3(((1.0/(dot (xlat_mutableuvb, xlat_mutableuvb))) * q19));\\\\n  ret_4 = (clamp ((1.0 - \\\\n    (2.0 * xlat_mutablerdist)\\\\n  ), 0.0, 1.0) * ((\\\\n    (tmpvar_18 * tmpvar_14.xyz)\\\\n   + \\\\n    (tmpvar_19 * (1.0 - tmpvar_14.xyz))\\\\n  ) + 0.1));\\\\n  ret_4 = (ret_4 + (clamp (\\\\n    (2.0 * xlat_mutablerdist)\\\\n  , 0.0, 1.0) * (\\\\n    (tmpvar_18 * tmpvar_14.zyx)\\\\n   + \\\\n    (tmpvar_19 * (1.0 - tmpvar_14.zyx))\\\\n  )));\\\\n  ret_4 = (ret_4 + ((\\\\n    (texture (sampler_blur1, xlat_mutableuv0).xyz * scale1)\\\\n   + bias1).x * 0.05));\\\\n  ret_4 = (1.0 - exp(-(ret_4)));\\\\n  vec4 tmpvar_20;\\\\n  tmpvar_20.w = 1.0;\\\\n  tmpvar_20.xyz = ret_4;\\\\n  ret = tmpvar_20.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/martin - fruit machine.json\":\n/*!*******************************************************!*\\\n  !*** ./presets/converted/martin - fruit machine.json ***!\n  \\*******************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":2,\\\"gammaadj\\\":1.980001,\\\"decay\\\":0.5,\\\"echo_zoom\\\":0.999998,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":3,\\\"wave_mode\\\":5,\\\"wave_dots\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":1.169162,\\\"wave_smoothing\\\":0,\\\"wave_mystery\\\":0.08,\\\"modwavealphastart\\\":0,\\\"modwavealphaend\\\":1.32,\\\"warpanimspeed\\\":1.4595,\\\"warpscale\\\":2.0067,\\\"zoom\\\":0.9999,\\\"warp\\\":0.01,\\\"sx\\\":0.9999,\\\"wave_r\\\":0,\\\"wave_g\\\":0.99,\\\"ob_size\\\":0.015,\\\"ob_b\\\":1,\\\"ib_size\\\":0.26,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0,\\\"mv_r\\\":0.4999,\\\"mv_g\\\":0.4999,\\\"mv_b\\\":0.4999,\\\"mv_a\\\":0,\\\"b2x\\\":0.3,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":53,\\\"rad\\\":0.05408,\\\"tex_ang\\\":1.00531,\\\"tex_zoom\\\":1.531168,\\\"r\\\":0.2,\\\"g\\\":0.7,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_b\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\\nx = .5;\\\\ny = .5;\\\\na = q24; \\\\na2 = 0;\\\\n//a = 1; \\\\na = 0;\\\\nrad0 = bnot(q24) * rad0 + rand(10)/50*q24;\\\\nrad = rad0;\\\\nb = 0; r = rand(10)/10; g = 1;\\\\na2 = q24;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":44,\\\"textured\\\":1,\\\"x\\\":0.7,\\\"rad\\\":0.2173,\\\"tex_zoom\\\":3.277448,\\\"g\\\":1,\\\"b\\\":0.5,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_b\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"textured = 1;\\\\nrot0 = rot0 + 1/fps * q1;\\\\n\\\\n\\\\nposx = (1-q24)*posx + q24*(.3+rand(100)/200);\\\\nposy = (1-q24)*posy + q24*(.3+rand(100)/200);;\\\\n\\\\nrad0  = (1-q24)*rad0 + q24*(.05+rand(100)/300);\\\\nrad = rad0;\\\\n\\\\n\\\\nx =  posx;\\\\ny =  posy;\\\\nang = rot0;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":63,\\\"x\\\":0.503,\\\"rad\\\":0.038857,\\\"tex_zoom\\\":2.2233,\\\"g\\\":0.1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":0.7,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"textured = 1;\\\\nrot0 = rot0 + .1/fps * q2;\\\\n\\\\n\\\\nposx = (1-q24)*posx + q24*(.3+rand(100)/200);\\\\nposy = (1-q24)*posy + q24*(.3+rand(100)/200);;\\\\n\\\\nrad0  = (1-q24)*rad0 + q24*(.05+rand(100)/400);\\\\nrad = rad0;\\\\n\\\\n\\\\nx =  posx+q26;\\\\ny =  posy;\\\\nang = rot0;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":63,\\\"textured\\\":1,\\\"y\\\":1,\\\"rad\\\":0.548217,\\\"tex_zoom\\\":0.499805,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"sep\\\":120,\\\"usedots\\\":1,\\\"additive\\\":1,\\\"scaling\\\":0.891519,\\\"smoothing\\\":0.82,\\\"a\\\":0.6,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"t2 = t2 + bass_att;\\\",\\\"point_eqs_eel\\\":\\\"k1 = (sample*100)%8;\\\\nk2 = bnot (k1);\\\\nxi = value1*k2 + xi*(1-k2);\\\\nyi = value2*(1-k2) + yi*k2;\\\\n\\\\ndx = dx*.99 + xi;\\\\ndy = dy*.99 + yi;\\\\n\\\\nx = .5 + xi/2;\\\\ny = .5 + yi/2;\\\\n\\\\na = q22/8; \\\\na = min(a,.4);\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"scaling\\\":0.891519,\\\"smoothing\\\":0.82,\\\"a\\\":0.02,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"tm = time*.1;\\\\nt1 = t1*sin(tm*t4) + (1-t1)*sin(tm*t7);\\\\nt2 = t2*sin(tm*t5) + (1-t2)*sin(tm*t8);\\\\nt3 = t3*sin(tm*t6) + (1-t3)*sin(tm*1);\\\\n\\\\ntic = min(time - tin,1);\\\\ntin = time;\\\\n\\\\ntva = (tic*q1*.5);\\\\ntvb = (tic*q2*.5);\\\\ntvc = (tic*q3*.5);\\\\n\\\\nq1 = tva;\\\\nq2 = tvb;\\\\nq3 = tvc;\\\\n\\\\nsz = .5;\\\\nlen = q4;\\\\nt4 = len;\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"scaling\\\":0.891519,\\\"smoothing\\\":0.82,\\\"r\\\":0,\\\"g\\\":0.2,\\\"b\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"tm = time*.1;\\\\nt1 = t1*sin(tm*t4) + (1-t1)*sin(tm*t7);\\\\nt2 = t2*sin(tm*t5) + (1-t2)*sin(tm*t8);\\\\nt3 = t3*sin(tm*t6) + (1-t3)*sin(tm*1);\\\\n\\\\ntic = min(time - tin,1);\\\\ntin = time;\\\\n\\\\ntva = (tic*q1*.5);\\\\ntvb = (tic*q2*.5);\\\\ntvc = (tic*q3*.5);\\\\n\\\\nq1 = tva;\\\\nq2 = tvb;\\\\nq3 = tvc;\\\\n\\\\nsz = .5;\\\\nlen = 1;\\\\nt4 = len;\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"spectrum\\\":1,\\\"usedots\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"dec_med = pow (0.7, 30/fps);\\\\ndec_slow = pow (0.99, 30/fps);\\\\nbeat = max (max (bass, mid), treb); \\\\n\\\\nbeat = bass+mid+treb;\\\\nbeat = beat*beat;\\\\n\\\\navg = avg*dec_slow + beat*(1-dec_slow);\\\\nis_beat = above(beat, .2*avg+peak) * above (time, t0+.2);\\\\nt0 = is_beat*time + (1-is_beat)*t0;\\\\npeak = is_beat * beat + (1-is_beat)*peak*dec_med;\\\\nindex = (index + is_beat) %8;\\\\nindex2 = (index2 + is_beat*bnot(index))%2;\\\\n\\\\nq20 = avg;\\\\nq21 = beat;\\\\nq22 = peak;\\\\nq23 = index;\\\\nq24 = is_beat;\\\\nq26 = bass_att + mid_att + treb_att + 3;\\\\nq27 = index + 1;\\\\nq28 = index2;\\\\nq29 = index2;\\\\nmonitor = q29;\\\\nk1 =  is_\\\\nbeat*equal(index%2,0);\\\\np1 =  k1*(p1+1) + (1-k1)*p1;\\\\np2 = dec_med * p2+ (1-dec_med)*p1;\\\\nrott = p2 * 3.1416/4;\\\\n\\\\nq1 = cos(rott);\\\\nq2 = sin(rott);\\\\nq3 = -q2;\\\\nq4 = q1;\\\\n\\\\n\\\\nq5 = cos(time/17);\\\\nq6 = sin(time/17);\\\\nq7 = -q2;\\\\nq8 = q1;\\\\n\\\\n\\\\nds = ds*dec_med + q24*(1-dec_med);\\\\nq25 = q24;\\\\n//q25 = above(ds,.5);\\\\n\\\\nq10 = q22+3;\\\\n\\\\nt_rel = time*8;\\\\n//q25 = below((t_rel)-int(t_rel),.2);\\\\n\\\\n\\\\np3 = p3*dec_med + (1-dec_med) * (100*index + .0*q26);\\\\nq30 = p3 ;\\\\n\\\\np4 = dec_med*p4 + (1-dec_med)*q27;\\\\nq31 = p4;\\\\n\\\\n\\\\nzoom = 1.1 + q1*.2;\\\\nwarp =0;\\\\nob_size = .01;\\\\nob_r = .9;\\\\nob_g = 1;\\\\nob_b = 0;\\\\nob_a = .2*sin(time/7);\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec2 uv_1;\\\\n  vec2 tmpvar_2;\\\\n  tmpvar_2 = ((uv - 0.5) * aspect.xy);\\\\n  float tmpvar_3;\\\\n  tmpvar_3 = (sqrt(dot (tmpvar_2, tmpvar_2)) + (rand_frame * 13.0)).x;\\\\n  uv_1 = (uv + (clamp (\\\\n    ((sin(tmpvar_3) / cos(tmpvar_3)) / normalize(tmpvar_2))\\\\n  , vec2(-2.0, -2.0), vec2(2.0, 2.0)) / 16.0));\\\\n  vec4 tmpvar_4;\\\\n  tmpvar_4.w = 1.0;\\\\n  tmpvar_4.xyz = ((q24 * (\\\\n    ((texture (sampler_main, uv_1).xyz + ((0.1 * vec3(\\\\n      ((q1 * cos((uv_1.x * 44.0))) - cos((uv_1.y * 82.0)))\\\\n    )) * (1.0 + texture (sampler_noise_lq, \\\\n      ((uv_1 / 16.0) + (time / 100.0))\\\\n    )).xyz)) * 0.98)\\\\n   - 0.025)) + ((1.0 - q24) * texture (sampler_main, uv_orig).xyz));\\\\n  ret = tmpvar_4.xyz;\\\\n }\\\",\\\"comp\\\":\\\"vec2 xlat_mutabledz;\\\\nvec3 xlat_mutableneu;\\\\nvec3 xlat_mutableret1;\\\\nvec2 xlat_mutableuv3;\\\\n shader_body { \\\\n  vec2 uv2_1;\\\\n  vec2 tmpvar_2;\\\\n  tmpvar_2.y = 0.0;\\\\n  tmpvar_2.x = texsize.z;\\\\n  vec2 tmpvar_3;\\\\n  tmpvar_3.x = 0.0;\\\\n  tmpvar_3.y = texsize.w;\\\\n  xlat_mutabledz.x = dot ((texture (sampler_main, (uv + tmpvar_2)).xyz - texture (sampler_main, (uv - tmpvar_2)).xyz), vec3(0.32, 0.49, 0.29));\\\\n  xlat_mutabledz.y = dot ((texture (sampler_main, (uv + tmpvar_3)).xyz - texture (sampler_main, (uv - tmpvar_3)).xyz), vec3(0.32, 0.49, 0.29));\\\\n  uv2_1 = (uv - 0.5);\\\\n  vec2 tmpvar_4;\\\\n  tmpvar_4.y = 0.0;\\\\n  float tmpvar_5;\\\\n  tmpvar_5 = (time / 8.0);\\\\n  tmpvar_4.x = tmpvar_5;\\\\n  float tmpvar_6;\\\\n  tmpvar_6 = (q27 * 2.0);\\\\n  xlat_mutableuv3 = (((tmpvar_6 * uv2_1) * 0.1) + tmpvar_4);\\\\n  xlat_mutableuv3 = (fract(xlat_mutableuv3) * aspect.yx);\\\\n  xlat_mutableuv3 = ((0.1 * cos(\\\\n    (22.0 * xlat_mutableuv3)\\\\n  )) + (18.0 * xlat_mutabledz));\\\\n  float tmpvar_7;\\\\n  tmpvar_7 = clamp ((0.02 / sqrt(\\\\n    dot (xlat_mutableuv3, xlat_mutableuv3)\\\\n  )), 0.0, 1.0);\\\\n  vec4 tmpvar_8;\\\\n  tmpvar_8 = (1.0 + roam_cos);\\\\n  xlat_mutableneu = ((0.1 * vec3(tmpvar_7)) + ((0.45 * \\\\n    dot (vec3(tmpvar_7), vec3(0.32, 0.49, 0.29))\\\\n  ) * tmpvar_8).xyz);\\\\n  xlat_mutableret1 = max (vec3(0.0, 0.0, 0.0), (xlat_mutableneu * 1.252262));\\\\n  vec2 tmpvar_9;\\\\n  tmpvar_9.y = 0.0;\\\\n  tmpvar_9.x = tmpvar_5;\\\\n  xlat_mutableuv3 = (((tmpvar_6 * uv2_1) * 0.1) + tmpvar_9);\\\\n  xlat_mutableuv3 = (fract(xlat_mutableuv3) * aspect.yx);\\\\n  xlat_mutableuv3 = ((0.1 * cos(\\\\n    (22.0 * xlat_mutableuv3)\\\\n  )) + (18.0 * xlat_mutabledz));\\\\n  float tmpvar_10;\\\\n  tmpvar_10 = clamp ((0.02 / sqrt(\\\\n    dot (xlat_mutableuv3, xlat_mutableuv3)\\\\n  )), 0.0, 1.0);\\\\n  xlat_mutableneu = ((0.1 * vec3(tmpvar_10)) + ((0.45 * \\\\n    dot (vec3(tmpvar_10), vec3(0.32, 0.49, 0.29))\\\\n  ) * tmpvar_8).xyz);\\\\n  xlat_mutableret1 = max (xlat_mutableret1, (xlat_mutableneu * 1.252262));\\\\n  vec4 tmpvar_11;\\\\n  tmpvar_11.w = 1.0;\\\\n  tmpvar_11.xyz = (xlat_mutableret1 + clamp ((\\\\n    (texture (sampler_main, uv).xyz * 4.0)\\\\n   * \\\\n    (0.2 + xlat_mutableret1)\\\\n  ), 0.0, 1.0));\\\\n  ret = tmpvar_11.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/martin - glass corridor.json\":\n/*!********************************************************!*\\\n  !*** ./presets/converted/martin - glass corridor.json ***!\n  \\********************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1.980001,\\\"decay\\\":0.5,\\\"echo_zoom\\\":0.999998,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":3,\\\"wave_mode\\\":6,\\\"wave_dots\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":1.740724,\\\"wave_smoothing\\\":0.45,\\\"wave_mystery\\\":0.08,\\\"modwavealphastart\\\":0,\\\"modwavealphaend\\\":1.32,\\\"warpanimspeed\\\":1.4595,\\\"warpscale\\\":2.0067,\\\"zoom\\\":0.9999,\\\"warp\\\":0.01,\\\"sx\\\":0.9999,\\\"wave_g\\\":0.99,\\\"ob_size\\\":0,\\\"ob_r\\\":1,\\\"ob_b\\\":1,\\\"ob_a\\\":1,\\\"ib_size\\\":0.26,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":1.85,\\\"mv_r\\\":0.4999,\\\"mv_g\\\":0.4999,\\\"mv_b\\\":0.4999,\\\"mv_a\\\":0,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"textured\\\":1,\\\"x\\\":0.71,\\\"rad\\\":0.657209,\\\"tex_zoom\\\":0.391734,\\\"g\\\":1,\\\"b\\\":1,\\\"a\\\":0.8,\\\"r2\\\":0.83,\\\"g2\\\":0.93,\\\"b2\\\":0.8,\\\"border_b\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"rad\\\":1.264578,\\\"tex_ang\\\":1.4451,\\\"tex_zoom\\\":1.493308,\\\"r\\\":0.7,\\\"g\\\":0.4,\\\"a\\\":0.01,\\\"r2\\\":0.7,\\\"g2\\\":0.4,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":44,\\\"x\\\":0.503,\\\"rad\\\":0.038857,\\\"tex_zoom\\\":0.609857,\\\"g\\\":0.1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = rand(10)/10;\\\\ny = rand(10)/10;\\\\n\\\\nr = 0;\\\\ng = 0;\\\\nb = 0;\\\\n\\\\nr2= .5;\\\\nb2 = 0;\\\\ng2 = 0;\\\\na = 0; a2 = 1;\\\\nrad = bass_att/30;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":63,\\\"textured\\\":1,\\\"y\\\":1,\\\"rad\\\":0.548217,\\\"tex_zoom\\\":0.499805,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"sep\\\":120,\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":0.891519,\\\"smoothing\\\":0.82,\\\"r\\\":0,\\\"g\\\":0.5,\\\"a\\\":0.9,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"t2 = t2 + bass_att;\\\",\\\"point_eqs_eel\\\":\\\"k1 = (sample*100)%2;\\\\n\\\\nxi = value1*k1 + xi*(1-k1);\\\\nyi = value2*(1-k1) + yi*k1;\\\\n\\\\nx = .5 + xi/2;\\\\ny = .5 + yi/2;\\\\n\\\\n\\\\na = bass + mid + treb ;\\\\na = a/10 * sqrt(xi*xi+yi*yi);\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"scaling\\\":0.891519,\\\"smoothing\\\":0.82,\\\"a\\\":0.1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"scaling\\\":0.891519,\\\"smoothing\\\":0.82,\\\"r\\\":0,\\\"g\\\":0.2,\\\"b\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"x0 = .5 + (-1) * q1/1;\\\\ny0 = .0 - (-1)* .5;\\\\n\\\\n//x0 = .5; y0 = .5;\\\\n\\\\nk1 = int(100.0*sample);\\\\nk2 = int(100.0*sample+1);\\\\nk1 = k1%2;\\\\nf1 = rand(100)/200-.25;\\\\nf2 = rand(100)/200-.25;\\\\n\\\\nx = x0 + k1* f1;;\\\\ny = y0 + k1* f2;\\\\na = k2%2 /4;\\\"},{\\\"baseVals\\\":{\\\"spectrum\\\":1,\\\"usedots\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ra = .8;\\\\nrb = .5;\\\\npib = 6.28318530718;\\\\n\\\\n\\\\ntic = min(time-tin,.1);\\\\ntin = if(equal(sample,0),time,tin);\\\\n\\\\nmod = 1.5 + .5*sin(time*.15);\\\\nmed = 1.5 + .5*sin(time*.134);\\\\nmed = 5;\\\\namod = 3;\\\\n\\\\nvr = rand(10001)*.0001;\\\\nrb = rb + rand(10001)*.0001*.1;\\\\n\\\\na = vr;\\\\n\\\\nsa = vr*pib*.5;\\\\nsp = sa*mod + q1*1.3;\\\\nsam = sa*med - q1*.219;\\\\n\\\\nox = ra*sin(sam*pib);\\\\noy = ra*cos(sam*pib);\\\\nox = ox + rb*-cos(sp)*sin(sam*pib);\\\\noz = rb*-sin(sp);\\\\noy = oy + rb*-cos(sp)*cos(sam*pib);\\\\n\\\\n\\\\nxang = time*.132;\\\\nxang = q2;\\\\nyang = time*.153;\\\\nyang = q3;\\\\nzang = time*.110;\\\\nzang = q4;\\\\nfov = 0.6 + 0.2*sin(time);\\\\nfov = .5;\\\\n\\\\nmx = ox*cos(zang) - oy*sin(zang);\\\\nmy = ox*sin(zang) + oy*cos(zang);\\\\nox = mx;\\\\noy = my;\\\\nmx = ox*cos(yang) + oz*sin(yang);\\\\nmz = -ox*sin(yang) + oz*cos(yang);\\\\nox = mx;\\\\noz = mz;\\\\nmy = oy*cos(xang) - oz*sin(xang);\\\\nmz = oy*sin(xang) + oz*cos(xang);\\\\noy = my;\\\\noz = mz;\\\\n\\\\noz = oz - 2;\\\\nx = ox*fov/oz + 0.5;\\\\nx = (x-.5)*0.75 + 0.5;\\\\ny = oy*fov/oz + 0.5;\\\\n\\\"}],\\\"init_eqs_eel\\\":\\\"p3 = 0;\\\\nt_rel = 0;\\\",\\\"frame_eqs_eel\\\":\\\"dec_med = pow (0.9, 30/fps);\\\\ndec_slow = pow (0.99, 30/fps);\\\\nbeat = max (max (bass, mid), treb);\\\\navg = avg*dec_slow + beat*(1-dec_slow);\\\\nis_beat = above(beat, .5+avg+peak) * above (time, t0+.2);\\\\nt0 = is_beat*time + (1-is_beat)*t0;\\\\npeak = is_beat * beat + (1-is_beat)*peak*dec_med;\\\\nindex = (index + is_beat) %8;\\\\nindex2 = (index2 + is_beat*bnot(index))%4;\\\\nindex3 = (index3 + is_beat*bnot(index)*bnot(index2))%3;\\\\n\\\\nmonitor = index4;\\\\n\\\\nq20 = avg;\\\\nq21 = beat;\\\\nq22 = peak;\\\\nq23 = index;\\\\nq24 = is_beat;\\\\nq26 = bass_att + mid_att + treb_att+1;\\\\n\\\\n//k1 =  is_beat*bnot(index)*bnot(index2);\\\\n\\\\nk1 =  is_beat*equal(index,0);\\\\np1 =  k1*(p1+1) + (1-k1)*p1;\\\\np2 = dec_med * p2+ (1-dec_med)*p1;\\\\np3 = dec_med * p3+ (1-dec_med)*p2;\\\\nrott = p3 * 3.14159265359/2;\\\\n\\\\n\\\\nq27 = 8-index;\\\\nq28 = index2+1;\\\\n\\\\n//q28 = sin(time)+1;\\\\n\\\\nq1 = cos(rott);\\\\nq2 = sin(rott);\\\\nq3 = -q2;\\\\nq4 = q1;\\\\n\\\\nt_rel = t_rel + .02*30/fps*q1*q1;\\\\n\\\\nq5 = cos(t_rel);\\\\nq6 = sin(t_rel);\\\\nq7 = -q6;\\\\nq8 = q5;\\\\n\\\\nmovez = movez + .02*30/fps / ((1.4-q5)*(1.4-q5));\\\\nq30 = movez;\\\\n\\\\n\\\\nzoom = 1.0;\\\",\\\"pixel_eqs_eel\\\":\\\"dx = 0*q28/8;\\\",\\\"warp\\\":\\\"vec3 xlat_mutablenoise;\\\\nvec3 xlat_mutableret1;\\\\nvec2 xlat_mutablers;\\\\n shader_body { \\\\n  float z_1;\\\\n  mat2 tmpvar_2;\\\\n  tmpvar_2[uint(0)] = _qb.xy;\\\\n  tmpvar_2[1u] = _qb.zw;\\\\n  vec2 tmpvar_3;\\\\n  tmpvar_3 = ((uv * tmpvar_2) - 0.5);\\\\n  float tmpvar_4;\\\\n  tmpvar_4 = (0.4 / abs(tmpvar_3.y));\\\\n  xlat_mutablers.x = (tmpvar_3.x * tmpvar_4);\\\\n  xlat_mutablers.y = (tmpvar_4 + q30);\\\\n  vec4 tmpvar_5;\\\\n  tmpvar_5 = texture (sampler_pw_noise_lq, (xlat_mutablers / 32.0));\\\\n  xlat_mutablenoise = (tmpvar_5.xyz * vec3(greaterThanEqual (tmpvar_5.xyz, vec3(0.9, 0.9, 0.9))));\\\\n  xlat_mutablenoise = (xlat_mutablenoise * (1.0 + (0.5 * \\\\n    (dot (texture (sampler_noise_hq, (16.0 * xlat_mutablers)), vec4(0.32, 0.49, 0.29, 0.0)) - 0.5)\\\\n  )));\\\\n  xlat_mutableret1 = xlat_mutablenoise;\\\\n  z_1 = (1.2 / abs(tmpvar_3.y));\\\\n  xlat_mutablers.x = (tmpvar_3.x * z_1);\\\\n  xlat_mutablers.y = (z_1 + q30);\\\\n  vec4 tmpvar_6;\\\\n  tmpvar_6 = texture (sampler_pw_noise_lq, (xlat_mutablers / 32.0));\\\\n  xlat_mutablenoise = (tmpvar_6.xyz * vec3(greaterThanEqual (tmpvar_6.xyz, vec3(0.9, 0.9, 0.9))));\\\\n  xlat_mutableret1 = (xlat_mutableret1 + xlat_mutablenoise);\\\\n  z_1 = (0.4 / abs(tmpvar_3.x));\\\\n  xlat_mutablers.y = (tmpvar_3.y * z_1);\\\\n  xlat_mutablers.x = (z_1 + q30);\\\\n  vec4 tmpvar_7;\\\\n  tmpvar_7 = texture (sampler_pw_noise_lq, (xlat_mutablers / 32.0));\\\\n  xlat_mutablenoise = (tmpvar_7.xyz * vec3(greaterThanEqual (tmpvar_7.xyz, vec3(0.9, 0.9, 0.9))));\\\\n  xlat_mutablenoise = (xlat_mutablenoise * (1.0 + (0.5 * \\\\n    (dot (texture (sampler_noise_hq, (16.0 * xlat_mutablers)), vec4(0.32, 0.49, 0.29, 0.0)) - 0.5)\\\\n  )));\\\\n  xlat_mutableret1 = (xlat_mutableret1 + xlat_mutablenoise);\\\\n  z_1 = (1.2 / abs(tmpvar_3.x));\\\\n  xlat_mutablers.y = (tmpvar_3.y * z_1);\\\\n  xlat_mutablers.x = (z_1 + q30);\\\\n  vec4 tmpvar_8;\\\\n  tmpvar_8 = texture (sampler_pw_noise_lq, (xlat_mutablers / 32.0));\\\\n  xlat_mutablenoise = (tmpvar_8.xyz * vec3(greaterThanEqual (tmpvar_8.xyz, vec3(0.9, 0.9, 0.9))));\\\\n  xlat_mutableret1 = (xlat_mutableret1 + xlat_mutablenoise);\\\\n  vec4 tmpvar_9;\\\\n  tmpvar_9.w = 1.0;\\\\n  tmpvar_9.xyz = xlat_mutableret1;\\\\n  ret = tmpvar_9.xyz;\\\\n }\\\",\\\"comp\\\":\\\"uniform sampler2D sampler_clouds2;\\\\n shader_body { \\\\n  vec2 uv_1;\\\\n  vec2 uv1_2;\\\\n  uv_1 = (uv * aspect.xy);\\\\n  vec2 tmpvar_3;\\\\n  tmpvar_3.y = 0.0;\\\\n  tmpvar_3.x = texsize.z;\\\\n  vec2 tmpvar_4;\\\\n  tmpvar_4.x = 0.0;\\\\n  tmpvar_4.y = texsize.w;\\\\n  vec2 tmpvar_5;\\\\n  tmpvar_5.x = (dot (texture (sampler_main, (uv_1 - tmpvar_3)).xyz, vec3(0.32, 0.49, 0.29)) - dot (texture (sampler_main, (uv_1 + tmpvar_3)).xyz, vec3(0.32, 0.49, 0.29)));\\\\n  tmpvar_5.y = (dot (texture (sampler_main, (uv_1 - tmpvar_4)).xyz, vec3(0.32, 0.49, 0.29)) - dot (texture (sampler_main, (uv_1 + tmpvar_4)).xyz, vec3(0.32, 0.49, 0.29)));\\\\n  uv1_2 = ((0.3 * sin(\\\\n    ((uv_1 + (0.02 * time)) * 6.0)\\\\n  )) + (0.2 * tmpvar_5));\\\\n  vec4 tmpvar_6;\\\\n  tmpvar_6 = texture (sampler_clouds2, (uv_orig + tmpvar_5));\\\\n  vec4 tmpvar_7;\\\\n  tmpvar_7.w = 1.0;\\\\n  tmpvar_7.xyz = (((-2.0 * \\\\n    (0.1 * texture (sampler_main, uv_1))\\\\n  .xyz) + (\\\\n    clamp (((0.004 * q26) / sqrt(dot (uv1_2, uv1_2))), 0.0, 1.0)\\\\n   * vec3(1.0, 0.8, 0.4))) + (0.4 * (tmpvar_6.xyz + \\\\n    (dot (tmpvar_6.xyz, vec3(0.32, 0.49, 0.29)) - 0.7)\\\\n  )));\\\\n  ret = tmpvar_7.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/martin - mandelbox explorer - high speed demo version.json\":\n/*!**************************************************************************************!*\\\n  !*** ./presets/converted/martin - mandelbox explorer - high speed demo version.json ***!\n  \\**************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":3,\\\"gammaadj\\\":1.98,\\\"decay\\\":0.5,\\\"echo_zoom\\\":1,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":3,\\\"wave_mode\\\":7,\\\"additivewave\\\":1,\\\"wave_thick\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":0.958,\\\"wave_smoothing\\\":0.45,\\\"modwavealphastart\\\":0,\\\"modwavealphaend\\\":1.32,\\\"warpanimspeed\\\":1.459,\\\"warpscale\\\":2.007,\\\"zoom\\\":0.9999,\\\"warp\\\":0.01,\\\"sx\\\":0.9999,\\\"wave_r\\\":0,\\\"wave_g\\\":0,\\\"wave_b\\\":0,\\\"ob_size\\\":0.05,\\\"ob_g\\\":0.1,\\\"ob_b\\\":1,\\\"ob_a\\\":1,\\\"ib_size\\\":0,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"mv_x\\\":25.6,\\\"mv_y\\\":9.6,\\\"mv_l\\\":0,\\\"mv_r\\\":0.5,\\\"mv_g\\\":0.5,\\\"mv_b\\\":0.5,\\\"mv_a\\\":0,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"textured\\\":1,\\\"x\\\":0.09,\\\"y\\\":0.9,\\\"rad\\\":0.22437,\\\"tex_zoom\\\":1.76002,\\\"r2\\\":1,\\\"g2\\\":0,\\\"a2\\\":0.6,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"additive\\\":1,\\\"x\\\":0.26,\\\"y\\\":0.2,\\\"rad\\\":0.39317,\\\"tex_zoom\\\":6.19589,\\\"r\\\":0,\\\"g\\\":0.55,\\\"b\\\":0.5,\\\"g2\\\":0.4,\\\"b2\\\":0.4,\\\"a2\\\":0.07,\\\"border_r\\\":0.3,\\\"border_g\\\":0.7,\\\"border_b\\\":0.8,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":44,\\\"additive\\\":1,\\\"x\\\":0.503,\\\"rad\\\":0.03886,\\\"tex_zoom\\\":0.60986,\\\"g\\\":0.1,\\\"a\\\":0.9,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"rad\\\":0.01,\\\"tex_zoom\\\":0.49981,\\\"r\\\":0,\\\"g2\\\":0,\\\"border_r\\\":0.2,\\\"border_g\\\":0.7,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"samples\\\":282,\\\"sep\\\":20,\\\"usedots\\\":1,\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":3.91581,\\\"smoothing\\\":0.1,\\\"r\\\":0.2,\\\"g\\\":0.3,\\\"a\\\":0.6,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"usedots\\\":1,\\\"thick\\\":1,\\\"scaling\\\":0.89152,\\\"smoothing\\\":0.82,\\\"a\\\":0.1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"scaling\\\":0.89152,\\\"smoothing\\\":0.82,\\\"r\\\":0,\\\"g\\\":0.2,\\\"b\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"spectrum\\\":1,\\\"usedots\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"//******** INITIALIZATION *********\\\\n//---------- some global vars, do not change -------------\\\\navg = 0.01;\\\\nq7 = .25; //MyZoom\\\\nq8 =  rand(2.0)-1.0; //fractal modifier\\\\n//q8 = 1; //#\\\\nq16 = 1 + rand(2); //Tele ; rather fish eye\\\\n//q16 = 1; //#\\\\nq18 = rand(0.8)+.1; //brightness balance back/front\\\\nq30 = 1; //logarithmic Z-Dist storage; unused\\\\nq31 =128;\\\\nstart = 1; travel = 0; RotZ = 0; look = 0; slow = 0; t0 = time+3; lampx = .5; lampy = .5;\\\\ncran0 = rand(1);\\\\nn = 0; loop (10000, gmegabuf(n)=0; n=n+1; );\\\\nn = 0; loop (10000,  megabuf(n)=0; n=n+1; );\\\\ntrelx = 0;  trely = 0; trelz = 0;\\\\nreg20 = 1; reg21 = 0; reg22 = 0; reg23 = 0; reg24 = 1; reg25 = 0; reg26 = 0; reg27 = 0; reg28 = 1;\\\\n\\\\n//Find random starting point\\\\nwhile (exec2(\\\\n  ran1 = rand(800)/100;  ran2 = rand(800)/100;  ran3 = rand(800)/100;\\\\n  PosX = rand(5)-2;   PosY = rand(5)-2;   PosZ = rand(5)-2;\\\\n\\\\n//  PosX = 3.3; PosY = 2; PosZ = -2; ran1 = 0; ran2 = 0; ran3 = 0; //#\\\\n\\\\n  c1 = cos(ran1); c2 = cos(ran2); c3 = cos(ran3);\\\\n  s1 = sin(ran1); s2 = sin(ran2); s3 = sin(ran3);\\\\n\\\\n  reg20 = c2*c1; reg21 = c2*s1; reg22 = -s2;\\\\n  reg23 = s3*s2*c1 - c3*s1; reg24 = s3*s2*s1 + c3*c1; reg25 = s3*c2;\\\\n  reg26 = c3*s2*c1 + s3*s1; reg27 = c3*s2*s1 - s3*c1; reg28 = c3*c2;\\\\n\\\\n  //***********BOT*************\\\\n  //Coord. Trans. must exactly match def in warp S. !!!!\\\\n  dist = 0.001;\\\\n  while (exec2(\\\\n    uvx = reg26*dist/q7; uvy = reg27*dist/q7; uvz = reg28*dist/q7;\\\\n    uvx += PosX; uvy += PosY; uvz += PosZ;\\\\n    uvx = 8.0*((uvx/8+30.5 - int(uvx/8+30.5))-.5);\\\\n    uvy = 8.0*((uvy/8+30.5 - int(uvy/8+30.5))-.5);\\\\n    uvz = 8.0*((uvz/8+30.5 - int(uvz/8+30.5))-.5);\\\\n    uvx0 = uvx+q8; uvy0 = uvy+q8; uvz0 = uvz+q8;\\\\n    loop (7+1,\\\\n      uvx = if (uvx > 1, 2-uvx, if(uvx < -1, -2-uvx, uvx));\\\\n      uvy = if (uvy > 1, 2-uvy, if(uvy < -1, -2-uvy, uvy));\\\\n      uvz = if (uvz > 1, 2-uvz, if(uvz < -1, -2-uvz, uvz));\\\\n      slen = uvx*uvx + uvy*uvy + uvz*uvz;\\\\n      uvx = if (slen < 0.25, uvx*4, if (slen < 1, uvx/slen, uvx)) *2.6 + uvx0;\\\\n      uvy = if (slen < 0.25, uvy*4, if (slen < 1, uvy/slen, uvy)) *2.6 + uvy0;\\\\n      uvz = if (slen < 0.25, uvz*4, if (slen < 1, uvz/slen, uvz)) *2.6 + uvz0;\\\\n    );\\\\n    len = sqrt(uvx*uvx + uvy*uvy + uvz*uvz);\\\\n    dist *= 1.05;\\\\n  ,(dist < 0.6)*(len > 30)));\\\\n,(dist < .06))); //end while\\\",\\\"frame_eqs_eel\\\":\\\"fps_ = .0 * fps_ + 1*if(fps<=25,fps,25+.5*(fps-25));\\\\ndec_s = 1-.06*30/fps_;\\\\nbeat = (time >  t0+3); t0 = if(beat, time, t0);\\\\n\\\\nspeed = min(0.2,dist_-.02) * (1+2*avg) *(1-slow*.0)*.7/q7; //#\\\\nds = ds * dec_s + (1-dec_s)*speed*.25/fps_;\\\\nRotZ = if (RotZ==0,beat*(rand(100)<20*travel)*(rand(10)/10-.3),\\\\n                   bnot(beat*(rand(100)<30))*RotZ);\\\\nslow = if (bnot(slow), beat*(rand(1000*avg)<6), bnot(beat*(rand(100)<50)));\\\\nlook = if (bnot(look), beat*(rand(1000*speed)<12), bnot(beat*(rand(100)<50)));\\\\n\\\\n//Lamp View\\\\nlx = if (beat,rand(150)/200+.15,lx);\\\\nly = if (beat,rand(150)/200+.15,ly);\\\\nlampx = lampx * dec_s + (1-dec_s)*if (look,lx,0.5);\\\\nlampy = lampy * dec_s + (1-dec_s)*if (look,ly,0.5);\\\\nq1 = lampx; q2 = lampy;\\\\n\\\\n//Position\\\\nDirX= reg26; DirY= reg27; DirZ = reg28;\\\\nPosX = PosX + ds*DirX ; PosY = PosY + ds*DirY; PosZ = PosZ + ds*DirZ;\\\\nq4 = PosX; q5 = PosY; q6 = PosZ;\\\\n\\\\nangchg = (.2-dist_)*(dist_ < .2)*2;\\\\ntravel = if (angchg > 0,0,travel+ds);\\\\nv1 = v1 * dec_s + (1-dec_s)* RotZ * ds;\\\\nv2 = v2 *dec_s + (1-dec_s)*angchg *xslope/fps_;\\\\nv3 = v3 *dec_s + (1-dec_s)*(angchg *yslope/fps_ + 2*v1*sin(time*.1));\\\\n//v2 = .008;\\\\n//push old RotMat\\\\nreg30 =reg20; reg31 =reg21; reg32 =reg22;\\\\nreg33 =reg23; reg34 =reg24; reg35 =reg25;\\\\nreg36 =reg26; reg37 =reg27; reg38 =reg28;\\\\n\\\\nn = 0; avg = 0;\\\\nloop (5,\\\\n  n = n+1;\\\\n  //new Rot. Mat for infinitesimal angles\\\\n  ran1 = rand(100)/100;\\\\n  ran2 = rand(100)/200-.25;\\\\n  tx = cos(n*1.57+ran2) * (n <= 4)*ran1; ty = sin(n*1.57+ran2) * (n <= 4)*ran1;\\\\n  c1 = cos(v1); c2 = cos(v2+ty); c3 = cos(v3+tx);\\\\n  s1 = sin(v1); s2 = sin(v2+ty); s3 = sin(v3+tx);\\\\n  reg10 = c2*c1; reg11 = c2*s1; reg12 = -s2;\\\\n  reg13 = s3*s2*c1 - c3*s1; reg14 = s3*s2*s1 + c3*c1; reg15 = s3*c2;\\\\n  reg16 = c3*s2*c1 + s3*s1; reg17 = c3*s2*s1 - s3*c1; reg18 = c3*c2;\\\\n\\\\n  //pop old RotMat\\\\n  reg20 =reg30; reg21 =reg31; reg22 =reg32;\\\\n  reg23 =reg33; reg24 =reg34; reg25 =reg35;\\\\n  reg26 =reg36; reg27 =reg37; reg28 =reg38;\\\\n\\\\n  //Multiply new RotMat by old one\\\\n  q20 = reg10*reg20 + reg11*reg23 + reg12*reg26;\\\\n  q21 = reg10*reg21 + reg11*reg24 + reg12*reg27;\\\\n  q22 = reg10*reg22 + reg11*reg25 + reg12*reg28;\\\\n  q23 = reg13*reg20 + reg14*reg23 + reg15*reg26;\\\\n  q24 = reg13*reg21 + reg14*reg24 + reg15*reg27;\\\\n  q25 = reg13*reg22 + reg14*reg25 + reg15*reg28;\\\\n  q26 = reg16*reg20 + reg17*reg23 + reg18*reg26;\\\\n  q27 = reg16*reg21 + reg17*reg24 + reg18*reg27;\\\\n  q28 = reg16*reg22 + reg17*reg25 + reg18*reg28;\\\\n\\\\n  reg20 =q20; reg21 =q21; reg22 =q22;\\\\n  reg23 =q23; reg24 =q24; reg25 =q25;\\\\n  reg26 =q26; reg27 =q27; reg28 =q28;\\\\n\\\\n  //***********BOT*************\\\\n  //Coord. Trans. must exactly match def in warp S. !!!!\\\\n  dist = 0.002;\\\\n  while (exec2(\\\\n    uvx = reg26*dist/q7; uvy = reg27*dist/q7; uvz = reg28*dist/q7;\\\\n    uvx += PosX; uvy += PosY; uvz += PosZ;\\\\n    uvx = 8.0*((uvx/8+30.5 - int(uvx/8+30.5))-.5);\\\\n    uvy = 8.0*((uvy/8+30.5 - int(uvy/8+30.5))-.5);\\\\n    uvz = 8.0*((uvz/8+30.5 - int(uvz/8+30.5))-.5);\\\\n    uvx0 = uvx+q8; uvy0 = uvy+q8; uvz0 = uvz+q8;\\\\n    loop (7+1,\\\\n      uvx = if (uvx > 1, 2-uvx, if(uvx < -1, -2-uvx, uvx));\\\\n      uvy = if (uvy > 1, 2-uvy, if(uvy < -1, -2-uvy, uvy));\\\\n      uvz = if (uvz > 1, 2-uvz, if(uvz < -1, -2-uvz, uvz));\\\\n      slen = uvx*uvx + uvy*uvy + uvz*uvz;\\\\n      uvx = if (slen < 0.25, uvx*4, if (slen < 1, uvx/slen, uvx)) *2.6 + uvx0;\\\\n      uvy = if (slen < 0.25, uvy*4, if (slen < 1, uvy/slen, uvy)) *2.6 + uvy0;\\\\n      uvz = if (slen < 0.25, uvz*4, if (slen < 1, uvz/slen, uvz)) *2.6 + uvz0;\\\\n    );\\\\n    len = sqrt(uvx*uvx + uvy*uvy + uvz*uvz);\\\\n    dist *= 1.1;\\\\n  ,(dist < 0.6)*(len > 30)));\\\\n  megabuf(n) = megabuf(n)*dec_s + (1-dec_s)*dist; //stores the 4 trial points\\\\n  avg = avg+abs(megabuf(n)/5);\\\\n); //end loop 5\\\\n\\\\nn = 0; avg = 0; loop (5, n=n+1; avg = avg+abs(megabuf(n)/5));\\\\n\\\\nxslope = min(max(2/avg*(megabuf(1)-megabuf(3)),-3),3);\\\\nyslope = min(max(2/avg*(megabuf(4)-megabuf(2)),-3),3);\\\\nmonitor = avg;\\\\ndist_ = dist_*dec_s + (1-dec_s)*dist;\\\\n\\\\nq10 = ds*q7; //compensation of lin. movement in GetDist and zoom uv\\\\nq14 = 1*abs(ds) + 2*(abs(v1) + abs(v2) + abs(v3)) + 1.0/255 + start*.05;\\\\nq19 = .6 + .4*sin(time*.02+cran0*6); //brightness backgd\\\\nstart = start * .9;\\\\nq11 = v1; q12 = v2; q13 = v3;\\\\n//forward comp. of Rotation\\\\nmonitor = q16;\\\",\\\"pixel_eqs_eel\\\":\\\"warp = 0.0; zoom = 1; dx = -q12/q16*(1+0*pow(x-.5,2)); dy = q13/q16*(1+0*pow(y-.5,2)); rot =q11;\\\",\\\"warp\\\":\\\"float sustain;\\\\nfloat xlat_mutabledist;\\\\nfloat xlat_mutablestruc;\\\\nvec2 xlat_mutableuv1;\\\\nvec3 xlat_mutableuv2;\\\\n shader_body { \\\\n  mat3 tmpvar_1;\\\\n  tmpvar_1[uint(0)].x = q20;\\\\n  tmpvar_1[uint(0)].y = q23;\\\\n  tmpvar_1[uint(0)].z = q26;\\\\n  tmpvar_1[1u].x = q21;\\\\n  tmpvar_1[1u].y = q24;\\\\n  tmpvar_1[1u].z = q27;\\\\n  tmpvar_1[2u].x = q22;\\\\n  tmpvar_1[2u].y = q25;\\\\n  tmpvar_1[2u].z = q28;\\\\n  vec3 tmpvar_2;\\\\n  tmpvar_2.x = q4;\\\\n  tmpvar_2.y = q5;\\\\n  tmpvar_2.z = q6;\\\\n  sustain = (0.98 - q14);\\\\n  vec2 uv_3;\\\\n  vec3 ret_4;\\\\n  vec2 tmpvar_5;\\\\n  tmpvar_5 = (uv - 0.5);\\\\n  xlat_mutableuv1 = ((tmpvar_5 * aspect.xy) * q16);\\\\n  vec4 tmpvar_6;\\\\n  tmpvar_6 = texture (sampler_pc_main, uv);\\\\n  uv_3 = ((tmpvar_5 * (1.0 - \\\\n    (q10 / (1.0 - ((tmpvar_6.z + \\\\n      (0.003921569 * tmpvar_6.y)\\\\n    ) + (q10 * 0.7))))\\\\n  )) + 0.5);\\\\n  vec4 tmpvar_7;\\\\n  tmpvar_7 = fract((8.0 * texture (sampler_noise_lq, (uv_3 + rand_frame.yz))));\\\\n  xlat_mutabledist = tmpvar_7.x;\\\\n  if ((tmpvar_7.y > 0.2)) {\\\\n    vec3 tmpvar_8;\\\\n    tmpvar_8 = (tmpvar_7.xyz - vec3(0.4, 0.5, 0.5));\\\\n    vec2 uvi_9;\\\\n    uvi_9 = ((tmpvar_8.zy * 0.003) + uv_3);\\\\n    vec2 pix_10;\\\\n    vec4 nb2_11;\\\\n    vec4 nb_12;\\\\n    vec2 x_13;\\\\n    x_13 = (uvi_9 - 0.5);\\\\n    pix_10 = (texsize.zw * (1.0 + (\\\\n      sqrt(dot (x_13, x_13))\\\\n     * 8.0)));\\\\n    float tmpvar_14;\\\\n    tmpvar_14 = (q10 * 0.7);\\\\n    vec4 tmpvar_15;\\\\n    tmpvar_15 = texture (sampler_pc_main, (uvi_9 - pix_10));\\\\n    nb_12.x = (1.0 - ((tmpvar_15.z + \\\\n      (0.003921569 * tmpvar_15.y)\\\\n    ) + tmpvar_14));\\\\n    vec4 tmpvar_16;\\\\n    tmpvar_16 = texture (sampler_pc_main, (uvi_9 + (pix_10 * vec2(1.0, -1.0))));\\\\n    nb_12.y = (1.0 - ((tmpvar_16.z + \\\\n      (0.003921569 * tmpvar_16.y)\\\\n    ) + tmpvar_14));\\\\n    vec4 tmpvar_17;\\\\n    tmpvar_17 = texture (sampler_pc_main, (uvi_9 + pix_10));\\\\n    nb_12.z = (1.0 - ((tmpvar_17.z + \\\\n      (0.003921569 * tmpvar_17.y)\\\\n    ) + tmpvar_14));\\\\n    vec4 tmpvar_18;\\\\n    tmpvar_18 = texture (sampler_pc_main, (uvi_9 + (pix_10 * vec2(-1.0, 1.0))));\\\\n    nb_12.w = (1.0 - ((tmpvar_18.z + \\\\n      (0.003921569 * tmpvar_18.y)\\\\n    ) + tmpvar_14));\\\\n    vec4 tmpvar_19;\\\\n    tmpvar_19 = texture (sampler_pc_main, (uvi_9 + (pix_10 * vec2(0.0, -1.0))));\\\\n    nb2_11.x = (1.0 - ((tmpvar_19.z + \\\\n      (0.003921569 * tmpvar_19.y)\\\\n    ) + tmpvar_14));\\\\n    vec4 tmpvar_20;\\\\n    tmpvar_20 = texture (sampler_pc_main, (uvi_9 + (pix_10 * vec2(1.0, 0.0))));\\\\n    nb2_11.y = (1.0 - ((tmpvar_20.z + \\\\n      (0.003921569 * tmpvar_20.y)\\\\n    ) + tmpvar_14));\\\\n    vec4 tmpvar_21;\\\\n    tmpvar_21 = texture (sampler_pc_main, (uvi_9 + (pix_10 * vec2(0.0, 1.0))));\\\\n    nb2_11.z = (1.0 - ((tmpvar_21.z + \\\\n      (0.003921569 * tmpvar_21.y)\\\\n    ) + tmpvar_14));\\\\n    vec4 tmpvar_22;\\\\n    tmpvar_22 = texture (sampler_pc_main, (uvi_9 + (pix_10 * vec2(-1.0, 0.0))));\\\\n    nb2_11.w = (1.0 - ((tmpvar_22.z + \\\\n      (0.003921569 * tmpvar_22.y)\\\\n    ) + tmpvar_14));\\\\n    vec4 tmpvar_23;\\\\n    tmpvar_23 = min (nb_12, nb2_11);\\\\n    nb_12.zw = tmpvar_23.zw;\\\\n    nb_12.xy = min (tmpvar_23.xy, tmpvar_23.zw);\\\\n    xlat_mutabledist = (min (nb_12.x, nb_12.y) + ((0.008 * tmpvar_8.x) * abs(tmpvar_8.y)));\\\\n  };\\\\n  vec4 tmpvar_24;\\\\n  tmpvar_24 = texture (sampler_pc_main, uv_3);\\\\n  float tmpvar_25;\\\\n  tmpvar_25 = min (xlat_mutabledist, (1.0 - (\\\\n    (tmpvar_24.z + (0.003921569 * tmpvar_24.y))\\\\n   + \\\\n    (q10 * 0.7)\\\\n  )));\\\\n  xlat_mutabledist = tmpvar_25;\\\\n  float tmpvar_26;\\\\n  tmpvar_26 = (tmpvar_25 + pow (tmpvar_25, 3.0));\\\\n  vec3 tmpvar_27;\\\\n  tmpvar_27.xy = (xlat_mutableuv1 * tmpvar_26);\\\\n  tmpvar_27.z = tmpvar_26;\\\\n  xlat_mutableuv2 = (((tmpvar_27 / q7) * tmpvar_1) + tmpvar_2);\\\\n  xlat_mutableuv2 = ((fract(\\\\n    ((xlat_mutableuv2 / 8.0) + 0.5)\\\\n  ) - 0.5) * 8.0);\\\\n  float li_28;\\\\n  vec3 zz0_29;\\\\n  vec3 zz_30;\\\\n  zz0_29 = (xlat_mutableuv2 + q8);\\\\n  li_28 = 0.0;\\\\n  zz_30 = ((2.0 * clamp (xlat_mutableuv2, vec3(-1.0, -1.0, -1.0), vec3(1.0, 1.0, 1.0))) - xlat_mutableuv2);\\\\n  float tmpvar_31;\\\\n  tmpvar_31 = dot (zz_30, zz_30);\\\\n  if ((tmpvar_31 <= 0.25)) {\\\\n    zz_30 = (zz_30 * 4.0);\\\\n    li_28 = 24.0;\\\\n  } else {\\\\n    if ((tmpvar_31 <= 1.0)) {\\\\n      zz_30 = (zz_30 / tmpvar_31);\\\\n    };\\\\n  };\\\\n  zz_30 = ((2.6 * zz_30) + zz0_29);\\\\n  zz_30 = ((2.0 * clamp (zz_30, vec3(-1.0, -1.0, -1.0), vec3(1.0, 1.0, 1.0))) - zz_30);\\\\n  float tmpvar_32;\\\\n  tmpvar_32 = dot (zz_30, zz_30);\\\\n  if ((tmpvar_32 <= 0.25)) {\\\\n    zz_30 = (zz_30 * 4.0);\\\\n    li_28 = 24.0;\\\\n  } else {\\\\n    if ((tmpvar_32 <= 1.0)) {\\\\n      zz_30 = (zz_30 / tmpvar_32);\\\\n    };\\\\n  };\\\\n  zz_30 = ((2.6 * zz_30) + zz0_29);\\\\n  zz_30 = ((2.0 * clamp (zz_30, vec3(-1.0, -1.0, -1.0), vec3(1.0, 1.0, 1.0))) - zz_30);\\\\n  float tmpvar_33;\\\\n  tmpvar_33 = dot (zz_30, zz_30);\\\\n  if ((tmpvar_33 <= 0.25)) {\\\\n    zz_30 = (zz_30 * 4.0);\\\\n    li_28 = 24.0;\\\\n  } else {\\\\n    if ((tmpvar_33 <= 1.0)) {\\\\n      zz_30 = (zz_30 / tmpvar_33);\\\\n    };\\\\n  };\\\\n  zz_30 = ((2.6 * zz_30) + zz0_29);\\\\n  zz_30 = ((2.0 * clamp (zz_30, vec3(-1.0, -1.0, -1.0), vec3(1.0, 1.0, 1.0))) - zz_30);\\\\n  float tmpvar_34;\\\\n  tmpvar_34 = dot (zz_30, zz_30);\\\\n  if ((tmpvar_34 <= 0.25)) {\\\\n    zz_30 = (zz_30 * 4.0);\\\\n    li_28 = 24.0;\\\\n  } else {\\\\n    if ((tmpvar_34 <= 1.0)) {\\\\n      zz_30 = (zz_30 / tmpvar_34);\\\\n    };\\\\n  };\\\\n  zz_30 = ((2.6 * zz_30) + zz0_29);\\\\n  zz_30 = ((2.0 * clamp (zz_30, vec3(-1.0, -1.0, -1.0), vec3(1.0, 1.0, 1.0))) - zz_30);\\\\n  float tmpvar_35;\\\\n  tmpvar_35 = dot (zz_30, zz_30);\\\\n  if ((tmpvar_35 <= 0.25)) {\\\\n    zz_30 = (zz_30 * 4.0);\\\\n    li_28 = 24.0;\\\\n  } else {\\\\n    if ((tmpvar_35 <= 1.0)) {\\\\n      zz_30 = (zz_30 / tmpvar_35);\\\\n    };\\\\n  };\\\\n  zz_30 = ((2.6 * zz_30) + zz0_29);\\\\n  zz_30 = ((2.0 * clamp (zz_30, vec3(-1.0, -1.0, -1.0), vec3(1.0, 1.0, 1.0))) - zz_30);\\\\n  float tmpvar_36;\\\\n  tmpvar_36 = dot (zz_30, zz_30);\\\\n  if ((tmpvar_36 <= 0.25)) {\\\\n    zz_30 = (zz_30 * 4.0);\\\\n    li_28 = 24.0;\\\\n  } else {\\\\n    if ((tmpvar_36 <= 1.0)) {\\\\n      zz_30 = (zz_30 / tmpvar_36);\\\\n    };\\\\n  };\\\\n  zz_30 = ((2.6 * zz_30) + zz0_29);\\\\n  zz_30 = ((2.0 * clamp (zz_30, vec3(-1.0, -1.0, -1.0), vec3(1.0, 1.0, 1.0))) - zz_30);\\\\n  float tmpvar_37;\\\\n  tmpvar_37 = dot (zz_30, zz_30);\\\\n  if ((tmpvar_37 <= 0.25)) {\\\\n    zz_30 = (zz_30 * 4.0);\\\\n    li_28 = 24.0;\\\\n  } else {\\\\n    if ((tmpvar_37 <= 1.0)) {\\\\n      zz_30 = (zz_30 / tmpvar_37);\\\\n    };\\\\n  };\\\\n  zz_30 = ((2.6 * zz_30) + zz0_29);\\\\n  zz_30 = ((2.0 * clamp (zz_30, vec3(-1.0, -1.0, -1.0), vec3(1.0, 1.0, 1.0))) - zz_30);\\\\n  float tmpvar_38;\\\\n  tmpvar_38 = dot (zz_30, zz_30);\\\\n  if ((tmpvar_38 <= 0.25)) {\\\\n    zz_30 = (zz_30 * 4.0);\\\\n    li_28 = 24.0;\\\\n  } else {\\\\n    if ((tmpvar_38 <= 1.0)) {\\\\n      zz_30 = (zz_30 / tmpvar_38);\\\\n    };\\\\n  };\\\\n  zz_30 = ((2.6 * zz_30) + zz0_29);\\\\n  vec4 tmpvar_39;\\\\n  tmpvar_39.xyz = zz_30;\\\\n  tmpvar_39.w = li_28;\\\\n  float tmpvar_40;\\\\n  tmpvar_40 = sqrt(dot (zz_30, zz_30));\\\\n  xlat_mutablestruc = (sqrt(dot (tmpvar_39.xyw, tmpvar_39.xyw)) / 24.0);\\\\n  vec4 tmpvar_41;\\\\n  tmpvar_41 = texture (sampler_pc_main, uv_3);\\\\n  float tmpvar_42;\\\\n  float tmpvar_43;\\\\n  tmpvar_43 = (q10 * 0.7);\\\\n  tmpvar_42 = ((log(\\\\n    (1.0 + (tmpvar_40 / 24.0))\\\\n  ) * 0.02) * (1.0 - (1.0 - \\\\n    ((tmpvar_41.z + (0.003921569 * tmpvar_41.y)) + tmpvar_43)\\\\n  )));\\\\n  float tmpvar_44;\\\\n  vec4 tmpvar_45;\\\\n  tmpvar_45 = texture (sampler_pc_main, uv_3);\\\\n  tmpvar_44 = (1.0 - ((tmpvar_45.z + \\\\n    (0.003921569 * tmpvar_45.y)\\\\n  ) + tmpvar_43));\\\\n  if ((((tmpvar_25 <= tmpvar_44) && (tmpvar_40 < 24.0)) && (tmpvar_25 > 0.005))) {\\\\n    ret_4.x = (((1.0 - sustain) * xlat_mutablestruc) + (sustain * mix (texture (sampler_main, uv_3).xyz, \\\\n      ((texture (sampler_blur1, uv_3).xyz * scale1) + bias1)\\\\n    , vec3(\\\\n      (q14 * 4.0)\\\\n    )).x));\\\\n    float x_46;\\\\n    x_46 = ((1.0 - tmpvar_25) * 255.0);\\\\n    float ip_47;\\\\n    ip_47 = float(int(x_46));\\\\n    vec2 tmpvar_48;\\\\n    tmpvar_48.x = (x_46 - ip_47);\\\\n    tmpvar_48.y = (ip_47 / 255.0);\\\\n    ret_4.yz = tmpvar_48;\\\\n  } else {\\\\n    vec3 tmpvar_49;\\\\n    tmpvar_49.y = 0.0;\\\\n    tmpvar_49.x = sustain;\\\\n    tmpvar_49.z = (1.0 - tmpvar_42);\\\\n    vec3 tmpvar_50;\\\\n    tmpvar_50.xy = vec2(0.003921569, 0.0);\\\\n    tmpvar_50.z = (q14 / 6.0);\\\\n    ret_4 = ((texture (sampler_fc_main, uv_3).xyz * tmpvar_49) - tmpvar_50);\\\\n  };\\\\n  vec4 tmpvar_51;\\\\n  tmpvar_51.w = 1.0;\\\\n  tmpvar_51.xyz = ret_4;\\\\n  ret = tmpvar_51.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec3 tmpvar_1;\\\\n  tmpvar_1.x = q4;\\\\n  tmpvar_1.y = q5;\\\\n  tmpvar_1.z = q6;\\\\n  mat3 tmpvar_2;\\\\n  tmpvar_2[uint(0)].x = q20;\\\\n  tmpvar_2[uint(0)].y = q23;\\\\n  tmpvar_2[uint(0)].z = q26;\\\\n  tmpvar_2[1u].x = q21;\\\\n  tmpvar_2[1u].y = q24;\\\\n  tmpvar_2[1u].z = q27;\\\\n  tmpvar_2[2u].x = q22;\\\\n  tmpvar_2[2u].y = q25;\\\\n  tmpvar_2[2u].z = q28;\\\\n  vec2 tmpvar_3;\\\\n  tmpvar_3.x = q1;\\\\n  tmpvar_3.y = q2;\\\\n  vec2 uv_4;\\\\n  vec3 ret_5;\\\\n  uv_4 = (((uv - 0.5) * 0.9) + 0.5);\\\\n  vec3 tmpvar_6;\\\\n  tmpvar_6.xy = ((uv_4 - 0.5) * min ((1.0 - texture (sampler_main, uv_4).z), (1.0 - \\\\n    ((texture (sampler_blur2, uv_4).xyz * scale2) + bias2)\\\\n  .z)));\\\\n  tmpvar_6.z = min ((1.0 - texture (sampler_main, uv_4).z), (1.0 - (\\\\n    (texture (sampler_blur2, uv_4).xyz * scale2)\\\\n   + bias2).z));\\\\n  float tmpvar_7;\\\\n  tmpvar_7 = clamp ((abs(\\\\n    ((1.0 - ((texture (sampler_blur2, uv_4).xyz * scale2) + bias2).z) - clamp ((1.0 - (\\\\n      (texture (sampler_blur2, tmpvar_3).xyz * scale2)\\\\n     + bias2).z), 0.1, 0.4))\\\\n  ) + 0.2), 0.0, 1.0);\\\\n  float tmpvar_8;\\\\n  tmpvar_8 = clamp (((1.0 - \\\\n    exp(-(((texture (sampler_blur1, uv_4).xyz * scale1) + bias1).x))\\\\n  ) - 0.2), 0.0, 1.0);\\\\n  ret_5 = ((mix (texture (sampler_main, uv_4).xyz, \\\\n    ((texture (sampler_blur1, uv_4).xyz * scale1) + bias1)\\\\n  , vec3(tmpvar_7)).x * (0.2 + \\\\n    ((1.0 - tmpvar_7) * (1.0 - min ((1.0 - texture (sampler_main, uv_4).z), (1.0 - \\\\n      ((texture (sampler_blur2, uv_4).xyz * scale2) + bias2)\\\\n    .z))))\\\\n  )) * (1.0 + (0.5 * \\\\n    sin((((tmpvar_6 / q7) * tmpvar_2) + tmpvar_1))\\\\n  )));\\\\n  vec3 tmpvar_9;\\\\n  tmpvar_9.xy = vec2(0.0, 1.0);\\\\n  tmpvar_9.z = (tmpvar_8 * 3.0);\\\\n  ret_5 = (mix (ret_5, tmpvar_9, vec3(tmpvar_8)) + ((\\\\n    pow ((1.0 - mix (texture (sampler_main, uv_4).xyz, (\\\\n      (texture (sampler_blur1, uv_4).xyz * scale1)\\\\n     + bias1), vec3(0.8, 0.8, 0.8)).z), 3.0)\\\\n   * \\\\n    (0.5 + (0.5 * slow_roam_cos))\\\\n  ) * q19).xyz);\\\\n  ret_5 = (1.0 - exp((-2.0 * ret_5)));\\\\n  vec4 tmpvar_10;\\\\n  tmpvar_10.w = 1.0;\\\\n  tmpvar_10.xyz = ret_5;\\\\n  ret = tmpvar_10.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/martin - mucus cervix.json\":\n/*!******************************************************!*\\\n  !*** ./presets/converted/martin - mucus cervix.json ***!\n  \\******************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":0,\\\"gammaadj\\\":1.980001,\\\"decay\\\":0.5,\\\"echo_zoom\\\":0.999998,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":3,\\\"wave_mode\\\":7,\\\"additivewave\\\":1,\\\"wave_thick\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":0.958178,\\\"wave_smoothing\\\":0.45,\\\"modwavealphastart\\\":0,\\\"modwavealphaend\\\":1.32,\\\"warpanimspeed\\\":1.4595,\\\"warpscale\\\":2.0067,\\\"zoom\\\":0.9999,\\\"warp\\\":0.01,\\\"sx\\\":0.9999,\\\"ob_r\\\":0.3999,\\\"ob_a\\\":0.2,\\\"ib_size\\\":0,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":1.85,\\\"mv_r\\\":0.4999,\\\"mv_g\\\":0.4999,\\\"mv_b\\\":0.4999,\\\"mv_a\\\":0,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"rad\\\":0.048958,\\\"tex_ang\\\":1.00531,\\\"tex_zoom\\\":1.531168,\\\"r\\\":0.5,\\\"g\\\":1,\\\"b\\\":0.9,\\\"r2\\\":0.83,\\\"g2\\\":0.93,\\\"b2\\\":0.8,\\\"a2\\\":1,\\\"border_b\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\\ntrel = time/3;\\\\n\\\\nx = .5+sin(trel*2);\\\\ny = .5+cos(trel*1.3);\\\\n\\\\n\\\\n\\\\ncent = sqrt((x-.5)*(x-.5)+(y-.5)*(y-.5));\\\\n\\\\nrad = .1*cent;\\\\na = .8;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"additive\\\":1,\\\"x\\\":0.26,\\\"y\\\":0.2,\\\"rad\\\":0.393173,\\\"tex_zoom\\\":0.9355,\\\"r\\\":0,\\\"g\\\":0.55,\\\"b\\\":0.5,\\\"g2\\\":0.4,\\\"b2\\\":0.4,\\\"a2\\\":0.07,\\\"border_r\\\":0.3,\\\"border_g\\\":0.7,\\\"border_b\\\":0.8,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"trig = q24;\\\\n\\\\n\\\\nx0 = x0*bnot(trig) + trig*(.5+ rand(100)/200); \\\\ny0 = y0*bnot(trig) + trig*(.5+ rand(100)/200); \\\\n\\\\n\\\\nx0 = x0 + .1*q1*(3+q26)/fps;\\\\ny0 = y0 + .1*q2*(3+q26)/fps;\\\\n\\\\nx0 = x0 - int(x0);\\\\ny0 = y0 - int(y0);\\\\n\\\\ntex_ang = time;\\\\ntex_zoom = q1;\\\\nang = time/100*q2;\\\\nx = x0; y = y0;\\\\nrad0 = rad0*bnot(trig) + trig*(.04+rand(100)/1000);\\\\nrad = rad0;\\\\n\\\\n\\\\nr0 = bnot(trig)*r0 + trig * rand(10)/10;\\\\ng0 = bnot(trig)*g0 + trig * rand(10)/10;\\\\nb0 = bnot(trig)*b0 + trig * rand(10)/10;\\\\n\\\\nr = r0; b = b0; g = g0;\\\\nr2 = 0; b2 = 0; g2 = 0;\\\\na= 1; a2 = .3; \\\"},{\\\"baseVals\\\":{\\\"sides\\\":44,\\\"additive\\\":1,\\\"x\\\":0.503,\\\"rad\\\":0.038857,\\\"tex_zoom\\\":0.609857,\\\"g\\\":0.1,\\\"a\\\":0.9,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = rand(50)/50;\\\\ny = .5 - 0*rand(15)/200;\\\\n\\\\nr = .4;\\\\ng = .6;\\\\nb = 1;\\\\nr2 = r;\\\\ng2 = g;\\\\nb2 = b;\\\\n\\\\na = min(q21/2 ,.9);\\\\nrad = a * (.1+abs(x-.5))/2 ;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"rad\\\":0.01,\\\"tex_zoom\\\":0.499805,\\\"r\\\":0,\\\"g2\\\":0,\\\"border_r\\\":0.2,\\\"border_g\\\":0.7,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"rad = q2+.02\\\\n;\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"samples\\\":282,\\\"sep\\\":20,\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":3.915805,\\\"smoothing\\\":0.1,\\\"r\\\":0.2,\\\"g\\\":0.3,\\\"a\\\":0.6,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t1 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt2 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt3 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt4 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt5 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt6 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt7 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt8 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\n\\\",\\\"frame_eqs_eel\\\":\\\"t2 = t2 + bass_att;\\\",\\\"point_eqs_eel\\\":\\\"\\\\nx = sample;\\\\ny = value1 * rand(50)/100 * abs(sample-.5)+ .49;\\\\n\\\\na = q26/4 * (.2 + abs(sample-.5)); \\\"},{\\\"baseVals\\\":{\\\"usedots\\\":1,\\\"thick\\\":1,\\\"scaling\\\":0.891519,\\\"smoothing\\\":0.82,\\\"a\\\":0.1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"xi = rand(100)/100;\\\\nyi = rand(100)/100;\\\\n\\\\nx = xi; y = yi;\\\\n\\\\na = q21/15;\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"scaling\\\":0.891519,\\\"smoothing\\\":0.82,\\\"r\\\":0,\\\"g\\\":0.2,\\\"b\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t1 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt2 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt3 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt4 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt5 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt6 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt7 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt8 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\n\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"spectrum\\\":1,\\\"usedots\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"dec_med = pow (0.9, 30/fps);\\\\ndec_slow = pow (0.99, 30/fps);\\\\nbeat = max (max (bass, mid), treb); \\\\navg = avg*dec_slow + beat*(1-dec_slow);\\\\nis_beat = above(beat, .2+avg+peak) * above (time, t0+.2);\\\\nt0 = is_beat*time + (1-is_beat)*t0;\\\\npeak = is_beat * beat + (1-is_beat)*peak*dec_med;\\\\nindex = (index + is_beat) %8;\\\\nindex2 = (index2 + is_beat*bnot(index))%2;\\\\nindex3 = (index3 + is_beat*bnot(index)*bnot(index2))%3;\\\\n\\\\nmonitor = index4;\\\\n\\\\nq20 = avg;\\\\nq21 = beat;\\\\nq22 = peak;\\\\nq23 = index;\\\\nq24 = is_beat;\\\\nq26 = bass + mid + treb;\\\\nq11 = min(q22,3);\\\\n\\\\n//k1 =  is_beat*bnot(index)*bnot(index2);\\\\n\\\\nk1 =  is_beat*equal(index,0);\\\\np1 =  k1*(p1+1) + (1-k1)*p1;\\\\np2 = dec_med * p2+ (1-dec_med)*p1;\\\\nrott = p2 * 3.14159265359/2;\\\\n\\\\nq27 = 8-index;\\\\nq28 = index2;\\\\n\\\\nq1 = cos(rott);\\\\nq2 = sin(rott);\\\\nq3 = -q2;\\\\nq4 = q1;\\\\n\\\\nzoom = 1.0 + .02*q1;\\\\nrot = .01*q2;\\\\ndx = .0*index;\\\\n\\\\nwave_a = 0;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\"float xlat_mutabledx;\\\\nfloat xlat_mutabledy;\\\\nvec2 xlat_mutableuv2;\\\\nvec2 xlat_mutablezz;\\\\n shader_body { \\\\n  vec2 uv_1;\\\\n  vec3 crisp_2;\\\\n  vec2 tmpvar_3;\\\\n  tmpvar_3.y = 0.0;\\\\n  tmpvar_3.x = texsize.w;\\\\n  vec2 tmpvar_4;\\\\n  tmpvar_4.x = 0.0;\\\\n  tmpvar_4.y = texsize.z;\\\\n  xlat_mutablezz = ((uv * texsize.xy) * 0.01);\\\\n  vec2 tmpvar_5;\\\\n  tmpvar_5.x = (cos((xlat_mutablezz.y * q1)) * sin(-(xlat_mutablezz.y)));\\\\n  tmpvar_5.y = (sin(xlat_mutablezz.x) * cos((xlat_mutablezz.y * q2)));\\\\n  uv_1 = (uv - ((tmpvar_5 * texsize.zw) * (8.0 + \\\\n    (6.0 * q11)\\\\n  )));\\\\n  xlat_mutableuv2 = (((uv_1 / 2.0) * q27) / 4.0);\\\\n  xlat_mutabledx = dot ((texture (sampler_main, (xlat_mutableuv2 + tmpvar_3)).xyz - texture (sampler_main, (xlat_mutableuv2 - tmpvar_3)).xyz), vec3(0.32, 0.49, 0.29));\\\\n  xlat_mutabledy = dot ((texture (sampler_main, (xlat_mutableuv2 + tmpvar_4)).xyz - texture (sampler_main, (xlat_mutableuv2 - tmpvar_4)).xyz), vec3(0.32, 0.49, 0.29));\\\\n  float tmpvar_6;\\\\n  tmpvar_6 = (0.15 + (0.1 * q28));\\\\n  vec2 tmpvar_7;\\\\n  tmpvar_7 = (xlat_mutableuv2 + (time / 100.0));\\\\n  xlat_mutabledx = (xlat_mutabledx + (tmpvar_6 * (texture (sampler_noise_hq, tmpvar_7).x - 0.5)));\\\\n  xlat_mutabledy = (xlat_mutabledy + (tmpvar_6 * (texture (sampler_noise_hq, tmpvar_7).y - 0.5)));\\\\n  vec2 tmpvar_8;\\\\n  tmpvar_8.x = xlat_mutabledx;\\\\n  tmpvar_8.y = xlat_mutabledy;\\\\n  xlat_mutablezz = tmpvar_8;\\\\n  crisp_2 = (texture (sampler_main, (uv_1 + (tmpvar_8 * 0.04))).xyz + texture (sampler_main, uv_1).xyz);\\\\n  crisp_2 = (crisp_2 * 0.5);\\\\n  crisp_2 = (crisp_2 + ((0.05 * \\\\n    (0.9 + (0.1 * roam_cos))\\\\n  .xyz) - (\\\\n    sqrt(dot (tmpvar_8, tmpvar_8))\\\\n   * 0.3)));\\\\n  vec4 tmpvar_9;\\\\n  tmpvar_9.w = 1.0;\\\\n  tmpvar_9.xyz = ((crisp_2 * 0.97) - 0.015);\\\\n  ret = tmpvar_9.xyz;\\\\n }\\\",\\\"comp\\\":\\\"vec2 xlat_mutabledz;\\\\nvec3 xlat_mutableneu;\\\\nvec3 xlat_mutableret1;\\\\nvec2 xlat_mutableuv3;\\\\n shader_body { \\\\n  vec2 uv2_1;\\\\n  vec2 tmpvar_2;\\\\n  tmpvar_2.y = 0.0;\\\\n  tmpvar_2.x = texsize.z;\\\\n  vec2 tmpvar_3;\\\\n  tmpvar_3.x = 0.0;\\\\n  tmpvar_3.y = texsize.w;\\\\n  xlat_mutabledz.x = dot ((texture (sampler_main, (uv + tmpvar_2)).xyz - texture (sampler_main, (uv - tmpvar_2)).xyz), vec3(0.32, 0.49, 0.29));\\\\n  xlat_mutabledz.y = dot ((texture (sampler_main, (uv + tmpvar_3)).xyz - texture (sampler_main, (uv - tmpvar_3)).xyz), vec3(0.32, 0.49, 0.29));\\\\n  uv2_1 = (uv - 0.5);\\\\n  xlat_mutableuv3 = ((0.2 * uv2_1) + 0.5);\\\\n  float tmpvar_4;\\\\n  tmpvar_4 = (time / 2.0);\\\\n  xlat_mutableuv3 = ((0.2 * cos(\\\\n    ((42.0 * fract(xlat_mutableuv3)) + tmpvar_4)\\\\n  )) + (99.0 * xlat_mutabledz));\\\\n  float tmpvar_5;\\\\n  tmpvar_5 = clamp ((0.01 / sqrt(\\\\n    dot (xlat_mutableuv3, xlat_mutableuv3)\\\\n  )), 0.0, 1.0);\\\\n  xlat_mutableneu = ((0.1 * vec3(tmpvar_5)) + (0.9 * dot (vec3(tmpvar_5), vec3(0.32, 0.49, 0.29))));\\\\n  xlat_mutableret1 = max (vec3(0.0, 0.0, 0.0), (xlat_mutableneu * 1.252262));\\\\n  xlat_mutableuv3 = ((0.2 * uv2_1) + 0.5);\\\\n  xlat_mutableuv3 = ((0.2 * cos(\\\\n    ((42.0 * fract(xlat_mutableuv3)) + tmpvar_4)\\\\n  )) + (99.0 * xlat_mutabledz));\\\\n  float tmpvar_6;\\\\n  tmpvar_6 = clamp ((0.01 / sqrt(\\\\n    dot (xlat_mutableuv3, xlat_mutableuv3)\\\\n  )), 0.0, 1.0);\\\\n  xlat_mutableneu = ((0.1 * vec3(tmpvar_6)) + (0.9 * dot (vec3(tmpvar_6), vec3(0.32, 0.49, 0.29))));\\\\n  xlat_mutableret1 = max (xlat_mutableret1, (xlat_mutableneu * 1.252262));\\\\n  vec4 tmpvar_7;\\\\n  tmpvar_7.w = 1.0;\\\\n  tmpvar_7.xyz = (xlat_mutableret1 + clamp ((\\\\n    (16.0 * ((0.5 * texture (sampler_main, (uv + \\\\n      (0.1 * xlat_mutabledz)\\\\n    )).xyz) + 0.01))\\\\n   * \\\\n    (0.1 + xlat_mutableret1)\\\\n  ), 0.0, 1.0));\\\\n  ret = tmpvar_7.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/martin - reflections on black tiles.json\":\n/*!********************************************************************!*\\\n  !*** ./presets/converted/martin - reflections on black tiles.json ***!\n  \\********************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1.980001,\\\"decay\\\":0.5,\\\"echo_zoom\\\":0.999998,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":3,\\\"modwavealphabyvolume\\\":1,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":10.437056,\\\"wave_smoothing\\\":0.45,\\\"wave_mystery\\\":0.08,\\\"modwavealphastart\\\":0,\\\"modwavealphaend\\\":1.32,\\\"warpanimspeed\\\":1.4595,\\\"warpscale\\\":2.0067,\\\"zoom\\\":0.9999,\\\"warp\\\":0.01,\\\"sx\\\":0.9999,\\\"wave_r\\\":0,\\\"wave_g\\\":0.99,\\\"ob_size\\\":0,\\\"ob_r\\\":1,\\\"ob_g\\\":1,\\\"ob_b\\\":1,\\\"ib_size\\\":0,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":1.85,\\\"mv_r\\\":0.4999,\\\"mv_g\\\":0.4999,\\\"mv_b\\\":0.4999,\\\"mv_a\\\":0,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"rad\\\":0.048958,\\\"tex_ang\\\":1.00531,\\\"tex_zoom\\\":1.531168,\\\"r\\\":0.5,\\\"g\\\":1,\\\"b\\\":0.9,\\\"r2\\\":0.83,\\\"g2\\\":0.93,\\\"b2\\\":0.8,\\\"a2\\\":1,\\\"border_b\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\\ntrel = time/2+q20;\\\\n\\\\nx = .5+sin(trel*2);\\\\ny = .5+cos(trel*1.3 +q28/3);\\\\n\\\\na = q26/4+.2; \\\\n//a = 1;\\\"},{\\\"baseVals\\\":{\\\"thickoutline\\\":1,\\\"x\\\":0.4,\\\"rad\\\":2.366958,\\\"tex_ang\\\":3.455753,\\\"tex_zoom\\\":0.993053,\\\"r\\\":0.5,\\\"b\\\":1,\\\"a\\\":0.2,\\\"r2\\\":0.7,\\\"g2\\\":0.4,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"a2 =0;a = 0;\\\\na = q24/2;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"x\\\":0.503,\\\"rad\\\":0.038857,\\\"tex_zoom\\\":0.609857,\\\"g\\\":0.1,\\\"a\\\":0.9,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_b\\\":0.5,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = rand(10)/10;\\\\ny = rand(10)/10;\\\\n\\\\nr = rand(4)/3;\\\\ng = rand(4)/3;\\\\nb = rand(4)/3;\\\\n\\\\n\\\\nis_beat = above(time, t0+.03);\\\\nt0 = is_beat*time + (1-is_beat)*t0;\\\\n\\\\n \\\\na = min(q21/2 ,.9) * is_beat;\\\\nrad = a*a/3 ;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":63,\\\"textured\\\":1,\\\"y\\\":1,\\\"rad\\\":0.548217,\\\"tex_zoom\\\":0.499805,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sep\\\":120,\\\"additive\\\":1,\\\"scaling\\\":0.891519,\\\"smoothing\\\":0.82,\\\"a\\\":0.6},\\\"init_eqs_eel\\\":\\\"t1 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt2 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt3 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt4 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt5 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt6 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt7 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt8 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\n\\\",\\\"frame_eqs_eel\\\":\\\"t2 = t2 + bass_att;\\\",\\\"point_eqs_eel\\\":\\\"k1 = (sample*100)%8;\\\\nk2 = bnot (k1);\\\\nxi = value1*k2 + xi*(1-k2);\\\\nyi = value2*(1-k2) + yi*k2;\\\\n\\\\ndx = dx*.99 + xi;\\\\ndy = dy*.99 + yi;\\\\n\\\\nx = .5 + xi/2;\\\\ny = .5 + yi/2;\\\\n\\\\na = q22/8; \\\\na = min(a,.2);\\\"},{\\\"baseVals\\\":{\\\"usedots\\\":1,\\\"thick\\\":1,\\\"scaling\\\":0.891519,\\\"smoothing\\\":0.82,\\\"a\\\":0.1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t1 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt2 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt3 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt4 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt5 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt6 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt7 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt8 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\n\\\",\\\"frame_eqs_eel\\\":\\\"tm = time*.1;\\\\nt1 = t1*sin(tm*t4) + (1-t1)*sin(tm*t7);\\\\nt2 = t2*sin(tm*t5) + (1-t2)*sin(tm*t8);\\\\nt3 = t3*sin(tm*t6) + (1-t3)*sin(tm*1);\\\\n\\\\ntic = min(time - tin,1);\\\\ntin = time;\\\\n\\\\ntva = (tic*q1*.5);\\\\ntvb = (tic*q2*.5);\\\\ntvc = (tic*q3*.5);\\\\n\\\\nq1 = tva;\\\\nq2 = tvb;\\\\nq3 = tvc;\\\\n\\\\nsz = .5;\\\\nlen = q4;\\\\nt4 = len;\\\",\\\"point_eqs_eel\\\":\\\"xi = rand(100)/100;\\\\nyi = rand(100)/100;\\\\n\\\\nx = xi; y = yi;\\\\n\\\\na = q21/15;\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"scaling\\\":0.891519,\\\"smoothing\\\":0.82,\\\"r\\\":0,\\\"g\\\":0.2,\\\"b\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t1 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt2 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt3 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt4 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt5 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt6 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt7 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt8 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\n\\\",\\\"frame_eqs_eel\\\":\\\"tm = time*.1;\\\\nt1 = t1*sin(tm*t4) + (1-t1)*sin(tm*t7);\\\\nt2 = t2*sin(tm*t5) + (1-t2)*sin(tm*t8);\\\\nt3 = t3*sin(tm*t6) + (1-t3)*sin(tm*1);\\\\n\\\\ntic = min(time - tin,1);\\\\ntin = time;\\\\n\\\\ntva = (tic*q1*.5);\\\\ntvb = (tic*q2*.5);\\\\ntvc = (tic*q3*.5);\\\\n\\\\nq1 = tva;\\\\nq2 = tvb;\\\\nq3 = tvc;\\\\n\\\\nsz = .5;\\\\nlen = 1;\\\\nt4 = len;\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"spectrum\\\":1,\\\"usedots\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"fade = .5;\\\",\\\"frame_eqs_eel\\\":\\\"dec_med = pow (0.9, 30/fps);\\\\ndec_slow = pow (0.99, 30/fps);\\\\nbeat = max (max (bass, mid), treb); \\\\navg = avg*dec_slow + beat*(1-dec_slow);\\\\nis_beat = above(beat, .5+avg+peak) * above (time, t0+.2);\\\\nt0 = is_beat*time + (1-is_beat)*t0;\\\\npeak = is_beat * beat + (1-is_beat)*peak*dec_med;\\\\nindex = (index + is_beat) %8;\\\\n\\\\nq20 = avg;\\\\nq21 = beat;\\\\nq22 = peak;\\\\nq23 = index;\\\\nq24 = is_beat;\\\\nq26 = bass + mid + treb;\\\\n\\\\nk1 =  is_beat*equal(index,0);\\\\np1 =  k1*(p1+1) + (1-k1)*p1;\\\\np2 = dec_med * p2+ (1-dec_med)*p1;\\\\nrott = p2 * 3.14159265358/2;\\\\nq27 = index + 1;\\\\n\\\\nq1 = cos(rott);\\\\nq2 = sin(rott);\\\\nq3 = -q2;\\\\nq4 = q1;\\\\n\\\\nzoom = 1.0;\\\\nrot = -0.00 * index;\\\\n\\\\nfade = fade*dec_med + pow(0.996, 30/fps) * (1-dec_med);\\\\nq32 = fade;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec2 zz_1;\\\\n  mat2 tmpvar_2;\\\\n  tmpvar_2[uint(0)] = _qa.xy;\\\\n  tmpvar_2[1u] = _qa.zw;\\\\n  zz_1 = (((\\\\n    (uv - vec2(0.5, 0.5))\\\\n   * texsize.xy) * (0.015 * q27)) * tmpvar_2);\\\\n  vec4 tmpvar_3;\\\\n  tmpvar_3.w = 1.0;\\\\n  tmpvar_3.xyz = (((q32 * texture (sampler_main, \\\\n    (uv + ((clamp (\\\\n      (sin(zz_1) / cos(zz_1))\\\\n    , vec2(-20.0, -20.0), vec2(20.0, 20.0)) * texsize.zw) * 8.0))\\\\n  ).xyz) + (\\\\n    (0.03 * texture (sampler_noise_lq, ((uv * 0.3) + (0.01 * rand_frame).xy)))\\\\n  .xyz * \\\\n    (1.0 - ((texture (sampler_blur1, uv).xyz * scale1) + bias1))\\\\n  )) - 0.02);\\\\n  ret = tmpvar_3.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec4 tmpvar_1;\\\\n  tmpvar_1 = texture (sampler_main, uv);\\\\n  vec4 tmpvar_2;\\\\n  tmpvar_2.w = 1.0;\\\\n  tmpvar_2.xyz = ((tmpvar_1.xyz + clamp (\\\\n    (3.0 * (((texture (sampler_blur1, \\\\n      (uv - (0.01 * tmpvar_1.xyz).xy)\\\\n    ).xyz * scale1) + bias1) - vec3(0.1, 0.1, 0.2)))\\\\n  , 0.0, 1.0)) * 1.3);\\\\n  ret = tmpvar_2.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/martin - stormy sea (2010 update).json\":\n/*!******************************************************************!*\\\n  !*** ./presets/converted/martin - stormy sea (2010 update).json ***!\n  \\******************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":4,\\\"gammaadj\\\":1.98,\\\"decay\\\":0.5,\\\"echo_zoom\\\":0.952,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":3,\\\"wave_mode\\\":6,\\\"additivewave\\\":1,\\\"wave_thick\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":2.103,\\\"wave_smoothing\\\":0.54,\\\"wave_mystery\\\":0.38,\\\"modwavealphastart\\\":0.81,\\\"modwavealphaend\\\":1.4,\\\"warpanimspeed\\\":1.459,\\\"warpscale\\\":2.007,\\\"zoom\\\":0.9999,\\\"warp\\\":0.01,\\\"sx\\\":0.9999,\\\"wave_r\\\":0,\\\"wave_g\\\":0,\\\"wave_b\\\":0,\\\"ob_size\\\":0.015,\\\"ob_b\\\":1,\\\"ib_size\\\":0.26,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":1.85,\\\"mv_r\\\":0.5,\\\"mv_g\\\":0.5,\\\"mv_b\\\":0.5,\\\"mv_a\\\":0,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":16,\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"num_inst\\\":3,\\\"x\\\":0.73,\\\"rad\\\":0.29466,\\\"tex_zoom\\\":1.87511,\\\"r\\\":0.7,\\\"g\\\":0.7,\\\"b\\\":1,\\\"g2\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"trig = q25;\\\\na = trig*.8; a2 = 0;\\\\n\\\\nx0 = x0 *bnot(trig) + trig*rand(100)/100;\\\\ny0 = y0 *bnot(trig) + trig*rand(100)/100;\\\\ntex_ang = rand(20);\\\\nrad = .1+rand(10)/8;\\\\n\\\\nx = x0; y = y0;\\\\nr = .7+.3*sin(time/12);\\\\nb = .7+.3*sin(time/15);\\\\ng = .7+.3*sin(time/8);\\\\nr2 = r; b2 = b; g2 = g;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":36,\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"num_inst\\\":4,\\\"x\\\":0.3,\\\"rad\\\":0.05429,\\\"ang\\\":1.25664,\\\"tex_ang\\\":0.37699,\\\"tex_zoom\\\":1.02841,\\\"g\\\":0.7,\\\"b\\\":0.5,\\\"r2\\\":1,\\\"g2\\\":0,\\\"border_g\\\":0.59,\\\"border_b\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = q31; y = q32;\\\\nrad = .06;\\\\ntex_ang = time;\\\\na = q30;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":63,\\\"x\\\":0.123,\\\"y\\\":0,\\\"rad\\\":0.27319,\\\"tex_zoom\\\":0.49981,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":24,\\\"textured\\\":1,\\\"x\\\":0.7,\\\"y\\\":0.51,\\\"rad\\\":0.19869,\\\"tex_ang\\\":1.00531,\\\"tex_zoom\\\":0.49981,\\\"g\\\":1,\\\"b\\\":0.99,\\\"a\\\":0,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_r\\\":0,\\\"border_g\\\":0.5,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":0.04505,\\\"smoothing\\\":0,\\\"a\\\":0.1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"samples\\\":100,\\\"usedots\\\":1,\\\"thick\\\":1,\\\"scaling\\\":0.89152,\\\"smoothing\\\":0,\\\"a\\\":0.1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"scaling\\\":0.89152,\\\"smoothing\\\":0.82,\\\"a\\\":0.1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"spectrum\\\":1,\\\"usedots\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"t0a = time; t0 = time+.5;\\\\nspb_ = .5; ;\\\\nvolb = .5; volx = .5;\\\\nvol_= 1; index = 0; mov1 = 0;\\\\nsdev = .1; wamp_ = .1;\\\",\\\"frame_eqs_eel\\\":\\\"dec_med = pow (0.8, 30/fps); dec_slow = pow (0.95, 30/fps);\\\\nvol = (bass+med+treb)/1.5; vol_ = vol_*dec_slow + (1-dec_slow)*vol;\\\\n\\\\nis_beat = above(vol, vol_+2*peak) * above (time, t0+spb_*.45);\\\\nt0a  = if(is_beat,t0,t0a); t0 = if(is_beat,time,t0);\\\\npeak = if(is_beat,vol,peak*dec_med);\\\\nindex = (index + is_beat) %128;\\\\n\\\\nspb = min(t0-t0a + .01,2);\\\\nspb_ = if(is_beat,spb_ *.9 +.1*spb, spb_);\\\\n\\\\n\\\\nq20 = vol_;\\\\nq21 = above(vol,2.7*vol_);\\\\nq22 = max(0,peak-.0)+.01;\\\\nhpeak = hpeak*dec_med + (1-dec_med)*q21;\\\\nq23 = hpeak * (1+rand(8));\\\\nq24 = is_beat;\\\\nq25 = q22*(1+rand(8))/8;\\\\n\\\\nmindev = min(min(abs(spb-spb_),abs(spb*2-spb_)),abs(spb-spb_*2));\\\\nsdev = if(is_beat,sdev * .8 + .2*pow(mindev+.02,2),sdev);\\\\n\\\\nspeed = 1/fps/spb_;\\\\ntrel = trel + speed;\\\\nq10 = trel;\\\\n\\\\nwamp =  min(.001/sdev,.15);\\\\nwamp_ = wamp_*dec_slow + (1-dec_slow)*wamp;\\\\nq11 = sin(trel/2)*wamp_;\\\\nq12 = wamp_/2;\\\\n\\\\nrota = 2*wamp_*sin(trel/3);\\\\n//rota = .2*sin(wamp_*32);\\\\nq5 = cos(rota);\\\\nq6 = sin(rota);\\\\nq7 = -q6;\\\\nq8 = q5;\\\\n\\\\nq15 = -sin(trel*.5)*.05;\\\\nq16 = cos(trel)*wamp_/2;\\\\n\\\\nq19 = .1*sin(trel/12);\\\\n\\\\n//ODD PLANET MOVEMENT\\\\ntrig1 = bnot(vis)*bnot(rand(100*fps));\\\\nvis = if (trig1,1,vis*below(mov1,1));\\\\nq30 = vis;\\\\nmov1 = if (vis,mov1+2*speed/fps,-1);\\\\ndir = if(trig1,rand(100),dir); \\\\nq31 = .5+.5*cos(dir)*mov1;\\\\nq32 = .5+.5*sin(dir)*mov1;\\\\n\\\\nq29 = (2+sin(time/17)); //reflection water\\\\n\\\\nmonitor = wamp;\\\",\\\"pixel_eqs_eel\\\":\\\"zoom = 1+.02*rad*q20;\\\\ndy = -.00;\\\\nwarp =.1; dx = .0;\\\",\\\"warp\\\":\\\"mat2 ofs;\\\\nvec2 xlat_mutableuv2;\\\\nfloat xlat_mutablezv;\\\\n shader_body { \\\\n  mat2 tmpvar_1;\\\\n  tmpvar_1[uint(0)].x = texsize.z;\\\\n  tmpvar_1[uint(0)].y = 0.0;\\\\n  tmpvar_1[1u].x = 0.0;\\\\n  tmpvar_1[1u].y = texsize.w;\\\\n  ofs = (tmpvar_1 * 4.0);\\\\n  vec2 tmpvar_2;\\\\n  tmpvar_2.x = ((uv.x - 0.5) + q19);\\\\n  tmpvar_2.y = (uv.y - 0.5);\\\\n  vec2 v_3;\\\\n  v_3.x = ofs[0].x;\\\\n  v_3.y = ofs[1].x;\\\\n  vec2 v_4;\\\\n  v_4.x = ofs[0].x;\\\\n  v_4.y = ofs[1].x;\\\\n  vec2 v_5;\\\\n  v_5.x = ofs[0].y;\\\\n  v_5.y = ofs[1].y;\\\\n  vec2 v_6;\\\\n  v_6.x = ofs[0].y;\\\\n  v_6.y = ofs[1].y;\\\\n  vec2 tmpvar_7;\\\\n  tmpvar_7.x = (texture (sampler_main, (uv + v_3)) - texture (sampler_main, (uv - v_4))).z;\\\\n  tmpvar_7.y = (texture (sampler_main, (uv + v_5)) - texture (sampler_main, (uv - v_6))).z;\\\\n  xlat_mutablezv = (time * 0.08);\\\\n  vec2 tmpvar_8;\\\\n  tmpvar_8.x = (0.02 * time);\\\\n  tmpvar_8.y = (-0.05 * time);\\\\n  xlat_mutableuv2 = ((3.0 * tmpvar_2) + tmpvar_8);\\\\n  vec3 tmpvar_9;\\\\n  tmpvar_9.xy = xlat_mutableuv2;\\\\n  tmpvar_9.z = xlat_mutablezv;\\\\n  vec3 tmpvar_10;\\\\n  tmpvar_10.xy = (xlat_mutableuv2 * vec2(2.0, 2.0));\\\\n  tmpvar_10.z = (xlat_mutablezv * 2.0);\\\\n  vec3 tmpvar_11;\\\\n  tmpvar_11.xy = (xlat_mutableuv2 * vec2(4.0, 4.0));\\\\n  tmpvar_11.z = (xlat_mutablezv * 3.0);\\\\n  vec3 tmpvar_12;\\\\n  tmpvar_12.xy = (xlat_mutableuv2 * vec2(8.0, 8.0));\\\\n  tmpvar_12.z = (xlat_mutablezv * 7.0);\\\\n  xlat_mutableuv2 = (tmpvar_2 + ((\\\\n    (((texture (sampler_noisevol_hq, tmpvar_9).z + (texture (sampler_noisevol_hq, tmpvar_10).z / 2.0)) + (texture (sampler_noisevol_hq, tmpvar_11).z / 4.0)) + (texture (sampler_noisevol_hq, tmpvar_12).z / 8.0))\\\\n   - 1.0) * 0.1));\\\\n  vec4 tmpvar_13;\\\\n  tmpvar_13.w = 1.0;\\\\n  tmpvar_13.xyz = (((\\\\n    (((0.2 + (\\\\n      (((1.0 + bass_att) * 0.01) / sqrt(dot (xlat_mutableuv2, xlat_mutableuv2)))\\\\n     * \\\\n      (1.0 + normalize(slow_roam_cos))\\\\n    .xyz)) + ((rand_preset.z - 0.5) * xlat_mutableuv2.y)) * 0.1)\\\\n   / 2.0) + (texture (sampler_main, \\\\n    (uv - (0.02 * tmpvar_7))\\\\n  ).xyz * 0.9)) - 0.01);\\\\n  ret = tmpvar_13.xyz;\\\\n }\\\",\\\"comp\\\":\\\"float xlat_mutablerain;\\\\nvec3 xlat_mutableret1;\\\\nvec2 xlat_mutablers;\\\\nvec2 xlat_mutablers0;\\\\nvec2 xlat_mutableuv1;\\\\nfloat xlat_mutablewater;\\\\nfloat xlat_mutablez;\\\\n shader_body { \\\\n  vec2 uv_1;\\\\n  mat2 tmpvar_2;\\\\n  tmpvar_2[uint(0)] = _qb.xy;\\\\n  tmpvar_2[1u] = _qb.zw;\\\\n  vec2 tmpvar_3;\\\\n  tmpvar_3.x = q15;\\\\n  tmpvar_3.y = q16;\\\\n  uv_1 = (((\\\\n    (((uv - 0.5) * tmpvar_2) * 0.7)\\\\n   * aspect.xy) + 0.5) + tmpvar_3);\\\\n  vec2 tmpvar_4;\\\\n  tmpvar_4.x = 0.5;\\\\n  tmpvar_4.y = ((q11 + 0.6) + (q12 * (\\\\n    sin(((uv_1.x * 6.0) + q10))\\\\n   * \\\\n    cos(((uv_1.y * 8.0) + (time * 0.6)))\\\\n  )));\\\\n  vec2 tmpvar_5;\\\\n  tmpvar_5.x = (uv_1.x * 4.0);\\\\n  tmpvar_5.y = uv_1.y;\\\\n  vec2 tmpvar_6;\\\\n  tmpvar_6.x = (uv_1.x * 4.0);\\\\n  tmpvar_6.y = uv_1.y;\\\\n  xlat_mutablerain = (texture (sampler_noise_lq, ((tmpvar_5 * 0.2) - time)).x + texture (sampler_noise_lq, ((tmpvar_6 * 0.5) - time)).x);\\\\n  float tmpvar_7;\\\\n  tmpvar_7 = (time / 4.0);\\\\n  xlat_mutablerain = (xlat_mutablerain * clamp ((\\\\n    (q20 / 2.0)\\\\n   - \\\\n    abs(sin(((uv.x / 4.0) - tmpvar_7)))\\\\n  ), 0.0, 1.0));\\\\n  xlat_mutableuv1 = ((uv_1 - tmpvar_4) + (xlat_mutablerain * 0.01));\\\\n  vec3 tmpvar_8;\\\\n  tmpvar_8.x = xlat_mutableuv1.y;\\\\n  tmpvar_8.y = (xlat_mutableuv1.x * 2.0);\\\\n  tmpvar_8.z = (time * 0.2);\\\\n  xlat_mutableuv1 = (xlat_mutableuv1 + ((texture (sampler_noisevol_hq, tmpvar_8) * \\\\n    (0.5 - abs(xlat_mutableuv1.y))\\\\n  ).x * 0.05));\\\\n  float tmpvar_9;\\\\n  tmpvar_9 = clamp ((128.0 * xlat_mutableuv1.y), 0.0, 1.0);\\\\n  xlat_mutablez = (0.4 / xlat_mutableuv1.y);\\\\n  xlat_mutablers0.x = (xlat_mutableuv1.x * xlat_mutablez);\\\\n  xlat_mutablers0.y = xlat_mutablez;\\\\n  vec2 tmpvar_10;\\\\n  tmpvar_10.x = (xlat_mutablers0.x + tmpvar_7);\\\\n  tmpvar_10.y = (xlat_mutablez + (time * 4.0));\\\\n  xlat_mutablers = (tmpvar_10 * tmpvar_9);\\\\n  xlat_mutablewater = (texture (sampler_noise_hq, xlat_mutablers) + texture (sampler_noise_hq, ((xlat_mutablers / 4.0) - (time / 8.0)))).x;\\\\n  xlat_mutablewater = (xlat_mutablewater - 1.0);\\\\n  vec2 tmpvar_11;\\\\n  tmpvar_11.x = (xlat_mutableuv1.x + 0.5);\\\\n  tmpvar_11.y = abs((0.5 - xlat_mutableuv1.y));\\\\n  xlat_mutableret1 = (((texture (sampler_main, uv_1).xyz * \\\\n    (1.0 - tmpvar_9)\\\\n  ) + (\\\\n    ((texture (sampler_main, (tmpvar_11 - (0.2 * xlat_mutablewater))).xyz * tmpvar_9) * pow ((1.0/(xlat_mutablez)), 0.2))\\\\n   * \\\\n    (2.0 - rand_preset.y)\\\\n  )) + ((\\\\n    (((0.25 + rand_preset.y) * (1.0 + (rand_preset.x * xlat_mutablewater))) * tmpvar_9)\\\\n   / xlat_mutablez) * vec3(0.0, 0.1, 0.1)));\\\\n  xlat_mutableret1 = (xlat_mutableret1 + (0.06 * xlat_mutablerain));\\\\n  vec4 tmpvar_12;\\\\n  tmpvar_12.w = 1.0;\\\\n  tmpvar_12.xyz = (1.0 - exp((\\\\n    (-(pow (xlat_mutableret1, vec3(1.5, 1.5, 1.5))) * 8.0)\\\\n   * \\\\n    (1.0 + (q23 * 4.0))\\\\n  )));\\\\n  ret = tmpvar_12.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/martin - witchcraft reloaded.json\":\n/*!*************************************************************!*\\\n  !*** ./presets/converted/martin - witchcraft reloaded.json ***!\n  \\*************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":3,\\\"gammaadj\\\":1.98,\\\"decay\\\":0.5,\\\"echo_zoom\\\":1,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":3,\\\"wave_mode\\\":6,\\\"wave_thick\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":0.527,\\\"wave_smoothing\\\":0.09,\\\"modwavealphastart\\\":0,\\\"modwavealphaend\\\":1.32,\\\"warpanimspeed\\\":1.459,\\\"warpscale\\\":2.007,\\\"zoom\\\":0.9999,\\\"warp\\\":0.01,\\\"sx\\\":0.9999,\\\"wave_r\\\":0.8,\\\"wave_g\\\":0.49,\\\"ob_a\\\":1,\\\"ib_size\\\":0.26,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":1.85,\\\"mv_r\\\":0.5,\\\"mv_g\\\":0.5,\\\"mv_b\\\":0.5,\\\"mv_a\\\":0,\\\"b2x\\\":0.7,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":12,\\\"num_inst\\\":1024,\\\"rad\\\":0.03632,\\\"tex_ang\\\":1.00531,\\\"tex_zoom\\\":1.53117,\\\"b\\\":1,\\\"a\\\":0,\\\"g2\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"fov = reg03;\\\\nn = instance*reg00;\\\\n\\\\n\\\\nx0 = gmegabuf(n);\\\\ny0 = gmegabuf(n+1);\\\\nz0 = gmegabuf(n+2)+reg02;\\\\n\\\\nx = x0/z0*fov + 0.5;\\\\ny = y0/z0*q32*fov + 0.5;\\\\n\\\\n\\\\n//k1 = reg01+t1;\\\\nr = gmegabuf(n+3);\\\\ng = gmegabuf(n+4);\\\\nb = gmegabuf(n+5);\\\\nr2 = r/2; g2 = g/2; b2 = b2/2;\\\\n\\\\na = instance/1024; a2 = a*.5;\\\\nrad = min(0.02/z0,.5) * (z0 > 0)*2.5*sqrt(a);\\\\nrad *= gmegabuf(n+6);\\\\n\\\\nt1 -= 1;\\\\n\\\"},{\\\"baseVals\\\":{\\\"num_inst\\\":128,\\\"x\\\":0.26,\\\"y\\\":0.2,\\\"rad\\\":0.39317,\\\"tex_zoom\\\":0.9355,\\\"g\\\":1,\\\"b\\\":0.6,\\\"g2\\\":0,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":13,\\\"additive\\\":1,\\\"num_inst\\\":5,\\\"x\\\":0.65,\\\"y\\\":0.38,\\\"rad\\\":0.57049,\\\"tex_zoom\\\":0.73678,\\\"a\\\":0.7,\\\"g2\\\":0,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_b\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":14,\\\"additive\\\":1,\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"x\\\":0.6,\\\"y\\\":0.55,\\\"rad\\\":0.97237,\\\"ang\\\":1.25664,\\\"tex_zoom\\\":0.34933,\\\"g\\\":0.6,\\\"g2\\\":0,\\\"b2\\\":1,\\\"border_r\\\":0.2,\\\"border_g\\\":0.7,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"scaling\\\":2.15542,\\\"smoothing\\\":0.2,\\\"r\\\":0,\\\"a\\\":0.7},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"t1 = 1023;\\\\nt2 = 0;\\\",\\\"point_eqs_eel\\\":\\\"fov = reg03;\\\\nn = t1 * reg00;\\\\n\\\\n\\\\nx0 = gmegabuf(n);\\\\ny0 = gmegabuf(n+1);\\\\nz0 = gmegabuf(n+2)+reg02;\\\\n\\\\nx = x0/z0*fov + 0.5;\\\\ny = y0/z0*fov + 0.5;\\\\n\\\\n\\\\na= max(0,t1/1024);\\\\n\\\\nk1 = reg01+t1;\\\\nr = gmegabuf(n+3);\\\\ng = gmegabuf(n+4);\\\\nb = gmegabuf(n+5);\\\\n\\\\n\\\\na = t1/1024 * (z0 >= 0.5)/2;\\\\n\\\\nt1 -= 1;\\\\ngmegabuf (10000 +t2) = abs(value1+value2);\\\\nt2 += 1;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"scaling\\\":0.89152,\\\"smoothing\\\":0.82,\\\"r\\\":0,\\\"a\\\":0.1},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"t1 = 512;\\\",\\\"point_eqs_eel\\\":\\\"fov = reg03;\\\\nn = t1 * reg00;\\\\n\\\\n\\\\nx0 = gmegabuf(n);\\\\ny0 = gmegabuf(n+1);\\\\nz0 = gmegabuf(n+2)+reg02;\\\\n\\\\nx = x0/z0*fov + 0.5;\\\\ny = y0/z0*fov + 0.5;\\\\n\\\\nr = gmegabuf(n+3);\\\\ng = gmegabuf(n+4);\\\\nb = gmegabuf(n+5);\\\\n\\\\na= t1/1024* (z0 >= 0.5)/2;\\\\nt1 -= 1;\\\\n\\\"},{\\\"baseVals\\\":{\\\"samples\\\":32,\\\"scaling\\\":0.89152,\\\"smoothing\\\":0.82,\\\"r\\\":0,\\\"g\\\":0.2,\\\"b\\\":0.6,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"spectrum\\\":1,\\\"usedots\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"index = 0;\\\\nloop (100000,\\\\n  megabuf(index) = 0;\\\\n  gmegabuf(index) = 0;\\\\n  index = index + 1;\\\\n);\\\\n\\\\nrecsize = 8;\\\\nreg00 = recsize;\\\\n\\\\npoints = 512*2;\\\\n\\\\nreg01 = 0; //benoetigt fuer \\\\\\\"new\\\\\\\"\\\\nzofs = 1 + rand(100)/100*2; reg02 = zofs;\\\\n\\\\nfov = .3; reg03 = fov;\\\",\\\"frame_eqs_eel\\\":\\\"dec_f = pow (0.3, 30/fps);\\\\ndec_m = pow (0.85, 30/fps);\\\\ndec_s = pow (0.95, 30/fps);\\\\nbeat = (bass + mid+ treb)-(bass_att + mid_att+ treb_att) + (bass+mid+treb);\\\\nbeat /= 3;\\\\n\\\\npeak = peak*dec_m + (1-dec_m)*pow(beat-1,1)*(beat>1)*4;\\\\nis_beat = above(beat, 1) * above (time, t0+.2);\\\\nt0 = is_beat*time + (1-is_beat)*t0;\\\\nindex = (index + is_beat) %8;\\\\nindex2 = (index2 + is_beat*bnot(index)) %8;\\\\n\\\\nif (is_beat,\\\\n  ran1 = rand(100)/50-1;\\\\n  ran2 = rand(100)/50-1;\\\\n  ran3 = rand(100)/50-1;\\\\n,0);\\\\nran1_ = dec_m * ran1_ + (1-dec_m) * ran1;\\\\nran2_ = dec_m * ran2_ + (1-dec_m) * ran2;\\\\nran3_ = dec_m * ran3_ + (1-dec_m) * ran3;\\\\nrsum = sqrt(ran1_*ran1_ + ran2_*ran2_ + ran3_*ran3_);\\\\n\\\\nif (is_beat * (index==2),\\\\n  ran4 = (rand(100)/50-1);\\\\n  ran5 = (rand(100)/50-1);\\\\n  ran6 = (rand(100)/50-1);\\\\n,0;);\\\\nran4_ = dec_m * ran4_ + (1-dec_m) * ran4;\\\\nran5_ = dec_m * ran5_ + (1-dec_m) * ran5;\\\\nran6_ = dec_m * ran6_ + (1-dec_m) * ran6;\\\\n\\\\nif (is_beat * (index==6),\\\\n  ran7 = (rand(100)/50-1) ;\\\\n  ran8 = (rand(100)/50-1) ;\\\\n  ran9 = (rand(100)/50-1) ;\\\\n,0;);\\\\nran7_ = dec_m * ran7_ + (1-dec_m) * ran7;\\\\nran8_ = dec_m * ran8_ + (1-dec_m) * ran8;\\\\nran9_ = dec_m * ran9_ + (1-dec_m) * ran9;\\\\n\\\\n\\\\n//Neue Punkte #####################\\\\npk = sqrt(peak+.1);\\\\nNew = int(12*(ran4-ran5)*pk-12*(ran3-ran1)/pk); //##spielen\\\\nnew = max(min (new,20),2);\\\\nreg01 += new;\\\\n\\\\ndec = dec_m;\\\\n\\\\n//Neue Punkte oberhalb des Arrays\\\\nn = recsize*points; m = 0;\\\\ndt1 = (if (ran1>0,4*pk,4/pk))/fps*new/6;\\\\nvol = max(ran1+ran2,.2)*pk*2;\\\\nloop (new,\\\\n  trel1 = trel1 + dt1;\\\\n  x0 = x0 * dec + (1-dec)* (sin(trel1+ran3*6)*vol    +ran1);\\\\n  y0 = y0 * dec + (1-dec)* (sin(trel1+ran2*6)*vol    +ran2);\\\\n  z0 = z0 * dec + (1-dec)* (sin(trel1+ran1*6)*vol +ran3);\\\\n\\\\n  gmegabuf(n)   = x0;\\\\n  gmegabuf(n+1) = y0;\\\\n  gmegabuf(n+2) = z0;\\\\n//Farben\\\\n  gmegabuf(n+3) = ran1_/rsum/3+.5;\\\\n  gmegabuf(n+4) = ran2_/rsum/3+.5;\\\\n  gmegabuf(n+5) = ran3_/rsum/3+.5;\\\\n//Groesse\\\\n  gmegabuf(n+6) = gmegabuf(10000+m)*0+1;;\\\\n  n += recsize; m+=1;);\\\\n\\\\n//Nach unten um \\\\\\\"new\\\\\\\" points umkopieren\\\\nn = 0;\\\\nloop (recsize*points,\\\\n  gmegabuf (n) = gmegabuf(n+new*recsize) ;\\\\n  n += 1;);\\\\n\\\\nxang = ran4_/fps;\\\\nyang = ran5_/fps;\\\\nzang = ran6_/fps;\\\\nddx = min(max(ddx+yang/fps,-1),1);\\\\nddy = min(max(ddy+xang/fps,-1),1);\\\\nq1 = ddx*2;\\\\nq2 = ddy*2;\\\\n//Rotieren\\\\nn = 0;\\\\nloop (points,\\\\n  ox = gmegabuf (n);\\\\n  oy = gmegabuf (n+1);\\\\n  oz = gmegabuf (n+2);\\\\n  mx = ox*cos(zang) - oy*sin(zang);\\\\n  my = ox*sin(zang) + oy*cos(zang);\\\\n  ox = mx;  oy = my;\\\\n  mx = ox*cos(yang) + oz*sin(yang);\\\\n  mz = -ox*sin(yang) + oz*cos(yang);\\\\n  ox = mx;  oz = mz;\\\\n  my = oy*cos(xang) - oz*sin(xang);\\\\n  mz = oy*sin(xang) + oz*cos(xang);\\\\n  oy = my;  oz = mz;\\\\n  gmegabuf (n) = ox;\\\\n  gmegabuf (n+1) = oy;\\\\n  gmegabuf (n+2) = oz;\\\\nn += recsize;);\\\\n\\\\n\\\\n//SPIEL\\\\nk1 = ran7_/fps/2;\\\\nk2 = ran8_/fps/2;\\\\nk3 = abs(ran9_)/fps;\\\\n\\\\ndec = .4 + .6*ran5_; dec2 = (1-dec);\\\\nr1 = .5+.3*ran4_;\\\\nn = 0;\\\\nloop (points-1,\\\\n  m = n*recsize;\\\\n  left  =  ((n-1+points)%points) * recsize;\\\\n  right =  ((n+1+points)%points) * recsize;\\\\n  gmegabuf (m) =   dec*gmegabuf(m)   + dec2*(gmegabuf(left)*r1   +gmegabuf(right)*(1-r1) + k1) ;\\\\n  gmegabuf (m+1) = dec*gmegabuf(m+1) + dec2*(gmegabuf(left+1)*r1 +gmegabuf(right+1)*(1-r1) + k2) ;\\\\n//  gmegabuf (m+2) = dec*gmegabuf(m+2) + dec2*(gmegabuf(left+2)*r1 +gmegabuf(right+2)*(1-r1) + k3) ;\\\\n  n += 1;\\\\n);\\\\n\\\\n\\\\nm = (frame%points);\\\\nm = max(0,int(1024 + (t0-time)*200));\\\\nn = m * recsize;\\\\nq5 = gmegabuf(n)/(gmegabuf(n+2)+zofs)*fov;\\\\nq6 = -gmegabuf(n+1)/(gmegabuf(n+2)+zofs)*fov;\\\\n\\\\nq10=  sqrt(gmegabuf (n+3));\\\\nq11=  sqrt(gmegabuf(n+4));\\\\nq12=  sqrt(gmegabuf (n+5));\\\\n\\\\n\\\\nmonitor =   m;\\\\n\\\\nq32 = aspecty;\\\",\\\"pixel_eqs_eel\\\":\\\"rot = 0; zoom = 1; warp = 0; dy = .00; dx = -.00;\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec4 tmpvar_1;\\\\n  tmpvar_1.w = 1.0;\\\\n  tmpvar_1.xyz = vec3(0.0, 0.0, 0.0);\\\\n  ret = tmpvar_1.xyz;\\\\n }\\\",\\\"comp\\\":\\\"float xlat_mutablesmask;\\\\nvec2 xlat_mutableuv1;\\\\nvec2 xlat_mutableuv2;\\\\nvec2 xlat_mutableuv3;\\\\nvec2 xlat_mutableuv4;\\\\n shader_body { \\\\n  float flash_1;\\\\n  float dist_2;\\\\n  float stars_3;\\\\n  vec3 ret_4;\\\\n  xlat_mutableuv1 = ((uv - 0.5) * aspect.xy);\\\\n  float tmpvar_5;\\\\n  tmpvar_5 = (0.1 * time);\\\\n  float tmpvar_6;\\\\n  tmpvar_6 = (0.2 * rad);\\\\n  dist_2 = ((1.0 - fract(\\\\n    (0.3333333 + tmpvar_5)\\\\n  )) * (1.0 - tmpvar_6));\\\\n  vec2 tmpvar_7;\\\\n  tmpvar_7.x = q1;\\\\n  tmpvar_7.y = q2;\\\\n  xlat_mutableuv3 = (xlat_mutableuv1 + tmpvar_7);\\\\n  xlat_mutableuv4 = ((32.0 * dist_2) * xlat_mutableuv3);\\\\n  xlat_mutablesmask = (texture (sampler_pw_noise_lq, (xlat_mutableuv4 / 256.0)).y - 0.9);\\\\n  vec2 tmpvar_8;\\\\n  tmpvar_8 = abs((fract(xlat_mutableuv4) - 0.5));\\\\n  stars_3 = max (0.0, clamp ((\\\\n    (1.0 - dist_2)\\\\n   * \\\\n    ((0.1 / sqrt(dot (tmpvar_8, tmpvar_8))) * xlat_mutablesmask)\\\\n  ), 0.0, 1.0));\\\\n  dist_2 = ((1.0 - fract(\\\\n    (0.6666667 + tmpvar_5)\\\\n  )) * (1.0 - tmpvar_6));\\\\n  vec2 tmpvar_9;\\\\n  tmpvar_9.x = q1;\\\\n  tmpvar_9.y = q2;\\\\n  xlat_mutableuv3 = (xlat_mutableuv1 + tmpvar_9);\\\\n  xlat_mutableuv4 = ((32.0 * dist_2) * xlat_mutableuv3);\\\\n  xlat_mutablesmask = (texture (sampler_pw_noise_lq, (xlat_mutableuv4 / 256.0)).y - 0.9);\\\\n  vec2 tmpvar_10;\\\\n  tmpvar_10 = abs((fract(xlat_mutableuv4) - 0.5));\\\\n  stars_3 = (stars_3 + max (stars_3, clamp (\\\\n    ((1.0 - dist_2) * ((0.1 / sqrt(\\\\n      dot (tmpvar_10, tmpvar_10)\\\\n    )) * xlat_mutablesmask))\\\\n  , 0.0, 1.0)));\\\\n  dist_2 = ((1.0 - fract(\\\\n    (1.0 + tmpvar_5)\\\\n  )) * (1.0 - tmpvar_6));\\\\n  vec2 tmpvar_11;\\\\n  tmpvar_11.x = q1;\\\\n  tmpvar_11.y = q2;\\\\n  xlat_mutableuv3 = (xlat_mutableuv1 + tmpvar_11);\\\\n  xlat_mutableuv4 = ((32.0 * dist_2) * xlat_mutableuv3);\\\\n  xlat_mutablesmask = (texture (sampler_pw_noise_lq, (xlat_mutableuv4 / 256.0)).y - 0.9);\\\\n  vec2 tmpvar_12;\\\\n  tmpvar_12 = abs((fract(xlat_mutableuv4) - 0.5));\\\\n  stars_3 = (stars_3 + max (stars_3, clamp (\\\\n    ((1.0 - dist_2) * ((0.1 / sqrt(\\\\n      dot (tmpvar_12, tmpvar_12)\\\\n    )) * xlat_mutablesmask))\\\\n  , 0.0, 1.0)));\\\\n  vec2 tmpvar_13;\\\\n  tmpvar_13.x = q5;\\\\n  tmpvar_13.y = q6;\\\\n  xlat_mutableuv2 = (xlat_mutableuv1 - tmpvar_13);\\\\n  float tmpvar_14;\\\\n  tmpvar_14 = ((0.01 / sqrt(\\\\n    dot (xlat_mutableuv2, xlat_mutableuv2)\\\\n  )) * min (3.0, (\\\\n    ((mid - 0.5) * float((mid > 0.5)))\\\\n   * 2.0)));\\\\n  flash_1 = tmpvar_14;\\\\n  float angle_15;\\\\n  float tmpvar_16;\\\\n  tmpvar_16 = abs(xlat_mutableuv2.x);\\\\n  if ((xlat_mutableuv2.y >= 0.0)) {\\\\n    angle_15 = (1.0 - ((xlat_mutableuv2.y - tmpvar_16) / (xlat_mutableuv2.y + tmpvar_16)));\\\\n  } else {\\\\n    angle_15 = (3.0 - ((xlat_mutableuv2.y + tmpvar_16) / (tmpvar_16 - xlat_mutableuv2.y)));\\\\n  };\\\\n  angle_15 = (angle_15 * 0.25);\\\\n  float tmpvar_17;\\\\n  if ((xlat_mutableuv2.x < 0.0)) {\\\\n    tmpvar_17 = -(angle_15);\\\\n  } else {\\\\n    tmpvar_17 = angle_15;\\\\n  };\\\\n  flash_1 = (tmpvar_14 * (tmpvar_14 / (\\\\n    abs((fract((\\\\n      (3.0 * tmpvar_17)\\\\n     + \\\\n      (time * 2.0)\\\\n    )) - 0.5))\\\\n   + 0.18)));\\\\n  vec3 tmpvar_18;\\\\n  tmpvar_18 = max ((texture (sampler_main, uv).xyz * 2.0), ((\\\\n    (texture (sampler_blur2, uv).xyz * scale2)\\\\n   + bias2) * 2.0));\\\\n  vec2 tmpvar_19;\\\\n  tmpvar_19 = sin(xlat_mutableuv3);\\\\n  ret_4 = (clamp ((0.025 / \\\\n    sqrt(dot (tmpvar_19, tmpvar_19))\\\\n  ), 0.0, 1.0) * vec3(0.4, 0.1, 1.0));\\\\n  ret_4 = (ret_4 + clamp ((stars_3 * stars_3), 0.0, 1.0));\\\\n  ret_4 = (ret_4 * clamp ((1.0 - \\\\n    (2.0 * dot (tmpvar_18, vec3(0.32, 0.49, 0.29)))\\\\n  ), 0.0, 1.0));\\\\n  ret_4 = (ret_4 + tmpvar_18);\\\\n  vec3 tmpvar_20;\\\\n  tmpvar_20.x = q10;\\\\n  tmpvar_20.y = q11;\\\\n  tmpvar_20.z = q12;\\\\n  ret_4 = (ret_4 + ((2.0 * \\\\n    clamp (flash_1, 0.0, 1.0)\\\\n  ) * tmpvar_20));\\\\n  vec4 tmpvar_21;\\\\n  tmpvar_21.w = 1.0;\\\\n  tmpvar_21.xyz = ret_4;\\\\n  ret = tmpvar_21.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/martin [shadow harlequins shape code] - fata morgana.json\":\n/*!*************************************************************************************!*\\\n  !*** ./presets/converted/martin [shadow harlequins shape code] - fata morgana.json ***!\n  \\*************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":4,\\\"gammaadj\\\":1.98,\\\"decay\\\":0.5,\\\"echo_zoom\\\":1,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":3,\\\"additivewave\\\":1,\\\"wave_thick\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":0.133,\\\"wave_smoothing\\\":0,\\\"wave_mystery\\\":-1,\\\"modwavealphastart\\\":1,\\\"modwavealphaend\\\":1.3,\\\"warpanimspeed\\\":1.459,\\\"warpscale\\\":2.007,\\\"zoom\\\":0.9999,\\\"warp\\\":0.01,\\\"sx\\\":0.9999,\\\"wave_r\\\":0.5,\\\"wave_g\\\":0.5,\\\"wave_b\\\":0.5,\\\"ob_size\\\":0.015,\\\"ob_b\\\":1,\\\"ib_size\\\":0.26,\\\"mv_a\\\":0,\\\"b2x\\\":0.3,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":40,\\\"thickoutline\\\":1,\\\"rad\\\":0.06623,\\\"tex_zoom\\\":1.79845,\\\"r\\\":0,\\\"a\\\":0.1,\\\"g2\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"bob = 1.5;\\\\nro = 0;\\\\nred = rand(20);\\\",\\\"frame_eqs_eel\\\":\\\"vol = 1 + 0.2*((bass_att+treb_att+mid_att)/3);\\\\nbob = bob*above(bob,0.01) - 0.01 + 1*(1 - above(bob,0.01));\\\\nbob = 0.4 + 0.4*sin(time*0.8);\\\\nbob = bob*vol;\\\\n//rad = bob;\\\\nborder_1 = 0.4;\\\\nsides = 30;\\\\nro = ro + 0.02;\\\\nang = ro;\\\\n//rad = 0.6;\\\\n\\\\nsp = red*0.025;\\\\nspi = 0.5 - sp;\\\\ntm = time*0.1;\\\\nborder_r = 0.5 + sp*sin(tm*0.6) + spi*cos(tm*1.46);\\\\nborder_g = 0.5 + sp*sin(tm*1.294) + spi*cos(tm*0.87);\\\\nborder_b = 0.5 + sp*sin(tm*1.418) + spi*cos(tm*0.76);\\\\n\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":40,\\\"additive\\\":1,\\\"num_inst\\\":4,\\\"g\\\":1,\\\"b\\\":1,\\\"g2\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = 0.5 + 0.225*sin(time /instance*0.7);\\\\ny = 0.5 + 0.3*cos(time /instance*0.7);\\\\nx = x- 0.4*x*sin(time);\\\\ny = y- 0.4*y*cos(time);\\\\n\\\\n\\\\n\\\\nrad = rad*mid_att;\\\\nr = 0.5 + 0.5*sin(frame*0.5);\\\\nb = 0.5 + 0.5*sin(frame*0.5 + 2.094);\\\\ng = 0.5 + 0.5*sin(frame*0.5 + 4.188);\\\\n\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":40,\\\"additive\\\":1,\\\"g\\\":1,\\\"b\\\":1,\\\"g2\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = 0.5 + 0.5*(sin(time*1.1)*0.3 + 0.7*sin(time*0.5));\\\\nx = 0.5 + 0.225*sin(time + 2.09);\\\\ny = 0.5 + 0.3*cos(time + 2.09);\\\\n\\\\nrad = rad*bass_att;\\\\nr = 0.5 + 0.5*sin(frame*0.5);\\\\nb = 0.5 + 0.5*sin(frame*0.5 + 2.094);\\\\ng = 0.5 + 0.5*sin(frame*0.5 + 4.188);\\\\n\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":40,\\\"additive\\\":1,\\\"num_inst\\\":5,\\\"rad\\\":0.07419,\\\"g\\\":1,\\\"b\\\":1,\\\"g2\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"//x = 0.5 + 0.5*(sin(time*1.1)*0.3 + 0.7*sin(time*0.5));\\\\nx = 0.5 + 0.225*sin(time /instance);\\\\ny = 0.5 + 0.3*cos(time /instance);\\\\nx = x+ 0.4*x*sin(time);\\\\ny = y+ 0.4*y*cos(time);\\\\n\\\\n\\\\n//x = x+(0.1*q3)*sin((instance*2.4));\\\\n//y = y+(0.1*q4)*cos((instance*2.4));\\\\n\\\\n\\\\nrad = rad*treb_att;\\\\nr = 0.5 + 0.5*sin(frame*0.5);\\\\nb = 0.5 + 0.5*sin(frame*0.5 + 2.094);\\\\ng = 0.5 + 0.5*sin(frame*0.5 + 4.188);\\\\n\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"dec_med = pow (0.7, 30/fps);\\\\ndec_slow = pow (0.99, 30/fps);\\\\nbeat = max (max (bass, mid), treb); \\\\navg = avg*dec_slow + beat*(1-dec_slow);\\\\nis_beat = above(beat, .2+avg+peak) * above (time, t0+.2);\\\\nt0 = is_beat*time + (1-is_beat)*t0;\\\\npeak = is_beat * beat + (1-is_beat)*peak*dec_med;\\\\nindex = (index + is_beat) %8;\\\\nindex2 = (index2 + is_beat*bnot(index))%2;\\\\n\\\\nq20 = avg;\\\\nq21 = beat;\\\\nq22 = peak;\\\\n\\\\nps = .9*ps + .1*q22;\\\\nq23 = ps;\\\\nq24 = is_beat;\\\\nq26 = bass_att + mid_att + treb_att;\\\\nq27 = index +1;\\\\nq28 = index2;\\\\n\\\\n\\\\nk1 =  is_\\\\nbeat*equal(index%2,0);\\\\np1 =  k1*(p1+1) + (1-k1)*p1;\\\\np2 = dec_med * p2+ (1-dec_med)*p1;\\\\nrott = p2 * 3.1416/4;\\\\n\\\\nq1 = cos(rott);\\\\nq2 = sin(rott);\\\\nq3 = -q2;\\\\nq4 = q1;\\\",\\\"pixel_eqs_eel\\\":\\\"zoom = 1.05;\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec2 uv_1;\\\\n  vec2 tmpvar_2;\\\\n  tmpvar_2 = (uv - vec2(0.5, 0.5));\\\\n  vec4 tmpvar_3;\\\\n  tmpvar_3.w = 0.0;\\\\n  vec4 tmpvar_4;\\\\n  tmpvar_4 = texture (sampler_blur1, uv);\\\\n  tmpvar_3.xyz = ((tmpvar_4.xyz * scale1) + bias1);\\\\n  float tmpvar_5;\\\\n  tmpvar_5 = (dot (tmpvar_3, roam_sin) * 16.0);\\\\n  mat2 tmpvar_6;\\\\n  tmpvar_6[uint(0)].x = cos(tmpvar_5);\\\\n  tmpvar_6[uint(0)].y = -(sin(tmpvar_5));\\\\n  tmpvar_6[1u].x = sin(tmpvar_5);\\\\n  tmpvar_6[1u].y = cos(tmpvar_5);\\\\n  uv_1 = ((tmpvar_2 + (\\\\n    (0.2 * dot (((tmpvar_4.xyz * scale1) + bias1), vec3(0.32, 0.49, 0.29)))\\\\n   * \\\\n    (tmpvar_2 * tmpvar_6)\\\\n  )) - 0.5);\\\\n  vec2 tmpvar_7;\\\\n  tmpvar_7 = ((uv_1 * texsize.xy) * 0.02);\\\\n  vec2 tmpvar_8;\\\\n  tmpvar_8.x = (cos((tmpvar_7.y * q1)) * sin(-(tmpvar_7.y)));\\\\n  tmpvar_8.y = (sin(tmpvar_7.x) * cos((tmpvar_7.y * q2)));\\\\n  uv_1 = (uv_1 - ((tmpvar_8 * texsize.zw) * 12.0));\\\\n  vec4 tmpvar_9;\\\\n  tmpvar_9.w = 1.0;\\\\n  tmpvar_9.xyz = ((texture (sampler_main, uv_1).xyz * 0.98) - 0.02);\\\\n  ret = tmpvar_9.xyz;\\\\n }\\\",\\\"comp\\\":\\\"vec3 xlat_mutableret1;\\\\nvec2 xlat_mutablers;\\\\nvec2 xlat_mutableuv1;\\\\nfloat xlat_mutablez;\\\\n shader_body { \\\\n  xlat_mutableuv1 = (uv - 0.5);\\\\n  xlat_mutablez = (0.2 / abs(xlat_mutableuv1.y));\\\\n  xlat_mutablers.x = (xlat_mutableuv1.x * xlat_mutablez);\\\\n  xlat_mutablers.y = ((xlat_mutablez / 2.0) + (time * 4.0));\\\\n  vec4 tmpvar_1;\\\\n  tmpvar_1 = texture (sampler_noise_hq, xlat_mutablers);\\\\n  xlat_mutableret1 = ((tmpvar_1.xyz * vec3(\\\\n    greaterThanEqual (tmpvar_1.xyz, vec3(0.0, 0.0, 0.0))\\\\n  )) - 0.6);\\\\n  float tmpvar_2;\\\\n  tmpvar_2 = clamp ((128.0 * xlat_mutableuv1.y), 0.0, 1.0);\\\\n  vec2 tmpvar_3;\\\\n  tmpvar_3 = fract(((\\\\n    (xlat_mutableuv1 * (1.0 - abs(xlat_mutableuv1.x)))\\\\n   - 0.5) - (\\\\n    (xlat_mutableret1 * 0.05)\\\\n   * tmpvar_2).xy));\\\\n  float x_4;\\\\n  x_4 = (tmpvar_3.y - 0.52);\\\\n  vec3 tmpvar_5;\\\\n  tmpvar_5 = (texture (sampler_main, tmpvar_3) + ((0.02 / \\\\n    (0.02 + sqrt((x_4 * x_4)))\\\\n  ) * slow_roam_sin)).xyz;\\\\n  xlat_mutableret1 = tmpvar_5;\\\\n  vec2 tmpvar_6;\\\\n  tmpvar_6 = (32.0 * ((\\\\n    (uv * mat2(0.6, -0.8, 0.8, 0.6))\\\\n   + \\\\n    (tmpvar_5 * 0.1)\\\\n  .xy) + (time / 64.0)));\\\\n  vec2 tmpvar_7;\\\\n  tmpvar_7 = abs((fract(tmpvar_6) - 0.5));\\\\n  vec3 tmpvar_8;\\\\n  tmpvar_8 = clamp (((0.25 / \\\\n    sqrt(dot (tmpvar_7, tmpvar_7))\\\\n  ) * vec3((texture (sampler_pw_noise_lq, \\\\n    (tmpvar_6 / 256.0)\\\\n  ).y - 0.9))), 0.0, 1.0);\\\\n  vec4 tmpvar_9;\\\\n  tmpvar_9.w = 1.0;\\\\n  tmpvar_9.xyz = (tmpvar_5 + ((\\\\n    (tmpvar_8.x * tmpvar_8.x)\\\\n   + \\\\n    ((rand_preset * (0.5 - uv.y)).xyz * vec3(0.0, 0.0, 1.0))\\\\n  ) * (1.0 - tmpvar_2)));\\\\n  ret = tmpvar_9.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/martin, flexi, fishbrain + sto - enterstate [random mashup].json\":\n/*!********************************************************************************************!*\\\n  !*** ./presets/converted/martin, flexi, fishbrain + sto - enterstate [random mashup].json ***!\n  \\********************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":2,\\\"gammaadj\\\":1.98,\\\"decay\\\":0.5,\\\"echo_zoom\\\":1,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":3,\\\"wave_mode\\\":3,\\\"wave_thick\\\":1,\\\"wrap\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":100,\\\"wave_scale\\\":0.282,\\\"wave_smoothing\\\":0.9,\\\"wave_mystery\\\":1,\\\"warpanimspeed\\\":1.459,\\\"warpscale\\\":2.007,\\\"zoom\\\":0.9999,\\\"warp\\\":0.01,\\\"sx\\\":0.9999,\\\"wave_r\\\":0.5,\\\"wave_g\\\":0.5,\\\"wave_b\\\":0.5,\\\"ob_size\\\":0.05,\\\"ob_g\\\":0.1,\\\"ob_b\\\":1,\\\"ob_a\\\":1,\\\"ib_size\\\":0,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"mv_a\\\":0,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"rad\\\":0.16446,\\\"g\\\":1,\\\"b\\\":1,\\\"a\\\":0,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"a = if(above(bass,2.5),1,0);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"spectrum\\\":1,\\\"thick\\\":1,\\\"scaling\\\":0.2248},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"r = bass;\\\\ng = treb;\\\\nb = .5;\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(bass,1)*3.1415*.01*bass);\\\\nma=ma-(above(treb,1)*3.1415*.01*treb);\\\\n\\\\nmx=mx+(.0002*cos(ma));\\\\nmy=my+(.0002*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.8));\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"spectrum\\\":1,\\\"thick\\\":1,\\\"scaling\\\":0.2743},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"r = bass;\\\\ng = treb;\\\\nb = .5;\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(mid,1)*3.1415*.01*mid);\\\\nma=ma-(above(treb,1)*3.1415*.01*treb);\\\\n\\\\nmx=mx+(.0004*cos(ma));\\\\nmy=my+(.0004*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.3));\\\\n\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"thick\\\":1,\\\"scaling\\\":2.0231,\\\"smoothing\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\ncl = 0;\\\",\\\"frame_eqs_eel\\\":\\\"vol = bass*8 + mid*5 + treb*3;\\\\nm = m*0.97 + vol*0.08;\\\\nmonitor = vol;\\\\nbeat = above(vol,res)*above(vol,m)*above(vol,16);\\\\ndiff = (1-beat)*diff + beat*(vol-res);\\\\nres = beat*(vol + m*0.04) + (1-beat)*(res -  (0.1+diff*0.02)*60/fps);\\\\nres = max(0,res);\\\\n\\\\n//a = beat;\\\",\\\"point_eqs_eel\\\":\\\"tt3 = tt3*0.6 + (value1)*1;\\\\ntt2 = tt2*0.7 + tt3*0.2;\\\\ntt1 = tt1*0.8 + tt2*0.1;\\\\nd = d*0.9 + tt1*0.2;\\\\n\\\\ny = 0.5 + d*sample*(1-sample)*2;\\\\nx =  -0.05 + sample*1.1;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"//******** INITIALIZATION *********\\\\n//---------- some global vars, do not change -------------\\\\navg = 0.01;\\\\nq7 = .25; //MyZoom\\\\nq8 =  rand(2.0)-1.0; //fractal modifier\\\\n//q8 = 1; //#\\\\nq16 = 1 + rand(2); //Tele ; rather fish eye\\\\n//q16 = 1; //#\\\\nq18 = rand(0.8)+.1; //brightness balance back/front\\\\nq30 = 1; //logarithmic Z-Dist storage; unused\\\\nq31 =128;\\\\nstart = 1; travel = 0; RotZ = 0; look = 0; slow = 0; t0 = time+3; lampx = .5; lampy = .5;\\\\ncran0 = rand(1);\\\\nn = 0; loop (10000, gmegabuf(n)=0; n=n+1; ); \\\\nn = 0; loop (10000,  megabuf(n)=0; n=n+1; ); \\\\ntrelx = 0;  trely = 0; trelz = 0;\\\\nreg20 = 1; reg21 = 0; reg22 = 0; reg23 = 0; reg24 = 1; reg25 = 0; reg26 = 0; reg27 = 0; reg28 = 1;\\\\n\\\\n//Find random starting point\\\\nwhile (exec2(\\\\n  ran1 = rand(800)/100;  ran2 = rand(800)/100;  ran3 = rand(800)/100;\\\\n  PosX = rand(5)-2;   PosY = rand(5)-2;   PosZ = rand(5)-2; \\\\n\\\\n//  PosX = 3.3; PosY = 2; PosZ = -2; ran1 = 0; ran2 = 0; ran3 = 0; //#\\\\n\\\\n  c1 = cos(ran1); c2 = cos(ran2); c3 = cos(ran3); \\\\n  s1 = sin(ran1); s2 = sin(ran2); s3 = sin(ran3);\\\\n\\\\n  reg20 = c2*c1; reg21 = c2*s1; reg22 = -s2;\\\\n  reg23 = s3*s2*c1 - c3*s1; reg24 = s3*s2*s1 + c3*c1; reg25 = s3*c2;\\\\n  reg26 = c3*s2*c1 + s3*s1; reg27 = c3*s2*s1 - s3*c1; reg28 = c3*c2;\\\\n\\\\n  //***********BOT*************\\\\n  //Coord. Trans. must exactly match def in warp S. !!!!\\\\n  dist = 0.001;\\\\n  while (exec2(\\\\n    uvx = reg26*dist/q7; uvy = reg27*dist/q7; uvz = reg28*dist/q7;\\\\n    uvx += PosX; uvy += PosY; uvz += PosZ;\\\\n    uvx = 8.0*((uvx/8+30.5 - int(uvx/8+30.5))-.5);\\\\n    uvy = 8.0*((uvy/8+30.5 - int(uvy/8+30.5))-.5);\\\\n    uvz = 8.0*((uvz/8+30.5 - int(uvz/8+30.5))-.5);\\\\n    uvx0 = uvx+q8; uvy0 = uvy+q8; uvz0 = uvz+q8;\\\\n    loop (7+1,\\\\n      uvx = if (uvx > 1, 2-uvx, if(uvx < -1, -2-uvx, uvx));\\\\n      uvy = if (uvy > 1, 2-uvy, if(uvy < -1, -2-uvy, uvy));\\\\n      uvz = if (uvz > 1, 2-uvz, if(uvz < -1, -2-uvz, uvz));\\\\n      slen = uvx*uvx + uvy*uvy + uvz*uvz;\\\\n      uvx = if (slen < 0.25, uvx*4, if (slen < 1, uvx/slen, uvx)) *2.6 + uvx0; \\\\n      uvy = if (slen < 0.25, uvy*4, if (slen < 1, uvy/slen, uvy)) *2.6 + uvy0; \\\\n      uvz = if (slen < 0.25, uvz*4, if (slen < 1, uvz/slen, uvz)) *2.6 + uvz0; \\\\n    );\\\\n    len = sqrt(uvx*uvx + uvy*uvy + uvz*uvz);\\\\n    dist *= 1.05;\\\\n  ,(dist < 0.6)*(len > 30)));\\\\n,(dist < .06))); //end while\\\",\\\"frame_eqs_eel\\\":\\\"wave_a = 0;\\\\nfps_ = .0 * fps_ + 1*if(fps<=25,fps,25+.5*(fps-25)); \\\\ndec_s = 1-.06*30/fps_;\\\\nbeat = (time >  t0+3); t0 = if(beat, time, t0);\\\\n\\\\nspeed = min(0.2,dist_-.02) * (1+2*avg) *(1-slow*.0)*.7/q7; //#\\\\nds = ds * dec_s + (1-dec_s)*speed*.25/fps_; \\\\nRotZ = if (RotZ==0,beat*(rand(100)<20*travel)*(rand(10)/10-.3),\\\\n                   bnot(beat*(rand(100)<30))*RotZ);\\\\nslow = if (bnot(slow), beat*(rand(1000*avg)<6), bnot(beat*(rand(100)<50)));\\\\nlook = if (bnot(look), beat*(rand(1000*speed)<12), bnot(beat*(rand(100)<50)));\\\\n\\\\n//Lamp View\\\\nlx = if (beat,rand(150)/200+.15,lx);\\\\nly = if (beat,rand(150)/200+.15,ly);\\\\nlampx = lampx * dec_s + (1-dec_s)*if (look,lx,0.5);\\\\nlampy = lampy * dec_s + (1-dec_s)*if (look,ly,0.5);\\\\nq1 = lampx; q2 = lampy;\\\\n\\\\n//Position \\\\nDirX= reg26; DirY= reg27; DirZ = reg28;\\\\nPosX = PosX + ds*DirX ; PosY = PosY + ds*DirY; PosZ = PosZ + ds*DirZ; \\\\nq4 = PosX; q5 = PosY; q6 = PosZ;\\\\n\\\\nangchg = (.2-dist_)*(dist_ < .2)*2;\\\\ntravel = if (angchg > 0,0,travel+ds);\\\\nv1 = v1 * dec_s + (1-dec_s)* RotZ * ds;\\\\nv2 = v2 *dec_s + (1-dec_s)*angchg *xslope/fps_;\\\\nv3 = v3 *dec_s + (1-dec_s)*(angchg *yslope/fps_ + 2*v1*sin(time*.1));\\\\n//v2 = .008;\\\\n//push old RotMat\\\\nreg30 =reg20; reg31 =reg21; reg32 =reg22; \\\\nreg33 =reg23; reg34 =reg24; reg35 =reg25; \\\\nreg36 =reg26; reg37 =reg27; reg38 =reg28; \\\\n\\\\nn = 0; avg = 0;\\\\nloop (5,\\\\n  n = n+1;\\\\n  //new Rot. Mat for infinitesimal angles\\\\n  ran1 = rand(100)/100;\\\\n  ran2 = rand(100)/200-.25;\\\\n  tx = cos(n*1.57+ran2) * (n <= 4)*ran1; ty = sin(n*1.57+ran2) * (n <= 4)*ran1;\\\\n  c1 = cos(v1); c2 = cos(v2+ty); c3 = cos(v3+tx); \\\\n  s1 = sin(v1); s2 = sin(v2+ty); s3 = sin(v3+tx);\\\\n  reg10 = c2*c1; reg11 = c2*s1; reg12 = -s2;\\\\n  reg13 = s3*s2*c1 - c3*s1; reg14 = s3*s2*s1 + c3*c1; reg15 = s3*c2;\\\\n  reg16 = c3*s2*c1 + s3*s1; reg17 = c3*s2*s1 - s3*c1; reg18 = c3*c2;\\\\n\\\\n  //pop old RotMat\\\\n  reg20 =reg30; reg21 =reg31; reg22 =reg32; \\\\n  reg23 =reg33; reg24 =reg34; reg25 =reg35; \\\\n  reg26 =reg36; reg27 =reg37; reg28 =reg38; \\\\n\\\\n  //Multiply new RotMat by old one\\\\n  q20 = reg10*reg20 + reg11*reg23 + reg12*reg26;\\\\n  q21 = reg10*reg21 + reg11*reg24 + reg12*reg27;\\\\n  q22 = reg10*reg22 + reg11*reg25 + reg12*reg28;\\\\n  q23 = reg13*reg20 + reg14*reg23 + reg15*reg26;\\\\n  q24 = reg13*reg21 + reg14*reg24 + reg15*reg27;\\\\n  q25 = reg13*reg22 + reg14*reg25 + reg15*reg28;\\\\n  q26 = reg16*reg20 + reg17*reg23 + reg18*reg26;\\\\n  q27 = reg16*reg21 + reg17*reg24 + reg18*reg27;\\\\n  q28 = reg16*reg22 + reg17*reg25 + reg18*reg28;\\\\n\\\\n  reg20 =q20; reg21 =q21; reg22 =q22;\\\\n  reg23 =q23; reg24 =q24; reg25 =q25;\\\\n  reg26 =q26; reg27 =q27; reg28 =q28;\\\\n\\\\n  //***********BOT*************\\\\n  //Coord. Trans. must exactly match def in warp S. !!!!\\\\n  dist = 0.002;\\\\n  while (exec2(\\\\n    uvx = reg26*dist/q7; uvy = reg27*dist/q7; uvz = reg28*dist/q7;\\\\n    uvx += PosX; uvy += PosY; uvz += PosZ;\\\\n    uvx = 8.0*((uvx/8+30.5 - int(uvx/8+30.5))-.5);\\\\n    uvy = 8.0*((uvy/8+30.5 - int(uvy/8+30.5))-.5);\\\\n    uvz = 8.0*((uvz/8+30.5 - int(uvz/8+30.5))-.5);\\\\n    uvx0 = uvx+q8; uvy0 = uvy+q8; uvz0 = uvz+q8;\\\\n    loop (7+1,\\\\n      uvx = if (uvx > 1, 2-uvx, if(uvx < -1, -2-uvx, uvx));\\\\n      uvy = if (uvy > 1, 2-uvy, if(uvy < -1, -2-uvy, uvy));\\\\n      uvz = if (uvz > 1, 2-uvz, if(uvz < -1, -2-uvz, uvz));\\\\n      slen = uvx*uvx + uvy*uvy + uvz*uvz;\\\\n      uvx = if (slen < 0.25, uvx*4, if (slen < 1, uvx/slen, uvx)) *2.6 + uvx0; \\\\n      uvy = if (slen < 0.25, uvy*4, if (slen < 1, uvy/slen, uvy)) *2.6 + uvy0; \\\\n      uvz = if (slen < 0.25, uvz*4, if (slen < 1, uvz/slen, uvz)) *2.6 + uvz0; \\\\n    );\\\\n    len = sqrt(uvx*uvx + uvy*uvy + uvz*uvz);\\\\n    dist *= 1.1;\\\\n  ,(dist < 0.6)*(len > 30)));\\\\n  megabuf(n) = megabuf(n)*dec_s + (1-dec_s)*dist; //stores the 4 trial points\\\\n  avg = avg+abs(megabuf(n)/5);\\\\n); //end loop 5\\\\n\\\\nn = 0; avg = 0; loop (5, n=n+1; avg = avg+abs(megabuf(n)/5));\\\\n\\\\nxslope = min(max(2/avg*(megabuf(1)-megabuf(3)),-3),3);\\\\nyslope = min(max(2/avg*(megabuf(4)-megabuf(2)),-3),3);\\\\nmonitor = avg;\\\\ndist_ = dist_*dec_s + (1-dec_s)*dist;\\\\n\\\\nq10 = ds*q7; //compensation of lin. movement in GetDist and zoom uv\\\\nq14 = 1*abs(ds) + 2*(abs(v1) + abs(v2) + abs(v3)) + 1.0/255 + start*.05; \\\\nq19 = .6 + .4*sin(time*.02+cran0*6); //brightness backgd\\\\nstart = start * .9;\\\\nq11 = v1; q12 = v2; q13 = v3;\\\\n//forward comp. of Rotation\\\\nmonitor = q16;\\\",\\\"pixel_eqs_eel\\\":\\\"warp = 0.0; zoom = 1; dx = -q12/q16*(1+0*pow(x-.5,2)); dy = q13/q16*(1+0*pow(y-.5,2)); rot =q11;\\\",\\\"warp\\\":\\\" shader_body { \\\\n  float dy_1;\\\\n  float dx_2;\\\\n  vec3 ret_3;\\\\n  vec2 tmpvar_4;\\\\n  tmpvar_4 = ((uv * texsize.xy) * texsize_noise_lq.zw);\\\\n  vec2 tmpvar_5;\\\\n  tmpvar_5 = (texsize.zw * 4.0);\\\\n  vec2 tmpvar_6;\\\\n  tmpvar_6.x = (((2.0 * \\\\n    ((texture (sampler_blur1, (uv + (vec2(1.0, 0.0) * tmpvar_5))).xyz * scale1) + bias1)\\\\n  ) - (2.0 * \\\\n    ((texture (sampler_blur1, (uv - (vec2(1.0, 0.0) * tmpvar_5))).xyz * scale1) + bias1)\\\\n  )).y * 0.5);\\\\n  tmpvar_6.y = (((2.0 * \\\\n    ((texture (sampler_blur1, (uv + (vec2(0.0, 1.0) * tmpvar_5))).xyz * scale1) + bias1)\\\\n  ) - (2.0 * \\\\n    ((texture (sampler_blur1, (uv - (vec2(0.0, 1.0) * tmpvar_5))).xyz * scale1) + bias1)\\\\n  )).y * 0.5);\\\\n  ret_3.y = texture (sampler_fw_main, clamp ((uv + (\\\\n    (tmpvar_6 * texsize.zw)\\\\n   * 4.0)), 0.0, 1.0)).y;\\\\n  ret_3.y = (ret_3.y + ((\\\\n    (ret_3 - ((texture (sampler_blur1, uv).xyz * scale1) + bias1))\\\\n  .y * 0.025) + -0.01));\\\\n  ret_3.y = (ret_3.y + ((texture (sampler_noise_lq, tmpvar_4).y - 0.5) * 0.02));\\\\n  dx_2 = (((2.0 * \\\\n    ((texture (sampler_blur1, (uv + (vec2(1.0, 0.0) * tmpvar_5))).xyz * scale1) + bias1)\\\\n  ) - (2.0 * \\\\n    ((texture (sampler_blur1, (uv - (vec2(1.0, 0.0) * tmpvar_5))).xyz * scale1) + bias1)\\\\n  )).z * 0.5);\\\\n  dy_1 = (((2.0 * \\\\n    ((texture (sampler_blur1, (uv + (vec2(0.0, 1.0) * tmpvar_5))).xyz * scale1) + bias1)\\\\n  ) - (2.0 * \\\\n    ((texture (sampler_blur1, (uv - (vec2(0.0, 1.0) * tmpvar_5))).xyz * scale1) + bias1)\\\\n  )).z * 0.5);\\\\n  vec2 tmpvar_7;\\\\n  tmpvar_7.x = dx_2;\\\\n  tmpvar_7.y = dy_1;\\\\n  ret_3.z = ((texture (sampler_main, (uv - \\\\n    ((tmpvar_7 * texsize.zw) * 4.0)\\\\n  )).z - (ret_3.y * 0.01)) + 0.004);\\\\n  ret_3.z = (ret_3.z + ((texture (sampler_noise_lq, tmpvar_4).y - 0.5) * 0.01));\\\\n  dx_2 = (((2.0 * \\\\n    ((texture (sampler_blur1, (uv + (tmpvar_5 * vec2(1.0, 0.0)))).xyz * scale1) + bias1)\\\\n  ) - (2.0 * \\\\n    ((texture (sampler_blur1, (uv + (tmpvar_5 * vec2(-1.0, 0.0)))).xyz * scale1) + bias1)\\\\n  )).x * 0.5);\\\\n  dy_1 = (((2.0 * \\\\n    ((texture (sampler_blur1, (uv + (tmpvar_5 * vec2(0.0, 1.0)))).xyz * scale1) + bias1)\\\\n  ) - (2.0 * \\\\n    ((texture (sampler_blur1, (uv + (tmpvar_5 * vec2(0.0, -1.0)))).xyz * scale1) + bias1)\\\\n  )).x * 0.5);\\\\n  vec2 tmpvar_8;\\\\n  tmpvar_8.x = dx_2;\\\\n  tmpvar_8.y = dy_1;\\\\n  vec2 tmpvar_9;\\\\n  tmpvar_9 = (tmpvar_8 * texsize.zw);\\\\n  vec2 domain_10;\\\\n  domain_10 = (uv - (tmpvar_9 * 2.5));\\\\n  vec4 tmpvar_11;\\\\n  tmpvar_11.w = 0.0;\\\\n  tmpvar_11.xyz = max (vec4(0.0, 0.0, 0.0, 0.0), texture (sampler_fc_main, (domain_10 + (texsize.zw * vec2(-1.0, 0.0))))).xyz;\\\\n  vec4 tmpvar_12;\\\\n  tmpvar_12.w = 0.0;\\\\n  tmpvar_12.xyz = max (tmpvar_11, texture (sampler_fc_main, (domain_10 + (texsize.zw * vec2(0.0, -1.0))))).xyz;\\\\n  vec4 tmpvar_13;\\\\n  tmpvar_13.w = 0.0;\\\\n  tmpvar_13.xyz = max (tmpvar_12, texture (sampler_fc_main, domain_10)).xyz;\\\\n  vec4 tmpvar_14;\\\\n  tmpvar_14.w = 0.0;\\\\n  tmpvar_14.xyz = max (tmpvar_13, texture (sampler_fc_main, (domain_10 + (texsize.zw * vec2(0.0, 1.0))))).xyz;\\\\n  ret_3.x = ((max (tmpvar_14, texture (sampler_fc_main, \\\\n    (domain_10 + (texsize.zw * vec2(1.0, 0.0)))\\\\n  )).x + (\\\\n    (texture (sampler_main, (uv + (tmpvar_9 * 4.0))).x - ((texture (sampler_blur1, (uv + \\\\n      (tmpvar_9 * 4.0)\\\\n    )).xyz * scale1) + bias1).x)\\\\n   * 0.206)) - 0.09);\\\\n  vec4 tmpvar_15;\\\\n  tmpvar_15.w = 1.0;\\\\n  tmpvar_15.xyz = ret_3;\\\\n  ret = tmpvar_15.xyz;\\\\n }\\\",\\\"comp\\\":\\\"float xlat_mutablelamp;\\\\nvec2 xlat_mutablers0;\\\\nvec2 xlat_mutablerss;\\\\nvec2 xlat_mutableuv1;\\\\n shader_body { \\\\n  vec3 tmpvar_1;\\\\n  tmpvar_1.x = q4;\\\\n  tmpvar_1.y = q5;\\\\n  tmpvar_1.z = q6;\\\\n  mat3 tmpvar_2;\\\\n  tmpvar_2[uint(0)].x = q20;\\\\n  tmpvar_2[uint(0)].y = q23;\\\\n  tmpvar_2[uint(0)].z = q26;\\\\n  tmpvar_2[1u].x = q21;\\\\n  tmpvar_2[1u].y = q24;\\\\n  tmpvar_2[1u].z = q27;\\\\n  tmpvar_2[2u].x = q22;\\\\n  tmpvar_2[2u].y = q25;\\\\n  tmpvar_2[2u].z = q28;\\\\n  vec2 tmpvar_3;\\\\n  tmpvar_3.x = q1;\\\\n  tmpvar_3.y = q2;\\\\n  vec2 uv_4;\\\\n  vec3 dots_5;\\\\n  vec3 ret_6;\\\\n  vec2 tmpvar_7;\\\\n  vec2 tmpvar_8;\\\\n  tmpvar_8 = (uv - 0.5);\\\\n  tmpvar_7 = (0.5 + (tmpvar_8 * vec2(1.1, 0.81)));\\\\n  vec2 tmpvar_9;\\\\n  tmpvar_9 = (uv - vec2(0.5, 0.5));\\\\n  uv_4 = (tmpvar_8 * aspect.xy);\\\\n  float tmpvar_10;\\\\n  float tmpvar_11;\\\\n  tmpvar_11 = (min (abs(\\\\n    (uv_4.y / uv_4.x)\\\\n  ), 1.0) / max (abs(\\\\n    (uv_4.y / uv_4.x)\\\\n  ), 1.0));\\\\n  float tmpvar_12;\\\\n  tmpvar_12 = (tmpvar_11 * tmpvar_11);\\\\n  tmpvar_12 = (((\\\\n    ((((\\\\n      ((((-0.01213232 * tmpvar_12) + 0.05368138) * tmpvar_12) - 0.1173503)\\\\n     * tmpvar_12) + 0.1938925) * tmpvar_12) - 0.3326756)\\\\n   * tmpvar_12) + 0.9999793) * tmpvar_11);\\\\n  tmpvar_12 = (tmpvar_12 + (float(\\\\n    (abs((uv_4.y / uv_4.x)) > 1.0)\\\\n  ) * (\\\\n    (tmpvar_12 * -2.0)\\\\n   + 1.570796)));\\\\n  tmpvar_10 = (tmpvar_12 * sign((uv_4.y / uv_4.x)));\\\\n  if ((abs(uv_4.x) > (1e-08 * abs(uv_4.y)))) {\\\\n    if ((uv_4.x < 0.0)) {\\\\n      if ((uv_4.y >= 0.0)) {\\\\n        tmpvar_10 += 3.141593;\\\\n      } else {\\\\n        tmpvar_10 = (tmpvar_10 - 3.141593);\\\\n      };\\\\n    };\\\\n  } else {\\\\n    tmpvar_10 = (sign(uv_4.y) * 1.570796);\\\\n  };\\\\n  xlat_mutablers0.x = ((tmpvar_10 / 3.1416) * 2.0);\\\\n  xlat_mutablers0.y = (0.02 / sqrt(dot (uv_4, uv_4)));\\\\n  vec2 tmpvar_13;\\\\n  tmpvar_13.x = xlat_mutablers0.x;\\\\n  tmpvar_13.y = (xlat_mutablers0.y + time);\\\\n  xlat_mutablerss = (tmpvar_13 * mat2(0.7, -0.7, 0.7, 0.7));\\\\n  vec4 tmpvar_14;\\\\n  tmpvar_14 = vec4(greaterThanEqual ((texture (sampler_pw_noise_lq, \\\\n    (xlat_mutablerss / 32.0)\\\\n  ) - 0.7), vec4(0.0, 0.0, 0.0, 0.0)));\\\\n  vec2 tmpvar_15;\\\\n  tmpvar_15 = abs((fract(\\\\n    (xlat_mutablerss * 8.0)\\\\n  ) - 0.5));\\\\n  vec2 tmpvar_16;\\\\n  tmpvar_16.x = (xlat_mutablers0.x * 2.0);\\\\n  tmpvar_16.y = (xlat_mutablers0.y + (time / 2.0));\\\\n  xlat_mutablerss = (tmpvar_16 * mat2(0.7, -0.7, 0.7, 0.7));\\\\n  vec4 tmpvar_17;\\\\n  tmpvar_17 = vec4(greaterThanEqual ((texture (sampler_pw_noise_lq, \\\\n    (xlat_mutablerss / 32.0)\\\\n  ) - 0.7), vec4(0.0, 0.0, 0.0, 0.0)));\\\\n  vec2 tmpvar_18;\\\\n  tmpvar_18 = abs((fract(\\\\n    (xlat_mutablerss * 8.0)\\\\n  ) - 0.5));\\\\n  xlat_mutablerss = tmpvar_18;\\\\n  dots_5 = (vec3((clamp (\\\\n    (0.04 / sqrt(dot (tmpvar_15, tmpvar_15)))\\\\n  , 0.0, 1.0) * tmpvar_14.x)) + (clamp (\\\\n    (0.04 / sqrt(dot (tmpvar_18, tmpvar_18)))\\\\n  , 0.0, 1.0) * tmpvar_17.x));\\\\n  dots_5 = (dots_5 * clamp ((0.04 / \\\\n    abs((0.01 / xlat_mutablers0.y))\\\\n  ), 0.0, 1.0));\\\\n  dots_5 = (dots_5 * (dots_5 * 2.0));\\\\n  vec2 tmpvar_19;\\\\n  tmpvar_19.x = -((tmpvar_9.y * -1024.0));\\\\n  tmpvar_19.y = (tmpvar_9.x * -1024.0);\\\\n  vec2 tmpvar_20;\\\\n  tmpvar_20.x = tmpvar_19.x;\\\\n  tmpvar_20.y = -(tmpvar_19.y);\\\\n  uv_4 = (vec2(-100.0, 100.0) * (tmpvar_20 / (\\\\n    (tmpvar_19.x * tmpvar_19.x)\\\\n   + \\\\n    (tmpvar_19.y * tmpvar_19.y)\\\\n  )).yx);\\\\n  uv_4 = (0.5 + ((\\\\n    (1.0 - abs(((\\\\n      fract((mix ((0.5 + \\\\n        ((tmpvar_7 - 0.5) * 2.0)\\\\n      ), (uv_4 + 0.5), vec2(0.5, 0.5)) * 0.5))\\\\n     * 2.0) - 1.0)))\\\\n   - 0.5) * 0.98));\\\\n  uv_4 = (((uv_4 - 0.5) * 0.9) + 0.5);\\\\n  xlat_mutableuv1 = ((uv_4 - tmpvar_3) * aspect.xy);\\\\n  float tmpvar_21;\\\\n  tmpvar_21 = min ((1.0 - texture (sampler_main, uv_4).z), (1.0 - (\\\\n    (texture (sampler_blur2, uv_4).xyz * scale2)\\\\n   + bias2).z));\\\\n  vec3 tmpvar_22;\\\\n  tmpvar_22.xy = ((uv_4 - 0.5) * min ((1.0 - texture (sampler_main, uv_4).z), (1.0 - \\\\n    ((texture (sampler_blur2, uv_4).xyz * scale2) + bias2)\\\\n  .z)));\\\\n  tmpvar_22.z = min ((1.0 - texture (sampler_main, uv_4).z), (1.0 - (\\\\n    (texture (sampler_blur2, uv_4).xyz * scale2)\\\\n   + bias2).z));\\\\n  float tmpvar_23;\\\\n  tmpvar_23 = clamp ((abs(\\\\n    ((1.0 - ((texture (sampler_blur2, uv_4).xyz * scale2) + bias2).z) - clamp ((1.0 - (\\\\n      (texture (sampler_blur2, tmpvar_3).xyz * scale2)\\\\n     + bias2).z), 0.1, 0.4))\\\\n  ) + 0.2), 0.0, 1.0);\\\\n  vec3 tmpvar_24;\\\\n  tmpvar_24 = mix (texture (sampler_main, uv_4).xyz, ((texture (sampler_blur1, uv_4).xyz * scale1) + bias1), vec3(tmpvar_23));\\\\n  float tmpvar_25;\\\\n  tmpvar_25 = clamp (((1.0 - \\\\n    exp(-(((texture (sampler_blur1, uv_4).xyz * scale1) + bias1).x))\\\\n  ) - 0.2), 0.0, 1.0);\\\\n  ret_6 = ((tmpvar_24.x * (0.2 + \\\\n    ((1.0 - tmpvar_23) * (1.0 - tmpvar_21))\\\\n  )) * (1.0 + (0.5 * \\\\n    sin((((tmpvar_22 / q7) * tmpvar_2) + tmpvar_1))\\\\n  )));\\\\n  vec3 tmpvar_26;\\\\n  tmpvar_26.xy = vec2(0.0, 1.0);\\\\n  tmpvar_26.z = (tmpvar_25 * 3.0);\\\\n  vec3 tmpvar_27;\\\\n  tmpvar_27 = mix (ret_6, tmpvar_26, vec3(tmpvar_25));\\\\n  xlat_mutablelamp = (((\\\\n    clamp ((1.0 - (4.0 * sqrt(\\\\n      dot (xlat_mutableuv1, xlat_mutableuv1)\\\\n    ))), 0.0, 1.0)\\\\n   * tmpvar_24.x) * clamp (\\\\n    (1.0 - (2.0 * mix (tmpvar_21, (1.0 - \\\\n      ((texture (sampler_blur1, uv_4).xyz * scale1) + bias1)\\\\n    .z), 0.2)))\\\\n  , 0.0, 1.0)) * 1.8);\\\\n  ret_6 = (tmpvar_27 + ((1.0 - \\\\n    dot (tmpvar_27, vec3(0.32, 0.49, 0.29))\\\\n  ) * xlat_mutablelamp));\\\\n  ret_6 = (1.0 - exp((-2.0 * ret_6)));\\\\n  ret_6 = (ret_6 + (dots_5 * (1.0 + ret_6)));\\\\n  vec4 tmpvar_28;\\\\n  tmpvar_28.w = 1.0;\\\\n  tmpvar_28.xyz = ret_6;\\\\n  ret = tmpvar_28.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/sawtooth grin roam.json\":\n/*!***************************************************!*\\\n  !*** ./presets/converted/sawtooth grin roam.json ***!\n  \\***************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":4,\\\"gammaadj\\\":1.49,\\\"decay\\\":0.5,\\\"echo_zoom\\\":1.002,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":1,\\\"wave_mode\\\":7,\\\"additivewave\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":1.157,\\\"wave_smoothing\\\":0.63,\\\"modwavealphastart\\\":0.71,\\\"modwavealphaend\\\":1.3,\\\"warpscale\\\":16.016,\\\"zoomexp\\\":11.56276,\\\"fshader\\\":1,\\\"zoom\\\":1.05971,\\\"warp\\\":0.13126,\\\"wave_r\\\":0.65,\\\"wave_g\\\":0.65,\\\"wave_b\\\":0.65,\\\"ob_size\\\":0,\\\"ob_a\\\":1,\\\"ib_size\\\":0,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":14,\\\"num_inst\\\":512,\\\"rad\\\":0.1026,\\\"tex_ang\\\":0.62832,\\\"r2\\\":1,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ma=ma+(above(bass,1)*3.1415*.01*bass);\\\\nma=ma-(above(treb,1)*3.1415*.01*treb);\\\\n\\\\nmx=mx+(.0002*cos(ma));\\\\nmy=my+(.0002*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\nrad=(bass+treb)/30;\\\\na=(above(bass+mid+treb,.8));\\\\nr=int(rand(100))/100;\\\\ng=int(rand(100))/100;\\\\nb=int(rand(100))/100;\\\\nr2=int(rand(100))/100;\\\\ng2=int(rand(100))/100;\\\\nb2=int(rand(100))/100;\\\\nr_border=int(rand(100))/100;\\\\ng_border=int(rand(100))/100;\\\\nb_border=int(rand(100))/100;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":23,\\\"num_inst\\\":1024,\\\"rad\\\":0.10262,\\\"ang\\\":0.43982,\\\"tex_ang\\\":0.62832,\\\"a\\\":0.5,\\\"r2\\\":1,\\\"g2\\\":0,\\\"a2\\\":0.5,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ma=ma+(above(bass,1)*3.1415*.05*bass);\\\\nma=ma-(above(mid,1)*3.1415*.05*mid);\\\\n\\\\nmx=mx+(.0001*cos(ma));\\\\nmy=my+(.0001*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\nrad=(bass+treb)/25;\\\\na=(above(bass+mid+treb,.1));\\\\nr=int(rand(100))/100;\\\\ng=int(rand(100))/100;\\\\nb=int(rand(100))/100;\\\\nr2=int(rand(100))/100;\\\\ng2=int(rand(100))/100;\\\\nb2=int(rand(100))/100;\\\\nr_border=int(rand(100))/100;\\\\ng_border=int(rand(100))/100;\\\\nb_border=int(rand(100))/100;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":14,\\\"additive\\\":1,\\\"num_inst\\\":256,\\\"rad\\\":0.20269,\\\"tex_ang\\\":0.62832,\\\"r2\\\":1,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ma=ma+(above(mid,1)*3.1415*.01*mid);\\\\nma=ma-(above(treb,1)*3.1415*.01*treb);\\\\n\\\\nmx=mx+(.0004*cos(ma));\\\\nmy=my+(.0004*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.3));\\\"},{\\\"baseVals\\\":{\\\"sides\\\":14,\\\"additive\\\":1,\\\"num_inst\\\":256,\\\"rad\\\":0.22389,\\\"tex_ang\\\":0.62832,\\\"r2\\\":1,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ma=ma+(above(bass,.5)*3.1415*.02*bass);\\\\nma=ma-(above(treb,.5)*3.1415*.02*treb);\\\\n\\\\nmx=mx+(.0008*cos(ma));\\\\nmy=my+(.0008*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.2));\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(bass,1)*3.1415*.01*bass);\\\\nma=ma-(above(treb,1)*3.1415*.01*treb);\\\\n\\\\nmx=mx+(.0002*cos(ma));\\\\nmy=my+(.0002*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.8));\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(bass,1)*3.1415*.05*bass);\\\\nma=ma-(above(mid,1)*3.1415*.05*mid);\\\\n\\\\nmx=mx+(.0001*cos(ma));\\\\nmy=my+(.0001*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.1));\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(mid,1)*3.1415*.01*mid);\\\\nma=ma-(above(treb,1)*3.1415*.01*treb);\\\\n\\\\nmx=mx+(.0004*cos(ma));\\\\nmy=my+(.0004*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.3));\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(bass,.5)*3.1415*.02*bass);\\\\nma=ma-(above(treb,.5)*3.1415*.02*treb);\\\\n\\\\nmx=mx+(.0008*cos(ma));\\\\nmy=my+(.0008*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.2));\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"xx1 = xx1*0.9 + (bass)*0.01;\\\\nxx2 = xx2*0.9 + (treb)*0.01;\\\\nyy1 = yy1*0.94 + (treb+bass)*0.0075;\\\\n\\\\nx1 = 0.5 + (xx1-xx2)*2;\\\\ny1 = 0.4 + yy1;\\\\n\\\\nx1 = max(0,min(1,x1)); y1 = max(0,min(1,y1));\\\\n\\\\nspring = 10;\\\\ngrav = .5;\\\\nresist = 1;\\\\nbounce = 0.75;\\\\ndt = 0.0005*(60/fps);\\\\n\\\\nvx2 = vx2*(1-resist*dt) + dt*((x1+x3-2*x2)*spring);\\\\nvy2 = vy2*(1-resist*dt) + dt*((y1+y3-2*y2)*spring-grav);\\\\nvx3 = vx3*(1-resist*dt) + dt*((x2+x4-2*x3)*spring);\\\\nvy3 = vy3*(1-resist*dt) + dt*((y2+y4-2*y3)*spring-grav);\\\\nvx4 = vx4*(1-resist*dt) + dt*((x3-x4)*spring);\\\\nvy4 = vy4*(1-resist*dt) + dt*((y3-y4)*spring-grav);\\\\n\\\\nx2 = x2 + vx2;\\\\ny2 = y2 + vy2;\\\\nx3 = x3 + vx3;\\\\ny3 = y3 + vy3;\\\\nx4 = x4 + vx4;\\\\ny4 = y4 + vy4;\\\\n\\\\nvx2 = if(above(x2,0),vx2,abs(vx2)*bounce);\\\\nvx2 = if(below(x2,1),vx2,-abs(vx2)*bounce);\\\\nvx3 = if(above(x3,0),vx3,abs(vx3)*bounce);\\\\nvx3 = if(below(x3,1),vx3,-abs(vx3)*bounce);\\\\nvx4 = if(above(x4,0),vx4,abs(vx4)*bounce);\\\\nvx4 = if(below(x4,1),vx4,-abs(vx4)*bounce);\\\\nvy2 = if(above(y2,0),vy2,abs(vy2)*bounce);\\\\nvy2 = if(below(y2,1),vy2,-abs(vy2)*bounce);\\\\nvy3 = if(above(y3,0),vy3,abs(vy3)*bounce);\\\\nvy3 = if(below(y3,1),vy3,-abs(vy3)*bounce);\\\\nvy4 = if(above(y4,0),vy4,abs(vy4)*bounce);\\\\nvy4 = if(below(y4,1),vy4,-abs(vy4)*bounce);\\\\n\\\\n\\\\nq1 = x1; q2 = x2; q3 = x3; q4 = x4;\\\\nq5 = y1; q6 = y2; q7 = y3; q8 = y4;\\\\nq9 =1/ aspectX;\\\\nq10 = 1/aspectY;\\\\n\\\\nzoom = 1;\\\\nr = r*0.96 +(x1-0.5);\\\\nrot = (r*0.1);\\\\n\\\\nq12 = atan2(vx4,vy4);\\\\nq11 = sqrt(vx4*vx4 + vy4*vy4);\\\\n\\\\nzoom = 1.001;\\\\nrot = 0.00;\\\\nwarp = 0.2;\\\\nwave_a = 0;\\\",\\\"pixel_eqs_eel\\\":\\\"dir = -q12 + asin(1);\\\\n\\\\nb1 = 0.1;\\\\nm1 = q11*25;\\\\n\\\\nxx = q4;\\\\nyy = 1-q8;\\\\n\\\\n\\\\nx1 = xx  -sin(dir)*b1;\\\\ny1 = yy  -cos(dir)*b1;\\\\nx2 = xx  +sin(dir)*b1;\\\\ny2 = yy  +cos(dir)*b1;\\\\n\\\\nd1 = sqrt((x1-x)*(x1-x)+(y1-y)*(y1-y))-b1*2;\\\\nd2 = sqrt((x2-x)*(x2-x)+(y2-y)*(y2-y))-b1*2;\\\\n\\\\nsi1 = sigmoid(-d1,1000);\\\\nsi2 = sigmoid(-d2,1000);\\\\n\\\\ndx = (si1*sin(y1-y)*m1*d1  - si2*sin(y2-y)*m1*d2)*2;\\\\ndy = (-si1*sin(x1-x)*m1*d1 + si2*sin(x2-x)*m1*d2)*2;\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec2 tmpvar_1;\\\\n  tmpvar_1 = mix (uv_orig, uv, vec2(0.3, 0.3));\\\\n  vec2 tmpvar_2;\\\\n  tmpvar_2 = (texsize.zw * 3.0);\\\\n  vec2 tmpvar_3;\\\\n  tmpvar_3.x = dot (((\\\\n    (texture (sampler_blur1, (tmpvar_1 + (vec2(1.0, 0.0) * tmpvar_2))).xyz * scale1)\\\\n   + bias1) - (\\\\n    (texture (sampler_blur1, (tmpvar_1 - (vec2(1.0, 0.0) * tmpvar_2))).xyz * scale1)\\\\n   + bias1)), vec3(0.32, 0.49, 0.29));\\\\n  tmpvar_3.y = dot (((\\\\n    (texture (sampler_blur1, (tmpvar_1 + (vec2(0.0, 1.0) * tmpvar_2))).xyz * scale1)\\\\n   + bias1) - (\\\\n    (texture (sampler_blur1, (tmpvar_1 - (vec2(0.0, 1.0) * tmpvar_2))).xyz * scale1)\\\\n   + bias1)), vec3(0.32, 0.49, 0.29));\\\\n  vec4 tmpvar_4;\\\\n  tmpvar_4.w = 1.0;\\\\n  tmpvar_4.xyz = (texture (sampler_fc_main, (tmpvar_1 + (\\\\n    (tmpvar_3 * texsize.zw)\\\\n   * 9.0))) - 0.01).xyz;\\\\n  ret = tmpvar_4.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec2 uv_1;\\\\n  vec3 ret3_2;\\\\n  vec3 ret_3;\\\\n  vec2 tmpvar_4;\\\\n  tmpvar_4 = (((uv - 0.5) * vec2(-1.0, 1.0)) + 0.5);\\\\n  vec3 tmpvar_5;\\\\n  tmpvar_5 = abs(((texture (sampler_main, uv).xyz * \\\\n    clamp ((((\\\\n      (texture (sampler_blur2, uv).xyz * scale2)\\\\n     + bias2) * 2.8) - 0.13), 0.0, 1.0)\\\\n  ) - (texture (sampler_main, tmpvar_4).xyz * \\\\n    clamp ((((\\\\n      (texture (sampler_blur2, tmpvar_4).xyz * scale2)\\\\n     + bias2) * 2.8) - 0.13), 0.0, 1.0)\\\\n  )));\\\\n  ret3_2 = (tmpvar_5 * sqrt(tmpvar_5));\\\\n  ret3_2 = (ret3_2 * vec3(0.9, 1.6, 2.3));\\\\n  ret3_2 = (ret3_2 * 3.0);\\\\n  vec3 tmpvar_6;\\\\n  tmpvar_6 = pow (ret3_2, (1.0 - ret3_2));\\\\n  ret3_2 = tmpvar_6;\\\\n  uv_1 = (uv * 2.0);\\\\n  vec2 tmpvar_7;\\\\n  tmpvar_7 = floor((fract(\\\\n    (uv_1 * 0.5)\\\\n  ) * 2.0));\\\\n  uv_1 = ((fract(uv_1) * (1.0 - tmpvar_7)) + (tmpvar_7 * fract(\\\\n    (1.0 - uv_1)\\\\n  )));\\\\n  vec2 tmpvar_8;\\\\n  tmpvar_8.x = rad;\\\\n  tmpvar_8.y = uv_1.y;\\\\n  uv_1 = tmpvar_8;\\\\n  vec2 tmpvar_9;\\\\n  tmpvar_9 = ((0.5 - tmpvar_8.yx) + 0.5);\\\\n  ret_3 = (texture (sampler_main, tmpvar_8.yx).xyz * clamp ((\\\\n    (((texture (sampler_blur2, tmpvar_8.yx).xyz * scale2) + bias2) * 2.8)\\\\n   - 0.13), 0.0, 1.0));\\\\n  vec3 tmpvar_10;\\\\n  tmpvar_10 = mix (ret_3, (texture (sampler_main, tmpvar_9).xyz * clamp (\\\\n    ((((texture (sampler_blur2, tmpvar_9).xyz * scale2) + bias2) * 2.8) - 0.13)\\\\n  , 0.0, 1.0)), vec3(0.5, 0.5, 0.5));\\\\n  ret_3 = (tmpvar_10 * tmpvar_10);\\\\n  ret_3 = (ret_3 * vec3(0.9, 1.6, 2.3));\\\\n  ret_3 = (ret_3 * 3.0);\\\\n  ret_3 = (max (tmpvar_6, (0.8 * vec3(\\\\n    (0.5 * dot (ret_3, vec3(0.32, 0.49, 0.29)))\\\\n  ))) - (roam_sin.xyz * roam_cos.zxy));\\\\n  vec4 tmpvar_11;\\\\n  tmpvar_11.w = 1.0;\\\\n  tmpvar_11.xyz = ret_3;\\\\n  ret = tmpvar_11.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/shifter - dark tides bdrv mix 2.json\":\n/*!****************************************************************!*\\\n  !*** ./presets/converted/shifter - dark tides bdrv mix 2.json ***!\n  \\****************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":0,\\\"gammaadj\\\":1.35,\\\"decay\\\":1,\\\"echo_zoom\\\":2.144269,\\\"echo_alpha\\\":0.31,\\\"echo_orient\\\":3,\\\"wave_mode\\\":7,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"wave_a\\\":4.1,\\\"wave_scale\\\":5.552,\\\"wave_smoothing\\\":0.504,\\\"modwavealphastart\\\":0.71,\\\"modwavealphaend\\\":1.3,\\\"warpscale\\\":1.331,\\\"zoom\\\":0.999514,\\\"cx\\\":-1,\\\"warp\\\":0.72142,\\\"sy\\\":0.980296,\\\"wave_g\\\":0,\\\"wave_b\\\":0,\\\"ob_size\\\":0.5,\\\"ob_r\\\":1,\\\"ib_size\\\":0.5,\\\"ib_r\\\":1,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0.85,\\\"mv_r\\\":0.5,\\\"mv_g\\\":0.5,\\\"mv_b\\\":0.5,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"textured\\\":1,\\\"y\\\":0.9,\\\"rad\\\":0.15493,\\\"tex_zoom\\\":0.77977,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":5,\\\"textured\\\":1,\\\"rad\\\":0.98608,\\\"tex_ang\\\":3.14159,\\\"tex_zoom\\\":0.999794,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ang =sin(time/65) ;// ang + (bass*.2) + (time*.4);\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"textured\\\":1,\\\"x\\\":0.9,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = sin(time) * .4 + .5;\\\\n\\\\n\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"spectrum\\\":1,\\\"usedots\\\":1,\\\"additive\\\":1,\\\"scaling\\\":0.5033,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"bl = 3.8;\\\\nul = 7.9;\\\\nrate = 11.9;\\\\ncha = .01;\\\\n\\\\ngv = if(above(gv,bl),  if(below(gv,ul),  if(above(fps,rate),gv + cha,gv - cha),  ul-.1),bl+.1);\\\\n\\\\n\\\\n\\\\nmonitor = gv;\\\\n\\\\nwave_a = 0;\\\\n\\\\ntic = min(time - tin,1);\\\\ntin = time;\\\\n\\\\nra = 10;\\\\n\\\\n\\\\ntreb_avg = tic*(treb_avg*(1/tic - ra) + ra*treb);\\\\nmid_avg = tic*(mid_avg*(1/tic - ra) + ra*mid);\\\\nbass_avg = tic*(bass_avg*(1/tic - ra) + ra*bass);\\\\n\\\\nrb = 1;\\\\nvav = tic*(vav*(1/tic - rb) + rb*(bass+treb+mid)*.33333);\\\\nq1 = treb_avg;\\\\nq2 = mid_avg;\\\\nq3 = bass_avg;\\\\n\\\\ndb = bass - bass_avg;\\\\n\\\\nit = (it + tic)*below(it,1);\\\\n\\\\nrb = .5*(1/tic);\\\\nbvb = tic*(bass*rb + (1/tic-rb)*bvb);\\\\nbd = bass - bvb;\\\\n\\\\nvm = vm - tic + swi;\\\\nswi = above(bd - vm,0);\\\\n\\\\nq4 = 1-swi;\\\\n\\\\ncm = if(above(iter,30) + equal(time,0),rand(3) + 1,cm);\\\\niter = (iter + tic)*(1-above(iter,30));\\\\nq5 = if(equal(cm,0),3,cm);\\\\n\\\\ncma = if(above(itar,5) + equal(time,0),int(vav*5),cma);\\\\nitar = (itar + tic)*(1-above(itar,5));\\\\n\\\\nq6 = int(vav*5);\\\\n\\\\n\\\\ndecay=0.97;\\\\nzoom=1.01;\\\\nsx=1;sy=1;\\\",\\\"pixel_eqs_eel\\\":\\\"warp = bass;\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec3 ret_1;\\\\n  ret_1 = ((texture (sampler_main, uv_orig).xyz * vec3(0.97, 1.0, 0.97)) - vec3(0.03, 0.0, 0.03));\\\\n  vec4 tmpvar_2;\\\\n  tmpvar_2 = texture (sampler_blur1, uv_orig);\\\\n  ret_1.z = (ret_1.z + ((\\\\n    (tmpvar_2.xyz * scale1)\\\\n   + bias1).z * 0.45));\\\\n  ret_1.x = (ret_1.x + ((\\\\n    ((tmpvar_2.xyz * scale1) + bias1)\\\\n  .z * 0.05) + (\\\\n    ((texture (sampler_blur3, uv_orig).xyz * scale3) + bias3)\\\\n  .z * 0.05)));\\\\n  ret_1.z = (ret_1.z - ret_1.x);\\\\n  ret_1.y = clamp (texture (sampler_pw_main, uv_orig).y, 0.0, 1.0);\\\\n  ret_1 = (ret_1 * 0.98);\\\\n  vec4 tmpvar_3;\\\\n  tmpvar_3.w = 1.0;\\\\n  tmpvar_3.xyz = ret_1;\\\\n  ret = tmpvar_3.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec3 ret_1;\\\\n  vec3 tmpvar_2;\\\\n  tmpvar_2.z = 0.0;\\\\n  tmpvar_2.xy = texsize.zw;\\\\n  vec3 tmpvar_3;\\\\n  tmpvar_3 = (tmpvar_2 * 2.5);\\\\n  ret_1 = (texture (sampler_main, uv).xyz * 0.5);\\\\n  ret_1 = (ret_1 + (vec3(3.4, 2.38, 1.02) * (\\\\n    dot (((texture (sampler_blur1, (uv + tmpvar_3.xz)).xyz * scale1) + bias1), vec3(0.32, 0.49, 0.29))\\\\n   - \\\\n    dot (((texture (sampler_blur1, (uv - tmpvar_3.xz)).xyz * scale1) + bias1), vec3(0.32, 0.49, 0.29))\\\\n  )));\\\\n  ret_1 = (ret_1 + (vec3(0.68, 1.7, 2.38) * (\\\\n    dot (((texture (sampler_blur1, (uv + tmpvar_3.zy)).xyz * scale1) + bias1), vec3(0.32, 0.49, 0.29))\\\\n   - \\\\n    dot (((texture (sampler_blur1, (uv - tmpvar_3.zy)).xyz * scale1) + bias1), vec3(0.32, 0.49, 0.29))\\\\n  )));\\\\n  ret_1 = (ret_1 * 1.5);\\\\n  vec4 tmpvar_4;\\\\n  tmpvar_4.w = 1.0;\\\\n  tmpvar_4.xyz = ret_1;\\\\n  ret = tmpvar_4.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/shifter - escape (sigur ros).json\":\n/*!*************************************************************!*\\\n  !*** ./presets/converted/shifter - escape (sigur ros).json ***!\n  \\*************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":1,\\\"gammaadj\\\":1,\\\"decay\\\":1,\\\"echo_zoom\\\":1,\\\"echo_alpha\\\":0.5,\\\"wave_mode\\\":7,\\\"wave_brighten\\\":0,\\\"wave_a\\\":0.005,\\\"wave_scale\\\":0.167,\\\"wave_smoothing\\\":0,\\\"modwavealphastart\\\":1,\\\"modwavealphaend\\\":1,\\\"warpscale\\\":0.107,\\\"zoomexp\\\":4.10046,\\\"warp\\\":0.01,\\\"wave_x\\\":0.95,\\\"wave_y\\\":1,\\\"ob_size\\\":0.005,\\\"ob_r\\\":1,\\\"ob_g\\\":1,\\\"ob_b\\\":1,\\\"ib_size\\\":0,\\\"ib_r\\\":1,\\\"ib_g\\\":1,\\\"ib_b\\\":1,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0,\\\"mv_b\\\":0,\\\"mv_a\\\":0,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"sides\\\":34,\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"x\\\":0.75,\\\"rad\\\":0.30478,\\\"tex_ang\\\":1.5708,\\\"tex_zoom\\\":0.82773,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"vx = 0;\\\\nvy = 0;\\\",\\\"frame_eqs_eel\\\":\\\"rad = .3;\\\\ntex_zoom = .28;\\\\ntex_zoom = 1/rad*tex_zoom;\\\\n\\\\nx = .5 + sin(time*.957)*.1;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":74,\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"x\\\":0.25,\\\"rad\\\":0.45378,\\\"tex_zoom\\\":0.5033,\\\"g\\\":1,\\\"b\\\":1,\\\"b2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"rad = .3;\\\\ntex_zoom = .3;\\\\ntex_zoom = 1/rad*tex_zoom;\\\\n\\\\nx = .5 + sin(time)*.15;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":84,\\\"additive\\\":1,\\\"thickoutline\\\":1,\\\"num_inst\\\":3,\\\"rad\\\":0.01,\\\"tex_zoom\\\":0.5033,\\\"r\\\":0,\\\"b\\\":0.2,\\\"a\\\":0.6,\\\"g2\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"vx = 0;\\\\nvy = 0;\\\",\\\"frame_eqs_eel\\\":\\\"ti = q2 + instance*2.45;\\\\n\\\\nx = .5 + (.26*sin(ti*.95) + .14*sin(ti*2.80))*1.3;\\\\n//y = .5 + (.26*cos(ti*1.05) + .14*cos(ti*2.13))*.5;\\\\ny = .5;\\\\n\\\\nym = (q3 + instance*1.33)*.5;\\\\nym = ym-int(ym);\\\\n\\\\ny = y + (ym-.5)*2;\\\\n\\\\nrad = bass*bass*.25;\\\\nrad = q1*(.3+max(0,y)*.5);\\\"},{\\\"baseVals\\\":{\\\"sides\\\":74,\\\"additive\\\":1,\\\"rad\\\":0.16777,\\\"r2\\\":1,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_b\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ti = -time*.3;\\\\nx = .5 + .3*sin(ti);\\\\ny = .5 + .3*cos(ti);\\\\n\\\\nti = -time*2.3;\\\\nx = x + .2*sin(ti);\\\\ny = y + .2*cos(ti);\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"samples\\\":41,\\\"usedots\\\":1,\\\"additive\\\":1,\\\"scaling\\\":0.01,\\\"smoothing\\\":0,\\\"g\\\":0},\\\"init_eqs_eel\\\":\\\"t8 = 1;\\\\nt1 = q5;\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"x = rand(1001)*.001;\\\\ny = rand(1001)*.001;\\\\n\\\\n//r = rand(1001)*.001;\\\\ng=above(rand(1001)*.001,.9)*.5;\\\\nb = 0;\\\\nr = 0;\\\\n\\\"},{\\\"baseVals\\\":{\\\"samples\\\":61,\\\"additive\\\":1,\\\"scaling\\\":0.0124,\\\"smoothing\\\":0,\\\"b\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t8 = 1;\\\\nt1 = q5;\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"x = (sample-.5)*.02 + .2;\\\\ny = .5;\\\\nr = 1;\\\\ng = 1;\\\\nb = 1;\\\"},{\\\"baseVals\\\":{\\\"samples\\\":31,\\\"usedots\\\":1,\\\"thick\\\":1,\\\"scaling\\\":0.01303,\\\"smoothing\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t8 = 1;\\\\nt1 = q5;\\\",\\\"frame_eqs_eel\\\":\\\"t1 = q5;\\\\nt2 = q4;\\\\nt3 = q6;\\\",\\\"point_eqs_eel\\\":\\\"t8 = -t8;\\\\nd1 = 0.15 + t8*0.01 - value1*0.1*(t8+1);\\\\ndir1 = t2;\\\\ndir2 = t2*0.5 + t1*3/2 - t3*3;\\\\ndir3 = sample*asin(1)*4 + t3 - t2*5/6 + t1*3/2;\\\\n\\\\nx = 0.5 + sin(dir1)*0.1 + sin(dir2)*0.05 + sin(dir3)*d1;\\\\ny = 0.5 + cos(dir1)*0.1 + cos(dir2)*0.05 + cos(dir3)*d1;\\\\ny = (y-0.5)*1.2 + 0.5;\\\"},{\\\"baseVals\\\":{\\\"samples\\\":511,\\\"sep\\\":4,\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":0.02345,\\\"smoothing\\\":0,\\\"a\\\":0.99,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\nab = 1;\\\",\\\"frame_eqs_eel\\\":\\\"t1 = q4*0.75;\\\\nt2 = q5*0.75;\\\\nt3 = q6*0.75;\\\\nt4 = q4*0.75;\\\\nt5 = q5*0.75;\\\\nt6 = q6*0.75;\\\\nt8 = 1;\\\",\\\"point_eqs_eel\\\":\\\"\\\\npi = asin(1);\\\\nn = 80;\\\\nt8 = -t8;\\\\nrd = 0.075+0.02*(t8+1)/2;\\\\nxx = sin(sample*pi*4)*0.5 + cos(sample*pi*n)*rd*sin(sample*pi*4);\\\\nyy = cos(sample*pi*4)*0.5 + cos(sample*pi*n)*rd*cos(sample*pi*4);\\\\nzz = sin(sample*pi*n)*rd;\\\\n\\\\nd = sqrt( xx*xx + yy*yy + zz*zz)*0.004;\\\\nd1 = 1;\\\\nxx = xx*d1;\\\\nyy = yy*d1;\\\\nzz = zz*d1;\\\\n\\\\n\\\\n\\\\n\\\\nw1 = d*t4;\\\\nw2 = d*t5;\\\\nw3 = d*t6;\\\\n\\\\ns1 = sin(t1*1+w1);\\\\ns2 = sin(t2*1+w2);\\\\ns3 = sin(t3*1+w3);\\\\nc1 = cos(t1*1+w1);\\\\nc2 = cos(t2*1+w2);\\\\nc3 = cos(t3*1+w3);\\\\n\\\\nz = (c3*s1*c2 + s3*s2)*xx - (c3*s1*s2-s3*c2)*yy + c3*c1*zz;\\\\nx1 = (c1*c2*xx + c1*s2*yy - s1*zz);\\\\ny1 = ((s3*s1*c2 - c3*s2)*xx + (s3*s1*s2+c3*c2)*yy + s3*c1*zz);\\\\n\\\\na = 0.5;\\\\nzoom = 0.5*atan2(a,a+z);//0.5*(1/(z+a));\\\\nx = 0.5 + zoom*x1;\\\\ny = 0.5 + zoom*y1;\\\\n\\\\npi3 = 3.1415*2*0.3333;\\\\nt = -z*2 - time*0.8;//sample*pi*4-0*time +t4*3;\\\\nc=2;\\\\nr = sin(t)*c;\\\\n\\\\ng = sin(t+pi3)*c;\\\\n\\\\nb = sin(t-pi3)*c;\\\\n\\\\nj = 0.71;\\\\n//r = 0.5+xx*j;\\\\n//g = 0.5+yy*j;\\\\n//b = 0.5+zz*j;\\\\n\\\\nr = if(above(r,1),1,r);\\\\nr = if(below(r,0),0,r);\\\\ng = if(above(g,1),1,g);\\\\ng = if(below(g,0),0,g);\\\\nb = if(above(b,1),1,b);\\\\nb = if(below(b,0),0,b);\\\\n\\\\na = sigmoid(-z,7)+0.;\\\\n\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"zoom = 1;\\\\ndecay = 1;\\\\nwarp = 0;\\\\nwave_a = 0;\\\\n\\\\ntic = min(time-tin,.1);\\\\ntin = time;\\\\n\\\\ntb = tb + tic*bass*bass*.1 + tic*.2;\\\\nq2 = tb;\\\\n\\\\nt2 = t2 + tic*bass*bass*.2 + tic*.1;\\\\nq3 = t2;\\\\n\\\\nbav = bav + (bass-bav)*tic*.01;\\\\n\\\\nq1 = bass-bav;\\\\nq1 = pow(q1,2);\\\\nq1 = bass*bass;\\\\nq1 = q1*.5;\\\\n\\\\nmonitor = bass - bav;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec3 ret_1;\\\\n  ret_1 = clamp (((texture (sampler_pw_main, uv_orig).xyz * vec3(1.0, 1.0, 0.97)) - vec3(0.0, 0.0, 0.001)), 0.0, 1.0);\\\\n  vec4 tmpvar_2;\\\\n  tmpvar_2 = texture (sampler_pw_main, (uv_orig + ((\\\\n    (texture (sampler_noise_hq, fract(((\\\\n      ((uv_orig * texsize.xy) * texsize_noise_lq.zw)\\\\n     + rand_frame.xy) * 8.0))).xy - 0.5)\\\\n   * 6.0) * texsize.zw)));\\\\n  vec3 tmpvar_3;\\\\n  tmpvar_3 = tmpvar_2.xyz;\\\\n  float tmpvar_4;\\\\n  vec2 x_5;\\\\n  x_5 = (ret_1.xy - uv_orig);\\\\n  tmpvar_4 = sqrt(dot (x_5, x_5));\\\\n  float tmpvar_6;\\\\n  vec2 x_7;\\\\n  x_7 = (tmpvar_2.xy - uv_orig);\\\\n  tmpvar_6 = sqrt(dot (x_7, x_7));\\\\n  if ((tmpvar_4 > tmpvar_6)) {\\\\n    ret_1.xy = tmpvar_3.xy;\\\\n    ret_1.z = tmpvar_3.z;\\\\n  };\\\\n  ret_1.xy = (ret_1.xy * pow (ret_1.z, 0.01));\\\\n  vec4 tmpvar_8;\\\\n  tmpvar_8.w = 1.0;\\\\n  tmpvar_8.xyz = ret_1;\\\\n  ret = tmpvar_8.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec3 tmpvar_1;\\\\n  tmpvar_1 = texture (sampler_main, uv).zzz;\\\\n  vec4 tmpvar_2;\\\\n  tmpvar_2.w = 1.0;\\\\n  tmpvar_2.xyz = ((pow (\\\\n    mix (vec3((((texture (sampler_blur1, uv).xyz * scale1) + bias1).z + ((texture (sampler_blur3, uv).xyz * scale3) + bias3).z)), tmpvar_1, tmpvar_1)\\\\n  , vec3(8.0, 2.0, 0.8)) * 1.25) - 0.25);\\\\n  ret = tmpvar_2.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/shifter - liquid circuitry - conjugoth.json\":\n/*!***********************************************************************!*\\\n  !*** ./presets/converted/shifter - liquid circuitry - conjugoth.json ***!\n  \\***********************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":2,\\\"gammaadj\\\":1,\\\"decay\\\":1,\\\"echo_zoom\\\":1,\\\"echo_alpha\\\":0.5,\\\"wave_mode\\\":2,\\\"wave_brighten\\\":0,\\\"wave_a\\\":1,\\\"wave_scale\\\":0,\\\"wave_smoothing\\\":0.9,\\\"wave_mystery\\\":0.173,\\\"warpscale\\\":0.107,\\\"zoomexp\\\":4.10046,\\\"warp\\\":0.01,\\\"wave_g\\\":0,\\\"wave_b\\\":0,\\\"wave_x\\\":0.448,\\\"wave_y\\\":0.122,\\\"ob_size\\\":0.005,\\\"ob_r\\\":1,\\\"ob_g\\\":1,\\\"ob_b\\\":1,\\\"ib_size\\\":0,\\\"ib_r\\\":1,\\\"ib_g\\\":1,\\\"ib_b\\\":1,\\\"mv_x\\\":1,\\\"mv_y\\\":1,\\\"mv_dx\\\":0.087,\\\"mv_dy\\\":0.343,\\\"mv_l\\\":1.663,\\\"mv_r\\\":0.89,\\\"mv_g\\\":0.03,\\\"mv_b\\\":0.881,\\\"mv_a\\\":0.199,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"rad\\\":1.32775,\\\"tex_zoom\\\":0.57959,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"border_r = border_r + 1.5*sin(q2*1.13);\\\\nborder_b = border_b + 0.5*sin(q2*1.23);\\\\nborder_g = border_g + 0.5*sin(q2*1.33);\\\\n//ang = 0.503 + (bass_att * 0.04);\\\\nmy_ang = my_ang + (0.005 + (0.001 * bass));\\\\nang = my_ang;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"//begin beat code\\\\nvolume = 0.3*(bass+mid);\\\\nbeatrate = equal(beatrate,0) + (1-equal(beatrate,0))*(below(volume,0.01) + (1-below(volume,0.01))*beatrate);\\\\nlastbeat = lastbeat + equal(lastbeat,0)*time;\\\\nmeanbass_att = 0.05*(meanbass_att*19 + bass_att);\\\\npeakbass_att = max(bass_att,peakbass_att);\\\\nbeat = above(volume,0.8)*below(peakbass_att - bass_att, 0.05*peakbass_att)*above(time - lastbeat, 0.1 + 0.5*(beatrate - 0.1));\\\\nbeatrate = max(if(beat,if(below(time-lastbeat,2*beatrate),0.1*(beatrate*9 + time - lastbeat),beatrate),beatrate),0.1);\\\\n//Adjust responsiveness: To increase responsiveness, set the \\\\\\\"0.96 and \\\\\\\"0.996\\\\\\\" on the next line to slightly lower values. Higher values decrease responsiveness.\\\\npeakbass_att = beat*bass_att + (1-beat)*peakbass_att*(above(time - lastbeat, 2*beatrate)*0.96 + (1-above(time - lastbeat, 2*beatrate))*0.996);\\\\nlastbeat = beat*time + (1-beat)*lastbeat;\\\\npeakbass_att = max(peakbass_att,1.1*meanbass_att);\\\\n//end beat code\\\\n\\\\nzoom = 1;\\\\ndecay = 1;\\\\nwarp = 0;\\\\nwave_a = 0;\\\\n\\\\ntic = min(time-tin,.1);\\\\ntin = time;\\\\n\\\\nq2 = 1;\\\\n\\\\nq1=1;\\\\nvol = vol + ((alt + bass + mid)/3-vol)*tic*1;\\\\nq5 = vol*vol*vol*2;\\\\n\\\\n\\\\nq8 = sin(time)*.5;\\\\nq9 = sin(time*.75)*.5;\\\\n\\\\nsw = abs(sw - beat);\\\\nan = an + tic*.5*(1-2*sw);\\\\n\\\\n\\\\nq7 = 1+(pow(q8,2) + pow(q9,2))*1;\\\\nq10 = sin(an);\\\\nq11 = cos(an);\\\\n\\\\nsp = sp + tic*vol*vol*.5;\\\\n\\\\nq12 = sp;\\\\n\\\\nmonitor = q12;\\\\nvol2=bass+treb+mid;\\\\nmtime=mtime+vol2;\\\\nq1=3-sin(mtime*.01)*.1;\\\",\\\"pixel_eqs_eel\\\":\\\"//zoom = pow(rad,2)+.01;\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec3 ret_1;\\\\n  vec3 tmpvar_2;\\\\n  tmpvar_2 = (texture (sampler_noise_lq, ((\\\\n    ((texsize.xy * texsize_noise_lq.zw).x * uv)\\\\n   / 2.0) + q23)) + 1.0).xyz;\\\\n  vec3 tmpvar_3;\\\\n  tmpvar_3 = (((texture (sampler_blur1, uv).xyz * scale1) + bias1) - 0.3);\\\\n  vec2 tmpvar_4;\\\\n  tmpvar_4.x = (0.3 * tmpvar_3.x);\\\\n  tmpvar_4.y = tmpvar_3.y;\\\\n  ret_1 = ((-0.4 * (\\\\n    ((texture (sampler_blur1, ((uv / 4.0) + (0.4 * tmpvar_4))).xyz * scale1) + bias1)\\\\n   - \\\\n    (tmpvar_2 * 0.1)\\\\n  )) + (texture (sampler_main, (uv + \\\\n    (tmpvar_3 * 0.01)\\\\n  .xy)).xyz + (tmpvar_2 * 0.1)));\\\\n  float tmpvar_5;\\\\n  tmpvar_5 = (1.0 - ((0.01 * q28) * (q28 * rad)));\\\\n  ret_1 = (ret_1 * (0.98 * (tmpvar_5 * tmpvar_5)));\\\\n  ret_1 = (ret_1 - 0.04);\\\\n  vec4 tmpvar_6;\\\\n  tmpvar_6.w = 1.0;\\\\n  tmpvar_6.xyz = ret_1;\\\\n  ret = tmpvar_6.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec2 uv3_1;\\\\n  vec2 uvm_2;\\\\n  vec3 ret_3;\\\\n  uvm_2 = (((\\\\n    ((uv - 0.5) * q7)\\\\n   * \\\\n    (1.0/((((1.0 - \\\\n      (rad * 0.1)\\\\n    ) + (q9 * \\\\n      (uv.x - 0.5)\\\\n    )) + (q8 * (uv.y - 0.5)))))\\\\n  ) + 0.5) - 0.5);\\\\n  uvm_2 = (((\\\\n    (q10 * uvm_2)\\\\n   + \\\\n    ((vec2(1.0, -1.0) * q11) * uvm_2.yx)\\\\n  ) * aspect.yw) + 0.5);\\\\n  uvm_2 = (abs((\\\\n    fract(((uvm_2 + q12) * 0.5))\\\\n   - 0.5)) * 2.0);\\\\n  uv3_1 = (((texture (sampler_main, uvm_2).zx - 0.37) * 0.13) + uvm_2);\\\\n  vec3 tmpvar_4;\\\\n  tmpvar_4.x = (roam_cos.x * 0.3);\\\\n  tmpvar_4.y = (roam_cos.z * 0.2);\\\\n  tmpvar_4.z = (roam_sin.y * 0.4);\\\\n  ret_3 = (texture (sampler_pw_main, uvm_2).yzx + tmpvar_4);\\\\n  ret_3 = (pow (mix (vec3(\\\\n    ((((texture (sampler_blur1, uv3_1).xyz * scale1) + bias1).x + ((texture (sampler_blur3, uv3_1).xyz * scale3) + bias3).z) + (0.1 * roam_cos.y))\\\\n  ), ret_3, ret_3), vec3(0.3, 2.0, 1.0)) - 0.25);\\\\n  ret_3 = (ret_3 * ((texture (sampler_blur3, uv3_1).xyz * scale3) + bias3).y);\\\\n  vec4 tmpvar_5;\\\\n  tmpvar_5.w = 1.0;\\\\n  tmpvar_5.xyz = ret_3;\\\\n  ret = tmpvar_5.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/suksma - Hexcollie - Julian Carnival - shimmy dumb grid.json\":\n/*!****************************************************************************************!*\\\n  !*** ./presets/converted/suksma - Hexcollie - Julian Carnival - shimmy dumb grid.json ***!\n  \\****************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":1,\\\"gammaadj\\\":1,\\\"decay\\\":0.5,\\\"echo_zoom\\\":1.007,\\\"echo_orient\\\":3,\\\"wave_mode\\\":7,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":0.64,\\\"wave_smoothing\\\":0.27,\\\"warpanimspeed\\\":0.01,\\\"warpscale\\\":0.01,\\\"zoom\\\":9.86086,\\\"warp\\\":0.01,\\\"wave_r\\\":0.5,\\\"wave_g\\\":0.5,\\\"wave_b\\\":0.5,\\\"wave_y\\\":0.96,\\\"ob_size\\\":0.015,\\\"ob_r\\\":0.84,\\\"ob_g\\\":0.7,\\\"ob_b\\\":1,\\\"ob_a\\\":0.18,\\\"ib_size\\\":0.5,\\\"ib_r\\\":0.98,\\\"ib_g\\\":0.27,\\\"ib_b\\\":0.24,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":32,\\\"rad\\\":0.2,\\\"b\\\":0.4,\\\"a\\\":0.5,\\\"a2\\\":0.2,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ang = time*0.4;;\\\\nx = 0.5 + 0.3*cos(time*1.23) + 0.03*cos(time*0.7);\\\\ny = 0.5 + 0.3*sin(time*1.43) + 0.03*sin(time*0.7);\\\\nr =0.5 + 0.5*sin(q8*0.613 + 1);\\\\ng = 0.5 + 0.5*sin(q8*0.763 + 2);\\\\nb = 0.5 + 0.5*sin(q8*0.771 + 5);\\\\nr2 = 0.5 + 0.5*sin(q8*0.635 + 4);\\\\ng2 = 0.5 + 0.5*sin(q8*0.616+ 1);\\\\nb2 = 0.5 + 0.5*sin(q8*0.538 + 3);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":32,\\\"rad\\\":0.2,\\\"a\\\":0.5,\\\"a2\\\":0.2},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ang = time*0.4;;\\\\nx = 0.5 + 0.3*cos(time*1.104) + 0.03*cos(time*0.7);\\\\ny = 0.5 + 0.3*sin(time*1.27) + 0.03*sin(time*0.7);\\\\nr =0.5 + 0.5*sin(q8*0.613 + 1);\\\\ng = 0.5 + 0.5*sin(q8*0.763 + 2);\\\\nb = 0.5 + 0.5*sin(q8*0.771 + 5);\\\\nr2 = 0.5 + 0.5*sin(q8*0.635 + 4);\\\\ng2 = 0.5 + 0.5*sin(q8*0.616+ 1);\\\\nb2 = 0.5 + 0.5*sin(q8*0.538 + 3);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"rad\\\":0.2,\\\"a\\\":0.5,\\\"a2\\\":0.2},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ang = time*0.4;;\\\\nx = 0.5 + 0.3*cos(time*1.23) + 0.03*cos(time*0.9);\\\\ny = 0.5 + 0.3*sin(time*1.18) + 0.03*sin(time*0.9);\\\\nr =0.5 + 0.5*sin(q8*0.413 + 1);\\\\ng = 0.5 + 0.5*sin(q8*0.363 + 2);\\\\nb = 0.5 + 0.5*sin(q8*0.871 + 5);\\\\nr2 = 0.5 + 0.5*sin(q8*0.835 + 4);\\\\ng2 = 0.5 + 0.5*sin(q8*0.686+ 1);\\\\nb2 = 0.5 + 0.5*sin(q8*0.938 + 3);\\\\nsides = 360;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"mv_x=64;mv_y=48;\\\\nnut=0;\\\\nstp=0;stq=0;\\\\nrtp=0;rtq=0;\\\\nwvr=0;\\\\ndecay=0;\\\\ndcsp=0\\\",\\\"frame_eqs_eel\\\":\\\"//per frame less reactive volume for all unused q vars, put before other q vars are set for cop out mashing\\\\nvb = vb*0.95 + (1-vb)*pow(bass_att*treb_att*mid_att,2)*0.02;\\\\nvvb = vvb*0.95 + (1-vvb)*vb*0.01;\\\\nvm = vm*0.95 + (1-vm)*pow(mid_att,2)*0.02;\\\\nvvm = vvm*0.95 + (1-vvm)*vm*0.01;\\\\nvt = vt*0.95 + (1-vt)*pow(treb_att,2)*0.02;\\\\nvvt = vvt*0.95 + (1-vvt)*vt*0.01;\\\\nvvb = min(1,max(0,vvb));\\\\nvvm = min(1,max(0,vvm));\\\\nvvt = min(1,max(0,vvt));\\\\nq1 = vvb*2;//0.5 + vb - vvb;\\\\nq2 = vvm*2;//0.5 + vm - vvm;\\\\nq3 = vvt*2;//0.5 + vt - vvt;\\\\nv=2;\\\\nbb = bb - vvb*v;\\\\nmm = mm - vvm*v;\\\\ntt = tt - vvt*v;\\\\nq4 = -bb;\\\\nq5 = -mm;\\\\nq6 = -tt;\\\\nq4=(q1+q2+q3)*5;\\\\nq5=(q1+q2+q3)*5;\\\\nq6=(q1+q2+q3)*5;\\\\nq7=(q1+q2+q3)*1;\\\\nq8=(q1+q2+q3)*5;\\\\nq9=(q1+q2+q3)*5;\\\\nq10=(q1+q2+q3)*5;\\\\nq11=(q1+q2+q3)*5;\\\\nq12=(q1+q2+q3)*5;\\\\nq13=(q1+q2+q3)*5;\\\\nq14=(q1+q2+q3)*5;\\\\nq15=(q1+q2+q3)*5;\\\\nq16=(q1+q2+q3)*5;\\\\nq17=(q1+q2+q3)*5;\\\\nq18=(q1+q2+q3)*5;\\\\nq19=(q1+q2+q3)*5;\\\\nq20=(q1+q2+q3)*5;\\\\nq21=(q1+q2+q3)*5;\\\\nq22=(q1+q2+q3)*5;\\\\nq23=(q1+q2+q3)*5;\\\\nq24=(q1+q2+q3)*5;\\\\nq25=(q1+q2+q3)*5;\\\\nq26=(q1+q2+q3)*5;\\\\nq27=(q1+q2+q3)*5;\\\\nq28=(q1+q2+q3)*5;\\\\nq29=(q1+q2+q3)*5;\\\\nq30=(q1+q2+q3)*5;\\\\nq31=(q1+q2+q3)*5;\\\\nq32=(q1+q2+q3)*5;\\\\n\\\\necho_orient=1 + above(sin(time/2), 0 );\\\\nwrap=above(sin(time/1), 0 );\\\\nwarp=0.0;\\\\nzoom=1.00 + sin(time/1)/30;\\\\nmv_x=sin(time/10)*12 + 52;\\\\nmv_y=cos(time/10)*8 + 40;\\\\nsparkadv=sparkadv-0.03 + below(sparkadv, 1);\\\\ngamma=1 + bass*bass_att\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n  float conway_1;\\\\n  vec3 ret_2;\\\\n  vec2 tmpvar_3;\\\\n  tmpvar_3.x = (((\\\\n    ((texture (sampler_blur2, (uv + vec2(0.02, 0.0))).xyz * scale2) + bias2)\\\\n   - \\\\n    ((texture (sampler_blur2, (uv - vec2(0.02, 0.0))).xyz * scale2) + bias2)\\\\n  ).y * 1280.0) * texsize.z);\\\\n  tmpvar_3.y = (((\\\\n    ((texture (sampler_blur2, (uv + vec2(0.0, 0.02))).xyz * scale2) + bias2)\\\\n   - \\\\n    ((texture (sampler_blur2, (uv - vec2(0.0, 0.02))).xyz * scale2) + bias2)\\\\n  ).y * 1024.0) * texsize.w);\\\\n  ret_2.y = texture (sampler_pc_main, (uv - (tmpvar_3 * 0.004))).y;\\\\n  ret_2.y = (ret_2.y + ((\\\\n    ((ret_2.y - ((texture (sampler_blur1, uv).xyz * scale1) + bias1).y) - 0.1)\\\\n   * 0.1) + 0.02));\\\\n  vec2 tmpvar_4;\\\\n  tmpvar_4 = (vec2(0.0, 1.0) * texsize.zw);\\\\n  ret_2.z = (texture (sampler_fc_main, (uv - tmpvar_4)).z - 0.004);\\\\n  conway_1 = (texture (sampler_pw_main, (uv_orig - texsize.zw)).x + texture (sampler_pw_main, (uv_orig + (vec2(0.0, -1.0) * texsize.zw))).x);\\\\n  conway_1 = (conway_1 + texture (sampler_pw_main, (uv_orig + (vec2(1.0, -1.0) * texsize.zw))).x);\\\\n  conway_1 = (conway_1 + texture (sampler_pw_main, (uv_orig + (vec2(-1.0, 0.0) * texsize.zw))).x);\\\\n  conway_1 = (conway_1 + texture (sampler_pw_main, (uv_orig + (vec2(1.0, 0.0) * texsize.zw))).x);\\\\n  conway_1 = (conway_1 + texture (sampler_pw_main, (uv_orig + (vec2(-1.0, 1.0) * texsize.zw))).x);\\\\n  conway_1 = (conway_1 + texture (sampler_pw_main, (uv_orig + tmpvar_4)).x);\\\\n  conway_1 = (conway_1 + texture (sampler_pw_main, (uv_orig + texsize.zw)).x);\\\\n  conway_1 = (conway_1 - fract(conway_1));\\\\n  float tmpvar_5;\\\\n  tmpvar_5 = clamp (texture (sampler_pc_main, uv_orig).x, 0.0, 1.0);\\\\n  ret_2.x = (clamp ((1.0 - \\\\n    abs((conway_1 - 3.0))\\\\n  ), 0.0, 1.0) * (1.0 - tmpvar_5));\\\\n  ret_2.x = (ret_2.x + (clamp (\\\\n    max ((1.0 - abs((conway_1 - 2.0))), (1.0 - abs((conway_1 - 3.0))))\\\\n  , 0.0, 1.0) * tmpvar_5));\\\\n  vec4 tmpvar_6;\\\\n  tmpvar_6.w = 1.0;\\\\n  tmpvar_6.xyz = ret_2;\\\\n  ret = tmpvar_6.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec2 moebius_1;\\\\n  vec3 ret_2;\\\\n  vec2 tmpvar_3;\\\\n  tmpvar_3.x = q11;\\\\n  tmpvar_3.y = q12;\\\\n  vec2 tmpvar_4;\\\\n  tmpvar_4.x = q17;\\\\n  tmpvar_4.y = q18;\\\\n  vec2 tmpvar_5;\\\\n  vec2 tmpvar_6;\\\\n  tmpvar_6 = (uv - 0.5);\\\\n  tmpvar_5 = (tmpvar_6 * aspect.xy);\\\\n  vec2 tmpvar_7;\\\\n  tmpvar_7.x = ((tmpvar_5.x * q15) - (tmpvar_5.y * q16));\\\\n  tmpvar_7.y = ((tmpvar_5.x * q16) - (tmpvar_5.y * q15));\\\\n  vec2 tmpvar_8;\\\\n  tmpvar_8 = (tmpvar_7 + tmpvar_4);\\\\n  vec2 tmpvar_9;\\\\n  tmpvar_9.x = ((q13 * tmpvar_8.x) + (q14 * tmpvar_8.y));\\\\n  tmpvar_9.y = ((q14 * tmpvar_8.x) - (q13 * tmpvar_8.y));\\\\n  moebius_1 = (((tmpvar_9 / \\\\n    ((tmpvar_8.x * tmpvar_8.x) + (tmpvar_8.y * tmpvar_8.y))\\\\n  ) + tmpvar_3) * 0.5);\\\\n  float tmpvar_10;\\\\n  tmpvar_10 = sqrt(dot (moebius_1, moebius_1));\\\\n  moebius_1 = (0.5 + ((\\\\n    (1.0 - abs(((\\\\n      fract((moebius_1 * 0.5))\\\\n     * 2.0) - 1.0)))\\\\n   - 0.5) * 0.95));\\\\n  vec2 tmpvar_11;\\\\n  tmpvar_11 = (0.5 + (tmpvar_6 * 0.2));\\\\n  ret_2 = (texture (sampler_main, tmpvar_11).z * vec3(0.4, 0.0, 0.7));\\\\n  ret_2 = (mix (ret_2, vec3(0.0, 1.0, 1.0), vec3(clamp (texture (sampler_fc_main, moebius_1).y, 0.0, 1.0))) * (1.4 - pow (\\\\n    (tmpvar_10 * 0.8)\\\\n  , 0.3)));\\\\n  ret_2 = (mix (mix (\\\\n    mix (ret_2, vec3(4.0, 1.0, 0.0), vec3(((clamp (\\\\n      (texture (sampler_fc_main, tmpvar_11).y - texture (sampler_pc_main, tmpvar_11).y)\\\\n    , 0.0, 1.0) * 4.0) * (tmpvar_10 * tmpvar_10))))\\\\n  , vec3(-4.0, -4.0, -4.0), texture (sampler_main, tmpvar_11).xxx), vec3(2.0, 2.0, 2.0), vec3((texture (sampler_pc_main, tmpvar_11).x * 0.75))) - (roam_sin.zyx * roam_cos.ywx));\\\\n  vec4 tmpvar_12;\\\\n  tmpvar_12.w = 1.0;\\\\n  tmpvar_12.xyz = ret_2;\\\\n  ret = tmpvar_12.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/suksma - Rovastar - Sunflower Passion (Enlightment Mix)_Phat_edit + flexi und martin shaders - circumflex in character classes in regular expression.json\":\n/*!*************************************************************************************************************************************************************************************!*\\\n  !*** ./presets/converted/suksma - Rovastar - Sunflower Passion (Enlightment Mix)_Phat_edit + flexi und martin shaders - circumflex in character classes in regular expression.json ***!\n  \\*************************************************************************************************************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":4,\\\"gammaadj\\\":1.98,\\\"echo_zoom\\\":2.448,\\\"echo_alpha\\\":0.5,\\\"wave_thick\\\":1,\\\"wrap\\\":0,\\\"wave_a\\\":3.645,\\\"wave_scale\\\":1.951,\\\"wave_smoothing\\\":0.5,\\\"wave_mystery\\\":-0.5,\\\"warpscale\\\":2.853,\\\"zoomexp\\\":2.1,\\\"zoom\\\":1.025,\\\"warp\\\":1.29077,\\\"wave_g\\\":0,\\\"wave_b\\\":0,\\\"ob_size\\\":0,\\\"ob_a\\\":1,\\\"ib_size\\\":0,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0,\\\"mv_b\\\":0,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"rad\\\":0.13518,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":1},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = 0.3 + 0.05*sin(0.89*q8);\\\\ny = 0.4 - 0.05*cos(0.77*q8);\\\\n\\\\nr = 0.25+0.25*sin(time*0.7679);\\\\ng = 0.25+0.25*sin(time*0.8079);\\\\nb = 0.25+0.25*sin(time*0.7339);\\\\nr2 = 0.25+0.25*sin(time*0.6979);\\\\ng2 = 0.25+0.25*sin(time*0.849);\\\\nb2 = 0.25+0.25*sin(time*0.8079);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"rad\\\":0.06623,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":1},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = 0.3 - 0.05*sin(0.7089*q8);\\\\ny = 0.4 + 0.05*cos(0.5077*q8);\\\\n\\\\nr = 0.25+0.25*sin(time*0.6479);\\\\ng = 0.25+0.25*sin(time*0.5079);\\\\nb = 0.25+0.25*sin(time*0.9339);\\\\nr2 = 0.25+0.25*sin(time*0.779);\\\\ng2 = 0.25+0.25*sin(time*0.707);\\\\nb2 = 0.25+0.25*sin(time*0.747);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"rad\\\":0.03646,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":1},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = 0.3 + 0.05*sin(0.679*q8);\\\\ny = 0.4 - 0.05*cos(0.877*q8);\\\\n\\\\nr = 0.25+0.25*sin(time*0.5679);\\\\ng = 0.25+0.25*sin(time*0.4079);\\\\nb = 0.25+0.25*sin(time*1.1339);\\\\nr2 = 0.25+0.25*sin(time*0.9979);\\\\ng2 = 0.25+0.25*sin(time*0.891);\\\\nb2 = 0.25+0.25*sin(time*0.713);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"rad\\\":0.0122,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":1},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = 0.3 + 0.05*sin(0.916*q8);\\\\ny = 0.4 - 0.05*cos(0.977*q8);\\\\n\\\\nr = 0.25+0.25*sin(time*1.1679);\\\\ng = 0.25+0.25*sin(time*1.18079);\\\\nb = 0.25+0.25*sin(time*1.17339);\\\\nr2 = 0.25+0.25*sin(time*1.16979);\\\\ng2 = 0.25+0.25*sin(time*1.1849);\\\\nb2 = 0.25+0.25*sin(time*1.81079);\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"//per frame less reactive volume for all unused q vars, put before other q vars are set for cop out mashing\\\\nvb = vb*0.95 + (1-vb)*pow(bass_att,2)*0.02;\\\\nvvb = vvb*0.95 + (1-vvb)*vb*0.01;\\\\nvm = vm*0.95 + (1-vm)*pow(mid_att,2)*0.02;\\\\nvvm = vvm*0.95 + (1-vvm)*vm*0.01;\\\\nvt = vt*0.95 + (1-vt)*pow(treb_att,2)*0.02;\\\\nvvt = vvt*0.95 + (1-vvt)*vt*0.01;\\\\nvvb = min(1,max(0,vvb));\\\\nvvm = min(1,max(0,vvm));\\\\nvvt = min(1,max(0,vvt));\\\\nq1 = vvb*2;//0.5 + vb - vvb;\\\\nq2 = vvm*2;//0.5 + vm - vvm;\\\\nq3 = vvt*2;//0.5 + vt - vvt;\\\\nq4=(q1+q2+q3)*5;\\\\nq5=(q1+q2+q3)*5;\\\\nq6=(q1+q2+q3)*5;\\\\nq7=(q1+q2+q3)*5;\\\\nq8=(q1+q2+q3)*5;\\\\nq9=(q1+q2+q3)*5;\\\\nq10=(q1+q2+q3)*5;\\\\nq11=(q1+q2+q3)*5;\\\\nq12=(q1+q2+q3)*5;\\\\nq13=(q1+q2+q3)*5;\\\\nq14=(q1+q2+q3)*5;\\\\nq15=(q1+q2+q3)*5;\\\\nq16=(q1+q2+q3)*5;\\\\nq17=(q1+q2+q3)*5;\\\\nq18=(q1+q2+q3)*5;\\\\nq19=(q1+q2+q3)*5;\\\\nq20=(q1+q2+q3)*5;\\\\nq21=(q1+q2+q3)*5;\\\\nq22=(q1+q2+q3)*5;\\\\nq23=(q1+q2+q3)*5;\\\\nq24=(q1+q2+q3)*5;\\\\nq25=(q1+q2+q3)*5;\\\\nq26=(q1+q2+q3)*5;\\\\nq27=(q1+q2+q3)*5;\\\\nq28=(q1+q2+q3)*5;\\\\nq29=(q1+q2+q3)*5;\\\\nq30=(q1+q2+q3)*5;\\\\nq31=(q1+q2+q3)*5;\\\\nq32=(q1+q2+q3)*5;\\\\n\\\\n//wave_r = 0.0 + 0.000*( 0.60*sin(0.933*time) + 0.40*sin(1.045*time) );\\\\n//wave_g = 0.0 + 0.000*( 0.60*sin(0.900*time) + 0.40*sin(0.956*time) );\\\\n//wave_b = 0.0 + 0.000*( 0.60*sin(0.910*time) + 0.40*sin(0.920*time) );\\\\n//zoom = zoom + 0.01*( 0.60*sin(0.339*time) + 0.40*sin(0.276*time) );\\\\n//rot = rot + 0.010*( 0.60*sin(0.381*time) + 0.40*sin(0.579*time) );\\\\n//decay = decay - 0.01*equal(frame%6,0);\\\\nwarp=0;\\\\n//zoom =1;\\\\nrot =0;\\\\ncx=0.5;\\\\ncy=0.5;\\\\nq1 = 0.5 + 0.1*sin(time);\\\\nq2 = 0.5 - 0.1*cos(time);\\\\nwave_a =0;\\\\ndecay=.95;\\\\nq1=0.5 +0.1*sin(q8);\\\\nq2=0.5;\\\\n\\\\n\\\\nq8 = oldq8+ 0.003*(pow(1+1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps);\\\\noldq8 =q8;\\\\nmybass  = mybass + 0.01*(bass + bass_att);\\\\n\\\\n//rot =1 + 0.15*sin(mybass*0.1789);\\\\n//zoom = 1.6 + 0.1*sin(mybass*0.786);\\\\nzoom = 1.09;\\\\n//rot =0.12;\\\\n//cx = 0.4;\\\\n//cy = 0.4;\\\\nq1=0.5 +0.00*sin(0.12*q8);\\\\nq2=0.5 -0.00*cos(0.177*q8);\\\",\\\"pixel_eqs_eel\\\":\\\"myx = (x-q1)*1.1;\\\\nmyy= (y-q2)*1.1;\\\\nmyrad = (myx*myx) + (myy*myy);\\\\ndx = (0.5+0.02*sin(q8))*(myy/(myrad+1));\\\\ndy = -(0.5+0.02*sin(q8*0.897))*(myx/(myrad+1));\\\\nrd=bass*rad;\\\\nrot=rd/10;\\\\n\\\\nsy=1.02+(rad/10);\\\\nsx=sy-myrad;\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec2 tmpvar_1;\\\\n  tmpvar_1 = ((uv_orig - 0.5) * vec2(1.81, 1.81));\\\\n  vec2 tmpvar_2;\\\\n  tmpvar_2.x = ((tmpvar_1.x * tmpvar_1.x) - (tmpvar_1.y * tmpvar_1.y));\\\\n  tmpvar_2.y = ((2.0 * tmpvar_1.x) * tmpvar_1.y);\\\\n  vec4 tmpvar_3;\\\\n  tmpvar_3.w = 1.0;\\\\n  tmpvar_3.xyz = (texture (sampler_fc_main, (tmpvar_2 + vec2(0.448, 0.701))) - 0.004).xyz;\\\\n  ret = tmpvar_3.xyz;\\\\n }\\\",\\\"comp\\\":\\\"vec3 xlat_mutableneu;\\\\nvec3 xlat_mutableret1;\\\\n shader_body { \\\\n  vec2 uv_1;\\\\n  float inten_2;\\\\n  float dist_3;\\\\n  vec2 uv2_4;\\\\n  uv_1 = (uv - 0.5);\\\\n  uv_1 = (uv_1 * aspect.xy);\\\\n  float tmpvar_5;\\\\n  tmpvar_5 = (time / 2.0);\\\\n  dist_3 = (1.0 - fract(tmpvar_5));\\\\n  inten_2 = ((sqrt(dist_3) * (1.0 - dist_3)) * 8.0);\\\\n  vec2 tmpvar_6;\\\\n  tmpvar_6.x = q1;\\\\n  tmpvar_6.y = q2;\\\\n  vec2 tmpvar_7;\\\\n  tmpvar_7 = fract(((\\\\n    ((3.0 * uv_1) * dist_3)\\\\n   + 0.5) + (tmpvar_6 * 0.05)));\\\\n  xlat_mutableneu = (texture (sampler_main, tmpvar_7).xyz - ((texture (sampler_blur1, \\\\n    (tmpvar_7 + 0.003)\\\\n  ).xyz * scale1) + bias1));\\\\n  xlat_mutableret1 = max (vec3(0.0, 0.0, 0.0), (xlat_mutableneu * inten_2));\\\\n  uv2_4.x = ((uv_1.x * -0.4990803) - (uv_1.y * 0.8665558));\\\\n  uv2_4.y = ((uv_1.x * 0.8665558) + (uv_1.y * -0.4990803));\\\\n  dist_3 = (1.0 - fract((0.3333333 + tmpvar_5)));\\\\n  inten_2 = ((sqrt(dist_3) * (1.0 - dist_3)) * 8.0);\\\\n  vec2 tmpvar_8;\\\\n  tmpvar_8.x = q1;\\\\n  tmpvar_8.y = q2;\\\\n  vec2 tmpvar_9;\\\\n  tmpvar_9 = fract(((\\\\n    ((3.0 * uv2_4) * dist_3)\\\\n   + 0.5) + (tmpvar_8 * 0.05)));\\\\n  xlat_mutableneu = (texture (sampler_main, tmpvar_9).xyz - ((texture (sampler_blur1, \\\\n    (tmpvar_9 + 0.003)\\\\n  ).xyz * scale1) + bias1));\\\\n  xlat_mutableret1 = max (xlat_mutableret1, (xlat_mutableneu * inten_2));\\\\n  uv2_4.x = ((uv_1.x * -0.5018377) - (uv_1.y * -0.8649619));\\\\n  uv2_4.y = ((uv_1.x * -0.8649619) + (uv_1.y * -0.5018377));\\\\n  dist_3 = (1.0 - fract((0.6666667 + tmpvar_5)));\\\\n  inten_2 = ((sqrt(dist_3) * (1.0 - dist_3)) * 8.0);\\\\n  vec2 tmpvar_10;\\\\n  tmpvar_10.x = q1;\\\\n  tmpvar_10.y = q2;\\\\n  vec2 tmpvar_11;\\\\n  tmpvar_11 = fract(((\\\\n    ((3.0 * uv2_4) * dist_3)\\\\n   + 0.5) + (tmpvar_10 * 0.05)));\\\\n  xlat_mutableneu = (texture (sampler_main, tmpvar_11).xyz - ((texture (sampler_blur1, \\\\n    (tmpvar_11 + 0.003)\\\\n  ).xyz * scale1) + bias1));\\\\n  xlat_mutableret1 = max (xlat_mutableret1, (xlat_mutableneu * inten_2));\\\\n  uv2_4.x = ((uv_1.x * 0.9999949) - (uv_1.y * -0.003185092));\\\\n  uv2_4.y = ((uv_1.x * -0.003185092) + (uv_1.y * 0.9999949));\\\\n  dist_3 = (1.0 - fract((1.0 + tmpvar_5)));\\\\n  inten_2 = ((sqrt(dist_3) * (1.0 - dist_3)) * 8.0);\\\\n  vec2 tmpvar_12;\\\\n  tmpvar_12.x = q1;\\\\n  tmpvar_12.y = q2;\\\\n  vec2 tmpvar_13;\\\\n  tmpvar_13 = fract(((\\\\n    ((3.0 * uv2_4) * dist_3)\\\\n   + 0.5) + (tmpvar_12 * 0.05)));\\\\n  xlat_mutableneu = (texture (sampler_main, tmpvar_13).xyz - ((texture (sampler_blur1, \\\\n    (tmpvar_13 + 0.003)\\\\n  ).xyz * scale1) + bias1));\\\\n  xlat_mutableret1 = max (xlat_mutableret1, (xlat_mutableneu * inten_2));\\\\n  vec4 tmpvar_14;\\\\n  tmpvar_14.w = 1.0;\\\\n  tmpvar_14.xyz = (xlat_mutableret1 * 4.0);\\\\n  ret = tmpvar_14.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/suksma - ed geining hateops - squeakers.json\":\n/*!************************************************************************!*\\\n  !*** ./presets/converted/suksma - ed geining hateops - squeakers.json ***!\n  \\************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1.7,\\\"decay\\\":1,\\\"echo_zoom\\\":2.221,\\\"echo_alpha\\\":0.6,\\\"wave_mode\\\":3,\\\"additivewave\\\":1,\\\"wave_thick\\\":1,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":0.625,\\\"wave_smoothing\\\":0.9,\\\"modwavealphastart\\\":0.88,\\\"modwavealphaend\\\":1.98,\\\"warpanimspeed\\\":0.01,\\\"warpscale\\\":0.01,\\\"fshader\\\":1,\\\"dx\\\":0.005,\\\"warp\\\":0.01,\\\"sx\\\":0.9999,\\\"sy\\\":1.0018,\\\"wave_r\\\":0,\\\"wave_g\\\":0,\\\"wave_b\\\":0,\\\"ob_size\\\":0,\\\"ob_g\\\":0.8,\\\"ob_b\\\":0.7,\\\"ib_size\\\":0.005,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0.3,\\\"mv_x\\\":0,\\\"mv_y\\\":0,\\\"mv_l\\\":1,\\\"mv_r\\\":0.39,\\\"mv_g\\\":0.44,\\\"mv_b\\\":0.9},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"sides\\\":16,\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"rad\\\":0.97235,\\\"ang\\\":0.1884,\\\"tex_ang\\\":0.62832,\\\"tex_zoom\\\":0.77829,\\\"g\\\":1,\\\"b\\\":1,\\\"a\\\":0.9,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":0.5,\\\"border_r\\\":0.59,\\\"border_g\\\":0.81,\\\"border_b\\\":0.69,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"//DMT=1-below((bass_att+mid_att+treb_att)/3,0.7);\\\\n//a=DMT;\\\\n//a2=.5*DMT;\\\\n//border_a=0.4*DMT;\\\\n//atime=atime+(above( sin(time),0 )*0.02 );\\\\n//ang=0.188+((sin(atime/5)*0.5+0.5)*2.39);\\\\n//x=(sin(atime*0.3)*0.07)+0.5;\\\\n//y=(cos(atime*0.1)*0.07)+0.5;\\\\n//rad=((bass+mid+treb)/6)*1.4+0.2;\\\\n//sides=bass*16\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":5,\\\"thickoutline\\\":1,\\\"rad\\\":0.4149,\\\"tex_ang\\\":0.25133,\\\"tex_zoom\\\":1.136,\\\"r\\\":0.36,\\\"g2\\\":0,\\\"b2\\\":0.2,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\\nadv=adv+(bass*bass)/15;\\\\n\\\\nr=int(rand(10))*0.1*0.5+0.5;\\\\ng=r;\\\\nb=r;\\\\n\\\\nx=int(rand(100))*0.01*0.5 + 0.25;\\\\ny=int(rand(100))*0.01*0.5 + 0.25;\\\\nrad=int(rand(100))*0.01*0.4+0.1;\\\\nang=rad\\\"},{\\\"baseVals\\\":{\\\"sides\\\":24,\\\"textured\\\":1,\\\"x\\\":0.2,\\\"y\\\":0.8,\\\"rad\\\":0.59958,\\\"tex_ang\\\":1.25664,\\\"tex_zoom\\\":0.49831,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"textured\\\":1,\\\"x\\\":0.86,\\\"y\\\":0.2,\\\"rad\\\":0.80814,\\\"tex_zoom\\\":0.45112,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":0.9,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"sep\\\":256,\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":100,\\\"smoothing\\\":0.9,\\\"r\\\":0,\\\"g\\\":0.7,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"x=cos(time)*0.1;\\\\ny=sin(time)*0.1\\\"},{\\\"baseVals\\\":{\\\"scaling\\\":81.95444,\\\"smoothing\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"wave_x=1;\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"mv_x=64;mv_y=48;\\\\nnut=0;\\\\nstp=0;stq=0;\\\\nrtp=0;rtq=0;\\\\nwvr=0;\\\\ndecay=0;\\\\ndcsp=0\\\",\\\"frame_eqs_eel\\\":\\\"chng=sin(time*.5);\\\\ncthr=.9999;\\\\nmq21=if(above(chng,cthr),rand(3),mq21);\\\\nmq22=if(above(chng,cthr),rand(3),mq22);\\\\nmq23=if(above(chng,cthr),rand(3),mq23);\\\\nmq24=if(above(chng,cthr),rand(2),mq24);\\\\nmq25=if(above(chng,cthr),rand(2),mq25);\\\\nmq26=if(above(chng,cthr),rand(2),mq26);\\\\nmq27=if(above(chng,cthr),rand(1),mq27);\\\\nmq28=if(above(chng,cthr),rand(1),mq28);\\\\nmq29=if(above(chng,cthr),rand(1)*.3,mq29);\\\\nmq31=if(above(chng,cthr),rand(1)*.3,mq31);\\\\nmonitor=chng;\\\\nq21=mq21;q22=mq22;q23=mq23;q24=mq24;q25=mq25;q26=mq26;\\\\nq27=mq27;q28=mq28;q29=mq29;q31=mq31;\\\\n\\\\nmonitor=mq1;\\\\nvol=bass+treb+mid;\\\\natime=atime+vol;\\\\nq11=.4+sin(atime*.006        )*.4;\\\\nq12=.4+cos(atime*.00613828348)*.4;\\\\nq13=.4+sin(atime*.00598593455)*.4;\\\\nmonitor=q13;\\\\n\\\\ndecay=1.0;\\\\nzoom=1.009;\\\\ndx=0;dy=0;sx=1.000001;sy=0.999999;\\\\n\\\\nmv_r=.360+(((cos(time/5)*0.3)+0.5*0.5)*0.1);\\\\nmv_g=.390+(((sin(time/7)*0.3)+0.5*0.5)*0.1);\\\\nmv_b=.500+((sin((time/7)+0.9)+0.5*0.5)*0.1);\\\\n\\\\n\\\\ncx=-1;cy=2;rot=-treb*0.002;\\\\n\\\\ncx=sin(time*0.1)*1.5 + 0.5;\\\\ncy=cos(time*0.2)*1.5 + 0.5\\\",\\\"pixel_eqs_eel\\\":\\\"//adv=min( (bass*bass*bass), 1);\\\\n//warp=1*((( atan(time/3) *0.5+0.5)*3)* (x*rad)*2 )+( (y*ang)*2 )*rad;\\\\n//warp=warp*adv;\\\\n\\\\n//dx=cos(y)*0.005*(rad+2)*treb ;\\\\n//dy=sin(x)*0.005*(rad+2)*treb\\\\n\\\\n//Do people that don't do drugs make shit like this??\\\\n//flexi per vertex\\\\ncx1 = 0.5+sin(time*0.618)*0.2;\\\\ncy1 = 0.5+cos(time*1.618)*0.2;\\\\ndir = bass;\\\\nd = sqrt((x-cx1)*(x-cx1)+(y-cy1)*(y-cy1));\\\\nx1 = if( above(d,0.3),0,  sin(y-cy1)*0.05*dir);\\\\ny1 = if( above(d,0.3),0, -sin(x-cx1)*0.05*dir);\\\\ncx1 = 0.5+sin(time*2.618)*0.3;\\\\ncy1 = 0.5+cos(time*3.14)*0.3;\\\\ndir = -mid*2;\\\\nd = sqrt((x-cx1)*(x-cx1)+(y-cy1)*(y-cy1));\\\\nx2 = if( above(d,0.2),0,  sin(y-cy1)*0.05*dir);\\\\ny2 = if( above(d,0.2),0, -sin(x-cx1)*0.05*dir);\\\\ncx1 = 0.5+sin(-time*2.618)*0.4;\\\\ncy1 = 0.5+cos(-time*1.14)*0.4;\\\\ndir = treb*3;\\\\nd = sqrt((x-cx1)*(x-cx1)+(y-cy1)*(y-cy1));\\\\nx3 = if( above(d,0.1),0,  sin(y-cy1)*0.05*dir);\\\\ny3 = if( above(d,0.1),0, -sin(x-cx1)*0.05*dir);\\\\ndx = dx+x1+x2+x3;\\\\ndy = dy+y1+y2+y3;\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec2 uv_1;\\\\n  vec3 ret_2;\\\\n  vec2 tmpvar_3;\\\\n  tmpvar_3 = (((uv_orig * texsize.xy) * (texsize_noise_lq.zw * 1.5)) + rand_frame.xy);\\\\n  uv_1 = (mix (uv_orig, uv, vec2((\\\\n    (dot (texture (sampler_main, mix (uv_orig, uv, vec2(4.0, 4.0))).xyz, vec3(0.32, 0.49, 0.29)) - dot (((texture (sampler_blur1, \\\\n      mix (uv_orig, uv, vec2(-8.0, -8.0))\\\\n    ).xyz * scale1) + bias1), vec3(0.32, 0.49, 0.29)))\\\\n   * 8.0))) + ((\\\\n    (texture (sampler_noise_lq, tmpvar_3) - 0.5)\\\\n  .xy * texsize.zw) * 0.3));\\\\n  ret_2 = ((texture (sampler_main, uv_1).xyz + (\\\\n    (texture (sampler_noise_lq, tmpvar_3) - 0.5)\\\\n   * 0.004).xyz) + -0.001);\\\\n  vec4 tmpvar_4;\\\\n  tmpvar_4 = texture (sampler_noisevol_hq, (((vec3(0.05, 0.05, 0.0) * uv_1.xyy) * (\\\\n    (q27 * texsize.xyy)\\\\n   * texsize_noisevol_hq.zww)) + ((time * vec3(0.0, 0.0, 1.0)) * q29)));\\\\n  if (((ret_2.x > (q21 * q13)) && (ret_2.x <= (q24 * q11)))) {\\\\n    ret_2.y = (ret_2.y + (tmpvar_4.x * 0.5));\\\\n  };\\\\n  if (((ret_2.y > (q22 * q11)) && (ret_2.y <= (q25 * q12)))) {\\\\n    ret_2.z = (ret_2.z + (tmpvar_4.y * 0.5));\\\\n  };\\\\n  if (((ret_2.z > (q23 * q12)) && (ret_2.z <= (q26 * q13)))) {\\\\n    ret_2.x = (ret_2.x + (tmpvar_4.z * 0.5));\\\\n  };\\\\n  ret_2 = (ret_2 - ((roam_sin.xyz * slow_roam_cos.wzy) * 0.5));\\\\n  vec4 tmpvar_5;\\\\n  tmpvar_5.w = 1.0;\\\\n  tmpvar_5.xyz = ret_2;\\\\n  ret = tmpvar_5.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec2 dz_1;\\\\n  vec3 dy_2;\\\\n  vec3 dx_3;\\\\n  vec2 d_4;\\\\n  vec3 ret_5;\\\\n  vec2 tmpvar_6;\\\\n  vec2 tmpvar_7;\\\\n  tmpvar_7 = (vec2(1.0, 0.0) * texsize.zw);\\\\n  tmpvar_6.x = (texture (sampler_main, (uv + tmpvar_7)).xyz - texture (sampler_main, (uv - tmpvar_7)).xyz).y;\\\\n  vec2 tmpvar_8;\\\\n  tmpvar_8 = (vec2(0.0, 1.0) * texsize.zw);\\\\n  tmpvar_6.y = (texture (sampler_main, (uv + tmpvar_8)).xyz - texture (sampler_main, (uv - tmpvar_8)).xyz).y;\\\\n  d_4 = (texsize.zw * 2.0);\\\\n  dx_3 = (((2.0 * \\\\n    ((texture (sampler_blur1, (uv + (vec2(1.0, 0.0) * d_4))).xyz * scale1) + bias1)\\\\n  ) - (2.0 * \\\\n    ((texture (sampler_blur1, (uv - (vec2(1.0, 0.0) * d_4))).xyz * scale1) + bias1)\\\\n  )) * 0.5);\\\\n  dy_2 = (((2.0 * \\\\n    ((texture (sampler_blur1, (uv + (vec2(0.0, 1.0) * d_4))).xyz * scale1) + bias1)\\\\n  ) - (2.0 * \\\\n    ((texture (sampler_blur1, (uv - (vec2(0.0, 1.0) * d_4))).xyz * scale1) + bias1)\\\\n  )) * 0.5);\\\\n  vec2 tmpvar_9;\\\\n  tmpvar_9.x = dx_3.y;\\\\n  tmpvar_9.y = dy_2.y;\\\\n  dz_1 = ((tmpvar_6 * 3.0) + tmpvar_9);\\\\n  ret_5 = (vec3(((\\\\n    pow ((sqrt(dot (dz_1, dz_1)) * 0.8), 0.7)\\\\n   * 2.0) + (\\\\n    ((texture (sampler_blur1, uv).xyz * scale1) + bias1)\\\\n  .y * 2.0))) * vec3(0.2, 0.3, 0.6));\\\\n  vec2 tmpvar_10;\\\\n  tmpvar_10.x = q19;\\\\n  tmpvar_10.y = q20;\\\\n  vec2 tmpvar_11;\\\\n  tmpvar_11 = fract(((0.5 + \\\\n    (uv - 0.5)\\\\n  ) + (tmpvar_10 * vec2(-1.0, 1.0))));\\\\n  vec2 tmpvar_12;\\\\n  tmpvar_12.x = dx_3.y;\\\\n  tmpvar_12.y = dy_2.y;\\\\n  vec3 tmpvar_13;\\\\n  tmpvar_13 = ((mix (ret_5, vec3(3.0, 2.0, 1.0), \\\\n    ((texture (sampler_blur3, (tmpvar_11 - tmpvar_12)).xyz * scale3) + bias3)\\\\n  .xxx) * (vec3(1.0, 1.0, 1.0) - \\\\n    ((texture (sampler_blur2, (tmpvar_11 - dz_1)).xyz * scale2) + bias2)\\\\n  .xxx)) * (vec3(1.0, 1.0, 1.0) - vec3((0.75 * texture (sampler_main, tmpvar_11).x))));\\\\n  ret_5 = tmpvar_13;\\\\n  vec4 tmpvar_14;\\\\n  tmpvar_14 = texture (sampler_noisevol_hq, (((vec3(0.05, 0.05, 0.0) * dz_1.xyy) * (\\\\n    (q28 * texsize.xyy)\\\\n   * texsize_noisevol_hq.zww)) + ((time * vec3(0.0, 0.0, 1.0)) * q31)));\\\\n  if (((tmpvar_13.x > (q26 * q13)) && (tmpvar_13.x <= (q23 * q11)))) {\\\\n    ret_5.z = (tmpvar_13.z - (tmpvar_14.x * 0.5));\\\\n  };\\\\n  if (((tmpvar_13.y > (q25 * q11)) && (tmpvar_13.y <= (q22 * q12)))) {\\\\n    ret_5.x = (tmpvar_13.x - (tmpvar_14.y * 0.5));\\\\n  };\\\\n  if (((ret_5.z > (q24 * q12)) && (ret_5.z <= (q21 * q13)))) {\\\\n    ret_5.y = (tmpvar_13.y - (tmpvar_14.z * 0.5));\\\\n  };\\\\n  vec3 tmpvar_15;\\\\n  tmpvar_15 = mix ((ret_5 * (vec3(1.0, 1.0, 1.0) - vec3(\\\\n    (((texture (sampler_blur1, uv).xyz * scale1) + bias1).z * 4.0)\\\\n  ))), vec3(2.0, 2.0, 2.0), texture (sampler_main, uv).zzz);\\\\n  ret_5 = tmpvar_15;\\\\n  vec4 tmpvar_16;\\\\n  tmpvar_16.w = 1.0;\\\\n  tmpvar_16.xyz = tmpvar_15;\\\\n  ret = tmpvar_16.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/suksma - heretical crosscut playpen.json\":\n/*!********************************************************************!*\\\n  !*** ./presets/converted/suksma - heretical crosscut playpen.json ***!\n  \\********************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":2.05,\\\"decay\\\":0.99,\\\"echo_zoom\\\":1.008,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":1,\\\"wave_thick\\\":1,\\\"wave_brighten\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":0.625,\\\"wave_scale\\\":1.187,\\\"wave_smoothing\\\":0,\\\"modwavealphastart\\\":0.71,\\\"modwavealphaend\\\":1.3,\\\"warpanimspeed\\\":1.459,\\\"warpscale\\\":2.007,\\\"fshader\\\":0.19,\\\"zoom\\\":0.9999,\\\"warp\\\":0.01,\\\"sx\\\":0.9999,\\\"wave_r\\\":0.5,\\\"wave_g\\\":0.5,\\\"wave_b\\\":0.5,\\\"ob_r\\\":1,\\\"ob_g\\\":1,\\\"ob_b\\\":1,\\\"ib_size\\\":0.26,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0.85,\\\"mv_r\\\":0.5,\\\"mv_g\\\":0.5,\\\"mv_b\\\":0.5,\\\"mv_a\\\":0.5},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":9,\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"rad\\\":0.12566,\\\"ang\\\":3.39292,\\\"tex_ang\\\":0.3768,\\\"tex_zoom\\\":0.32473,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_r\\\":0.03,\\\"border_g\\\":0.67,\\\"border_b\\\":0.79,\\\"border_a\\\":1},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x=x+sin(time*0.9)*.13;\\\\ny=y+sin(time*0.5)*.16;\\\\nborder_r = q1;\\\\nborder_b = q2;\\\\nborder_g = q3;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":3,\\\"thickoutline\\\":1,\\\"rad\\\":0.12572,\\\"a2\\\":1,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":1},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"//: Aderrasi was here too\\\\nrad = rad -0.2 + 0.2*bass_att;;\\\\nr = r + 0.25*sin(1.1*time) + 0.2*sin(0.25*time);\\\\ng = g + 0.25*cos(1.5*time) + 0.22*cos(0.24*time);\\\\nb = b + 0.25*sin(0.6*time) + 0.27*cos(0.7*time);\\\\nr2 = 1-abs(r);\\\\ng2 = 1-abs(g);\\\\nb2 = 1-abs(b);\\\\nang = ang + 3*abs(tan(1*time));\\\\nx = x + 0.14*cos(time) + 0.2*sin(0.42*time);\\\\ny = y + 0.16*sin(1.2*time) + 0.15*sin(0.8*time) + 0.21*cos(0.45*time);\\\\nborder_r = q1;\\\\nborder_b = q2;\\\\nborder_g = q3;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"ang\\\":0.03,\\\"r\\\":0.21,\\\"g\\\":0.44,\\\"b\\\":0.23,\\\"r2\\\":0.18,\\\"b2\\\":0.11,\\\"a2\\\":1,\\\"border_r\\\":0.15,\\\"border_g\\\":0.4,\\\"border_b\\\":0.48,\\\"border_a\\\":1},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ang = time*2.4;\\\\nx = 0.5 + 0.22*cos(time*3.3) + 0.14*cos(time*1.2);\\\\ny = 0.5 + 0.26*sin(time*3.1) + 0.13*sin(time*1.7);\\\\nr = 0.5 + 0.5*sin(time*1.013 + 5);\\\\ng = 0.5 + 0.5*sin(time*1.063 + 2);\\\\nb = 0.5 + 0.5*sin(time*1.054 + 1);\\\\nr2 = 0.5 + 0.5*sin(time*1.085 + 3);\\\\ng2 = 0.5 + 0.5*sin(time*1.056+ 1);\\\\nb2 = 0.5 + 0.5*sin(time*1.038 + 4);\\\\nborder_r = q1;\\\\nborder_b = q2;\\\\nborder_g = q3;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":5,\\\"x\\\":0.51,\\\"y\\\":0.49,\\\"rad\\\":0.09986,\\\"ang\\\":0.06283,\\\"a2\\\":1,\\\"border_r\\\":0.46,\\\"border_g\\\":0.28,\\\"border_b\\\":0.54,\\\"border_a\\\":1},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = 0.5 + 0.07*cos(q4*0.5) + 0.31*sin(time*3.5);\\\\ny = 0.5 + 0.07*sin(q4*0.5) + 0.31*cos(time*3.5);\\\\nr = 0.5 + 0.5*sin(time*1.013 + 2);\\\\ng = 0.5 + 0.5*sin(time*0.863 + 3);\\\\nb = 0.5 + 0.5*sin(time*1.054 + 1);\\\\nr2 = 0.5 + 0.5*sin(time*1.185 + 3);\\\\ng2 = 0.5 + 0.5*sin(time*1.356+ 2);\\\\nb2 = 0.5 + 0.5*sin(time*0.738 + 4);\\\\nborder_r = q1;\\\\nborder_b = q2;\\\\nborder_g = q3;\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"vol = 0; p1 = 0;\\\\nvx = .2; vy = -0.1;\\\\nkx = 0; ky = 0;\\\",\\\"frame_eqs_eel\\\":\\\"dec_med = pow (0.96, 30/fps);\\\\ndec_slow = pow (0.999, 30/fps);\\\\nbeat = max (max (bass, mid), treb); \\\\navg = avg*dec_slow + beat*(1-dec_slow);\\\\nis_beat = above(beat, .5+avg+peak) * above (time, t0+.2);\\\\nt0 = is_beat*time + (1-is_beat)*t0;\\\\npeak = is_beat * beat + (1-is_beat)*peak*dec_med;\\\\nindex = (index + is_beat) %8;\\\\nindex2 = (index2 + is_beat*bnot(index))%2;\\\\nindex3 = (index3 + is_beat*bnot(index) * bnot(index2))%2;\\\\n\\\\nq20 = avg;\\\\nq21 = beat;\\\\nq22 = peak;\\\\nq23 = index;\\\\nq24 = is_beat;\\\\n\\\\nvol = bass_att + treb_att;\\\\nv2 = v2 * dec_med + vol * (1-dec_med) ;\\\\nq26 = max(atan (vol - v2),0);\\\\nq27 = index + 1;\\\\n\\\\nsw = sw*dec_med + (1-dec_med)*(index2%2);\\\\nq28 = sw;\\\\nkiss = kiss*dec_med \\\\n      +(1-dec_med)*bnot(index2)*below(index,4);\\\\nq29 = kiss;\\\\n\\\\nk1 =  is_beat*bnot(index);\\\\nk2 =  is_beat*bnot(index);\\\\np1 =  k1*(p1+1) + (1-k1)*p1;\\\\np2 = dec_med * p2+ (1-dec_med)*p1;\\\\nrott = p2 * 3.1416/2;\\\\nmonitor = k1;\\\\nq1 = cos(rott);\\\\nq2 = sin(rott);\\\\nq3 = -q2;\\\\nq4 = q1;\\\\n\\\\n\\\\nq5 = cos(time/4);\\\\nq6 = -sin(time/4);\\\\nq7 = -q6;\\\\nq8 = q5;\\\\n\\\\nzoom = 1;\\\\nrot = -0;\\\\n\\\\n\\\\n//KUGEL-POS\\\\ndt = .1*30/fps;\\\\nm = 1; //Masse\\\\n//Gravitationszentrum\\\\nx0 = .0; y0 = 0;\\\\n\\\\nax = -(xk-x0)/m + sign(vx+.001)*dt*bass/40; \\\\nay = -(yk-y0)/m + sign(vy+.001)*dt*treb/40;\\\\nmonitor = index3;\\\\nvx = vx*dec_slow + ax * dt; \\\\nvy = vy*dec_slow + ay * dt;\\\\n\\\\nxk = xk + vx*dt; \\\\nyk = yk + vy*dt;\\\\n\\\\nq9 = xk; q10 = yk;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec2 tmpvar_1;\\\\n  tmpvar_1 = ((uv * texsize.xy) * 0.08);\\\\n  vec3 tmpvar_2;\\\\n  tmpvar_2 = (texture (sampler_main, (uv - (\\\\n    ((sin(tmpvar_1) / cos(tmpvar_1)) * texsize.zw)\\\\n   * 3.0))).xyz + (vec3(dot (texture (sampler_noise_lq, \\\\n    ((((texsize.xy * texsize_noise_lq.zw).x * uv) * 0.02) + (0.1 * rand_frame).xy)\\\\n  ), vec4(0.32, 0.49, 0.29, 0.0))) / 30.0));\\\\n  vec4 tmpvar_3;\\\\n  tmpvar_3.w = 1.0;\\\\n  tmpvar_3.xyz = ((mix (tmpvar_2, \\\\n    (1.0 - tmpvar_2.zyx)\\\\n  , vec3(0.01, 0.01, 0.01)) - 0.03) - (0.2 * pow (\\\\n    (1.0 - rad)\\\\n  , 18.0)));\\\\n  ret = tmpvar_3.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec2 uv_1;\\\\n  vec2 tmpvar_2;\\\\n  tmpvar_2.x = cos(((uv.y * texsize.y) / 2.0));\\\\n  tmpvar_2.y = sin(((uv.x * texsize.x) / 2.0));\\\\n  uv_1 = (uv + ((2.0 * texsize.zw) * tmpvar_2));\\\\n  vec4 tmpvar_3;\\\\n  tmpvar_3.w = 1.0;\\\\n  tmpvar_3.xyz = (1.4 * pow ((\\\\n    clamp (((texture (sampler_blur1, uv_1).xyz * scale1) + bias1), 0.0, 1.0)\\\\n   * \\\\n    (texture (sampler_pc_main, uv_1).xyz - ((texture (sampler_blur3, uv_1).xyz * scale3) + bias3))\\\\n  ), vec3(0.5, 0.5, 0.5)));\\\\n  ret = tmpvar_3.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/suksma - uninitialized variabowl (hydroponic chronic).json\":\n/*!**************************************************************************************!*\\\n  !*** ./presets/converted/suksma - uninitialized variabowl (hydroponic chronic).json ***!\n  \\**************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1,\\\"decay\\\":1,\\\"echo_zoom\\\":1,\\\"echo_orient\\\":1,\\\"wave_thick\\\":1,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"brighten\\\":1,\\\"wave_a\\\":0.401,\\\"wave_scale\\\":3.177,\\\"wave_smoothing\\\":0,\\\"wave_mystery\\\":-0.4,\\\"modwavealphastart\\\":1,\\\"modwavealphaend\\\":1,\\\"warpanimspeed\\\":2.289,\\\"warpscale\\\":5.472,\\\"zoomexp\\\":0.01,\\\"zoom\\\":0.9901,\\\"warp\\\":1.8566,\\\"ob_size\\\":0.005,\\\"ob_a\\\":1,\\\"ib_size\\\":0,\\\"ib_r\\\":1,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"ib_a\\\":1,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0,\\\"mv_b\\\":0,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":12,\\\"additive\\\":1,\\\"num_inst\\\":512,\\\"y\\\":0.55,\\\"rad\\\":0.034,\\\"tex_zoom\\\":0.7874,\\\"g\\\":0.45,\\\"g2\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"started = 0;\\\\nt1 = 0.412; //seeds for pseudo random generator\\\\nt2 = 0.4563;\\\\nt3 = 0.6452;\\\\nt4 = 0.2565;\\\",\\\"frame_eqs_eel\\\":\\\"\\\\nrnd1 = if(equal(instance,0),t1,rnd1);\\\\nrnd2 = if(equal(instance,0),t2,rnd2);\\\\nrnd3 = if(equal(instance,0),t3,rnd3);\\\\nrnd4 = if(equal(instance,0),t4,rnd4);\\\\nrnd1 = 4*rnd1*(1-rnd1);\\\\nrnd2 = 4*rnd2*(1-rnd2);\\\\nrnd3 = 4*rnd3*(1-rnd3);\\\\nrnd4 = 4*rnd4*(1-rnd4);\\\\nt = .6;\\\\nt =  (rnd1+time*t) - int(rnd1+time*t);\\\\nt = t + rnd2*0.1;\\\\nwh = rnd4*asin(1)*4;\\\\nwv = 0.25 + rnd3*0.1;\\\\n\\\\nd = 1.4; // makes the perspective impact\\\\nzoom = 1;\\\\nl = 1;\\\\n\\\\n// Kardan angles\\\\n\\\\nw1 = q3; // first rotation: clockwise in the desktop pane\\\\nw2 = q4; // rotation around vertical axis\\\\nw3 = q5; // rotation around horizontal axis\\\\n\\\\n\\\\n// definition of the 3D shape\\\\n\\\\ni = instance;\\\\n\\\\nmy_x = t *(cos(wh)*sin(wv)*l);\\\\nmy_y = (-0.5 +(t-0.75)*(t-0.75))*cos(wv)*l;\\\\nmy_z = t*(sin(wh)*sin(wv)*l);\\\\n\\\\n\\\\n// 3D rotations\\\\n\\\\nx1 = cos(w1)*my_x + sin(w1)*my_y;\\\\ny1 = -sin(w1)*my_x + cos(w1)*my_y;\\\\nz1 = my_z;\\\\n\\\\nx2 = cos(w2)*x1 + sin(w2)*z1;\\\\nz2 = -sin(w2)*x1 + cos(w2)*z1;\\\\ny2 = y1;\\\\n\\\\ny3 = cos(w3)*y2 + sin(w3)*z2;\\\\nz3 = -sin(w3)*y2 + cos(w3)*z2;\\\\nx3 = x2;\\\\n\\\\n// perspective calculation\\\\n\\\\nl = sqrt(x3*x3 + y3*y3);\\\\nw = atan2(x3,y3);\\\\np = tan(asin(1) + atan2(d+z3,l));\\\\nd = sqrt(x3*x3 + y3*y3 + (z3+d)*(z3+d));\\\\n\\\\nrad = rad/d;\\\\nmy_x = zoom*sin(w)*p;\\\\nmy_y = zoom*cos(w)*p;\\\\n\\\\nx = 0.5 + my_x;\\\\ny = 0.5 + my_y;\\\\n\\\\nx = 0.5 + (x-0.5)/q2;\\\\ny = 0.5 + (y-0.5)/q1;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"additive\\\":1,\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"x\\\":0.52,\\\"y\\\":0.41,\\\"rad\\\":0.5216,\\\"ang\\\":0.1885,\\\"tex_zoom\\\":0.73458,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":0.75,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"vx = 0\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"additive\\\":1,\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"x\\\":0.48,\\\"y\\\":0.41,\\\"rad\\\":0.61162,\\\"ang\\\":5.96903,\\\"tex_zoom\\\":0.73458,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":0.75,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"vx = 0\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"additive\\\":1,\\\"thickoutline\\\":1,\\\"y\\\":0.75,\\\"rad\\\":0.07059,\\\"tex_zoom\\\":0.73458,\\\"g2\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"vx = 0\\\",\\\"frame_eqs_eel\\\":\\\"x = q1;\\\\ny = q5;\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"additive\\\":1,\\\"r\\\":0.2,\\\"g\\\":0,\\\"b\\\":0,\\\"a\\\":0.3,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"n=sample*6.283;\\\\nphs=-sample * 0.2;\\\\ntm=time*0.4 + phs;\\\\n\\\\nflip=flip+1;\\\\nflip=flip*below(flip,2);\\\\n\\\\nxp=0;\\\\nyp=flip*0.1 + (sin(tm)*0.5 + 0.5)*0.2;\\\\nzp=0;\\\\n\\\\n//wrist movement;\\\\nang=sin(tm*2)*0.5 +0.5;\\\\n\\\\nxq=xp;\\\\nyq=yp*sin(ang) + zp*cos(ang);\\\\nzq=yp*cos(ang) - zp*sin(ang);\\\\nyq=yp;\\\\nzq=zp;\\\\n\\\\nang=tm*8;\\\\nxp=xq*sin(ang) + yq*cos(ang);\\\\nyp=xq*cos(ang) - yq*sin(ang);\\\\nzp=zq;\\\\n\\\\n//forearm movement;\\\\nzp=zp-0.3;\\\\nang=3.14 + sin(tm*2 - 0.5)*1.5;\\\\nxq=xp;\\\\nyq=yp*sin(ang) + zp*cos(ang);\\\\nzq=yp*cos(ang) - zp*sin(ang);\\\\n\\\\n//upper arm twist\\\\nang=-1.0 + cos(tm*3 + 0.5);\\\\nxp=xq*sin(ang) + yq*cos(ang);\\\\nyp=xq*cos(ang) - yq*sin(ang);\\\\nzp=zq;\\\\n\\\\n//upper arm outward;\\\\nzp=zp-0.35;\\\\nang=cos(tm*2)*0.75 - 1.05;\\\\nxq=xp*sin(ang) + zp*cos(ang);\\\\nyq=yp;\\\\nzq=xp*cos(ang) - zp*sin(ang);\\\\n\\\\n//upper arm up down;\\\\nang=cos(tm)*0.5 - 0.5;\\\\nxp=xq;\\\\nyp=yq*cos(ang) - zq*sin(ang);\\\\nzp=yq*sin(ang) + zq*cos(ang);\\\\n\\\\n//xp=xq;yp=yq;zp=zq;\\\\n\\\\n\\\\n//project into screenspace and draw on screen\\\\nzp=zp+2;\\\\nxs=xp/zp;\\\\nys=yp/zp;\\\\n\\\\nx=xs+0.5;\\\\ny=ys*1.3+0.5;\\\\n\\\\n\\\\n//a=(1-sample)*flip;\\\\n\\\\n//b=b+pow(1-sample,2)*0.3;\\\\n\\\\nx = 0.5 + (x-0.5)/q1;\\\\ny = 0.5 + (y-0.5)/q2 + 0.1;\\\"},{\\\"baseVals\\\":{\\\"additive\\\":1,\\\"r\\\":0.2,\\\"g\\\":0,\\\"b\\\":0,\\\"a\\\":0.3,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"n=sample*6.283;\\\\nphs=-sample * 0.2;\\\\ntm=time*0.4 + phs;\\\\n\\\\nflip=flip+1;\\\\nflip=flip*below(flip,2);\\\\n\\\\nxp=0;\\\\nyp=flip*0.1 + (sin(tm)*0.5 + 0.5)*0.2;\\\\nyp=-yp;\\\\nzp=0;\\\\n\\\\n//wrist movement;\\\\nang=sin(tm*2)*0.5 +0.5;\\\\n\\\\nxq=xp;\\\\nyq=yp*sin(ang) + zp*cos(ang);\\\\nzq=yp*cos(ang) - zp*sin(ang);\\\\nyq=yp;\\\\nzq=zp;\\\\n\\\\nang=tm*8;\\\\nxp=xq*sin(ang) + yq*cos(ang);\\\\nyp=xq*cos(ang) - yq*sin(ang);\\\\nzp=zq;\\\\n\\\\n//forearm movement;\\\\nzp=zp-0.3;\\\\nang=3.14 + sin(tm*2 - 0.5)*1.5;\\\\nxq=xp;\\\\nyq=yp*sin(ang) + zp*cos(ang);\\\\nzq=yp*cos(ang) - zp*sin(ang);\\\\n\\\\n//upper arm twist\\\\nang=-1.0 + cos(tm*3 + 0.5);\\\\nxp=xq*sin(ang) + yq*cos(ang);\\\\nyp=xq*cos(ang) - yq*sin(ang);\\\\nzp=zq;\\\\n\\\\n//upper arm outward;\\\\nzp=zp-0.35;\\\\nang=cos(tm*2)*0.75 - 1.05;\\\\nxq=xp*sin(ang) + zp*cos(ang);\\\\nyq=yp;\\\\nzq=xp*cos(ang) - zp*sin(ang);\\\\n\\\\n//upper arm up down;\\\\nang=cos(tm)*0.5 - 0.5;\\\\nxp=xq;\\\\nyp=yq*cos(ang) - zq*sin(ang);\\\\nzp=yq*sin(ang) + zq*cos(ang);\\\\n\\\\n//xp=xq;yp=yq;zp=zq;\\\\n\\\\n\\\\n//project into screenspace and draw on screen\\\\nzp=zp+2;\\\\nxs=xp/zp;\\\\nys=yp/zp;\\\\n\\\\nx=xs+0.5;\\\\ny=ys*1.3+0.5;\\\\n\\\\n\\\\n//a=(1-sample)*flip;\\\\n\\\\n\\\\n//b=b+pow(1-sample,2)*0.3;\\\\n\\\\n\\\\nx = 0.5 + (x-0.5)/q1;\\\\ny = 0.5 + (y-0.5)/q2 + 0.1;\\\\n\\\"},{\\\"baseVals\\\":{\\\"samples\\\":61,\\\"thick\\\":1,\\\"scaling\\\":2.44415,\\\"smoothing\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"t1 = q1;\\\\nt2 = q2;\\\\nt3 = q3;\\\\nt4 = q4;\\\\nt5 = q5;\\\\nt6 = q6;\\\\nt7 = q7;\\\\nt8 = q8;\\\",\\\"point_eqs_eel\\\":\\\"x = pow(sample,5)*t1 + 5*pow(sample,4)*(1-sample)*t1 + 10*pow(sample,3)*sqr(1-sample)*t2\\\\n+ 10*sqr(sample)*pow(1-sample,3)*t3 + 5*pow(1-sample,4)*sample*t4 + pow(1-sample,5)*t4;\\\\n\\\\ny = pow(sample,5)*t5 + 5*pow(sample,4)*(1-sample)*t5 + 10*pow(sample,3)*sqr(1-sample)*t6\\\\n+ 10*sqr(sample)*pow(1-sample,3)*t7 + 5*pow(1-sample,4)*sample*t8 + pow(1-sample,5)*t8;\\\"},{\\\"baseVals\\\":{\\\"samples\\\":61,\\\"scaling\\\":2.44415,\\\"smoothing\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0\\\",\\\"frame_eqs_eel\\\":\\\"t1 = q1;\\\\nt2 = q2;\\\\nt3 = q3;\\\\nt4 = q4;\\\\nt5 = q5;\\\\nt6 = q6;\\\\nt7 = q7;\\\\nt8 = q8;\\\",\\\"point_eqs_eel\\\":\\\"x = pow(sample,5)*t1 + 5*pow(sample,4)*(1-sample)*t1 + 10*pow(sample,3)*sqr(1-sample)*t2\\\\n+ 10*sqr(sample)*pow(1-sample,3)*t3 + 5*pow(1-sample,4)*sample*t4 + pow(1-sample,5)*t4;\\\\n\\\\ny = pow(sample,5)*t5 + 5*pow(sample,4)*(1-sample)*t5 + 10*pow(sample,3)*sqr(1-sample)*t6\\\\n+ 10*sqr(sample)*pow(1-sample,3)*t7 + 5*pow(1-sample,4)*sample*t8 + pow(1-sample,5)*t8;\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"wave_a = 0;\\\\nq1 =aspectx;\\\\nq2 = aspecty;\\\\n\\\\n\\\\nb = b + bass*bass*0.85;\\\\nm = m + mid*mid*0.85;\\\\nt = t + treb*treb*0.85;\\\\n\\\\nq3 = b*0.012;\\\\nq4 = m*0.012;\\\\nq5 = t*0.012;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec2 my_uv_1;\\\\n  vec3 ret_2;\\\\n  vec2 tmpvar_3;\\\\n  tmpvar_3 = (vec2(1280.0, 1024.0) * texsize.zw);\\\\n  float tmpvar_4;\\\\n  vec2 tmpvar_5;\\\\n  tmpvar_5 = (uv + vec2(0.005, 0.0));\\\\n  vec2 tmpvar_6;\\\\n  tmpvar_6 = (uv - vec2(0.005, 0.0));\\\\n  tmpvar_4 = (((\\\\n    (texture (sampler_blur2, tmpvar_5).xyz * scale2)\\\\n   + bias2) - (\\\\n    (texture (sampler_blur2, tmpvar_6).xyz * scale2)\\\\n   + bias2)).x * tmpvar_3.x);\\\\n  float tmpvar_7;\\\\n  vec2 tmpvar_8;\\\\n  tmpvar_8 = (uv + vec2(0.0, 0.005));\\\\n  vec2 tmpvar_9;\\\\n  tmpvar_9 = (uv - vec2(0.0, 0.005));\\\\n  tmpvar_7 = (((\\\\n    (texture (sampler_blur2, tmpvar_8).xyz * scale2)\\\\n   + bias2) - (\\\\n    (texture (sampler_blur2, tmpvar_9).xyz * scale2)\\\\n   + bias2)).x * tmpvar_3.y);\\\\n  vec2 tmpvar_10;\\\\n  tmpvar_10.x = tmpvar_4;\\\\n  tmpvar_10.y = tmpvar_7;\\\\n  vec2 tmpvar_11;\\\\n  tmpvar_11.x = (((\\\\n    (texture (sampler_blur2, tmpvar_5).xyz * scale2)\\\\n   + bias2) - (\\\\n    (texture (sampler_blur2, tmpvar_6).xyz * scale2)\\\\n   + bias2)).x * tmpvar_3.x);\\\\n  tmpvar_11.y = (((\\\\n    (texture (sampler_blur2, tmpvar_8).xyz * scale2)\\\\n   + bias2) - (\\\\n    (texture (sampler_blur2, tmpvar_9).xyz * scale2)\\\\n   + bias2)).x * tmpvar_3.y);\\\\n  ret_2.x = texture (sampler_fw_main, ((uv - (tmpvar_10 * 0.01)) + (tmpvar_11 * 0.003))).x;\\\\n  vec4 tmpvar_12;\\\\n  tmpvar_12 = texture (sampler_blur3, uv);\\\\n  ret_2.x = (ret_2.x + ((ret_2.x - \\\\n    ((tmpvar_12.xyz * scale3) + bias3)\\\\n  .x) * 0.1));\\\\n  ret_2.x = (ret_2.x + 0.004);\\\\n  vec2 tmpvar_13;\\\\n  tmpvar_13.x = tmpvar_7;\\\\n  tmpvar_13.y = -(tmpvar_4);\\\\n  my_uv_1 = (uv + ((tmpvar_13 * 0.05) * (1.2 - \\\\n    ((tmpvar_12.xyz * scale3) + bias3)\\\\n  .y)));\\\\n  ret_2.z = texture (sampler_fw_main, my_uv_1).z;\\\\n  vec2 x_14;\\\\n  x_14 = (my_uv_1 - uv);\\\\n  ret_2.z = (ret_2.z + ((\\\\n    ((ret_2.z - ((texture (sampler_blur1, uv).xyz * scale1) + bias1).z) * sqrt(dot (x_14, x_14)))\\\\n   * 180.0) / sqrt(\\\\n    dot (tmpvar_3, tmpvar_3)\\\\n  )));\\\\n  ret_2.z = (ret_2.z * 0.8);\\\\n  ret_2.z = (ret_2.z + 0.004);\\\\n  vec2 tmpvar_15;\\\\n  tmpvar_15.x = -(tmpvar_7);\\\\n  tmpvar_15.y = tmpvar_4;\\\\n  my_uv_1 = (tmpvar_15 * 0.045);\\\\n  vec2 tmpvar_16;\\\\n  tmpvar_16.x = (((\\\\n    (texture (sampler_blur2, (uv + vec2(0.01, 0.0))).xyz * scale2)\\\\n   + bias2) - (\\\\n    (texture (sampler_blur2, (uv - vec2(0.01, 0.0))).xyz * scale2)\\\\n   + bias2)).y * tmpvar_3.x);\\\\n  tmpvar_16.y = (((\\\\n    (texture (sampler_blur2, (uv + vec2(0.0, 0.01))).xyz * scale2)\\\\n   + bias2) - (\\\\n    (texture (sampler_blur2, (uv - vec2(0.0, 0.01))).xyz * scale2)\\\\n   + bias2)).y * tmpvar_3.y);\\\\n  my_uv_1 = (my_uv_1 + (uv - (tmpvar_16 * 0.03)));\\\\n  ret_2.y = texture (sampler_fw_main, my_uv_1).y;\\\\n  ret_2.y = (ret_2.y + ((\\\\n    (ret_2.y - ((texture (sampler_blur3, my_uv_1).xyz * scale3) + bias3).y)\\\\n   * 0.1) + 0.01));\\\\n  vec4 tmpvar_17;\\\\n  tmpvar_17.w = 1.0;\\\\n  tmpvar_17.xyz = ret_2;\\\\n  ret = tmpvar_17.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec2 uv1_1;\\\\n  vec3 tmpvar_2;\\\\n  tmpvar_2 = texture (sampler_main, uv).xyz;\\\\n  vec2 tmpvar_3;\\\\n  tmpvar_3.y = 0.0;\\\\n  tmpvar_3.x = texsize.z;\\\\n  vec2 tmpvar_4;\\\\n  tmpvar_4.x = 0.0;\\\\n  tmpvar_4.y = texsize.w;\\\\n  vec2 tmpvar_5;\\\\n  tmpvar_5.x = (texture (sampler_main, (uv - tmpvar_3)).xyz - texture (sampler_main, (uv + tmpvar_3)).xyz).x;\\\\n  tmpvar_5.y = (texture (sampler_main, (uv - tmpvar_4)).xyz - texture (sampler_main, (uv + tmpvar_4)).xyz).x;\\\\n  uv1_1 = ((0.3 * cos(\\\\n    (((uv - 0.5) * 2.0) + 1.7)\\\\n  )) - (2.0 * tmpvar_5));\\\\n  vec4 tmpvar_6;\\\\n  tmpvar_6.w = 1.0;\\\\n  tmpvar_6.xyz = ((-(tmpvar_2) / 4.0) + ((6.0 * vec3(\\\\n    clamp ((0.03 / sqrt(dot (uv1_1, uv1_1))), 0.0, 1.0)\\\\n  )) * (-0.08 + tmpvar_2)));\\\\n  ret = tmpvar_6.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/suksma - vector exp 1 - couldn′t not.json\":\n/*!*********************************************************************!*\\\n  !*** ./presets/converted/suksma - vector exp 1 - couldn′t not.json ***!\n  \\*********************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":2,\\\"decay\\\":0.99,\\\"wave_brighten\\\":0,\\\"wave_a\\\":1,\\\"wave_scale\\\":0.01,\\\"wave_mystery\\\":-0.2,\\\"warpanimspeed\\\":3.434,\\\"warpscale\\\":1.295,\\\"zoom\\\":1.025,\\\"warp\\\":0.11284,\\\"wave_r\\\":0,\\\"wave_g\\\":0,\\\"wave_b\\\":0,\\\"ob_size\\\":0.005,\\\"ob_b\\\":1,\\\"ob_a\\\":1,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":5,\\\"mv_g\\\":0,\\\"mv_b\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"textured\\\":1,\\\"rad\\\":0.53742,\\\"tex_zoom\\\":1.72509,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"//per frame less reactive volume for all unused q vars, put before other q vars are set for cop out mashing\\\\nvb = vb*0.95 + (1-vb)*pow(bass_att,2)*0.02;\\\\nvvb = vvb*0.95 + (1-vvb)*vb*0.01;\\\\nvm = vm*0.95 + (1-vm)*pow(mid_att,2)*0.02;\\\\nvvm = vvm*0.95 + (1-vvm)*vm*0.01;\\\\nvt = vt*0.95 + (1-vt)*pow(treb_att,2)*0.02;\\\\nvvt = vvt*0.95 + (1-vvt)*vt*0.01;\\\\nvvb = min(1,max(0,vvb));\\\\nvvm = min(1,max(0,vvm));\\\\nvvt = min(1,max(0,vvt));\\\\nq1   = (vvb+vvm+vvt)*10;\\\\nq2   = (vvb+vvm+vvt)*10;\\\\nq3   = (vvb+vvm+vvt)*10;\\\\nq4   = (vvb+vvm+vvt)*10;\\\\nq5   = (vvb+vvm+vvt)*10;\\\\nq6   = (vvb+vvm+vvt)*10;\\\\nq7   = (vvb+vvm+vvt)*10;\\\\nq8   = (vvb+vvm+vvt)*10;\\\\nq9   = (vvb+vvm+vvt)*10;\\\\nq10  = (vvb+vvm+vvt)*10;\\\\nq11  = (vvb+vvm+vvt)*10;\\\\nq12  = (vvb+vvm+vvt)*10;\\\\nq13  = (vvb+vvm+vvt)*10;\\\\nq14  = (vvb+vvm+vvt)*10;\\\\nq15  = (vvb+vvm+vvt)*10;\\\\nq16  = (vvb+vvm+vvt)*10;\\\\nq17  = (vvb+vvm+vvt)*10;\\\\nq18  = (vvb+vvm+vvt)*10;\\\\nq19  = (vvb+vvm+vvt)*10;\\\\nq20  = (vvb+vvm+vvt)*10;\\\\nq21  = (vvb+vvm+vvt)*10;\\\\nq22  = (vvb+vvm+vvt)*10;\\\\nq23  = (vvb+vvm+vvt)*10;\\\\nq24  = (vvb+vvm+vvt)*10;\\\\nq25  = (vvb+vvm+vvt)*10;\\\\nq26  = (vvb+vvm+vvt)*10;\\\\nq27  = (vvb+vvm+vvt)*10;\\\\nq28  = (vvb+vvm+vvt)*10;\\\\nq29  = (vvb+vvm+vvt)*10;\\\\nq30  = (vvb+vvm+vvt)*10;\\\\nq31  = (vvb+vvm+vvt)*10;\\\\nq32  = (vvb+vvm+vvt)*10;\\\\n\\\\nzoom = .995;\\\\nwave_a = 0;\\\\nmv_g = 0.45 + 0.3*sin(time*1.33)+0.25*sin(treb);\\\\nmv_r = 0.45 + 0.3*sin(time*1.13)+0.25*(0.33*(bass+treb+mid));\\\\nmv_b = 0.45 + 0.3*sin(time*1.23)+0.25*sin(bass);\\\\nmv_dx=.1*sin(time*.1);\\\\nmv_dy=.13*cos(time*.084);\\\\nmv_x=64-int((sin(time*1.5)+1)*32);\\\\nmv_y=48-int((cos(time*1.5)+1)*22);\\\\nmonitor=mv_y;\\\",\\\"pixel_eqs_eel\\\":\\\"//flexi per vertex\\\\ncx1 = 0.5+sin(time*0.618)*0.2;\\\\ncy1 = 0.5+cos(time*1.618)*0.2;\\\\ndir = bass;\\\\nd = sqrt((x-cx1)*(x-cx1)+(y-cy1)*(y-cy1));\\\\nx1 = if( above(d,0.3),0,  sin(y-cy1)*0.05*dir);\\\\ny1 = if( above(d,0.3),0, -sin(x-cx1)*0.05*dir);\\\\ncx1 = 0.5+sin(time*2.618)*0.3;\\\\ncy1 = 0.5+cos(time*3.14)*0.3;\\\\ndir = -mid*2;\\\\nd = sqrt((x-cx1)*(x-cx1)+(y-cy1)*(y-cy1));\\\\nx2 = if( above(d,0.2),0,  sin(y-cy1)*0.05*dir);\\\\ny2 = if( above(d,0.2),0, -sin(x-cx1)*0.05*dir);\\\\ncx1 = 0.5+sin(-time*2.618)*0.4;\\\\ncy1 = 0.5+cos(-time*1.14)*0.4;\\\\ndir = treb*3;\\\\nd = sqrt((x-cx1)*(x-cx1)+(y-cy1)*(y-cy1));\\\\nx3 = if( above(d,0.1),0,  sin(y-cy1)*0.05*dir);\\\\ny3 = if( above(d,0.1),0, -sin(x-cx1)*0.05*dir);\\\\ndx = dx+x1+x2+x3;\\\\ndy = dy+y1+y2+y3;\\\",\\\"warp\\\":\\\" shader_body { \\\\n  vec2 tmpvar_1;\\\\n  tmpvar_1 = mix (uv_orig, uv, vec2(0.3, 0.3));\\\\n  vec2 tmpvar_2;\\\\n  tmpvar_2 = (texsize.zw * 3.0);\\\\n  vec2 tmpvar_3;\\\\n  tmpvar_3.x = dot (((\\\\n    (texture (sampler_blur1, (tmpvar_1 + (vec2(1.0, 0.0) * tmpvar_2))).xyz * scale1)\\\\n   + bias1) - (\\\\n    (texture (sampler_blur1, (tmpvar_1 - (vec2(1.0, 0.0) * tmpvar_2))).xyz * scale1)\\\\n   + bias1)), vec3(0.32, 0.49, 0.29));\\\\n  tmpvar_3.y = dot (((\\\\n    (texture (sampler_blur1, (tmpvar_1 + (vec2(0.0, 1.0) * tmpvar_2))).xyz * scale1)\\\\n   + bias1) - (\\\\n    (texture (sampler_blur1, (tmpvar_1 - (vec2(0.0, 1.0) * tmpvar_2))).xyz * scale1)\\\\n   + bias1)), vec3(0.32, 0.49, 0.29));\\\\n  vec4 tmpvar_4;\\\\n  tmpvar_4.w = 1.0;\\\\n  tmpvar_4.xyz = (texture (sampler_fc_main, (tmpvar_1 + (\\\\n    (tmpvar_3 * texsize.zw)\\\\n   * 9.0))) - 0.01).xyz;\\\\n  ret = tmpvar_4.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n  vec2 uv_1;\\\\n  vec3 ret_2;\\\\n  uv_1 = (0.5 + ((uv - 0.5) * 0.98));\\\\n  vec2 tmpvar_3;\\\\n  tmpvar_3 = (texsize.zw * 4.0);\\\\n  vec3 tmpvar_4;\\\\n  tmpvar_4 = (((texture (sampler_blur1, \\\\n    (uv_1 + (vec2(1.0, 0.0) * tmpvar_3))\\\\n  ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n    (uv_1 - (vec2(1.0, 0.0) * tmpvar_3))\\\\n  ).xyz * scale1) + bias1));\\\\n  vec3 tmpvar_5;\\\\n  tmpvar_5 = (((texture (sampler_blur1, \\\\n    (uv_1 + (vec2(0.0, 1.0) * tmpvar_3))\\\\n  ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n    (uv_1 - (vec2(0.0, 1.0) * tmpvar_3))\\\\n  ).xyz * scale1) + bias1));\\\\n  vec3 tmpvar_6;\\\\n  tmpvar_6.z = 0.0;\\\\n  tmpvar_6.x = dot (tmpvar_4, vec3(0.32, 0.49, 0.29));\\\\n  tmpvar_6.y = dot (tmpvar_5, vec3(0.32, 0.49, 0.29));\\\\n  vec4 tmpvar_7;\\\\n  tmpvar_7 = texture (sampler_noisevol_hq, ((vec3(0.05, 0.05, 0.0) * (\\\\n    ((uv_1.xyy + (tmpvar_6 * 0.5)) * texsize.xyy)\\\\n   * texsize_noisevol_hq.zww)) + (vec3(0.0, 0.0, 0.2) * time)));\\\\n  vec2 tmpvar_8;\\\\n  tmpvar_8.x = dot (tmpvar_4, vec3(0.32, 0.49, 0.29));\\\\n  tmpvar_8.y = dot (tmpvar_5, vec3(0.32, 0.49, 0.29));\\\\n  uv_1 = (uv_1 - (tmpvar_8 * 0.04));\\\\n  ret_2 = (abs((\\\\n    ((texture (sampler_main, uv_1).xyz + ((texture (sampler_blur1, uv_1).xyz * scale1) + bias1)) - ((texture (sampler_blur2, uv_1).xyz * scale2) + bias2))\\\\n   - \\\\n    ((texture (sampler_blur3, uv_1).xyz * scale3) + bias3)\\\\n  )) * (dot (tmpvar_7, vec4(0.32, 0.49, 0.29, 0.0)) * 3.0));\\\\n  vec3 tmpvar_9;\\\\n  tmpvar_9 = pow (ret_2, vec3(0.5, 0.5, 0.5));\\\\n  ret_2 = tmpvar_9;\\\\n  vec4 tmpvar_10;\\\\n  tmpvar_10.w = 1.0;\\\\n  tmpvar_10.xyz = tmpvar_9;\\\\n  ret = tmpvar_10.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/yin - 191 - Temporal singularities.json\":\n/*!*******************************************************************!*\\\n  !*** ./presets/converted/yin - 191 - Temporal singularities.json ***!\n  \\*******************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":1,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":4.990001,\\\"decay\\\":1,\\\"echo_zoom\\\":10.784553,\\\"wave_mode\\\":7,\\\"additivewave\\\":1,\\\"wave_dots\\\":1,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"wave_a\\\":0.997938,\\\"wave_scale\\\":1.990516,\\\"wave_smoothing\\\":0,\\\"wave_mystery\\\":-1,\\\"modwavealphastart\\\":0.5,\\\"modwavealphaend\\\":1,\\\"warpscale\\\":0.999998,\\\"zoomexp\\\":0.999985,\\\"fshader\\\":1,\\\"zoom\\\":0.9999,\\\"dy\\\":0.00001,\\\"warp\\\":0.01,\\\"wave_r\\\":0.400001,\\\"wave_g\\\":0.4,\\\"wave_y\\\":1,\\\"ob_size\\\":0,\\\"ob_r\\\":0.300001,\\\"ob_g\\\":1,\\\"ob_b\\\":0.3,\\\"ob_a\\\":0.100001,\\\"ib_size\\\":0.005,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"ib_a\\\":0.5,\\\"mv_x\\\":8.960042,\\\"mv_y\\\":12.960033,\\\"mv_dx\\\":-0.26,\\\"mv_dy\\\":0.44,\\\"mv_l\\\":5,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"flip=-1;\\\",\\\"frame_eqs_eel\\\":\\\"warp=0;decay=1;\\\\nvol = (.75*(bass_att+mid_att+treb_att)/3+.25*prevVol);\\\\nprevAvgBass=avgBass;\\\\navgBass=avgBass + (bass-AvgBass)*0.01;\\\\nq4=max(avgBass*1.001-.999*prevAvgBass,0);\\\\nq4=min(q4,.006);\\\\n// -------------------------------- Beat Detective 007 ----------------------------------\\\\nsure=if(equal(sure,0),.6,sure);\\\\ninterval=if(equal(interval,0),40,interval);\\\\nlastbeat=if(equal(lastbeat,0),frame-FPS,lastbeat);\\\\ndbass=(bass-pbass)/FPS;\\\\nbeat=above(dbass,.6*maxdbass)*above(frame-lastbeat,FPS/3);\\\\nsure=if(beat*below(abs(frame-(interval+lastbeat)),FPS/5),\\\\nmin(.095+sure,1),beat*(sure-.095)+(1-beat)*sure*.9996);\\\\nsure=max(.5,sure);\\\\ncheat=if(above(frame,lastbeat+interval+ int(FPS/10))*above(sure,.91),1,cheat);\\\\nbeat=if(cheat,1,beat);\\\\nsure=if(cheat,.95*sure,sure);\\\\nmaxdbass=max(maxdbass*.999,dbass);\\\\nmaxdbass=max(.012,maxdbass);\\\\nmaxdbass=min(.02,maxdbass);\\\\ninterval=if(beat, frame-lastbeat,interval);\\\\nlastbeat=if(beat,frame-cheat*int(FPS/10),lastbeat);\\\\ncheat=0;\\\\npbass=bass;\\\\n// ----------------------------------------------------------------------------------------------\\\\nlastFlip=if( above(bass/avgBass,2)*above(frame-lastFlip,100)*beat, frame,lastFlip );\\\\nflip = if(equal(frame,lastFlip),abs(flip)-1, flip);\\\\nwave_mystery=flip;\\\\nob_size = below(frame-lastBeat,FPS/8)*.08*(frame-lastBeat)/FPS;\\\\nf=abs(cos(time/8+.54+sin(time/3+1.075)));\\\\nob_r=1*f + 1*(1-f);\\\\nob_g=.3*f + 1*(1-f);\\\\nob_b=.3*f + .3*(1-f);\\\\nf=(frame-lastbeat)/interval;\\\\nf=above(f,.8)*below(f,1)*f; f=max(0,f); f=min(f,1);\\\\n\\\\nwave_g=.4+.6*(f);\\\\nwave_b=.4+.6*(1-f);\\\\n\\\\nq1= 3.1416*(wave_mystery+1)/2;\\\\nq2=.25*cos(time+abs(2*sin(time*2+2.311)*( vol-amt))*sin(time*7.45+.876));\\\\nq3=-q2;\\\\n\\\\namt=amt+ .05*(vol-amt);\\\\nprevVol=vol;\\\\nBPM = BPM + .01*(60*FPS/interval - BPM);\\\\nmonitor = 0*pctg+1*BPM;\\\",\\\"pixel_eqs_eel\\\":\\\"x=x-.5;\\\\ny=-(y-.5);\\\\nttan1 = tan(q1+1.5708)*(x-q3)-y+q2;\\\\nttan2 = tan(q1+1.5708);\\\\nIsLeftYtonosY = above(ttan1*(sign(3.1416-q1)),0);\\\\n\\\\ndist = abs(ttan1)/sqrt(ttan2*ttan2 + 1);\\\\ntotX=.5*cos(q1)*sign(IsLeftYtonosY-.5)*sqr(dist)/(.5-q2);\\\\ntotY=-.5*sin(q1)*sign(IsLeftYtonosY-.5)*sqr(dist)/(.5-q2);\\\\n\\\\ndx=dx+totX;\\\\ndy=dy+totY;\\\\nprevRot=q1;\\\\nzoom = 1-25*q4*sqrt(pow(.5-dist,3))/abs(.5-q2);\\\",\\\"warp\\\":\\\"\\\",\\\"comp\\\":\\\"\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/yin - 393 - Artificial Inspiration (music driven - outward).json\":\n/*!********************************************************************************************!*\\\n  !*** ./presets/converted/yin - 393 - Artificial Inspiration (music driven - outward).json ***!\n  \\********************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":1,\\\"baseVals\\\":{\\\"rating\\\":1,\\\"gammaadj\\\":1,\\\"decay\\\":0.898999,\\\"echo_zoom\\\":0.999993,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":0.411715,\\\"wave_smoothing\\\":0.9,\\\"wave_mystery\\\":-0.18,\\\"fshader\\\":0.3,\\\"zoom\\\":0.999999,\\\"warp\\\":0.01,\\\"wave_r\\\":0,\\\"wave_g\\\":0,\\\"wave_b\\\":0,\\\"ob_size\\\":0.005,\\\"ob_a\\\":0.92,\\\"ib_size\\\":0,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"additive\\\":1,\\\"textured\\\":1,\\\"rad\\\":1.773681,\\\"tex_ang\\\":3.141593,\\\"tex_zoom\\\":1.244713,\\\"r\\\":0,\\\"a\\\":0,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":0.5},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"/////////// new hue2rgb algorithm ////////////\\\\nt=time;\\\\nr2=max(min(-1+.955*acos(cos(t)),1),0);\\\\ng2=max(min(-1+.955*acos(cos(t+2.0942)),1),0);\\\\nb2=max(min(-1+.955*acos(cos(t+4.1883)),1),0);\\\\n//////////////////////////////////////////////\\\\n\\\\nr=r2;\\\\ng=g2;\\\\nb=b2;\\\\n\\\\na2=.25*(1-.5*above(q1,1)*min(q1-1,2));\\\\na=below(q1,1)*sqrt(q1)*.07*a2;\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"additive\\\":1,\\\"g\\\":0.25,\\\"b\\\":0.12},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"bt=bt+(.5+2*above(bass-pbass,0)*(bass-pbass))/FPS;\\\\npbass=bass;\\\\n\\\\nt1=bt; //mytime\\\\nt2=q1;\\\\nt3=.3*q1;\\\",\\\"point_eqs_eel\\\":\\\"t=t1+t2*(1-sample);\\\\n\\\\nox=.5+(.3+.05*sample)*cos(t+.65+3.1415*sin(1.7*t+.98))*sin(1.32*t+3.21);\\\\noy=.5+(.3+.05*sample)*1.25*sin(.78*t+1.71)*cos(.91*t+3.09+3.1415*sin(1.49*t+.43));\\\\n\\\\nang=atan2( (py-oy),(px-ox) );\\\\nl=tan(ang);\\\\nx2=.5+(.3-.05*sample)*cos(t+.65+3.1415*sin(1.7*t+.98))*sin(1.32*t+3.21);\\\\ny2=.5+(.3-.05*sample)*1.25*sin(.78*t+1.71)*cos(.91*t+3.09+3.1415*sin(1.49*t+.43));\\\\nsum = (l*x2-y2+oy-l*ox)*sign(ang)*sign(l);\\\\ndir=-1+2*above(sum,-.001);\\\\n\\\\nxtrudx=(1-counter%2)*t3*sample*cos(ang+dir*1.5707)*abs(value1+value2);\\\\nxtrudy=(1-counter%2)*t3*sample*sin(ang+dir*1.5707)*abs(value1+value2);\\\\n\\\\nx=ox+xtrudx;\\\\ny=oy+xtrudy;\\\\n\\\\npx=ox;\\\\npy=oy;\\\\n\\\\ncounter=1-counter;\\\\na=sqr(sample);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"additive\\\":1,\\\"g\\\":0.25,\\\"b\\\":0.12},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"bt=bt+(.5+2*above(bass-pbass,0)*(bass-pbass))/FPS;\\\\npbass=bass;\\\\n\\\\nt1=bt; //mytime\\\\nt2=q1;\\\\nt3=.3*q1;\\\",\\\"point_eqs_eel\\\":\\\"t=t1+t2*(1-sample);\\\\n\\\\nox=.5+(.3-.05*sample)*cos(t+.65+3.1415*sin(1.7*t+.98))*sin(1.32*t+3.21);\\\\noy=.5+(.3-.05*sample)*1.25*sin(.78*t+1.71)*cos(.91*t+3.09+3.1415*sin(1.49*t+.43));\\\\n\\\\nang=atan2( (py-oy),(px-ox) );\\\\nl=tan(ang);\\\\nx2=.5+(.3+.05*sample)*cos(t+.65+3.1415*sin(1.7*t+.98))*sin(1.32*t+3.21);\\\\ny2=.5+(.3+.05*sample)*1.25*sin(.78*t+1.71)*cos(.91*t+3.09+3.1415*sin(1.49*t+.43));\\\\nsum = (l*x2-y2+oy-l*ox)*sign(ang)*sign(l);\\\\ndir=-1+2*above(sum,-.001);\\\\n\\\\nxtrudx=(counter%2)*t3*sample*cos(ang+dir*1.5707)*abs(value1+value2);\\\\nxtrudy=(counter%2)*t3*sample*sin(ang+dir*1.5707)*abs(value1+value2);\\\\n\\\\nx=ox+xtrudx;\\\\ny=oy+xtrudy;\\\\n\\\\npx=ox;\\\\npy=oy;\\\\n\\\\ncounter=1-counter;\\\\na=sqr(sample);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"additive\\\":1,\\\"r\\\":0.12,\\\"g\\\":0.25},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"tt=tt+(.5+2*above(treb-ptreb,0)*(treb-ptreb))/FPS;\\\\nptreb=treb;\\\\n\\\\nt1=tt;\\\\nt2=q1;\\\\nt3=.3*q1;\\\",\\\"point_eqs_eel\\\":\\\"t=t1+t2*(1-sample);\\\\n\\\\nox=.5+(.3+.05*sample)*cos(.78*t+2.09+3.1415*sin(1.39*t+.91))*sin(1.72*t+1.43);\\\\noy=.5+(.3+.05*sample)*1.25*sin(1.41*t+.43)*cos(1.29*t+2.9+3.1415*sin(.93*t+2.6));\\\\n\\\\n\\\\nang=atan( (py-oy)/(px-ox) );\\\\n\\\\nl=tan(ang);\\\\nx2=.5+(.3-.05*sample)*cos(.78*t+2.09+3.1415*sin(1.39*t+.91))*sin(1.72*t+1.43);\\\\ny2=.5+(.3-.05*sample)*1.25*sin(1.41*t+.43)*cos(1.29*t+2.9+3.1415*sin(.93*t+2.6));\\\\nsum = (l*x2-y2+oy-l*ox)*sign(ang)*sign(l);\\\\ndir=-1+2*above(sum,-.001);\\\\n\\\\nxtrudx=(1-counter%2)*t3*sample*cos(ang+dir*1.5707)*abs(value1+value2);\\\\nxtrudy=(1-counter%2)*t3*sample*sin(ang+dir*1.5707)*abs(value1+value2);\\\\n\\\\nx=ox+xtrudx;\\\\ny=oy+xtrudy;\\\\n\\\\npx=ox;\\\\npy=oy;\\\\n\\\\ncounter=1-counter;\\\\na=sqr(sample);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"additive\\\":1,\\\"r\\\":0.12,\\\"g\\\":0.25},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"tt=tt+(.5+2*above(treb-ptreb,0)*(treb-ptreb))/FPS;\\\\nptreb=treb;\\\\n\\\\nt1=tt;\\\\nt2=q1;\\\\nt3=.3*q1;\\\",\\\"point_eqs_eel\\\":\\\"t=t1+t2*(1-sample);\\\\n\\\\nox=.5+(.3-.05*sample)*cos(.78*t+2.09+3.1415*sin(1.39*t+.91))*sin(1.72*t+1.43);\\\\noy=.5+(.3-.05*sample)*1.25*sin(1.41*t+.43)*cos(1.29*t+2.9+3.1415*sin(.93*t+2.6));\\\\n\\\\n\\\\nang=atan( (py-oy)/(px-ox) );\\\\nl=tan(ang);\\\\nx2=.5+(.3+.05*sample)*cos(.78*t+2.09+3.1415*sin(1.39*t+.91))*sin(1.72*t+1.43);\\\\ny2=.5+(.3+.05*sample)*1.25*sin(1.41*t+.43)*cos(1.29*t+2.9+3.1415*sin(.93*t+2.6));\\\\nsum = (l*x2-y2+oy-l*ox)*sign(ang)*sign(l);\\\\ndir=-1+2*above(sum,-.001);\\\\n\\\\nxtrudx=(1-counter%2)*t3*sample*cos(ang+dir*1.5707)*abs(value1+value2);\\\\nxtrudy=(1-counter%2)*t3*sample*sin(ang+dir*1.5707)*abs(value1+value2);\\\\n\\\\nx=ox+xtrudx;\\\\ny=oy+xtrudy;\\\\n\\\\npx=ox;\\\\npy=oy;\\\\n\\\\ncounter=1-counter;\\\\na=sqr(sample);\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"// -------------------------------- Beat Detective v0.07 ----------------------------------\\\\nsure=if(equal(sure,0),.6,sure);\\\\ninterval=if(equal(interval,0),40,interval);\\\\nlastbeat=if(equal(lastbeat,0),frame-FPS,lastbeat);\\\\ndbass=(bass-pbass)/FPS;\\\\nbeat=above(dbass,.6*maxdbass)*above(frame-lastbeat,FPS/3);\\\\nsure=if(beat*below(abs(frame-(interval+lastbeat)),FPS/5),\\\\nmin(.095+sure,1),beat*(sure-.095)+(1-beat)*sure*.9996);\\\\nsure=max(.5,sure);\\\\ncheat=if(above(frame,lastbeat+interval+ int(FPS/10))*above(sure,.91),1,cheat);\\\\nbeat=if(cheat,1,beat);\\\\nsure=if(cheat,.95*sure,sure);\\\\nmaxdbass=max(maxdbass*.999,dbass);\\\\nmaxdbass=max(.012,maxdbass);\\\\nmaxdbass=min(.02,maxdbass);\\\\ninterval=if(beat, frame-lastbeat,interval);\\\\nlastbeat=if(beat,frame-cheat*int(FPS/10),lastbeat);\\\\ncheat=0;\\\\npbass=bass;\\\\n// ----------------------------------------------------------------------------------------------\\\\n\\\\nwarp=0;\\\\ngamma=1.1;\\\\ndt=1/FPS;\\\\n\\\\nmytime=mytime+dt;\\\\ncontvol=min( max(.5, (1-.5*dt)*contvol+.5*dt*(bass+mid+treb)*.333 ) ,2 ) ;\\\\nq1=contvol;\\\\nq2=mytime;\\\\nq8=beat;\\\\n\\\\ndecay=.935-above(q1,1.5)*(q1-1.5)*.03;\\\\nmonitor=q1;\\\",\\\"pixel_eqs_eel\\\":\\\"zoom=1+ .1*(rad-.5)*abs(rad-.5);\\\",\\\"warp\\\":\\\"\\\",\\\"comp\\\":\\\"\\\"}\");\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(__webpack_module_cache__[moduleId]) {\n/******/ \t\t\treturn __webpack_module_cache__[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t(() => {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = (exports, definition) => {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t(() => {\n/******/ \t\t__webpack_require__.o = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop)\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/make namespace object */\n/******/ \t(() => {\n/******/ \t\t// define __esModule on exports\n/******/ \t\t__webpack_require__.r = (exports) => {\n/******/ \t\t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t\t}\n/******/ \t\t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/************************************************************************/\n/******/ \t// module exports must be returned from runtime so entry inlining is disabled\n/******/ \t// startup\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(\"./base.js\");\n/******/ })()\n;\n});\n//# sourceMappingURL=base.js.map","import { Options } from \"./types\";\nimport { PrivateOptions } from \"./webampLazy\";\nimport Webamp from \"./webamp\";\n// @ts-ignore\nimport butterchurn from \"butterchurn/dist/butterchurn.min.js\"; // buterchurn@3.0.0-beta.4\n// @ts-ignore\nimport butterchurnPresets from \"butterchurn-presets/dist/base.js\"; // butterchurn-presets@3.0.0-beta.4\n\nconst DEFAULT_BUTTERCHURN_WINDOW_LAYOUT = {\n  main: { position: { left: 0, top: 0 } },\n  equalizer: { position: { left: 0, top: 116 } },\n  playlist: {\n    position: { left: 0, top: 232 },\n    size: { extraHeight: 4, extraWidth: 0 },\n  },\n  milkdrop: {\n    position: { left: 275, top: 0 },\n    size: { extraHeight: 12, extraWidth: 7 },\n  },\n};\n\nexport default class WebampWithButterchurn extends Webamp {\n  constructor(options: Options & PrivateOptions) {\n    super({\n      ...options,\n      __butterchurnOptions: {\n        importButterchurn: () => Promise.resolve(butterchurn),\n        // @ts-ignore\n        getPresets: () => {\n          return Object.entries(butterchurnPresets).map(([name, preset]) => {\n            return { name, butterchurnPresetObject: preset };\n          });\n        },\n        butterchurnOpen: true,\n      },\n      windowLayout: options.windowLayout ?? DEFAULT_BUTTERCHURN_WINDOW_LAYOUT,\n    });\n  }\n}\n\n// Bit of a hack here. This overwrites the value set in Webamp.ts and WebampLazy.ts\n// @ts-ignore\nwindow.Webamp = Webamp;\n","import initDebug from 'debug';\nimport * as Token from 'token-types';\nimport * as util from '../common/Util.js';\nimport { AttachedPictureType, SyncTextHeader, TextEncodingToken, TextHeader } from './ID3v2Token.js';\nimport { Genres } from '../id3v1/ID3v1Parser.js';\nimport { makeUnexpectedFileContentError } from '../ParseError.js';\nconst debug = initDebug('music-metadata:id3v2:frame-parser');\nconst defaultEnc = 'latin1'; // latin1 == iso-8859-1;\nexport function parseGenre(origVal) {\n    // match everything inside parentheses\n    const genres = [];\n    let code;\n    let word = '';\n    for (const c of origVal) {\n        if (typeof code === 'string') {\n            if (c === '(' && code === '') {\n                word += '(';\n                code = undefined;\n            }\n            else if (c === ')') {\n                if (word !== '') {\n                    genres.push(word);\n                    word = '';\n                }\n                const genre = parseGenreCode(code);\n                if (genre) {\n                    genres.push(genre);\n                }\n                code = undefined;\n            }\n            else\n                code += c;\n        }\n        else if (c === '(') {\n            code = '';\n        }\n        else {\n            word += c;\n        }\n    }\n    if (word) {\n        if (genres.length === 0 && word.match(/^\\d*$/)) {\n            word = parseGenreCode(word);\n        }\n        if (word) {\n            genres.push(word);\n        }\n    }\n    return genres;\n}\nfunction parseGenreCode(code) {\n    if (code === 'RX')\n        return 'Remix';\n    if (code === 'CR')\n        return 'Cover';\n    if (code.match(/^\\d*$/)) {\n        return Genres[Number.parseInt(code)];\n    }\n}\nexport class FrameParser {\n    /**\n     * Create id3v2 frame parser\n     * @param major - Major version, e.g. (4) for  id3v2.4\n     * @param warningCollector - Used to collect decode issue\n     */\n    constructor(major, warningCollector) {\n        this.major = major;\n        this.warningCollector = warningCollector;\n    }\n    readData(uint8Array, type, includeCovers) {\n        if (uint8Array.length === 0) {\n            this.warningCollector.addWarning(`id3v2.${this.major} header has empty tag type=${type}`);\n            return;\n        }\n        const { encoding, bom } = TextEncodingToken.get(uint8Array, 0);\n        const length = uint8Array.length;\n        let offset = 0;\n        let output = []; // ToDo\n        const nullTerminatorLength = FrameParser.getNullTerminatorLength(encoding);\n        let fzero;\n        debug(`Parsing tag type=${type}, encoding=${encoding}, bom=${bom}`);\n        switch (type !== 'TXXX' && type[0] === 'T' ? 'T*' : type) {\n            case 'T*': // 4.2.1. Text information frames - details\n            case 'GRP1': // iTunes-specific ID3v2 grouping field\n            case 'IPLS': // v2.3: Involved people list\n            case 'MVIN':\n            case 'MVNM':\n            case 'PCS':\n            case 'PCST': {\n                let text;\n                try {\n                    text = util.decodeString(uint8Array.slice(1), encoding).replace(/\\x00+$/, '');\n                }\n                catch (error) {\n                    if (error instanceof Error) {\n                        this.warningCollector.addWarning(`id3v2.${this.major} type=${type} header has invalid string value: ${error.message}`);\n                        break;\n                    }\n                    throw error;\n                }\n                switch (type) {\n                    case 'TMCL': // Musician credits list\n                    case 'TIPL': // Involved people list\n                    case 'IPLS': // Involved people list\n                        output = FrameParser.functionList(this.splitValue(type, text));\n                        break;\n                    case 'TRK':\n                    case 'TRCK':\n                    case 'TPOS':\n                        output = text;\n                        break;\n                    case 'TCOM':\n                    case 'TEXT':\n                    case 'TOLY':\n                    case 'TOPE':\n                    case 'TPE1':\n                    case 'TSRC':\n                        // id3v2.3 defines that TCOM, TEXT, TOLY, TOPE & TPE1 values are separated by /\n                        output = this.splitValue(type, text);\n                        break;\n                    case 'TCO':\n                    case 'TCON':\n                        output = this.splitValue(type, text).map(v => parseGenre(v)).reduce((acc, val) => acc.concat(val), []);\n                        break;\n                    case 'PCS':\n                    case 'PCST':\n                        // TODO: Why `default` not results `1` but `''`?\n                        output = this.major >= 4 ? this.splitValue(type, text) : [text];\n                        output = (Array.isArray(output) && output[0] === '') ? 1 : 0;\n                        break;\n                    default:\n                        output = this.major >= 4 ? this.splitValue(type, text) : [text];\n                }\n                break;\n            }\n            case 'TXXX': {\n                const idAndData = FrameParser.readIdentifierAndData(uint8Array, offset + 1, length, encoding);\n                const textTag = {\n                    description: idAndData.id,\n                    text: this.splitValue(type, util.decodeString(idAndData.data, encoding).replace(/\\x00+$/, ''))\n                };\n                output = textTag;\n                break;\n            }\n            case 'PIC':\n            case 'APIC':\n                if (includeCovers) {\n                    const pic = {};\n                    offset += 1;\n                    switch (this.major) {\n                        case 2:\n                            pic.format = util.decodeString(uint8Array.slice(offset, offset + 3), 'latin1'); // 'latin1'; // latin1 == iso-8859-1;\n                            offset += 3;\n                            break;\n                        case 3:\n                        case 4:\n                            fzero = util.findZero(uint8Array, offset, length, defaultEnc);\n                            pic.format = util.decodeString(uint8Array.slice(offset, fzero), defaultEnc);\n                            offset = fzero + 1;\n                            break;\n                        default:\n                            throw makeUnexpectedMajorVersionError(this.major);\n                    }\n                    pic.format = FrameParser.fixPictureMimeType(pic.format);\n                    pic.type = AttachedPictureType[uint8Array[offset]];\n                    offset += 1;\n                    fzero = util.findZero(uint8Array, offset, length, encoding);\n                    pic.description = util.decodeString(uint8Array.slice(offset, fzero), encoding);\n                    offset = fzero + nullTerminatorLength;\n                    pic.data = uint8Array.slice(offset, length);\n                    output = pic;\n                }\n                break;\n            case 'CNT':\n            case 'PCNT':\n                output = Token.UINT32_BE.get(uint8Array, 0);\n                break;\n            case 'SYLT': {\n                const syltHeader = SyncTextHeader.get(uint8Array, 0);\n                offset += SyncTextHeader.len;\n                const result = {\n                    descriptor: '',\n                    language: syltHeader.language,\n                    contentType: syltHeader.contentType,\n                    timeStampFormat: syltHeader.timeStampFormat,\n                    syncText: []\n                };\n                let readSyllables = false;\n                while (offset < length) {\n                    const nullStr = FrameParser.readNullTerminatedString(uint8Array.subarray(offset), syltHeader.encoding);\n                    offset += nullStr.len;\n                    if (readSyllables) {\n                        const timestamp = Token.UINT32_BE.get(uint8Array, offset);\n                        offset += Token.UINT32_BE.len;\n                        result.syncText.push({\n                            text: nullStr.text,\n                            timestamp\n                        });\n                    }\n                    else {\n                        result.descriptor = nullStr.text;\n                        readSyllables = true;\n                    }\n                }\n                output = result;\n                break;\n            }\n            case 'ULT':\n            case 'USLT':\n            case 'COM':\n            case 'COMM': {\n                const textHeader = TextHeader.get(uint8Array, offset);\n                offset += TextHeader.len;\n                const descriptorStr = FrameParser.readNullTerminatedString(uint8Array.subarray(offset), textHeader.encoding);\n                offset += descriptorStr.len;\n                const textStr = FrameParser.readNullTerminatedString(uint8Array.subarray(offset), textHeader.encoding);\n                const comment = {\n                    language: textHeader.language,\n                    descriptor: descriptorStr.text,\n                    text: textStr.text\n                };\n                output = comment;\n                break;\n            }\n            case 'UFID': {\n                const ufid = FrameParser.readIdentifierAndData(uint8Array, offset, length, defaultEnc);\n                output = { owner_identifier: ufid.id, identifier: ufid.data };\n                break;\n            }\n            case 'PRIV': { // private frame\n                const priv = FrameParser.readIdentifierAndData(uint8Array, offset, length, defaultEnc);\n                output = { owner_identifier: priv.id, data: priv.data };\n                break;\n            }\n            case 'POPM': { // Popularimeter\n                fzero = util.findZero(uint8Array, offset, length, defaultEnc);\n                const email = util.decodeString(uint8Array.slice(offset, fzero), defaultEnc);\n                offset = fzero + 1;\n                const dataLen = length - offset;\n                output = {\n                    email,\n                    rating: Token.UINT8.get(uint8Array, offset),\n                    counter: dataLen >= 5 ? Token.UINT32_BE.get(uint8Array, offset + 1) : undefined\n                };\n                break;\n            }\n            case 'GEOB': { // General encapsulated object\n                fzero = util.findZero(uint8Array, offset + 1, length, encoding);\n                const mimeType = util.decodeString(uint8Array.slice(offset + 1, fzero), defaultEnc);\n                offset = fzero + 1;\n                fzero = util.findZero(uint8Array, offset, length, encoding);\n                const filename = util.decodeString(uint8Array.slice(offset, fzero), defaultEnc);\n                offset = fzero + 1;\n                fzero = util.findZero(uint8Array, offset, length, encoding);\n                const description = util.decodeString(uint8Array.slice(offset, fzero), defaultEnc);\n                offset = fzero + 1;\n                const geob = {\n                    type: mimeType,\n                    filename,\n                    description,\n                    data: uint8Array.slice(offset, length)\n                };\n                output = geob;\n                break;\n            }\n            // W-Frames:\n            case 'WCOM':\n            case 'WCOP':\n            case 'WOAF':\n            case 'WOAR':\n            case 'WOAS':\n            case 'WORS':\n            case 'WPAY':\n            case 'WPUB':\n                // Decode URL\n                fzero = util.findZero(uint8Array, offset + 1, length, encoding);\n                output = util.decodeString(uint8Array.slice(offset, fzero), defaultEnc);\n                break;\n            case 'WXXX': {\n                // Decode URL\n                fzero = util.findZero(uint8Array, offset + 1, length, encoding);\n                const description = util.decodeString(uint8Array.slice(offset + 1, fzero), encoding);\n                offset = fzero + (encoding === 'utf-16le' ? 2 : 1);\n                output = { description, url: util.decodeString(uint8Array.slice(offset, length), defaultEnc) };\n                break;\n            }\n            case 'WFD':\n            case 'WFED':\n                output = util.decodeString(uint8Array.slice(offset + 1, util.findZero(uint8Array, offset + 1, length, encoding)), encoding);\n                break;\n            case 'MCDI': {\n                // Music CD identifier\n                output = uint8Array.slice(0, length);\n                break;\n            }\n            default:\n                debug(`Warning: unsupported id3v2-tag-type: ${type}`);\n                break;\n        }\n        return output;\n    }\n    static readNullTerminatedString(uint8Array, encoding) {\n        let offset = encoding.bom ? 2 : 0;\n        const zeroIndex = util.findZero(uint8Array, offset, uint8Array.length, encoding.encoding);\n        const txt = uint8Array.slice(offset, zeroIndex);\n        if (encoding.encoding === 'utf-16le') {\n            offset = zeroIndex + 2;\n        }\n        else {\n            offset = zeroIndex + 1;\n        }\n        return {\n            text: util.decodeString(txt, encoding.encoding),\n            len: offset\n        };\n    }\n    static fixPictureMimeType(pictureType) {\n        pictureType = pictureType.toLocaleLowerCase();\n        switch (pictureType) {\n            case 'jpg':\n                return 'image/jpeg';\n            case 'png':\n                return 'image/png';\n        }\n        return pictureType;\n    }\n    /**\n     * Converts TMCL (Musician credits list) or TIPL (Involved people list)\n     * @param entries\n     */\n    static functionList(entries) {\n        const res = {};\n        for (let i = 0; i + 1 < entries.length; i += 2) {\n            const names = entries[i + 1].split(',');\n            res[entries[i]] = res[entries[i]] ? res[entries[i]].concat(names) : names;\n        }\n        return res;\n    }\n    /**\n     * id3v2.4 defines that multiple T* values are separated by 0x00\n     * id3v2.3 defines that TCOM, TEXT, TOLY, TOPE & TPE1 values are separated by /\n     * @param tag - Tag name\n     * @param text - Concatenated tag value\n     * @returns Split tag value\n     */\n    splitValue(tag, text) {\n        let values;\n        if (this.major < 4) {\n            values = text.split(/\\x00/g);\n            if (values.length > 1) {\n                this.warningCollector.addWarning(`ID3v2.${this.major} ${tag} uses non standard null-separator.`);\n            }\n            else {\n                values = text.split(/\\//g);\n            }\n        }\n        else {\n            values = text.split(/\\x00/g);\n        }\n        return FrameParser.trimArray(values);\n    }\n    static trimArray(values) {\n        return values.map(value => value.replace(/\\x00+$/, '').trim());\n    }\n    static readIdentifierAndData(uint8Array, offset, length, encoding) {\n        const fzero = util.findZero(uint8Array, offset, length, encoding);\n        const id = util.decodeString(uint8Array.slice(offset, fzero), encoding);\n        offset = fzero + FrameParser.getNullTerminatorLength(encoding);\n        return { id, data: uint8Array.slice(offset, length) };\n    }\n    static getNullTerminatorLength(enc) {\n        return enc === 'utf-16le' ? 2 : 1;\n    }\n}\nexport class Id3v2ContentError extends makeUnexpectedFileContentError('id3v2') {\n}\nfunction makeUnexpectedMajorVersionError(majorVer) {\n    throw new Id3v2ContentError(`Unexpected majorVer: ${majorVer}`);\n}\n//# sourceMappingURL=FrameParser.js.map","import * as Token from 'token-types';\nimport * as util from '../common/Util.js';\nimport { FrameParser, Id3v2ContentError } from './FrameParser.js';\nimport { ExtendedHeader, ID3v2Header, UINT32SYNCSAFE } from './ID3v2Token.js';\nconst asciiDecoder = new TextDecoder('ascii');\nexport class ID3v2Parser {\n    constructor() {\n        this.tokenizer = undefined;\n        this.id3Header = undefined;\n        this.metadata = undefined;\n        this.headerType = undefined;\n        this.options = undefined;\n    }\n    static removeUnsyncBytes(buffer) {\n        let readI = 0;\n        let writeI = 0;\n        while (readI < buffer.length - 1) {\n            if (readI !== writeI) {\n                buffer[writeI] = buffer[readI];\n            }\n            readI += (buffer[readI] === 0xFF && buffer[readI + 1] === 0) ? 2 : 1;\n            writeI++;\n        }\n        if (readI < buffer.length) {\n            buffer[writeI++] = buffer[readI];\n        }\n        return buffer.slice(0, writeI);\n    }\n    static getFrameHeaderLength(majorVer) {\n        switch (majorVer) {\n            case 2:\n                return 6;\n            case 3:\n            case 4:\n                return 10;\n            default:\n                throw makeUnexpectedMajorVersionError(majorVer);\n        }\n    }\n    static readFrameFlags(b) {\n        return {\n            status: {\n                tag_alter_preservation: util.getBit(b, 0, 6),\n                file_alter_preservation: util.getBit(b, 0, 5),\n                read_only: util.getBit(b, 0, 4)\n            },\n            format: {\n                grouping_identity: util.getBit(b, 1, 7),\n                compression: util.getBit(b, 1, 3),\n                encryption: util.getBit(b, 1, 2),\n                unsynchronisation: util.getBit(b, 1, 1),\n                data_length_indicator: util.getBit(b, 1, 0)\n            }\n        };\n    }\n    static readFrameData(uint8Array, frameHeader, majorVer, includeCovers, warningCollector) {\n        const frameParser = new FrameParser(majorVer, warningCollector);\n        switch (majorVer) {\n            case 2:\n                return frameParser.readData(uint8Array, frameHeader.id, includeCovers);\n            case 3:\n            case 4:\n                if (frameHeader.flags?.format.unsynchronisation) {\n                    uint8Array = ID3v2Parser.removeUnsyncBytes(uint8Array);\n                }\n                if (frameHeader.flags?.format.data_length_indicator) {\n                    uint8Array = uint8Array.slice(4, uint8Array.length);\n                }\n                return frameParser.readData(uint8Array, frameHeader.id, includeCovers);\n            default:\n                throw makeUnexpectedMajorVersionError(majorVer);\n        }\n    }\n    /**\n     * Create a combined tag key, of tag & description\n     * @param tag e.g.: COM\n     * @param description e.g. iTunPGAP\n     * @returns string e.g. COM:iTunPGAP\n     */\n    static makeDescriptionTagName(tag, description) {\n        return tag + (description ? `:${description}` : '');\n    }\n    async parse(metadata, tokenizer, options) {\n        this.tokenizer = tokenizer;\n        this.metadata = metadata;\n        this.options = options;\n        const id3Header = await this.tokenizer.readToken(ID3v2Header);\n        if (id3Header.fileIdentifier !== 'ID3') {\n            throw new Id3v2ContentError('expected ID3-header file-identifier \\'ID3\\' was not found');\n        }\n        this.id3Header = id3Header;\n        this.headerType = (`ID3v2.${id3Header.version.major}`);\n        return id3Header.flags.isExtendedHeader ? this.parseExtendedHeader() : this.parseId3Data(id3Header.size);\n    }\n    async parseExtendedHeader() {\n        const extendedHeader = await this.tokenizer.readToken(ExtendedHeader);\n        const dataRemaining = extendedHeader.size - ExtendedHeader.len;\n        return dataRemaining > 0 ? this.parseExtendedHeaderData(dataRemaining, extendedHeader.size) : this.parseId3Data(this.id3Header.size - extendedHeader.size);\n    }\n    async parseExtendedHeaderData(dataRemaining, extendedHeaderSize) {\n        await this.tokenizer.ignore(dataRemaining);\n        return this.parseId3Data(this.id3Header.size - extendedHeaderSize);\n    }\n    async parseId3Data(dataLen) {\n        const uint8Array = await this.tokenizer.readToken(new Token.Uint8ArrayType(dataLen));\n        for (const tag of this.parseMetadata(uint8Array)) {\n            switch (tag.id) {\n                case 'TXXX':\n                    if (tag.value) {\n                        await this.handleTag(tag, tag.value.text, () => tag.value.description);\n                    }\n                    break;\n                default:\n                    await (Array.isArray(tag.value) ? Promise.all(tag.value.map(value => this.addTag(tag.id, value))) : this.addTag(tag.id, tag.value));\n            }\n        }\n    }\n    async handleTag(tag, values, descriptor, resolveValue = value => value) {\n        await Promise.all(values.map(value => this.addTag(ID3v2Parser.makeDescriptionTagName(tag.id, descriptor(value)), resolveValue(value))));\n    }\n    async addTag(id, value) {\n        await this.metadata.addTag(this.headerType, id, value);\n    }\n    parseMetadata(data) {\n        let offset = 0;\n        const tags = [];\n        while (true) {\n            if (offset === data.length)\n                break;\n            const frameHeaderLength = ID3v2Parser.getFrameHeaderLength(this.id3Header.version.major);\n            if (offset + frameHeaderLength > data.length) {\n                this.metadata.addWarning('Illegal ID3v2 tag length');\n                break;\n            }\n            const frameHeaderBytes = data.slice(offset, offset + frameHeaderLength);\n            offset += frameHeaderLength;\n            const frameHeader = this.readFrameHeader(frameHeaderBytes, this.id3Header.version.major);\n            const frameDataBytes = data.slice(offset, offset + frameHeader.length);\n            offset += frameHeader.length;\n            const values = ID3v2Parser.readFrameData(frameDataBytes, frameHeader, this.id3Header.version.major, !this.options.skipCovers, this.metadata);\n            if (values) {\n                tags.push({ id: frameHeader.id, value: values });\n            }\n        }\n        return tags;\n    }\n    readFrameHeader(uint8Array, majorVer) {\n        let header;\n        switch (majorVer) {\n            case 2:\n                header = {\n                    id: asciiDecoder.decode(uint8Array.slice(0, 3)),\n                    length: Token.UINT24_BE.get(uint8Array, 3)\n                };\n                if (!header.id.match(/[A-Z0-9]{3}/g)) {\n                    this.metadata.addWarning(`Invalid ID3v2.${this.id3Header.version.major} frame-header-ID: ${header.id}`);\n                }\n                break;\n            case 3:\n            case 4:\n                header = {\n                    id: asciiDecoder.decode(uint8Array.slice(0, 4)),\n                    length: (majorVer === 4 ? UINT32SYNCSAFE : Token.UINT32_BE).get(uint8Array, 4),\n                    flags: ID3v2Parser.readFrameFlags(uint8Array.slice(8, 10))\n                };\n                if (!header.id.match(/[A-Z0-9]{4}/g)) {\n                    this.metadata.addWarning(`Invalid ID3v2.${this.id3Header.version.major} frame-header-ID: ${header.id}`);\n                }\n                break;\n            default:\n                throw makeUnexpectedMajorVersionError(majorVer);\n        }\n        return header;\n    }\n}\nfunction makeUnexpectedMajorVersionError(majorVer) {\n    throw new Id3v2ContentError(`Unexpected majorVer: ${majorVer}`);\n}\n//# sourceMappingURL=ID3v2Parser.js.map","import { EndOfStreamError } from 'strtok3';\nimport initDebug from 'debug';\nimport { ID3v2Header } from './ID3v2Token.js';\nimport { ID3v2Parser } from './ID3v2Parser.js';\nimport { ID3v1Parser } from '../id3v1/ID3v1Parser.js';\nimport { BasicParser } from '../common/BasicParser.js';\nconst debug = initDebug('music-metadata:parser:ID3');\n/**\n * Abstract parser which tries take ID3v2 and ID3v1 headers.\n */\nexport class AbstractID3Parser extends BasicParser {\n    constructor() {\n        super(...arguments);\n        this.id3parser = new ID3v2Parser();\n    }\n    static async startsWithID3v2Header(tokenizer) {\n        return (await tokenizer.peekToken(ID3v2Header)).fileIdentifier === 'ID3';\n    }\n    async parse() {\n        try {\n            await this.parseID3v2();\n        }\n        catch (err) {\n            if (err instanceof EndOfStreamError) {\n                debug(\"End-of-stream\");\n            }\n            else {\n                throw err;\n            }\n        }\n    }\n    finalize() {\n        return;\n    }\n    async parseID3v2() {\n        await this.tryReadId3v2Headers();\n        debug('End of ID3v2 header, go to MPEG-parser: pos=%s', this.tokenizer.position);\n        await this.postId3v2Parse();\n        if (this.options.skipPostHeaders && this.metadata.hasAny()) {\n            this.finalize();\n        }\n        else {\n            const id3v1parser = new ID3v1Parser(this.metadata, this.tokenizer, this.options);\n            await id3v1parser.parse();\n            this.finalize();\n        }\n    }\n    async tryReadId3v2Headers() {\n        const id3Header = await this.tokenizer.peekToken(ID3v2Header);\n        if (id3Header.fileIdentifier === 'ID3') {\n            debug('Found ID3v2 header, pos=%s', this.tokenizer.position);\n            await this.id3parser.parse(this.metadata, this.tokenizer, this.options);\n            return this.tryReadId3v2Headers();\n        }\n    }\n}\n//# sourceMappingURL=AbstractID3Parser.js.map","import * as common from '../common/Util.js';\n/**\n * https://github.com/Borewit/music-metadata/wiki/Replay-Gain-Data-Format#name-code\n */\nconst NameCode = {\n    /**\n     * not set\n     */\n    not_set: 0,\n    /**\n     * Radio Gain Adjustment\n     */\n    radio: 1,\n    /**\n     * Audiophile Gain Adjustment\n     */\n    audiophile: 2\n};\n/**\n * https://github.com/Borewit/music-metadata/wiki/Replay-Gain-Data-Format#originator-code\n */\nconst ReplayGainOriginator = {\n    /**\n     * Replay Gain unspecified\n     */\n    unspecified: 0,\n    /**\n     * Replay Gain pre-set by artist/producer/mastering engineer\n     */\n    engineer: 1,\n    /**\n     * Replay Gain set by user\n     */\n    user: 2,\n    /**\n     * Replay Gain determined automatically, as described on this site\n     */\n    automatic: 3,\n    /**\n     * Set by simple RMS average\n     */\n    rms_average: 4\n};\n/**\n * Replay Gain Data Format\n *\n * https://github.com/Borewit/music-metadata/wiki/Replay-Gain-Data-Format\n */\nexport const ReplayGain = {\n    len: 2,\n    get: (buf, off) => {\n        const gain_type = common.getBitAllignedNumber(buf, off, 0, 3);\n        const sign = common.getBitAllignedNumber(buf, off, 6, 1);\n        const gain_adj = common.getBitAllignedNumber(buf, off, 7, 9) / 10.0;\n        if (gain_type > 0) {\n            return {\n                type: common.getBitAllignedNumber(buf, off, 0, 3),\n                origin: common.getBitAllignedNumber(buf, off, 3, 3),\n                adjustment: (sign ? -gain_adj : gain_adj)\n            };\n        }\n        return undefined;\n    }\n};\n//# sourceMappingURL=ReplayGainDataFormat.js.map","/**\n * Extended Lame Header\n */\nimport * as Token from 'token-types';\nimport * as common from '../common/Util.js';\nimport { ReplayGain } from './ReplayGainDataFormat.js';\n/**\n * Info Tag\n * @link http://gabriel.mp3-tech.org/mp3infotag.html\n * @link https://github.com/quodlibet/mutagen/blob/abd58ee58772224334a18817c3fb31103572f70e/mutagen/mp3/_util.py#L112\n */\nexport const ExtendedLameHeader = {\n    len: 27,\n    get: (buf, off) => {\n        const track_peak = Token.UINT32_BE.get(buf, off + 2);\n        return {\n            revision: common.getBitAllignedNumber(buf, off, 0, 4),\n            vbr_method: common.getBitAllignedNumber(buf, off, 4, 4),\n            lowpass_filter: 100 * Token.UINT8.get(buf, off + 1),\n            track_peak: track_peak === 0 ? null : track_peak / 2 ** 23,\n            track_gain: ReplayGain.get(buf, 6),\n            album_gain: ReplayGain.get(buf, 8),\n            music_length: Token.UINT32_BE.get(buf, off + 20),\n            music_crc: Token.UINT8.get(buf, off + 24),\n            header_crc: Token.UINT16_BE.get(buf, off + 24)\n        };\n    }\n};\n//# sourceMappingURL=ExtendedLameHeader.js.map","import * as Token from 'token-types';\nimport * as util from '../common/Util.js';\nimport { ExtendedLameHeader } from './ExtendedLameHeader.js';\n/**\n * Info Tag: Xing, LAME\n */\nexport const InfoTagHeaderTag = new Token.StringType(4, 'ascii');\n/**\n * LAME TAG value\n * Did not find any official documentation for this\n * Value e.g.: \"3.98.4\"\n */\nexport const LameEncoderVersion = new Token.StringType(6, 'ascii');\n/**\n * Info Tag\n * Ref: http://gabriel.mp3-tech.org/mp3infotag.html\n */\nexport const XingHeaderFlags = {\n    len: 4,\n    get: (buf, off) => {\n        return {\n            frames: util.isBitSet(buf, off, 31),\n            bytes: util.isBitSet(buf, off, 30),\n            toc: util.isBitSet(buf, off, 29),\n            vbrScale: util.isBitSet(buf, off, 28)\n        };\n    }\n};\n// /**\n//  * XING Header Tag\n//  * Ref: http://gabriel.mp3-tech.org/mp3infotag.html\n//  */\nexport async function readXingHeader(tokenizer) {\n    const flags = await tokenizer.readToken(XingHeaderFlags);\n    const xingInfoTag = { numFrames: null, streamSize: null, vbrScale: null };\n    if (flags.frames) {\n        xingInfoTag.numFrames = await tokenizer.readToken(Token.UINT32_BE);\n    }\n    if (flags.bytes) {\n        xingInfoTag.streamSize = await tokenizer.readToken(Token.UINT32_BE);\n    }\n    if (flags.toc) {\n        xingInfoTag.toc = new Uint8Array(100);\n        await tokenizer.readBuffer(xingInfoTag.toc);\n    }\n    if (flags.vbrScale) {\n        xingInfoTag.vbrScale = await tokenizer.readToken(Token.UINT32_BE);\n    }\n    const lameTag = await tokenizer.peekToken(new Token.StringType(4, 'ascii'));\n    if (lameTag === 'LAME') {\n        await tokenizer.ignore(4);\n        xingInfoTag.lame = {\n            version: await tokenizer.readToken(new Token.StringType(5, 'ascii'))\n        };\n        const match = xingInfoTag.lame.version.match(/\\d+.\\d+/g);\n        if (match !== null) {\n            const majorMinorVersion = match[0]; // e.g. 3.97\n            const version = majorMinorVersion.split('.').map(n => Number.parseInt(n, 10));\n            if (version[0] >= 3 && version[1] >= 90) {\n                xingInfoTag.lame.extended = await tokenizer.readToken(ExtendedLameHeader);\n            }\n        }\n    }\n    return xingInfoTag;\n}\n//# sourceMappingURL=XingTag.js.map","import * as Token from 'token-types';\nimport { EndOfStreamError } from 'strtok3';\nimport initDebug from 'debug';\nimport * as common from '../common/Util.js';\nimport { AbstractID3Parser } from '../id3v2/AbstractID3Parser.js';\nimport { InfoTagHeaderTag, LameEncoderVersion, readXingHeader } from './XingTag.js';\nimport { makeUnexpectedFileContentError } from '../ParseError.js';\nconst debug = initDebug('music-metadata:parser:mpeg');\nexport class MpegContentError extends makeUnexpectedFileContentError('MPEG') {\n}\n/**\n * Cache buffer size used for searching synchronization preabmle\n */\nconst maxPeekLen = 1024;\n/**\n * MPEG-4 Audio definitions\n * Ref:  https://wiki.multimedia.cx/index.php/MPEG-4_Audio\n */\nconst MPEG4 = {\n    /**\n     * Audio Object Types\n     */\n    AudioObjectTypes: [\n        'AAC Main',\n        'AAC LC', // Low Complexity\n        'AAC SSR', // Scalable Sample Rate\n        'AAC LTP' // Long Term Prediction\n    ],\n    /**\n     * Sampling Frequencies\n     * https://wiki.multimedia.cx/index.php/MPEG-4_Audio#Sampling_Frequencies\n     */\n    SamplingFrequencies: [\n        96000, 88200, 64000, 48000, 44100, 32000, 24000, 22050, 16000, 12000, 11025, 8000, 7350, null, null, -1\n    ]\n    /**\n     * Channel Configurations\n     */\n};\nconst MPEG4_ChannelConfigurations = [\n    undefined,\n    ['front-center'],\n    ['front-left', 'front-right'],\n    ['front-center', 'front-left', 'front-right'],\n    ['front-center', 'front-left', 'front-right', 'back-center'],\n    ['front-center', 'front-left', 'front-right', 'back-left', 'back-right'],\n    ['front-center', 'front-left', 'front-right', 'back-left', 'back-right', 'LFE-channel'],\n    ['front-center', 'front-left', 'front-right', 'side-left', 'side-right', 'back-left', 'back-right', 'LFE-channel']\n];\n/**\n * MPEG Audio Layer I/II/III frame header\n * Ref: https://www.mp3-tech.org/programmer/frame_header.html\n * Bit layout: AAAAAAAA AAABBCCD EEEEFFGH IIJJKLMM\n * Ref: https://wiki.multimedia.cx/index.php/ADTS\n */\nclass MpegFrameHeader {\n    constructor(buf, off) {\n        // E(15,12): Bitrate index\n        this.bitrateIndex = null;\n        // F(11,10): Sampling rate frequency index\n        this.sampRateFreqIndex = null;\n        // G(9): Padding bit\n        this.padding = null;\n        // H(8): Private bit\n        this.privateBit = null;\n        // I(7,6): Channel Mode\n        this.channelModeIndex = null;\n        // J(5,4): Mode extension (Only used in Joint stereo)\n        this.modeExtension = null;\n        // L(2): Original\n        this.isOriginalMedia = null;\n        this.version = null;\n        this.bitrate = null;\n        this.samplingRate = null;\n        this.frameLength = 0;\n        // B(20,19): MPEG Audio versionIndex ID\n        this.versionIndex = common.getBitAllignedNumber(buf, off + 1, 3, 2);\n        // C(18,17): Layer description\n        this.layer = MpegFrameHeader.LayerDescription[common.getBitAllignedNumber(buf, off + 1, 5, 2)];\n        if (this.versionIndex > 1 && this.layer === 0) {\n            this.parseAdtsHeader(buf, off); // Audio Data Transport Stream (ADTS)\n        }\n        else {\n            this.parseMpegHeader(buf, off); // Conventional MPEG header\n        }\n        // D(16): Protection bit (if true 16-bit CRC follows header)\n        this.isProtectedByCRC = !common.isBitSet(buf, off + 1, 7);\n    }\n    calcDuration(numFrames) {\n        return this.samplingRate == null ? null : (numFrames * this.calcSamplesPerFrame() / this.samplingRate);\n    }\n    calcSamplesPerFrame() {\n        return MpegFrameHeader.samplesInFrameTable[this.version === 1 ? 0 : 1][this.layer];\n    }\n    calculateSideInfoLength() {\n        if (this.layer !== 3)\n            return 2;\n        if (this.channelModeIndex === 3) {\n            // mono\n            if (this.version === 1) {\n                return 17;\n            }\n            if (this.version === 2 || this.version === 2.5) {\n                return 9;\n            }\n        }\n        else {\n            if (this.version === 1) {\n                return 32;\n            }\n            if (this.version === 2 || this.version === 2.5) {\n                return 17;\n            }\n        }\n        return null;\n    }\n    calcSlotSize() {\n        return [null, 4, 1, 1][this.layer];\n    }\n    parseMpegHeader(buf, off) {\n        this.container = 'MPEG';\n        // E(15,12): Bitrate index\n        this.bitrateIndex = common.getBitAllignedNumber(buf, off + 2, 0, 4);\n        // F(11,10): Sampling rate frequency index\n        this.sampRateFreqIndex = common.getBitAllignedNumber(buf, off + 2, 4, 2);\n        // G(9): Padding bit\n        this.padding = common.isBitSet(buf, off + 2, 6);\n        // H(8): Private bit\n        this.privateBit = common.isBitSet(buf, off + 2, 7);\n        // I(7,6): Channel Mode\n        this.channelModeIndex = common.getBitAllignedNumber(buf, off + 3, 0, 2);\n        // J(5,4): Mode extension (Only used in Joint stereo)\n        this.modeExtension = common.getBitAllignedNumber(buf, off + 3, 2, 2);\n        // K(3): Copyright\n        this.isCopyrighted = common.isBitSet(buf, off + 3, 4);\n        // L(2): Original\n        this.isOriginalMedia = common.isBitSet(buf, off + 3, 5);\n        // M(3): The original bit indicates, if it is set, that the frame is located on its original media.\n        this.emphasis = common.getBitAllignedNumber(buf, off + 3, 7, 2);\n        this.version = MpegFrameHeader.VersionID[this.versionIndex];\n        this.channelMode = MpegFrameHeader.ChannelMode[this.channelModeIndex];\n        this.codec = `MPEG ${this.version} Layer ${this.layer}`;\n        // Calculate bitrate\n        const bitrateInKbps = this.calcBitrate();\n        if (!bitrateInKbps) {\n            throw new MpegContentError('Cannot determine bit-rate');\n        }\n        this.bitrate = bitrateInKbps * 1000;\n        // Calculate sampling rate\n        this.samplingRate = this.calcSamplingRate();\n        if (this.samplingRate == null) {\n            throw new MpegContentError('Cannot determine sampling-rate');\n        }\n    }\n    parseAdtsHeader(buf, off) {\n        debug(\"layer=0 => ADTS\");\n        this.version = this.versionIndex === 2 ? 4 : 2;\n        this.container = `ADTS/MPEG-${this.version}`;\n        const profileIndex = common.getBitAllignedNumber(buf, off + 2, 0, 2);\n        this.codec = 'AAC';\n        this.codecProfile = MPEG4.AudioObjectTypes[profileIndex];\n        debug(`MPEG-4 audio-codec=${this.codec}`);\n        const samplingFrequencyIndex = common.getBitAllignedNumber(buf, off + 2, 2, 4);\n        this.samplingRate = MPEG4.SamplingFrequencies[samplingFrequencyIndex];\n        debug(`sampling-rate=${this.samplingRate}`);\n        const channelIndex = common.getBitAllignedNumber(buf, off + 2, 7, 3);\n        this.mp4ChannelConfig = MPEG4_ChannelConfigurations[channelIndex];\n        debug(`channel-config=${this.mp4ChannelConfig ? this.mp4ChannelConfig.join('+') : '?'}`);\n        this.frameLength = common.getBitAllignedNumber(buf, off + 3, 6, 2) << 11;\n    }\n    calcBitrate() {\n        if (this.bitrateIndex === 0x00 || // free\n            this.bitrateIndex === 0x0F) { // reserved\n            return null;\n        }\n        if (this.version && this.bitrateIndex) {\n            const codecIndex = 10 * Math.floor(this.version) + this.layer;\n            return MpegFrameHeader.bitrate_index[this.bitrateIndex][codecIndex];\n        }\n        return null;\n    }\n    calcSamplingRate() {\n        if (this.sampRateFreqIndex === 0x03 || this.version === null || this.sampRateFreqIndex == null)\n            return null; // 'reserved'\n        return MpegFrameHeader.sampling_rate_freq_index[this.version][this.sampRateFreqIndex];\n    }\n}\nMpegFrameHeader.SyncByte1 = 0xFF;\nMpegFrameHeader.SyncByte2 = 0xE0;\nMpegFrameHeader.VersionID = [2.5, null, 2, 1];\nMpegFrameHeader.LayerDescription = [0, 3, 2, 1];\nMpegFrameHeader.ChannelMode = ['stereo', 'joint_stereo', 'dual_channel', 'mono'];\nMpegFrameHeader.bitrate_index = {\n    1: { 11: 32, 12: 32, 13: 32, 21: 32, 22: 8, 23: 8 },\n    2: { 11: 64, 12: 48, 13: 40, 21: 48, 22: 16, 23: 16 },\n    3: { 11: 96, 12: 56, 13: 48, 21: 56, 22: 24, 23: 24 },\n    4: { 11: 128, 12: 64, 13: 56, 21: 64, 22: 32, 23: 32 },\n    5: { 11: 160, 12: 80, 13: 64, 21: 80, 22: 40, 23: 40 },\n    6: { 11: 192, 12: 96, 13: 80, 21: 96, 22: 48, 23: 48 },\n    7: { 11: 224, 12: 112, 13: 96, 21: 112, 22: 56, 23: 56 },\n    8: { 11: 256, 12: 128, 13: 112, 21: 128, 22: 64, 23: 64 },\n    9: { 11: 288, 12: 160, 13: 128, 21: 144, 22: 80, 23: 80 },\n    10: { 11: 320, 12: 192, 13: 160, 21: 160, 22: 96, 23: 96 },\n    11: { 11: 352, 12: 224, 13: 192, 21: 176, 22: 112, 23: 112 },\n    12: { 11: 384, 12: 256, 13: 224, 21: 192, 22: 128, 23: 128 },\n    13: { 11: 416, 12: 320, 13: 256, 21: 224, 22: 144, 23: 144 },\n    14: { 11: 448, 12: 384, 13: 320, 21: 256, 22: 160, 23: 160 }\n};\nMpegFrameHeader.sampling_rate_freq_index = {\n    1: { 0: 44100, 1: 48000, 2: 32000 },\n    2: { 0: 22050, 1: 24000, 2: 16000 },\n    2.5: { 0: 11025, 1: 12000, 2: 8000 }\n};\nMpegFrameHeader.samplesInFrameTable = [\n    /* Layer   I    II   III */\n    [0, 384, 1152, 1152], // MPEG-1\n    [0, 384, 1152, 576] // MPEG-2(.5\n];\n/**\n * MPEG Audio Layer I/II/III\n */\nconst FrameHeader = {\n    len: 4,\n    get: (buf, off) => {\n        return new MpegFrameHeader(buf, off);\n    }\n};\nfunction getVbrCodecProfile(vbrScale) {\n    return `V${Math.floor((100 - vbrScale) / 10)}`;\n}\nexport class MpegParser extends AbstractID3Parser {\n    constructor() {\n        super(...arguments);\n        this.frameCount = 0;\n        this.syncFrameCount = -1;\n        this.countSkipFrameData = 0;\n        this.totalDataLength = 0;\n        this.bitrates = [];\n        this.offset = 0;\n        this.frame_size = 0;\n        this.crc = null;\n        this.calculateEofDuration = false;\n        this.samplesPerFrame = null;\n        this.buf_frame_header = new Uint8Array(4);\n        /**\n         * Number of bytes already parsed since beginning of stream / file\n         */\n        this.mpegOffset = null;\n        this.syncPeek = {\n            buf: new Uint8Array(maxPeekLen),\n            len: 0\n        };\n    }\n    /**\n     * Called after ID3 headers have been parsed\n     */\n    async postId3v2Parse() {\n        this.metadata.setFormat('lossless', false);\n        this.metadata.setAudioOnly();\n        try {\n            let quit = false;\n            while (!quit) {\n                await this.sync();\n                quit = await this.parseCommonMpegHeader();\n            }\n        }\n        catch (err) {\n            if (err instanceof EndOfStreamError) {\n                debug(\"End-of-stream\");\n                if (this.calculateEofDuration) {\n                    if (this.samplesPerFrame !== null) {\n                        const numberOfSamples = this.frameCount * this.samplesPerFrame;\n                        this.metadata.setFormat('numberOfSamples', numberOfSamples);\n                        if (this.metadata.format.sampleRate) {\n                            const duration = numberOfSamples / this.metadata.format.sampleRate;\n                            debug(`Calculate duration at EOF: ${duration} sec.`, duration);\n                            this.metadata.setFormat('duration', duration);\n                        }\n                    }\n                }\n            }\n            else {\n                throw err;\n            }\n        }\n    }\n    /**\n     * Called after file has been fully parsed, this allows, if present, to exclude the ID3v1.1 header length\n     */\n    finalize() {\n        const format = this.metadata.format;\n        const hasID3v1 = !!this.metadata.native.ID3v1;\n        if (this.mpegOffset !== null) {\n            if (format.duration && this.tokenizer.fileInfo.size) {\n                const mpegSize = this.tokenizer.fileInfo.size - this.mpegOffset - (hasID3v1 ? 128 : 0);\n                if (format.codecProfile && format.codecProfile[0] === 'V') {\n                    this.metadata.setFormat('bitrate', mpegSize * 8 / format.duration);\n                }\n            }\n            if (this.tokenizer.fileInfo.size && format.codecProfile === 'CBR') {\n                const mpegSize = this.tokenizer.fileInfo.size - this.mpegOffset - (hasID3v1 ? 128 : 0);\n                if (this.frame_size !== null && this.samplesPerFrame !== null) {\n                    const numberOfSamples = Math.round(mpegSize / this.frame_size) * this.samplesPerFrame;\n                    this.metadata.setFormat('numberOfSamples', numberOfSamples);\n                    if (format.sampleRate && !format.duration) {\n                        const duration = numberOfSamples / format.sampleRate;\n                        debug(\"Calculate CBR duration based on file size: %s\", duration);\n                        this.metadata.setFormat('duration', duration);\n                    }\n                }\n            }\n        }\n    }\n    async sync() {\n        let gotFirstSync = false;\n        while (true) {\n            let bo = 0;\n            this.syncPeek.len = await this.tokenizer.peekBuffer(this.syncPeek.buf, { length: maxPeekLen, mayBeLess: true });\n            if (this.syncPeek.len <= 163) {\n                throw new EndOfStreamError();\n            }\n            while (true) {\n                if (gotFirstSync && (this.syncPeek.buf[bo] & 0xE0) === 0xE0) {\n                    this.buf_frame_header[0] = MpegFrameHeader.SyncByte1;\n                    this.buf_frame_header[1] = this.syncPeek.buf[bo];\n                    await this.tokenizer.ignore(bo);\n                    debug(`Sync at offset=${this.tokenizer.position - 1}, frameCount=${this.frameCount}`);\n                    if (this.syncFrameCount === this.frameCount) {\n                        debug(`Re-synced MPEG stream, frameCount=${this.frameCount}`);\n                        this.frameCount = 0;\n                        this.frame_size = 0;\n                    }\n                    this.syncFrameCount = this.frameCount;\n                    return; // sync\n                }\n                gotFirstSync = false;\n                bo = this.syncPeek.buf.indexOf(MpegFrameHeader.SyncByte1, bo);\n                if (bo === -1) {\n                    if (this.syncPeek.len < this.syncPeek.buf.length) {\n                        throw new EndOfStreamError();\n                    }\n                    await this.tokenizer.ignore(this.syncPeek.len);\n                    break; // continue with next buffer\n                }\n                ++bo;\n                gotFirstSync = true;\n            }\n        }\n    }\n    /**\n     * Combined ADTS & MPEG (MP2 & MP3) header handling\n     * @return {Promise<boolean>} true if parser should quit\n     */\n    async parseCommonMpegHeader() {\n        if (this.frameCount === 0) {\n            this.mpegOffset = this.tokenizer.position - 1;\n        }\n        await this.tokenizer.peekBuffer(this.buf_frame_header.subarray(1), { length: 3 });\n        let header;\n        try {\n            header = FrameHeader.get(this.buf_frame_header, 0);\n        }\n        catch (err) {\n            await this.tokenizer.ignore(1);\n            if (err instanceof Error) {\n                this.metadata.addWarning(`Parse error: ${err.message}`);\n                return false; // sync\n            }\n            throw err;\n        }\n        await this.tokenizer.ignore(3);\n        this.metadata.setFormat('container', header.container);\n        this.metadata.setFormat('codec', header.codec);\n        this.metadata.setFormat('lossless', false);\n        this.metadata.setFormat('sampleRate', header.samplingRate);\n        this.frameCount++;\n        return header.version !== null && header.version >= 2 && header.layer === 0 ? this.parseAdts(header) : this.parseAudioFrameHeader(header);\n    }\n    /**\n     * @return {Promise<boolean>} true if parser should quit\n     */\n    async parseAudioFrameHeader(header) {\n        this.metadata.setFormat('numberOfChannels', header.channelMode === 'mono' ? 1 : 2);\n        this.metadata.setFormat('bitrate', header.bitrate);\n        if (this.frameCount < 20 * 10000) {\n            debug('offset=%s MP%s bitrate=%s sample-rate=%s', this.tokenizer.position - 4, header.layer, header.bitrate, header.samplingRate);\n        }\n        const slot_size = header.calcSlotSize();\n        if (slot_size === null) {\n            throw new MpegContentError('invalid slot_size');\n        }\n        const samples_per_frame = header.calcSamplesPerFrame();\n        debug(`samples_per_frame=${samples_per_frame}`);\n        const bps = samples_per_frame / 8.0;\n        if (header.bitrate !== null && header.samplingRate != null) {\n            const fsize = (bps * header.bitrate / header.samplingRate) + ((header.padding) ? slot_size : 0);\n            this.frame_size = Math.floor(fsize);\n        }\n        this.audioFrameHeader = header;\n        if (header.bitrate !== null) {\n            this.bitrates.push(header.bitrate);\n        }\n        // xtra header only exists in first frame\n        if (this.frameCount === 1) {\n            this.offset = FrameHeader.len;\n            await this.skipSideInformation();\n            return false;\n        }\n        if (this.frameCount === 3) {\n            // the stream is CBR if the first 3 frame bitrates are the same\n            if (this.areAllSame(this.bitrates)) {\n                // Actual calculation will be done in finalize\n                this.samplesPerFrame = samples_per_frame;\n                this.metadata.setFormat('codecProfile', 'CBR');\n                if (this.tokenizer.fileInfo.size)\n                    return true; // Will calculate duration based on the file size\n            }\n            else if (this.metadata.format.duration) {\n                return true; // We already got the duration, stop processing MPEG stream any further\n            }\n            if (!this.options.duration) {\n                return true; // Enforce duration not enabled, stop processing entire stream\n            }\n        }\n        // once we know the file is VBR attach listener to end of\n        // stream so we can do the duration calculation when we\n        // have counted all the frames\n        if (this.options.duration && this.frameCount === 4) {\n            this.samplesPerFrame = samples_per_frame;\n            this.calculateEofDuration = true;\n        }\n        this.offset = 4;\n        if (header.isProtectedByCRC) {\n            await this.parseCrc();\n            return false;\n        }\n        await this.skipSideInformation();\n        return false;\n    }\n    async parseAdts(header) {\n        const buf = new Uint8Array(3);\n        await this.tokenizer.readBuffer(buf);\n        header.frameLength += common.getBitAllignedNumber(buf, 0, 0, 11);\n        this.totalDataLength += header.frameLength;\n        this.samplesPerFrame = 1024;\n        if (header.samplingRate !== null) {\n            const framesPerSec = header.samplingRate / this.samplesPerFrame;\n            const bytesPerFrame = this.frameCount === 0 ? 0 : this.totalDataLength / this.frameCount;\n            const bitrate = 8 * bytesPerFrame * framesPerSec + 0.5;\n            this.metadata.setFormat('bitrate', bitrate);\n            debug(`frame-count=${this.frameCount}, size=${header.frameLength} bytes, bit-rate=${bitrate}`);\n        }\n        await this.tokenizer.ignore(header.frameLength > 7 ? header.frameLength - 7 : 1);\n        // Consume remaining header and frame data\n        if (this.frameCount === 3) {\n            this.metadata.setFormat('codecProfile', header.codecProfile);\n            if (header.mp4ChannelConfig) {\n                this.metadata.setFormat('numberOfChannels', header.mp4ChannelConfig.length);\n            }\n            if (this.options.duration) {\n                this.calculateEofDuration = true;\n            }\n            else {\n                return true; // Stop parsing after the third frame\n            }\n        }\n        return false;\n    }\n    async parseCrc() {\n        this.crc = await this.tokenizer.readNumber(Token.INT16_BE);\n        this.offset += 2;\n        return this.skipSideInformation();\n    }\n    async skipSideInformation() {\n        if (this.audioFrameHeader) {\n            const sideinfo_length = this.audioFrameHeader.calculateSideInfoLength();\n            if (sideinfo_length !== null) {\n                await this.tokenizer.readToken(new Token.Uint8ArrayType(sideinfo_length));\n                // side information\n                this.offset += sideinfo_length;\n                await this.readXtraInfoHeader();\n                return;\n            }\n        }\n    }\n    async readXtraInfoHeader() {\n        const headerTag = await this.tokenizer.readToken(InfoTagHeaderTag);\n        this.offset += InfoTagHeaderTag.len; // 12\n        switch (headerTag) {\n            case 'Info':\n                this.metadata.setFormat('codecProfile', 'CBR');\n                return this.readXingInfoHeader();\n            case 'Xing': {\n                const infoTag = await this.readXingInfoHeader();\n                if (infoTag.vbrScale !== null) {\n                    const codecProfile = getVbrCodecProfile(infoTag.vbrScale);\n                    this.metadata.setFormat('codecProfile', codecProfile);\n                }\n                return null;\n            }\n            case 'Xtra':\n                // ToDo: ???\n                break;\n            case 'LAME': {\n                const version = await this.tokenizer.readToken(LameEncoderVersion);\n                if (this.frame_size !== null && this.frame_size >= this.offset + LameEncoderVersion.len) {\n                    this.offset += LameEncoderVersion.len;\n                    this.metadata.setFormat('tool', `LAME ${version}`);\n                    await this.skipFrameData(this.frame_size - this.offset);\n                    return null;\n                }\n                this.metadata.addWarning('Corrupt LAME header');\n                break;\n            }\n            // ToDo: ???\n        }\n        // ToDo: promise duration???\n        const frameDataLeft = this.frame_size - this.offset;\n        if (frameDataLeft < 0) {\n            this.metadata.addWarning(`Frame ${this.frameCount}corrupt: negative frameDataLeft`);\n        }\n        else {\n            await this.skipFrameData(frameDataLeft);\n        }\n        return null;\n    }\n    /**\n     * Ref: http://gabriel.mp3-tech.org/mp3infotag.html\n     * @returns {Promise<string>}\n     */\n    async readXingInfoHeader() {\n        const offset = this.tokenizer.position;\n        const infoTag = await readXingHeader(this.tokenizer);\n        this.offset += this.tokenizer.position - offset;\n        if (infoTag.lame) {\n            this.metadata.setFormat('tool', `LAME ${common.stripNulls(infoTag.lame.version)}`);\n            if (infoTag.lame.extended) {\n                // this.metadata.setFormat('trackGain', infoTag.lame.extended.track_gain);\n                this.metadata.setFormat('trackPeakLevel', infoTag.lame.extended.track_peak);\n                if (infoTag.lame.extended.track_gain) {\n                    this.metadata.setFormat('trackGain', infoTag.lame.extended.track_gain.adjustment);\n                }\n                if (infoTag.lame.extended.album_gain) {\n                    this.metadata.setFormat('albumGain', infoTag.lame.extended.album_gain.adjustment);\n                }\n                this.metadata.setFormat('duration', infoTag.lame.extended.music_length / 1000);\n            }\n        }\n        if (infoTag.streamSize && this.audioFrameHeader && infoTag.numFrames !== null) {\n            const duration = this.audioFrameHeader.calcDuration(infoTag.numFrames);\n            this.metadata.setFormat('duration', duration);\n            debug('Get duration from Xing header: %s', this.metadata.format.duration);\n            return infoTag;\n        }\n        // frames field is not present\n        const frameDataLeft = this.frame_size - this.offset;\n        await this.skipFrameData(frameDataLeft);\n        return infoTag;\n    }\n    async skipFrameData(frameDataLeft) {\n        if (frameDataLeft < 0)\n            throw new MpegContentError('frame-data-left cannot be negative');\n        await this.tokenizer.ignore(frameDataLeft);\n        this.countSkipFrameData += frameDataLeft;\n    }\n    areAllSame(array) {\n        const first = array[0];\n        return array.every(element => {\n            return element === first;\n        });\n    }\n}\n//# sourceMappingURL=MpegParser.js.map","import { hexToUint8Array, uint8ArrayToHex } from 'uint8array-extras';\n/**\n * Ref:\n * - https://tools.ietf.org/html/draft-fleischman-asf-01, Appendix A: ASF GUIDs\n * - http://drang.s4.xrea.com/program/tips/id3tag/wmp/10_asf_guids.html\n * - http://drang.s4.xrea.com/program/tips/id3tag/wmp/index.html\n * - http://drang.s4.xrea.com/program/tips/id3tag/wmp/10_asf_guids.html\n *\n * ASF File Structure:\n * - https://msdn.microsoft.com/en-us/library/windows/desktop/ee663575(v=vs.85).aspx\n *\n * ASF GUIDs:\n * - http://drang.s4.xrea.com/program/tips/id3tag/wmp/10_asf_guids.html\n * - https://github.com/dji-sdk/FFmpeg/blob/master/libavformat/asf.c\n */\nclass GUID {\n    static fromBin(bin, offset = 0) {\n        return new GUID(GUID.decode(bin, offset));\n    }\n    /**\n     * Decode GUID in format like \"B503BF5F-2EA9-CF11-8EE3-00C00C205365\"\n     * @param objectId Binary GUID\n     * @param offset Read offset in bytes, default 0\n     * @returns GUID as dashed hexadecimal representation\n     */\n    static decode(objectId, offset = 0) {\n        const view = new DataView(objectId.buffer, offset);\n        const guid = `${view.getUint32(0, true).toString(16)}-${view.getUint16(4, true).toString(16)}-${view.getUint16(6, true).toString(16)}-${view.getUint16(8).toString(16)}-${uint8ArrayToHex(objectId.slice(offset + 10, offset + 16))}`;\n        return guid.toUpperCase();\n    }\n    /**\n     * Decode stream type\n     * @param mediaType Media type GUID\n     * @returns Media type\n     */\n    static decodeMediaType(mediaType) {\n        switch (mediaType.str) {\n            case GUID.AudioMedia.str: return 'audio';\n            case GUID.VideoMedia.str: return 'video';\n            case GUID.CommandMedia.str: return 'command';\n            case GUID.Degradable_JPEG_Media.str: return 'degradable-jpeg';\n            case GUID.FileTransferMedia.str: return 'file-transfer';\n            case GUID.BinaryMedia.str: return 'binary';\n        }\n    }\n    /**\n     * Encode GUID\n     * @param guid GUID like: \"B503BF5F-2EA9-CF11-8EE3-00C00C205365\"\n     * @returns Encoded Binary GUID\n     */\n    static encode(str) {\n        const bin = new Uint8Array(16);\n        const view = new DataView(bin.buffer);\n        view.setUint32(0, Number.parseInt(str.slice(0, 8), 16), true);\n        view.setUint16(4, Number.parseInt(str.slice(9, 13), 16), true);\n        view.setUint16(6, Number.parseInt(str.slice(14, 18), 16), true);\n        bin.set(hexToUint8Array(str.slice(19, 23)), 8);\n        bin.set(hexToUint8Array(str.slice(24)), 10);\n        return bin;\n    }\n    constructor(str) {\n        this.str = str;\n    }\n    equals(guid) {\n        return this.str === guid.str;\n    }\n    toBin() {\n        return GUID.encode(this.str);\n    }\n}\n// 10.1 Top-level ASF object GUIDs\nGUID.HeaderObject = new GUID(\"75B22630-668E-11CF-A6D9-00AA0062CE6C\");\nGUID.DataObject = new GUID(\"75B22636-668E-11CF-A6D9-00AA0062CE6C\");\nGUID.SimpleIndexObject = new GUID(\"33000890-E5B1-11CF-89F4-00A0C90349CB\");\nGUID.IndexObject = new GUID(\"D6E229D3-35DA-11D1-9034-00A0C90349BE\");\nGUID.MediaObjectIndexObject = new GUID(\"FEB103F8-12AD-4C64-840F-2A1D2F7AD48C\");\nGUID.TimecodeIndexObject = new GUID(\"3CB73FD0-0C4A-4803-953D-EDF7B6228F0C\");\n// 10.2 Header Object GUIDs\nGUID.FilePropertiesObject = new GUID(\"8CABDCA1-A947-11CF-8EE4-00C00C205365\");\nGUID.StreamPropertiesObject = new GUID(\"B7DC0791-A9B7-11CF-8EE6-00C00C205365\");\nGUID.HeaderExtensionObject = new GUID(\"5FBF03B5-A92E-11CF-8EE3-00C00C205365\");\nGUID.CodecListObject = new GUID(\"86D15240-311D-11D0-A3A4-00A0C90348F6\");\nGUID.ScriptCommandObject = new GUID(\"1EFB1A30-0B62-11D0-A39B-00A0C90348F6\");\nGUID.MarkerObject = new GUID(\"F487CD01-A951-11CF-8EE6-00C00C205365\");\nGUID.BitrateMutualExclusionObject = new GUID(\"D6E229DC-35DA-11D1-9034-00A0C90349BE\");\nGUID.ErrorCorrectionObject = new GUID(\"75B22635-668E-11CF-A6D9-00AA0062CE6C\");\nGUID.ContentDescriptionObject = new GUID(\"75B22633-668E-11CF-A6D9-00AA0062CE6C\");\nGUID.ExtendedContentDescriptionObject = new GUID(\"D2D0A440-E307-11D2-97F0-00A0C95EA850\");\nGUID.ContentBrandingObject = new GUID(\"2211B3FA-BD23-11D2-B4B7-00A0C955FC6E\");\nGUID.StreamBitratePropertiesObject = new GUID(\"7BF875CE-468D-11D1-8D82-006097C9A2B2\");\nGUID.ContentEncryptionObject = new GUID(\"2211B3FB-BD23-11D2-B4B7-00A0C955FC6E\");\nGUID.ExtendedContentEncryptionObject = new GUID(\"298AE614-2622-4C17-B935-DAE07EE9289C\");\nGUID.DigitalSignatureObject = new GUID(\"2211B3FC-BD23-11D2-B4B7-00A0C955FC6E\");\nGUID.PaddingObject = new GUID(\"1806D474-CADF-4509-A4BA-9AABCB96AAE8\");\n// 10.3 Header Extension Object GUIDs\nGUID.ExtendedStreamPropertiesObject = new GUID(\"14E6A5CB-C672-4332-8399-A96952065B5A\");\nGUID.AdvancedMutualExclusionObject = new GUID(\"A08649CF-4775-4670-8A16-6E35357566CD\");\nGUID.GroupMutualExclusionObject = new GUID(\"D1465A40-5A79-4338-B71B-E36B8FD6C249\");\nGUID.StreamPrioritizationObject = new GUID(\"D4FED15B-88D3-454F-81F0-ED5C45999E24\");\nGUID.BandwidthSharingObject = new GUID(\"A69609E6-517B-11D2-B6AF-00C04FD908E9\");\nGUID.LanguageListObject = new GUID(\"7C4346A9-EFE0-4BFC-B229-393EDE415C85\");\nGUID.MetadataObject = new GUID(\"C5F8CBEA-5BAF-4877-8467-AA8C44FA4CCA\");\nGUID.MetadataLibraryObject = new GUID(\"44231C94-9498-49D1-A141-1D134E457054\");\nGUID.IndexParametersObject = new GUID(\"D6E229DF-35DA-11D1-9034-00A0C90349BE\");\nGUID.MediaObjectIndexParametersObject = new GUID(\"6B203BAD-3F11-48E4-ACA8-D7613DE2CFA7\");\nGUID.TimecodeIndexParametersObject = new GUID(\"F55E496D-9797-4B5D-8C8B-604DFE9BFB24\");\nGUID.CompatibilityObject = new GUID(\"26F18B5D-4584-47EC-9F5F-0E651F0452C9\");\nGUID.AdvancedContentEncryptionObject = new GUID(\"43058533-6981-49E6-9B74-AD12CB86D58C\");\n// 10.4 Stream Properties Object Stream Type GUIDs\nGUID.AudioMedia = new GUID(\"F8699E40-5B4D-11CF-A8FD-00805F5C442B\");\nGUID.VideoMedia = new GUID(\"BC19EFC0-5B4D-11CF-A8FD-00805F5C442B\");\nGUID.CommandMedia = new GUID(\"59DACFC0-59E6-11D0-A3AC-00A0C90348F6\");\nGUID.JFIF_Media = new GUID(\"B61BE100-5B4E-11CF-A8FD-00805F5C442B\");\nGUID.Degradable_JPEG_Media = new GUID(\"35907DE0-E415-11CF-A917-00805F5C442B\");\nGUID.FileTransferMedia = new GUID(\"91BD222C-F21C-497A-8B6D-5AA86BFC0185\");\nGUID.BinaryMedia = new GUID(\"3AFB65E2-47EF-40F2-AC2C-70A90D71D343\");\nGUID.ASF_Index_Placeholder_Object = new GUID(\"D9AADE20-7C17-4F9C-BC28-8555DD98E2A2\");\nexport default GUID;\n//# sourceMappingURL=GUID.js.map","import * as Token from 'token-types';\nimport * as util from '../common/Util.js';\nexport function getParserForAttr(i) {\n    return attributeParsers[i];\n}\nexport function parseUnicodeAttr(uint8Array) {\n    return util.stripNulls(util.decodeString(uint8Array, 'utf-16le'));\n}\nconst attributeParsers = [\n    parseUnicodeAttr,\n    parseByteArrayAttr,\n    parseBoolAttr,\n    parseDWordAttr,\n    parseQWordAttr,\n    parseWordAttr,\n    parseByteArrayAttr\n];\nfunction parseByteArrayAttr(buf) {\n    return new Uint8Array(buf);\n}\nfunction parseBoolAttr(buf, offset = 0) {\n    return parseWordAttr(buf, offset) === 1;\n}\nfunction parseDWordAttr(buf, offset = 0) {\n    return Token.UINT32_LE.get(buf, offset);\n}\nfunction parseQWordAttr(buf, offset = 0) {\n    return Token.UINT64_LE.get(buf, offset);\n}\nfunction parseWordAttr(buf, offset = 0) {\n    return Token.UINT16_LE.get(buf, offset);\n}\n//# sourceMappingURL=AsfUtil.js.map","// ASF Objects\nimport * as Token from 'token-types';\nimport * as util from '../common/Util.js';\nimport GUID from './GUID.js';\nimport { getParserForAttr, parseUnicodeAttr } from './AsfUtil.js';\nimport { AttachedPictureType } from '../id3v2/ID3v2Token.js';\nimport { makeUnexpectedFileContentError } from '../ParseError.js';\nexport class AsfContentParseError extends makeUnexpectedFileContentError('ASF') {\n}\n/**\n * Data Type: Specifies the type of information being stored. The following values are recognized.\n */\nexport const DataType = {\n    /**\n     * Unicode string. The data consists of a sequence of Unicode characters.\n     */\n    UnicodeString: 0,\n    /**\n     * BYTE array. The type of data is implementation-specific.\n     */\n    ByteArray: 1,\n    /**\n     * BOOL. The data is 2 bytes long and should be interpreted as a 16-bit unsigned integer. Only 0x0000 or 0x0001 are permitted values.\n     */\n    Bool: 2,\n    /**\n     * DWORD. The data is 4 bytes long and should be interpreted as a 32-bit unsigned integer.\n     */\n    DWord: 3,\n    /**\n     * QWORD. The data is 8 bytes long and should be interpreted as a 64-bit unsigned integer.\n     */\n    QWord: 4,\n    /**\n     * WORD. The data is 2 bytes long and should be interpreted as a 16-bit unsigned integer.\n     */\n    Word: 5\n};\n/**\n * Token for: 3. ASF top-level Header Object\n * Ref: http://drang.s4.xrea.com/program/tips/id3tag/wmp/03_asf_top_level_header_object.html#3\n */\nexport const TopLevelHeaderObjectToken = {\n    len: 30,\n    get: (buf, off) => {\n        return {\n            objectId: GUID.fromBin(buf, off),\n            objectSize: Number(Token.UINT64_LE.get(buf, off + 16)),\n            numberOfHeaderObjects: Token.UINT32_LE.get(buf, off + 24)\n            // Reserved: 2 bytes\n        };\n    }\n};\n/**\n * Token for: 3.1 Header Object (mandatory, one only)\n * Ref: http://drang.s4.xrea.com/program/tips/id3tag/wmp/03_asf_top_level_header_object.html#3_1\n */\nexport const HeaderObjectToken = {\n    len: 24,\n    get: (buf, off) => {\n        return {\n            objectId: GUID.fromBin(buf, off),\n            objectSize: Number(Token.UINT64_LE.get(buf, off + 16))\n        };\n    }\n};\nexport class State {\n    constructor(header) {\n        this.len = Number(header.objectSize) - HeaderObjectToken.len;\n    }\n    postProcessTag(tags, name, valueType, data) {\n        if (name === 'WM/Picture') {\n            tags.push({ id: name, value: WmPictureToken.fromBuffer(data) });\n        }\n        else {\n            const parseAttr = getParserForAttr(valueType);\n            if (!parseAttr) {\n                throw new AsfContentParseError(`unexpected value headerType: ${valueType}`);\n            }\n            tags.push({ id: name, value: parseAttr(data) });\n        }\n    }\n}\n// ToDo: use ignore type\nexport class IgnoreObjectState extends State {\n    get(_buf, _off) {\n        return null;\n    }\n}\n/**\n * Token for: 3.2: File Properties Object (mandatory, one only)\n * Ref: http://drang.s4.xrea.com/program/tips/id3tag/wmp/03_asf_top_level_header_object.html#3_2\n */\nexport class FilePropertiesObject extends State {\n    get(buf, off) {\n        return {\n            fileId: GUID.fromBin(buf, off),\n            fileSize: Token.UINT64_LE.get(buf, off + 16),\n            creationDate: Token.UINT64_LE.get(buf, off + 24),\n            dataPacketsCount: Token.UINT64_LE.get(buf, off + 32),\n            playDuration: Token.UINT64_LE.get(buf, off + 40),\n            sendDuration: Token.UINT64_LE.get(buf, off + 48),\n            preroll: Token.UINT64_LE.get(buf, off + 56),\n            flags: {\n                broadcast: util.getBit(buf, off + 64, 24),\n                seekable: util.getBit(buf, off + 64, 25)\n            },\n            // flagsNumeric: Token.UINT32_LE.get(buf, off + 64),\n            minimumDataPacketSize: Token.UINT32_LE.get(buf, off + 68),\n            maximumDataPacketSize: Token.UINT32_LE.get(buf, off + 72),\n            maximumBitrate: Token.UINT32_LE.get(buf, off + 76)\n        };\n    }\n}\nFilePropertiesObject.guid = GUID.FilePropertiesObject;\n/**\n * Token for: 3.3 Stream Properties Object (mandatory, one per stream)\n * Ref: http://drang.s4.xrea.com/program/tips/id3tag/wmp/03_asf_top_level_header_object.html#3_3\n */\nexport class StreamPropertiesObject extends State {\n    get(buf, off) {\n        return {\n            streamType: GUID.decodeMediaType(GUID.fromBin(buf, off)),\n            errorCorrectionType: GUID.fromBin(buf, off + 8)\n            // ToDo\n        };\n    }\n}\nStreamPropertiesObject.guid = GUID.StreamPropertiesObject;\n/**\n * 3.4: Header Extension Object (mandatory, one only)\n * Ref: http://drang.s4.xrea.com/program/tips/id3tag/wmp/03_asf_top_level_header_object.html#3_4\n */\nexport class HeaderExtensionObject {\n    constructor() {\n        this.len = 22;\n    }\n    get(buf, off) {\n        const view = new DataView(buf.buffer, off);\n        return {\n            reserved1: GUID.fromBin(buf, off),\n            reserved2: view.getUint16(16, true),\n            extensionDataSize: view.getUint16(18, true)\n        };\n    }\n}\nHeaderExtensionObject.guid = GUID.HeaderExtensionObject;\n/**\n * 3.5: The Codec List Object provides user-friendly information about the codecs and formats used to encode the content found in the ASF file.\n * Ref: http://drang.s4.xrea.com/program/tips/id3tag/wmp/03_asf_top_level_header_object.html#3_5\n */\nconst CodecListObjectHeader = {\n    len: 20,\n    get: (buf, off) => {\n        const view = new DataView(buf.buffer, off);\n        return {\n            entryCount: view.getUint16(16, true)\n        };\n    }\n};\nasync function readString(tokenizer) {\n    const length = await tokenizer.readNumber(Token.UINT16_LE);\n    return (await tokenizer.readToken(new Token.StringType(length * 2, 'utf-16le'))).replace('\\0', '');\n}\n/**\n * 3.5: Read the Codec-List-Object, which provides user-friendly information about the codecs and formats used to encode the content found in the ASF file.\n * Ref: http://drang.s4.xrea.com/program/tips/id3tag/wmp/03_asf_top_level_header_object.html#3_5\n */\nexport async function readCodecEntries(tokenizer) {\n    const codecHeader = await tokenizer.readToken(CodecListObjectHeader);\n    const entries = [];\n    for (let i = 0; i < codecHeader.entryCount; ++i) {\n        entries.push(await readCodecEntry(tokenizer));\n    }\n    return entries;\n}\nasync function readInformation(tokenizer) {\n    const length = await tokenizer.readNumber(Token.UINT16_LE);\n    const buf = new Uint8Array(length);\n    await tokenizer.readBuffer(buf);\n    return buf;\n}\n/**\n * Read Codec-Entries\n * @param tokenizer\n */\nasync function readCodecEntry(tokenizer) {\n    const type = await tokenizer.readNumber(Token.UINT16_LE);\n    return {\n        type: {\n            videoCodec: (type & 0x0001) === 0x0001,\n            audioCodec: (type & 0x0002) === 0x0002\n        },\n        codecName: await readString(tokenizer),\n        description: await readString(tokenizer),\n        information: await readInformation(tokenizer)\n    };\n}\n/**\n * 3.10 Content Description Object (optional, one only)\n * Ref: http://drang.s4.xrea.com/program/tips/id3tag/wmp/03_asf_top_level_header_object.html#3_10\n */\nexport class ContentDescriptionObjectState extends State {\n    get(buf, off) {\n        const tags = [];\n        const view = new DataView(buf.buffer, off);\n        let pos = 10;\n        for (let i = 0; i < ContentDescriptionObjectState.contentDescTags.length; ++i) {\n            const length = view.getUint16(i * 2, true);\n            if (length > 0) {\n                const tagName = ContentDescriptionObjectState.contentDescTags[i];\n                const end = pos + length;\n                tags.push({ id: tagName, value: parseUnicodeAttr(buf.slice(off + pos, off + end)) });\n                pos = end;\n            }\n        }\n        return tags;\n    }\n}\nContentDescriptionObjectState.guid = GUID.ContentDescriptionObject;\nContentDescriptionObjectState.contentDescTags = ['Title', 'Author', 'Copyright', 'Description', 'Rating'];\n/**\n * 3.11 Extended Content Description Object (optional, one only)\n * Ref: http://drang.s4.xrea.com/program/tips/id3tag/wmp/03_asf_top_level_header_object.html#3_11\n */\nexport class ExtendedContentDescriptionObjectState extends State {\n    get(buf, off) {\n        const tags = [];\n        const view = new DataView(buf.buffer, off);\n        const attrCount = view.getUint16(0, true);\n        let pos = 2;\n        for (let i = 0; i < attrCount; i += 1) {\n            const nameLen = view.getUint16(pos, true);\n            pos += 2;\n            const name = parseUnicodeAttr(buf.slice(off + pos, off + pos + nameLen));\n            pos += nameLen;\n            const valueType = view.getUint16(pos, true);\n            pos += 2;\n            const valueLen = view.getUint16(pos, true);\n            pos += 2;\n            const value = buf.slice(off + pos, off + pos + valueLen);\n            pos += valueLen;\n            this.postProcessTag(tags, name, valueType, value);\n        }\n        return tags;\n    }\n}\nExtendedContentDescriptionObjectState.guid = GUID.ExtendedContentDescriptionObject;\n/**\n * 4.1 Extended Stream Properties Object (optional, 1 per media stream)\n * Ref: http://drang.s4.xrea.com/program/tips/id3tag/wmp/04_objects_in_the_asf_header_extension_object.html#4_1\n */\nexport class ExtendedStreamPropertiesObjectState extends State {\n    get(buf, off) {\n        const view = new DataView(buf.buffer, off);\n        return {\n            startTime: Token.UINT64_LE.get(buf, off),\n            endTime: Token.UINT64_LE.get(buf, off + 8),\n            dataBitrate: view.getInt32(12, true),\n            bufferSize: view.getInt32(16, true),\n            initialBufferFullness: view.getInt32(20, true),\n            alternateDataBitrate: view.getInt32(24, true),\n            alternateBufferSize: view.getInt32(28, true),\n            alternateInitialBufferFullness: view.getInt32(32, true),\n            maximumObjectSize: view.getInt32(36, true),\n            flags: {\n                reliableFlag: util.getBit(buf, off + 40, 0),\n                seekableFlag: util.getBit(buf, off + 40, 1),\n                resendLiveCleanpointsFlag: util.getBit(buf, off + 40, 2)\n            },\n            // flagsNumeric: Token.UINT32_LE.get(buf, off + 64),\n            streamNumber: view.getInt16(42, true),\n            streamLanguageId: view.getInt16(44, true),\n            averageTimePerFrame: view.getInt32(52, true),\n            streamNameCount: view.getInt32(54, true),\n            payloadExtensionSystems: view.getInt32(56, true),\n            streamNames: [], // ToDo\n            streamPropertiesObject: null\n        };\n    }\n}\nExtendedStreamPropertiesObjectState.guid = GUID.ExtendedStreamPropertiesObject;\n/**\n * 4.7  Metadata Object (optional, 0 or 1)\n * Ref: http://drang.s4.xrea.com/program/tips/id3tag/wmp/04_objects_in_the_asf_header_extension_object.html#4_7\n */\nexport class MetadataObjectState extends State {\n    get(uint8Array, off) {\n        const tags = [];\n        const view = new DataView(uint8Array.buffer, off);\n        const descriptionRecordsCount = view.getUint16(0, true);\n        let pos = 2;\n        for (let i = 0; i < descriptionRecordsCount; i += 1) {\n            pos += 4;\n            const nameLen = view.getUint16(pos, true);\n            pos += 2;\n            const dataType = view.getUint16(pos, true);\n            pos += 2;\n            const dataLen = view.getUint32(pos, true);\n            pos += 4;\n            const name = parseUnicodeAttr(uint8Array.slice(off + pos, off + pos + nameLen));\n            pos += nameLen;\n            const data = uint8Array.slice(off + pos, off + pos + dataLen);\n            pos += dataLen;\n            this.postProcessTag(tags, name, dataType, data);\n        }\n        return tags;\n    }\n}\nMetadataObjectState.guid = GUID.MetadataObject;\n// 4.8\tMetadata Library Object (optional, 0 or 1)\nexport class MetadataLibraryObjectState extends MetadataObjectState {\n}\nMetadataLibraryObjectState.guid = GUID.MetadataLibraryObject;\n/**\n * Ref: https://msdn.microsoft.com/en-us/library/windows/desktop/dd757977(v=vs.85).aspx\n */\nexport class WmPictureToken {\n    static fromBuffer(buffer) {\n        const pic = new WmPictureToken(buffer.length);\n        return pic.get(buffer, 0);\n    }\n    constructor(len) {\n        this.len = len;\n    }\n    get(buffer, offset) {\n        const view = new DataView(buffer.buffer, offset);\n        const typeId = view.getUint8(0);\n        const size = view.getInt32(1, true);\n        let index = 5;\n        while (view.getUint16(index) !== 0) {\n            index += 2;\n        }\n        const format = new Token.StringType(index - 5, 'utf-16le').get(buffer, 5);\n        while (view.getUint16(index) !== 0) {\n            index += 2;\n        }\n        const description = new Token.StringType(index - 5, 'utf-16le').get(buffer, 5);\n        return {\n            type: AttachedPictureType[typeId],\n            format,\n            description,\n            size,\n            data: buffer.slice(index + 4)\n        };\n    }\n}\n//# sourceMappingURL=AsfObject.js.map","import initDebug from 'debug';\nimport { TrackType } from '../type.js';\nimport GUID from './GUID.js';\nimport * as AsfObject from './AsfObject.js';\nimport { BasicParser } from '../common/BasicParser.js';\nimport { AsfContentParseError } from './AsfObject.js';\nconst debug = initDebug('music-metadata:parser:ASF');\nconst headerType = 'asf';\n/**\n * Windows Media Metadata Usage Guidelines\n * - Ref: https://msdn.microsoft.com/en-us/library/ms867702.aspx\n *\n * Ref:\n * - https://tools.ietf.org/html/draft-fleischman-asf-01\n * - https://hwiegman.home.xs4all.nl/fileformats/asf/ASF_Specification.pdf\n * - http://drang.s4.xrea.com/program/tips/id3tag/wmp/index.html\n * - https://msdn.microsoft.com/en-us/library/windows/desktop/ee663575(v=vs.85).aspx\n */\nexport class AsfParser extends BasicParser {\n    async parse() {\n        const header = await this.tokenizer.readToken(AsfObject.TopLevelHeaderObjectToken);\n        if (!header.objectId.equals(GUID.HeaderObject)) {\n            throw new AsfContentParseError(`expected asf header; but was not found; got: ${header.objectId.str}`);\n        }\n        try {\n            await this.parseObjectHeader(header.numberOfHeaderObjects);\n        }\n        catch (err) {\n            debug('Error while parsing ASF: %s', err);\n        }\n    }\n    async parseObjectHeader(numberOfObjectHeaders) {\n        let tags;\n        do {\n            // Parse common header of the ASF Object (3.1)\n            const header = await this.tokenizer.readToken(AsfObject.HeaderObjectToken);\n            // Parse data part of the ASF Object\n            debug('header GUID=%s', header.objectId.str);\n            switch (header.objectId.str) {\n                case AsfObject.FilePropertiesObject.guid.str: { // 3.2\n                    const fpo = await this.tokenizer.readToken(new AsfObject.FilePropertiesObject(header));\n                    this.metadata.setFormat('duration', Number(fpo.playDuration / BigInt(1000)) / 10000 - Number(fpo.preroll) / 1000);\n                    this.metadata.setFormat('bitrate', fpo.maximumBitrate);\n                    break;\n                }\n                case AsfObject.StreamPropertiesObject.guid.str: { // 3.3\n                    const spo = await this.tokenizer.readToken(new AsfObject.StreamPropertiesObject(header));\n                    this.metadata.setFormat('container', `ASF/${spo.streamType}`);\n                    break;\n                }\n                case AsfObject.HeaderExtensionObject.guid.str: { // 3.4\n                    const extHeader = await this.tokenizer.readToken(new AsfObject.HeaderExtensionObject());\n                    await this.parseExtensionObject(extHeader.extensionDataSize);\n                    break;\n                }\n                case AsfObject.ContentDescriptionObjectState.guid.str: // 3.10\n                    tags = await this.tokenizer.readToken(new AsfObject.ContentDescriptionObjectState(header));\n                    await this.addTags(tags);\n                    break;\n                case AsfObject.ExtendedContentDescriptionObjectState.guid.str: // 3.11\n                    tags = await this.tokenizer.readToken(new AsfObject.ExtendedContentDescriptionObjectState(header));\n                    await this.addTags(tags);\n                    break;\n                case GUID.CodecListObject.str: {\n                    const codecs = await AsfObject.readCodecEntries(this.tokenizer);\n                    codecs.forEach(codec => {\n                        this.metadata.addStreamInfo({\n                            type: codec.type.videoCodec ? TrackType.video : TrackType.audio,\n                            codecName: codec.codecName\n                        });\n                    });\n                    const audioCodecs = codecs.filter(codec => codec.type.audioCodec).map(codec => codec.codecName).join('/');\n                    this.metadata.setFormat('codec', audioCodecs);\n                    break;\n                }\n                case GUID.StreamBitratePropertiesObject.str:\n                    // ToDo?\n                    await this.tokenizer.ignore(header.objectSize - AsfObject.HeaderObjectToken.len);\n                    break;\n                case GUID.PaddingObject.str:\n                    // ToDo: register bytes pad\n                    debug('Padding: %s bytes', header.objectSize - AsfObject.HeaderObjectToken.len);\n                    await this.tokenizer.ignore(header.objectSize - AsfObject.HeaderObjectToken.len);\n                    break;\n                default:\n                    this.metadata.addWarning(`Ignore ASF-Object-GUID: ${header.objectId.str}`);\n                    debug('Ignore ASF-Object-GUID: %s', header.objectId.str);\n                    await this.tokenizer.readToken(new AsfObject.IgnoreObjectState(header));\n            }\n        } while (--numberOfObjectHeaders);\n        // done\n    }\n    async addTags(tags) {\n        await Promise.all(tags.map(({ id, value }) => this.metadata.addTag(headerType, id, value)));\n    }\n    async parseExtensionObject(extensionSize) {\n        do {\n            // Parse common header of the ASF Object (3.1)\n            const header = await this.tokenizer.readToken(AsfObject.HeaderObjectToken);\n            const remaining = header.objectSize - AsfObject.HeaderObjectToken.len;\n            // Parse data part of the ASF Object\n            switch (header.objectId.str) {\n                case AsfObject.ExtendedStreamPropertiesObjectState.guid.str: // 4.1\n                    // ToDo: extended stream header properties are ignored\n                    await this.tokenizer.readToken(new AsfObject.ExtendedStreamPropertiesObjectState(header));\n                    break;\n                case AsfObject.MetadataObjectState.guid.str: { // 4.7\n                    const moTags = await this.tokenizer.readToken(new AsfObject.MetadataObjectState(header));\n                    await this.addTags(moTags);\n                    break;\n                }\n                case AsfObject.MetadataLibraryObjectState.guid.str: { // 4.8\n                    const mlTags = await this.tokenizer.readToken(new AsfObject.MetadataLibraryObjectState(header));\n                    await this.addTags(mlTags);\n                    break;\n                }\n                case GUID.PaddingObject.str:\n                    // ToDo: register bytes pad\n                    await this.tokenizer.ignore(remaining);\n                    break;\n                case GUID.CompatibilityObject.str:\n                    await this.tokenizer.ignore(remaining);\n                    break;\n                case GUID.ASF_Index_Placeholder_Object.str:\n                    await this.tokenizer.ignore(remaining);\n                    break;\n                default:\n                    this.metadata.addWarning(`Ignore ASF-Object-GUID: ${header.objectId.str}`);\n                    // console.log(\"Ignore ASF-Object-GUID: %s\", header.objectId.str);\n                    await this.tokenizer.readToken(new AsfObject.IgnoreObjectState(header));\n                    break;\n            }\n            extensionSize -= header.objectSize;\n        } while (extensionSize > 0);\n    }\n}\n//# sourceMappingURL=AsfParser.js.map","import * as Token from 'token-types';\nimport { FourCcToken } from '../common/FourCC.js';\n/**\n * DSDIFF chunk header\n * The data-size encoding is deviating from EA-IFF 85\n * Ref: http://www.sonicstudio.com/pdf/dsd/DSDIFF_1.5_Spec.pdf\n */\nexport const ChunkHeader64 = {\n    len: 12,\n    get: (buf, off) => {\n        return {\n            // Group-ID\n            chunkID: FourCcToken.get(buf, off),\n            // Size\n            chunkSize: Token.INT64_BE.get(buf, off + 4)\n        };\n    }\n};\n//# sourceMappingURL=DsdiffToken.js.map","import * as Token from 'token-types';\nimport initDebug from 'debug';\nimport * as strtok3 from 'strtok3';\nimport { FourCcToken } from '../common/FourCC.js';\nimport { BasicParser } from '../common/BasicParser.js';\nimport { ID3v2Parser } from '../id3v2/ID3v2Parser.js';\nimport { ChunkHeader64 } from './DsdiffToken.js';\nimport { makeUnexpectedFileContentError } from '../ParseError.js';\nconst debug = initDebug('music-metadata:parser:aiff');\nexport class DsdiffContentParseError extends makeUnexpectedFileContentError('DSDIFF') {\n}\n/**\n * DSDIFF - Direct Stream Digital Interchange File Format (Phillips)\n *\n * Ref:\n * - http://www.sonicstudio.com/pdf/dsd/DSDIFF_1.5_Spec.pdf\n */\nexport class DsdiffParser extends BasicParser {\n    async parse() {\n        const header = await this.tokenizer.readToken(ChunkHeader64);\n        if (header.chunkID !== 'FRM8')\n            throw new DsdiffContentParseError('Unexpected chunk-ID');\n        this.metadata.setAudioOnly();\n        const type = (await this.tokenizer.readToken(FourCcToken)).trim();\n        switch (type) {\n            case 'DSD':\n                this.metadata.setFormat('container', `DSDIFF/${type}`);\n                this.metadata.setFormat('lossless', true);\n                return this.readFmt8Chunks(header.chunkSize - BigInt(FourCcToken.len));\n            default:\n                throw new DsdiffContentParseError(`Unsupported DSDIFF type: ${type}`);\n        }\n    }\n    async readFmt8Chunks(remainingSize) {\n        while (remainingSize >= ChunkHeader64.len) {\n            const chunkHeader = await this.tokenizer.readToken(ChunkHeader64);\n            //  If the data is an odd number of bytes in length, a pad byte must be added at the end\n            debug(`Chunk id=${chunkHeader.chunkID}`);\n            await this.readData(chunkHeader);\n            remainingSize -= (BigInt(ChunkHeader64.len) + chunkHeader.chunkSize);\n        }\n    }\n    async readData(header) {\n        debug(`Reading data of chunk[ID=${header.chunkID}, size=${header.chunkSize}]`);\n        const p0 = this.tokenizer.position;\n        switch (header.chunkID.trim()) {\n            case 'FVER': { // 3.1 FORMAT VERSION CHUNK\n                const version = await this.tokenizer.readToken(Token.UINT32_LE);\n                debug(`DSDIFF version=${version}`);\n                break;\n            }\n            case 'PROP': { // 3.2 PROPERTY CHUNK\n                const propType = await this.tokenizer.readToken(FourCcToken);\n                if (propType !== 'SND ')\n                    throw new DsdiffContentParseError('Unexpected PROP-chunk ID');\n                await this.handleSoundPropertyChunks(header.chunkSize - BigInt(FourCcToken.len));\n                break;\n            }\n            case 'ID3': { // Unofficial ID3 tag support\n                const id3_data = await this.tokenizer.readToken(new Token.Uint8ArrayType(Number(header.chunkSize)));\n                const rst = strtok3.fromBuffer(id3_data);\n                await new ID3v2Parser().parse(this.metadata, rst, this.options);\n                break;\n            }\n            case 'DSD':\n                if (this.metadata.format.numberOfChannels) {\n                    this.metadata.setFormat('numberOfSamples', Number(header.chunkSize * BigInt(8) / BigInt(this.metadata.format.numberOfChannels)));\n                }\n                if (this.metadata.format.numberOfSamples && this.metadata.format.sampleRate) {\n                    this.metadata.setFormat('duration', this.metadata.format.numberOfSamples / this.metadata.format.sampleRate);\n                }\n                break;\n            default:\n                debug(`Ignore chunk[ID=${header.chunkID}, size=${header.chunkSize}]`);\n                break;\n        }\n        const remaining = header.chunkSize - BigInt(this.tokenizer.position - p0);\n        if (remaining > 0) {\n            debug(`After Parsing chunk, remaining ${remaining} bytes`);\n            await this.tokenizer.ignore(Number(remaining));\n        }\n    }\n    async handleSoundPropertyChunks(remainingSize) {\n        debug(`Parsing sound-property-chunks, remainingSize=${remainingSize}`);\n        while (remainingSize > 0) {\n            const sndPropHeader = await this.tokenizer.readToken(ChunkHeader64);\n            debug(`Sound-property-chunk[ID=${sndPropHeader.chunkID}, size=${sndPropHeader.chunkSize}]`);\n            const p0 = this.tokenizer.position;\n            switch (sndPropHeader.chunkID.trim()) {\n                case 'FS': { // 3.2.1 Sample Rate Chunk\n                    const sampleRate = await this.tokenizer.readToken(Token.UINT32_BE);\n                    this.metadata.setFormat('sampleRate', sampleRate);\n                    break;\n                }\n                case 'CHNL': { // 3.2.2 Channels Chunk\n                    const numChannels = await this.tokenizer.readToken(Token.UINT16_BE);\n                    this.metadata.setFormat('numberOfChannels', numChannels);\n                    await this.handleChannelChunks(sndPropHeader.chunkSize - BigInt(Token.UINT16_BE.len));\n                    break;\n                }\n                case 'CMPR': { // 3.2.3 Compression Type Chunk\n                    const compressionIdCode = (await this.tokenizer.readToken(FourCcToken)).trim();\n                    const count = await this.tokenizer.readToken(Token.UINT8);\n                    const compressionName = await this.tokenizer.readToken(new Token.StringType(count, 'ascii'));\n                    if (compressionIdCode === 'DSD') {\n                        this.metadata.setFormat('lossless', true);\n                        this.metadata.setFormat('bitsPerSample', 1);\n                    }\n                    this.metadata.setFormat('codec', `${compressionIdCode} (${compressionName})`);\n                    break;\n                }\n                case 'ABSS': { // 3.2.4 Absolute Start Time Chunk\n                    const hours = await this.tokenizer.readToken(Token.UINT16_BE);\n                    const minutes = await this.tokenizer.readToken(Token.UINT8);\n                    const seconds = await this.tokenizer.readToken(Token.UINT8);\n                    const samples = await this.tokenizer.readToken(Token.UINT32_BE);\n                    debug(`ABSS ${hours}:${minutes}:${seconds}.${samples}`);\n                    break;\n                }\n                case 'LSCO': { // 3.2.5 Loudspeaker Configuration Chunk\n                    const lsConfig = await this.tokenizer.readToken(Token.UINT16_BE);\n                    debug(`LSCO lsConfig=${lsConfig}`);\n                    break;\n                }\n                default:\n                    debug(`Unknown sound-property-chunk[ID=${sndPropHeader.chunkID}, size=${sndPropHeader.chunkSize}]`);\n                    await this.tokenizer.ignore(Number(sndPropHeader.chunkSize));\n            }\n            const remaining = sndPropHeader.chunkSize - BigInt(this.tokenizer.position - p0);\n            if (remaining > 0) {\n                debug(`After Parsing sound-property-chunk ${sndPropHeader.chunkSize}, remaining ${remaining} bytes`);\n                await this.tokenizer.ignore(Number(remaining));\n            }\n            remainingSize -= BigInt(ChunkHeader64.len) + sndPropHeader.chunkSize;\n            debug(`Parsing sound-property-chunks, remainingSize=${remainingSize}`);\n        }\n        if (this.metadata.format.lossless && this.metadata.format.sampleRate && this.metadata.format.numberOfChannels && this.metadata.format.bitsPerSample) {\n            const bitrate = this.metadata.format.sampleRate * this.metadata.format.numberOfChannels * this.metadata.format.bitsPerSample;\n            this.metadata.setFormat('bitrate', bitrate);\n        }\n    }\n    async handleChannelChunks(remainingSize) {\n        debug(`Parsing channel-chunks, remainingSize=${remainingSize}`);\n        const channels = [];\n        while (remainingSize >= FourCcToken.len) {\n            const channelId = await this.tokenizer.readToken(FourCcToken);\n            debug(`Channel[ID=${channelId}]`);\n            channels.push(channelId);\n            remainingSize -= BigInt(FourCcToken.len);\n        }\n        debug(`Channels: ${channels.join(', ')}`);\n        return channels;\n    }\n}\n//# sourceMappingURL=DsdiffParser.js.map","import * as Token from 'token-types';\nimport { FourCcToken } from '../common/FourCC.js';\nimport { makeUnexpectedFileContentError } from '../ParseError.js';\nexport const compressionTypes = {\n    NONE: 'not compressed\tPCM\tApple Computer',\n    sowt: 'PCM (byte swapped)',\n    fl32: '32-bit floating point IEEE 32-bit float',\n    fl64: '64-bit floating point IEEE 64-bit float\tApple Computer',\n    alaw: 'ALaw 2:1\t8-bit ITU-T G.711 A-law',\n    ulaw: 'µLaw 2:1\t8-bit ITU-T G.711 µ-law\tApple Computer',\n    ULAW: 'CCITT G.711 u-law 8-bit ITU-T G.711 µ-law',\n    ALAW: 'CCITT G.711 A-law 8-bit ITU-T G.711 A-law',\n    FL32: 'Float 32\tIEEE 32-bit float '\n};\nexport class AiffContentError extends makeUnexpectedFileContentError('AIFF') {\n}\nexport class Common {\n    constructor(header, isAifc) {\n        this.isAifc = isAifc;\n        const minimumChunkSize = isAifc ? 22 : 18;\n        if (header.chunkSize < minimumChunkSize)\n            throw new AiffContentError(`COMMON CHUNK size should always be at least ${minimumChunkSize}`);\n        this.len = header.chunkSize;\n    }\n    get(buf, off) {\n        // see: https://cycling74.com/forums/aiffs-80-bit-sample-rate-value\n        const shift = Token.UINT16_BE.get(buf, off + 8) - 16398;\n        const baseSampleRate = Token.UINT16_BE.get(buf, off + 8 + 2);\n        const res = {\n            numChannels: Token.UINT16_BE.get(buf, off),\n            numSampleFrames: Token.UINT32_BE.get(buf, off + 2),\n            sampleSize: Token.UINT16_BE.get(buf, off + 6),\n            sampleRate: shift < 0 ? baseSampleRate >> Math.abs(shift) : baseSampleRate << shift\n        };\n        if (this.isAifc) {\n            res.compressionType = FourCcToken.get(buf, off + 18);\n            if (this.len > 22) {\n                const strLen = Token.UINT8.get(buf, off + 22);\n                if (strLen > 0) {\n                    const padding = (strLen + 1) % 2;\n                    if (23 + strLen + padding === this.len) {\n                        res.compressionName = new Token.StringType(strLen, 'latin1').get(buf, off + 23);\n                    }\n                    else {\n                        throw new AiffContentError('Illegal pstring length');\n                    }\n                }\n                else {\n                    res.compressionName = undefined;\n                }\n            }\n        }\n        else {\n            res.compressionName = 'PCM';\n        }\n        return res;\n    }\n}\n//# sourceMappingURL=AiffToken.js.map","import * as Token from 'token-types';\nimport { FourCcToken } from '../common/FourCC.js';\n/**\n * Common AIFF chunk header\n */\nexport const Header = {\n    len: 8,\n    get: (buf, off) => {\n        return {\n            // Chunk type ID\n            chunkID: FourCcToken.get(buf, off),\n            // Chunk size\n            chunkSize: Number(BigInt(Token.UINT32_BE.get(buf, off + 4)))\n        };\n    }\n};\n//# sourceMappingURL=index.js.map","import * as Token from 'token-types';\nimport initDebug from 'debug';\nimport * as strtok3 from 'strtok3';\nimport { ID3v2Parser } from '../id3v2/ID3v2Parser.js';\nimport { FourCcToken } from '../common/FourCC.js';\nimport { BasicParser } from '../common/BasicParser.js';\nimport * as AiffToken from './AiffToken.js';\nimport { AiffContentError, compressionTypes } from './AiffToken.js';\nimport * as iff from '../iff/index.js';\nconst debug = initDebug('music-metadata:parser:aiff');\n/**\n * AIFF - Audio Interchange File Format\n *\n * Ref:\n * - http://www-mmsp.ece.mcgill.ca/Documents/AudioFormats/AIFF/AIFF.html\n * - http://www-mmsp.ece.mcgill.ca/Documents/AudioFormats/AIFF/Docs/AIFF-1.3.pdf\n */\nexport class AIFFParser extends BasicParser {\n    constructor() {\n        super(...arguments);\n        this.isCompressed = null;\n    }\n    async parse() {\n        const header = await this.tokenizer.readToken(iff.Header);\n        if (header.chunkID !== 'FORM')\n            throw new AiffContentError('Invalid Chunk-ID, expected \\'FORM\\''); // Not AIFF format\n        const type = await this.tokenizer.readToken(FourCcToken);\n        switch (type) {\n            case 'AIFF':\n                this.metadata.setFormat('container', type);\n                this.isCompressed = false;\n                break;\n            case 'AIFC':\n                this.metadata.setFormat('container', 'AIFF-C');\n                this.isCompressed = true;\n                break;\n            default:\n                throw new AiffContentError(`Unsupported AIFF type: ${type}`);\n        }\n        this.metadata.setFormat('lossless', !this.isCompressed);\n        this.metadata.setAudioOnly();\n        try {\n            while (!this.tokenizer.fileInfo.size || this.tokenizer.fileInfo.size - this.tokenizer.position >= iff.Header.len) {\n                debug(`Reading AIFF chunk at offset=${this.tokenizer.position}`);\n                const chunkHeader = await this.tokenizer.readToken(iff.Header);\n                const nextChunk = 2 * Math.round(chunkHeader.chunkSize / 2);\n                const bytesRead = await this.readData(chunkHeader);\n                await this.tokenizer.ignore(nextChunk - bytesRead);\n            }\n        }\n        catch (err) {\n            if (err instanceof strtok3.EndOfStreamError) {\n                debug(\"End-of-stream\");\n            }\n            else {\n                throw err;\n            }\n        }\n    }\n    async readData(header) {\n        switch (header.chunkID) {\n            case 'COMM': { // The Common Chunk\n                if (this.isCompressed === null) {\n                    throw new AiffContentError('Failed to parse AIFF.COMM chunk when compression type is unknown');\n                }\n                const common = await this.tokenizer.readToken(new AiffToken.Common(header, this.isCompressed));\n                this.metadata.setFormat('bitsPerSample', common.sampleSize);\n                this.metadata.setFormat('sampleRate', common.sampleRate);\n                this.metadata.setFormat('numberOfChannels', common.numChannels);\n                this.metadata.setFormat('numberOfSamples', common.numSampleFrames);\n                this.metadata.setFormat('duration', common.numSampleFrames / common.sampleRate);\n                if (common.compressionName || common.compressionType) {\n                    this.metadata.setFormat('codec', common.compressionName ?? compressionTypes[common.compressionType]);\n                }\n                return header.chunkSize;\n            }\n            case 'ID3 ': { // ID3-meta-data\n                const id3_data = await this.tokenizer.readToken(new Token.Uint8ArrayType(header.chunkSize));\n                const rst = strtok3.fromBuffer(id3_data);\n                await new ID3v2Parser().parse(this.metadata, rst, this.options);\n                return header.chunkSize;\n            }\n            case 'SSND': // Sound Data Chunk\n                if (this.metadata.format.duration) {\n                    this.metadata.setFormat('bitrate', 8 * header.chunkSize / this.metadata.format.duration);\n                }\n                return 0;\n            case 'NAME': // Sample name chunk\n            case 'AUTH': // Author chunk\n            case '(c) ': // Copyright chunk\n            case 'ANNO': // Annotation chunk\n                return this.readTextChunk(header);\n            default:\n                debug(`Ignore chunk id=${header.chunkID}, size=${header.chunkSize}`);\n                return 0;\n        }\n    }\n    async readTextChunk(header) {\n        const value = await this.tokenizer.readToken(new Token.StringType(header.chunkSize, 'ascii'));\n        const values = value.split('\\0').map(v => v.trim()).filter(v => v?.length);\n        await Promise.all(values.map(v => this.metadata.addTag('AIFF', header.chunkID, v)));\n        return header.chunkSize;\n    }\n}\n//# sourceMappingURL=AiffParser.js.map","import * as Token from 'token-types';\nimport { FourCcToken } from '../common/FourCC.js';\n/**\n * Common chunk DSD header: the 'chunk name (Four-CC)' & chunk size\n */\nexport const ChunkHeader = {\n    len: 12,\n    get: (buf, off) => {\n        return { id: FourCcToken.get(buf, off), size: Token.UINT64_LE.get(buf, off + 4) };\n    }\n};\n/**\n * Common chunk DSD header: the 'chunk name (Four-CC)' & chunk size\n */\nexport const DsdChunk = {\n    len: 16,\n    get: (buf, off) => {\n        return {\n            fileSize: Token.INT64_LE.get(buf, off),\n            metadataPointer: Token.INT64_LE.get(buf, off + 8)\n        };\n    }\n};\nexport const ChannelType = {\n    mono: 1,\n    stereo: 2,\n    channels: 3,\n    quad: 4,\n    '4 channels': 5,\n    '5 channels': 6,\n    '5.1 channels': 7\n};\n/**\n * Common chunk DSD header: the 'chunk name (Four-CC)' & chunk size\n */\nexport const FormatChunk = {\n    len: 40,\n    get: (buf, off) => {\n        return {\n            formatVersion: Token.INT32_LE.get(buf, off),\n            formatID: Token.INT32_LE.get(buf, off + 4),\n            channelType: Token.INT32_LE.get(buf, off + 8),\n            channelNum: Token.INT32_LE.get(buf, off + 12),\n            samplingFrequency: Token.INT32_LE.get(buf, off + 16),\n            bitsPerSample: Token.INT32_LE.get(buf, off + 20),\n            sampleCount: Token.INT64_LE.get(buf, off + 24),\n            blockSizePerChannel: Token.INT32_LE.get(buf, off + 32)\n        };\n    }\n};\n//# sourceMappingURL=DsfChunk.js.map","import initDebug from 'debug';\nimport { AbstractID3Parser } from '../id3v2/AbstractID3Parser.js';\nimport { ChunkHeader, DsdChunk, FormatChunk } from './DsfChunk.js';\nimport { ID3v2Parser } from \"../id3v2/ID3v2Parser.js\";\nimport { makeUnexpectedFileContentError } from '../ParseError.js';\nconst debug = initDebug('music-metadata:parser:DSF');\nexport class DsdContentParseError extends makeUnexpectedFileContentError('DSD') {\n}\n/**\n * DSF (dsd stream file) File Parser\n * Ref: https://dsd-guide.com/sites/default/files/white-papers/DSFFileFormatSpec_E.pdf\n */\nexport class DsfParser extends AbstractID3Parser {\n    async postId3v2Parse() {\n        const p0 = this.tokenizer.position; // mark start position, normally 0\n        const chunkHeader = await this.tokenizer.readToken(ChunkHeader);\n        if (chunkHeader.id !== 'DSD ')\n            throw new DsdContentParseError('Invalid chunk signature');\n        this.metadata.setFormat('container', 'DSF');\n        this.metadata.setFormat('lossless', true);\n        this.metadata.setAudioOnly();\n        const dsdChunk = await this.tokenizer.readToken(DsdChunk);\n        if (dsdChunk.metadataPointer === BigInt(0)) {\n            debug(\"No ID3v2 tag present\");\n        }\n        else {\n            debug(`expect ID3v2 at offset=${dsdChunk.metadataPointer}`);\n            await this.parseChunks(dsdChunk.fileSize - chunkHeader.size);\n            // Jump to ID3 header\n            await this.tokenizer.ignore(Number(dsdChunk.metadataPointer) - this.tokenizer.position - p0);\n            return new ID3v2Parser().parse(this.metadata, this.tokenizer, this.options);\n        }\n    }\n    async parseChunks(bytesRemaining) {\n        while (bytesRemaining >= ChunkHeader.len) {\n            const chunkHeader = await this.tokenizer.readToken(ChunkHeader);\n            debug(`Parsing chunk name=${chunkHeader.id} size=${chunkHeader.size}`);\n            switch (chunkHeader.id) {\n                case 'fmt ': {\n                    const formatChunk = await this.tokenizer.readToken(FormatChunk);\n                    this.metadata.setFormat('numberOfChannels', formatChunk.channelNum);\n                    this.metadata.setFormat('sampleRate', formatChunk.samplingFrequency);\n                    this.metadata.setFormat('bitsPerSample', formatChunk.bitsPerSample);\n                    this.metadata.setFormat('numberOfSamples', formatChunk.sampleCount);\n                    this.metadata.setFormat('duration', Number(formatChunk.sampleCount) / formatChunk.samplingFrequency);\n                    const bitrate = formatChunk.bitsPerSample * formatChunk.samplingFrequency * formatChunk.channelNum;\n                    this.metadata.setFormat('bitrate', bitrate);\n                    return; // We got what we want, stop further processing of chunks\n                }\n                default:\n                    this.tokenizer.ignore(Number(chunkHeader.size) - ChunkHeader.len);\n                    break;\n            }\n            bytesRemaining -= chunkHeader.size;\n        }\n    }\n}\n//# sourceMappingURL=DsfParser.js.map","import * as Token from 'token-types';\nimport { AttachedPictureType } from '../../id3v2/ID3v2Token.js';\n/**\n * Parse the METADATA_BLOCK_PICTURE\n * Ref: https://wiki.xiph.org/VorbisComment#METADATA_BLOCK_PICTURE\n * Ref: https://xiph.org/flac/format.html#metadata_block_picture\n * // ToDo: move to ID3 / APIC?\n */\nexport class VorbisPictureToken {\n    static fromBase64(base64str) {\n        return VorbisPictureToken.fromBuffer(Uint8Array.from(atob(base64str), c => c.charCodeAt(0)));\n    }\n    static fromBuffer(buffer) {\n        const pic = new VorbisPictureToken(buffer.length);\n        return pic.get(buffer, 0);\n    }\n    constructor(len) {\n        this.len = len;\n    }\n    get(buffer, offset) {\n        const type = AttachedPictureType[Token.UINT32_BE.get(buffer, offset)];\n        offset += 4;\n        const mimeLen = Token.UINT32_BE.get(buffer, offset);\n        offset += 4;\n        const format = new Token.StringType(mimeLen, 'utf-8').get(buffer, offset);\n        offset += mimeLen;\n        const descLen = Token.UINT32_BE.get(buffer, offset);\n        offset += 4;\n        const description = new Token.StringType(descLen, 'utf-8').get(buffer, offset);\n        offset += descLen;\n        const width = Token.UINT32_BE.get(buffer, offset);\n        offset += 4;\n        const height = Token.UINT32_BE.get(buffer, offset);\n        offset += 4;\n        const colour_depth = Token.UINT32_BE.get(buffer, offset);\n        offset += 4;\n        const indexed_color = Token.UINT32_BE.get(buffer, offset);\n        offset += 4;\n        const picDataLen = Token.UINT32_BE.get(buffer, offset);\n        offset += 4;\n        const data = Uint8Array.from(buffer.slice(offset, offset + picDataLen));\n        return {\n            type,\n            format,\n            description,\n            width,\n            height,\n            colour_depth,\n            indexed_color,\n            data\n        };\n    }\n}\n/**\n * Comment header decoder\n * Ref: https://xiph.org/vorbis/doc/Vorbis_I_spec.html#x1-620004.2.1\n */\nexport const CommonHeader = {\n    len: 7,\n    get: (buf, off) => {\n        return {\n            packetType: Token.UINT8.get(buf, off),\n            vorbis: new Token.StringType(6, 'ascii').get(buf, off + 1)\n        };\n    }\n};\n/**\n * Identification header decoder\n * Ref: https://xiph.org/vorbis/doc/Vorbis_I_spec.html#x1-630004.2.2\n */\nexport const IdentificationHeader = {\n    len: 23,\n    get: (uint8Array, off) => {\n        return {\n            version: Token.UINT32_LE.get(uint8Array, off + 0),\n            channelMode: Token.UINT8.get(uint8Array, off + 4),\n            sampleRate: Token.UINT32_LE.get(uint8Array, off + 5),\n            bitrateMax: Token.UINT32_LE.get(uint8Array, off + 9),\n            bitrateNominal: Token.UINT32_LE.get(uint8Array, off + 13),\n            bitrateMin: Token.UINT32_LE.get(uint8Array, off + 17)\n        };\n    }\n};\n//# sourceMappingURL=Vorbis.js.map","import * as Token from 'token-types';\nexport class VorbisDecoder {\n    constructor(data, offset) {\n        this.data = data;\n        this.offset = offset;\n    }\n    readInt32() {\n        const value = Token.UINT32_LE.get(this.data, this.offset);\n        this.offset += 4;\n        return value;\n    }\n    readStringUtf8() {\n        const len = this.readInt32();\n        const value = new TextDecoder('utf-8').decode(this.data.subarray(this.offset, this.offset + len));\n        this.offset += len;\n        return value;\n    }\n    parseUserComment() {\n        const offset0 = this.offset;\n        const v = this.readStringUtf8();\n        const idx = v.indexOf('=');\n        return {\n            key: v.slice(0, idx).toUpperCase(),\n            value: v.slice(idx + 1),\n            len: this.offset - offset0\n        };\n    }\n}\n//# sourceMappingURL=VorbisDecoder.js.map","import * as Token from 'token-types';\nimport debugInit from 'debug';\nimport { VorbisDecoder } from './VorbisDecoder.js';\nimport { CommonHeader, IdentificationHeader, VorbisPictureToken } from './Vorbis.js';\nimport { makeUnexpectedFileContentError } from '../../ParseError.js';\nconst debug = debugInit('music-metadata:parser:ogg:vorbis1');\nexport class VorbisContentError extends makeUnexpectedFileContentError('Vorbis') {\n}\n/**\n * Vorbis 1 Parser.\n * Used by OggStream\n */\nexport class VorbisStream {\n    constructor(metadata, options) {\n        this.pageSegments = [];\n        this.metadata = metadata;\n        this.options = options;\n    }\n    /**\n     * Vorbis 1 parser\n     * @param header Ogg Page Header\n     * @param pageData Page data\n     */\n    async parsePage(header, pageData) {\n        this.lastPageHeader = header;\n        if (header.headerType.firstPage) {\n            this.parseFirstPage(header, pageData);\n        }\n        else {\n            if (header.headerType.continued) {\n                if (this.pageSegments.length === 0) {\n                    throw new VorbisContentError('Cannot continue on previous page');\n                }\n                this.pageSegments.push(pageData);\n            }\n            if (header.headerType.lastPage || !header.headerType.continued) {\n                // Flush page segments\n                if (this.pageSegments.length > 0) {\n                    const fullPage = VorbisStream.mergeUint8Arrays(this.pageSegments);\n                    await this.parseFullPage(fullPage);\n                }\n                // Reset page segments\n                this.pageSegments = header.headerType.lastPage ? [] : [pageData];\n            }\n        }\n    }\n    static mergeUint8Arrays(arrays) {\n        const totalSize = arrays.reduce((acc, e) => acc + e.length, 0);\n        const merged = new Uint8Array(totalSize);\n        arrays.forEach((array, i, _arrays) => {\n            const offset = _arrays.slice(0, i).reduce((acc, e) => acc + e.length, 0);\n            merged.set(array, offset);\n        });\n        return merged;\n    }\n    async flush() {\n        await this.parseFullPage(VorbisStream.mergeUint8Arrays(this.pageSegments));\n    }\n    async parseUserComment(pageData, offset) {\n        const decoder = new VorbisDecoder(pageData, offset);\n        const tag = decoder.parseUserComment();\n        await this.addTag(tag.key, tag.value);\n        return tag.len;\n    }\n    async addTag(id, value) {\n        if (id === 'METADATA_BLOCK_PICTURE' && (typeof value === 'string')) {\n            if (this.options.skipCovers) {\n                debug(\"Ignore picture\");\n                return;\n            }\n            value = VorbisPictureToken.fromBase64(value);\n            debug(`Push picture: id=${id}, format=${value.format}`);\n        }\n        else {\n            debug(`Push tag: id=${id}, value=${value}`);\n        }\n        await this.metadata.addTag('vorbis', id, value);\n    }\n    calculateDuration() {\n        if (this.lastPageHeader && this.metadata.format.sampleRate && this.lastPageHeader.absoluteGranulePosition >= 0) {\n            // Calculate duration\n            this.metadata.setFormat('numberOfSamples', this.lastPageHeader.absoluteGranulePosition);\n            this.metadata.setFormat('duration', this.lastPageHeader.absoluteGranulePosition / this.metadata.format.sampleRate);\n        }\n    }\n    /**\n     * Parse first Ogg/Vorbis page\n     * @param header\n     * @param pageData\n     */\n    parseFirstPage(_header, pageData) {\n        this.metadata.setFormat('codec', 'Vorbis I');\n        this.metadata.setFormat('hasAudio', true);\n        debug('Parse first page');\n        // Parse  Vorbis common header\n        const commonHeader = CommonHeader.get(pageData, 0);\n        if (commonHeader.vorbis !== 'vorbis')\n            throw new VorbisContentError('Metadata does not look like Vorbis');\n        if (commonHeader.packetType === 1) {\n            const idHeader = IdentificationHeader.get(pageData, CommonHeader.len);\n            this.metadata.setFormat('sampleRate', idHeader.sampleRate);\n            this.metadata.setFormat('bitrate', idHeader.bitrateNominal);\n            this.metadata.setFormat('numberOfChannels', idHeader.channelMode);\n            debug('sample-rate=%s[hz], bitrate=%s[b/s], channel-mode=%s', idHeader.sampleRate, idHeader.bitrateNominal, idHeader.channelMode);\n        }\n        else\n            throw new VorbisContentError('First Ogg page should be type 1: the identification header');\n    }\n    async parseFullPage(pageData) {\n        // New page\n        const commonHeader = CommonHeader.get(pageData, 0);\n        debug('Parse full page: type=%s, byteLength=%s', commonHeader.packetType, pageData.byteLength);\n        switch (commonHeader.packetType) {\n            case 3: //  type 3: comment header\n                return this.parseUserCommentList(pageData, CommonHeader.len);\n            case 1: // type 1: the identification header\n            case 5: // type 5: setup header type\n                break; // ignore\n        }\n    }\n    /**\n     * Ref: https://xiph.org/vorbis/doc/Vorbis_I_spec.html#x1-840005.2\n     */\n    async parseUserCommentList(pageData, offset) {\n        const strLen = Token.UINT32_LE.get(pageData, offset);\n        offset += 4;\n        // const vendorString = new Token.StringType(strLen, 'utf-8').get(pageData, offset);\n        offset += strLen;\n        let userCommentListLength = Token.UINT32_LE.get(pageData, offset);\n        offset += 4;\n        while (userCommentListLength-- > 0) {\n            offset += (await this.parseUserComment(pageData, offset));\n        }\n    }\n}\n//# sourceMappingURL=VorbisStream.js.map","import { UINT16_BE, UINT24_BE, Uint8ArrayType } from 'token-types';\nimport initDebug from 'debug';\nimport * as util from '../common/Util.js';\nimport { VorbisPictureToken } from '../ogg/vorbis/Vorbis.js';\nimport { AbstractID3Parser } from '../id3v2/AbstractID3Parser.js';\nimport { FourCcToken } from '../common/FourCC.js';\nimport { VorbisStream } from '../ogg/vorbis/VorbisStream.js';\nimport { VorbisDecoder } from '../ogg/vorbis/VorbisDecoder.js';\nimport { makeUnexpectedFileContentError } from '../ParseError.js';\nconst debug = initDebug('music-metadata:parser:FLAC');\nclass FlacContentError extends makeUnexpectedFileContentError('FLAC') {\n}\n/**\n * FLAC supports up to 128 kinds of metadata blocks; currently the following are defined:\n * ref: https://xiph.org/flac/format.html#metadata_block\n */\nconst BlockType = {\n    STREAMINFO: 0, // STREAMINFO\n    PADDING: 1, // PADDING\n    APPLICATION: 2, // APPLICATION\n    SEEKTABLE: 3, // SEEKTABLE\n    VORBIS_COMMENT: 4, // VORBIS_COMMENT\n    CUESHEET: 5, // CUESHEET\n    PICTURE: 6 // PICTURE\n};\nexport class FlacParser extends AbstractID3Parser {\n    constructor() {\n        super(...arguments);\n        this.vorbisParser = new VorbisStream(this.metadata, this.options);\n        this.padding = 0;\n    }\n    async postId3v2Parse() {\n        const fourCC = await this.tokenizer.readToken(FourCcToken);\n        if (fourCC.toString() !== 'fLaC') {\n            throw new FlacContentError('Invalid FLAC preamble');\n        }\n        this.metadata.setAudioOnly();\n        let blockHeader;\n        do {\n            // Read block header\n            blockHeader = await this.tokenizer.readToken(BlockHeader);\n            // Parse block data\n            await this.parseDataBlock(blockHeader);\n        } while (!blockHeader.lastBlock);\n        if (this.tokenizer.fileInfo.size && this.metadata.format.duration) {\n            const dataSize = this.tokenizer.fileInfo.size - this.tokenizer.position;\n            this.metadata.setFormat('bitrate', 8 * dataSize / this.metadata.format.duration);\n        }\n    }\n    async parseDataBlock(blockHeader) {\n        debug(`blockHeader type=${blockHeader.type}, length=${blockHeader.length}`);\n        switch (blockHeader.type) {\n            case BlockType.STREAMINFO:\n                return this.parseBlockStreamInfo(blockHeader.length);\n            case BlockType.PADDING:\n                this.padding += blockHeader.length;\n                break;\n            case BlockType.APPLICATION:\n                break;\n            case BlockType.SEEKTABLE:\n                break;\n            case BlockType.VORBIS_COMMENT:\n                return this.parseComment(blockHeader.length);\n            case BlockType.CUESHEET:\n                break;\n            case BlockType.PICTURE:\n                await this.parsePicture(blockHeader.length);\n                return;\n            default:\n                this.metadata.addWarning(`Unknown block type: ${blockHeader.type}`);\n        }\n        // Ignore data block\n        return this.tokenizer.ignore(blockHeader.length).then();\n    }\n    /**\n     * Parse STREAMINFO\n     */\n    async parseBlockStreamInfo(dataLen) {\n        if (dataLen !== BlockStreamInfo.len)\n            throw new FlacContentError('Unexpected block-stream-info length');\n        const streamInfo = await this.tokenizer.readToken(BlockStreamInfo);\n        this.metadata.setFormat('container', 'FLAC');\n        this.metadata.setFormat('codec', 'FLAC');\n        this.metadata.setFormat('lossless', true);\n        this.metadata.setFormat('numberOfChannels', streamInfo.channels);\n        this.metadata.setFormat('bitsPerSample', streamInfo.bitsPerSample);\n        this.metadata.setFormat('sampleRate', streamInfo.sampleRate);\n        if (streamInfo.totalSamples > 0) {\n            this.metadata.setFormat('duration', streamInfo.totalSamples / streamInfo.sampleRate);\n        }\n    }\n    /**\n     * Parse VORBIS_COMMENT\n     * Ref: https://www.xiph.org/vorbis/doc/Vorbis_I_spec.html#x1-640004.2.3\n     */\n    async parseComment(dataLen) {\n        const data = await this.tokenizer.readToken(new Uint8ArrayType(dataLen));\n        const decoder = new VorbisDecoder(data, 0);\n        decoder.readStringUtf8(); // vendor (skip)\n        const commentListLength = decoder.readInt32();\n        const tags = new Array(commentListLength);\n        for (let i = 0; i < commentListLength; i++) {\n            tags[i] = decoder.parseUserComment();\n        }\n        await Promise.all(tags.map(tag => this.vorbisParser.addTag(tag.key, tag.value)));\n    }\n    async parsePicture(dataLen) {\n        if (this.options.skipCovers) {\n            return this.tokenizer.ignore(dataLen);\n        }\n        const picture = await this.tokenizer.readToken(new VorbisPictureToken(dataLen));\n        this.vorbisParser.addTag('METADATA_BLOCK_PICTURE', picture);\n    }\n}\nconst BlockHeader = {\n    len: 4,\n    get: (buf, off) => {\n        return {\n            lastBlock: util.getBit(buf, off, 7),\n            type: util.getBitAllignedNumber(buf, off, 1, 7),\n            length: UINT24_BE.get(buf, off + 1)\n        };\n    }\n};\n/**\n * METADATA_BLOCK_DATA\n * Ref: https://xiph.org/flac/format.html#metadata_block_streaminfo\n */\nconst BlockStreamInfo = {\n    len: 34,\n    get: (buf, off) => {\n        return {\n            // The minimum block size (in samples) used in the stream.\n            minimumBlockSize: UINT16_BE.get(buf, off),\n            // The maximum block size (in samples) used in the stream.\n            // (Minimum blocksize == maximum blocksize) implies a fixed-blocksize stream.\n            maximumBlockSize: UINT16_BE.get(buf, off + 2) / 1000,\n            // The minimum frame size (in bytes) used in the stream.\n            // May be 0 to imply the value is not known.\n            minimumFrameSize: UINT24_BE.get(buf, off + 4),\n            // The maximum frame size (in bytes) used in the stream.\n            // May be 0 to imply the value is not known.\n            maximumFrameSize: UINT24_BE.get(buf, off + 7),\n            // Sample rate in Hz. Though 20 bits are available,\n            // the maximum sample rate is limited by the structure of frame headers to 655350Hz.\n            // Also, a value of 0 is invalid.\n            sampleRate: UINT24_BE.get(buf, off + 10) >> 4,\n            // probably slower: sampleRate: common.getBitAllignedNumber(buf, off + 10, 0, 20),\n            // (number of channels)-1. FLAC supports from 1 to 8 channels\n            channels: util.getBitAllignedNumber(buf, off + 12, 4, 3) + 1,\n            // bits per sample)-1.\n            // FLAC supports from 4 to 32 bits per sample. Currently the reference encoder and decoders only support up to 24 bits per sample.\n            bitsPerSample: util.getBitAllignedNumber(buf, off + 12, 7, 5) + 1,\n            // Total samples in stream.\n            // 'Samples' means inter-channel sample, i.e. one second of 44.1Khz audio will have 44100 samples regardless of the number of channels.\n            // A value of zero here means the number of total samples is unknown.\n            totalSamples: util.getBitAllignedNumber(buf, off + 13, 4, 36),\n            // the MD5 hash of the file (see notes for usage... it's a littly tricky)\n            fileMD5: new Uint8ArrayType(16).get(buf, off + 18)\n        };\n    }\n};\n//# sourceMappingURL=FlacParser.js.map","export const DataType = {\n    string: 0,\n    uint: 1,\n    uid: 2,\n    bool: 3,\n    binary: 4,\n    float: 5,\n};\n//# sourceMappingURL=types.js.map","import { DataType } from '../ebml/types.js';\n/**\n * Elements of document type description\n * Derived from https://github.com/tungol/EBML/blob/master/doctypes/matroska.dtd\n * Extended with:\n * - https://www.matroska.org/technical/specs/index.html\n */\nexport const matroskaDtd = {\n    name: 'dtd',\n    container: {\n        0x1a45dfa3: {\n            name: 'ebml',\n            container: {\n                0x4286: { name: 'ebmlVersion', value: DataType.uint }, // 5.1.1\n                0x42f7: { name: 'ebmlReadVersion', value: DataType.uint }, // 5.1.2\n                0x42f2: { name: 'ebmlMaxIDWidth', value: DataType.uint }, // 5.1.3\n                0x42f3: { name: 'ebmlMaxSizeWidth', value: DataType.uint }, // 5.1.4\n                0x4282: { name: 'docType', value: DataType.string }, // 5.1.5\n                0x4287: { name: 'docTypeVersion', value: DataType.uint }, // 5.1.6\n                0x4285: { name: 'docTypeReadVersion', value: DataType.uint } // 5.1.7\n            }\n        },\n        // Matroska segments\n        0x18538067: {\n            name: 'segment',\n            container: {\n                // Meta Seek Information (also known as MetaSeek)\n                0x114d9b74: {\n                    name: 'seekHead',\n                    container: {\n                        0x4dbb: {\n                            name: 'seek',\n                            multiple: true,\n                            container: {\n                                0x53ab: { name: 'id', value: DataType.binary },\n                                0x53ac: { name: 'position', value: DataType.uint }\n                            }\n                        }\n                    }\n                },\n                // Segment Information\n                0x1549a966: {\n                    name: 'info',\n                    container: {\n                        0x73a4: { name: 'uid', value: DataType.uid },\n                        0x7384: { name: 'filename', value: DataType.string },\n                        0x3cb923: { name: 'prevUID', value: DataType.uid },\n                        0x3c83ab: { name: 'prevFilename', value: DataType.string },\n                        0x3eb923: { name: 'nextUID', value: DataType.uid },\n                        0x3e83bb: { name: 'nextFilename', value: DataType.string },\n                        0x2ad7b1: { name: 'timecodeScale', value: DataType.uint },\n                        0x4489: { name: 'duration', value: DataType.float },\n                        0x4461: { name: 'dateUTC', value: DataType.uint },\n                        0x7ba9: { name: 'title', value: DataType.string },\n                        0x4d80: { name: 'muxingApp', value: DataType.string },\n                        0x5741: { name: 'writingApp', value: DataType.string }\n                    }\n                },\n                // Cluster\n                0x1f43b675: {\n                    name: 'cluster',\n                    multiple: true,\n                    container: {\n                        0xe7: { name: 'timecode', value: DataType.uid },\n                        0x58d7: { name: 'silentTracks ', multiple: true },\n                        0xa7: { name: 'position', value: DataType.uid },\n                        0xab: { name: 'prevSize', value: DataType.uid },\n                        0xa0: { name: 'blockGroup' },\n                        0xa3: { name: 'simpleBlock' }\n                    }\n                },\n                // Track\n                0x1654ae6b: {\n                    name: 'tracks',\n                    container: {\n                        0xae: {\n                            name: 'entries',\n                            multiple: true,\n                            container: {\n                                0xd7: { name: 'trackNumber', value: DataType.uint },\n                                0x73c5: { name: 'uid', value: DataType.uid },\n                                0x83: { name: 'trackType', value: DataType.uint },\n                                0xb9: { name: 'flagEnabled', value: DataType.bool },\n                                0x88: { name: 'flagDefault', value: DataType.bool },\n                                0x55aa: { name: 'flagForced', value: DataType.bool }, // extended\n                                0x9c: { name: 'flagLacing', value: DataType.bool },\n                                0x6de7: { name: 'minCache', value: DataType.uint },\n                                0x6de8: { name: 'maxCache', value: DataType.uint },\n                                0x23e383: { name: 'defaultDuration', value: DataType.uint },\n                                0x23314f: { name: 'timecodeScale', value: DataType.float },\n                                0x536e: { name: 'name', value: DataType.string },\n                                0x22b59c: { name: 'language', value: DataType.string },\n                                0x86: { name: 'codecID', value: DataType.string },\n                                0x63a2: { name: 'codecPrivate', value: DataType.binary },\n                                0x258688: { name: 'codecName', value: DataType.string },\n                                0x3a9697: { name: 'codecSettings', value: DataType.string },\n                                0x3b4040: { name: 'codecInfoUrl', value: DataType.string },\n                                0x26b240: { name: 'codecDownloadUrl', value: DataType.string },\n                                0xaa: { name: 'codecDecodeAll', value: DataType.bool },\n                                0x6fab: { name: 'trackOverlay', value: DataType.uint },\n                                // Video\n                                0xe0: {\n                                    name: 'video',\n                                    container: {\n                                        0x9a: { name: 'flagInterlaced', value: DataType.bool },\n                                        0x53b8: { name: 'stereoMode', value: DataType.uint },\n                                        0xb0: { name: 'pixelWidth', value: DataType.uint },\n                                        0xba: { name: 'pixelHeight', value: DataType.uint },\n                                        0x54b0: { name: 'displayWidth', value: DataType.uint },\n                                        0x54ba: { name: 'displayHeight', value: DataType.uint },\n                                        0x54b3: { name: 'aspectRatioType', value: DataType.uint },\n                                        0x2eb524: { name: 'colourSpace', value: DataType.uint },\n                                        0x2fb523: { name: 'gammaValue', value: DataType.float }\n                                    }\n                                },\n                                // Audio\n                                0xe1: {\n                                    name: 'audio',\n                                    container: {\n                                        0xb5: { name: 'samplingFrequency', value: DataType.float },\n                                        0x78b5: { name: 'outputSamplingFrequency', value: DataType.float },\n                                        0x9f: { name: 'channels', value: DataType.uint }, // https://www.matroska.org/technical/specs/index.html\n                                        0x94: { name: 'channels', value: DataType.uint },\n                                        0x7d7b: { name: 'channelPositions', value: DataType.binary },\n                                        0x6264: { name: 'bitDepth', value: DataType.uint }\n                                    }\n                                },\n                                // Content Encoding\n                                0x6d80: {\n                                    name: 'contentEncodings',\n                                    container: {\n                                        0x6240: {\n                                            name: 'contentEncoding',\n                                            container: {\n                                                0x5031: { name: 'order', value: DataType.uint },\n                                                0x5032: { name: 'scope', value: DataType.bool },\n                                                0x5033: { name: 'type', value: DataType.uint },\n                                                0x5034: {\n                                                    name: 'contentEncoding',\n                                                    container: {\n                                                        0x4254: { name: 'contentCompAlgo', value: DataType.uint },\n                                                        0x4255: { name: 'contentCompSettings', value: DataType.binary }\n                                                    }\n                                                },\n                                                0x5035: {\n                                                    name: 'contentEncoding',\n                                                    container: {\n                                                        0x47e1: { name: 'contentEncAlgo', value: DataType.uint },\n                                                        0x47e2: { name: 'contentEncKeyID', value: DataType.binary },\n                                                        0x47e3: { name: 'contentSignature ', value: DataType.binary },\n                                                        0x47e4: { name: 'ContentSigKeyID  ', value: DataType.binary },\n                                                        0x47e5: { name: 'contentSigAlgo ', value: DataType.uint },\n                                                        0x47e6: { name: 'contentSigHashAlgo ', value: DataType.uint }\n                                                    }\n                                                },\n                                                0x6264: { name: 'bitDepth', value: DataType.uint }\n                                            }\n                                        }\n                                    }\n                                }\n                            }\n                        }\n                    }\n                },\n                // Cueing Data\n                0x1c53bb6b: {\n                    name: 'cues',\n                    container: {\n                        0xbb: {\n                            name: 'cuePoint',\n                            container: {\n                                0xb3: { name: 'cueTime', value: DataType.uid },\n                                0xb7: {\n                                    name: 'positions',\n                                    container: {\n                                        0xf7: { name: 'track', value: DataType.uint },\n                                        0xf1: { name: 'clusterPosition', value: DataType.uint },\n                                        0x5378: { name: 'blockNumber', value: DataType.uint },\n                                        0xea: { name: 'codecState', value: DataType.uint },\n                                        0xdb: {\n                                            name: 'reference', container: {\n                                                0x96: { name: 'time', value: DataType.uint },\n                                                0x97: { name: 'cluster', value: DataType.uint },\n                                                0x535f: { name: 'number', value: DataType.uint },\n                                                0xeb: { name: 'codecState', value: DataType.uint }\n                                            }\n                                        },\n                                        0xf0: { name: 'relativePosition', value: DataType.uint } // extended\n                                    }\n                                }\n                            }\n                        }\n                    }\n                },\n                // Attachment\n                0x1941a469: {\n                    name: 'attachments',\n                    container: {\n                        0x61a7: {\n                            name: 'attachedFiles',\n                            multiple: true,\n                            container: {\n                                0x467e: { name: 'description', value: DataType.string },\n                                0x466e: { name: 'name', value: DataType.string },\n                                0x4660: { name: 'mimeType', value: DataType.string },\n                                0x465c: { name: 'data', value: DataType.binary },\n                                0x46ae: { name: 'uid', value: DataType.uid }\n                            }\n                        }\n                    }\n                },\n                // Chapters\n                0x1043a770: {\n                    name: 'chapters',\n                    container: {\n                        0x45b9: {\n                            name: 'editionEntry',\n                            container: {\n                                0xb6: {\n                                    name: 'chapterAtom',\n                                    container: {\n                                        0x73c4: { name: 'uid', value: DataType.uid },\n                                        0x91: { name: 'timeStart', value: DataType.uint },\n                                        0x92: { name: 'timeEnd', value: DataType.uid },\n                                        0x98: { name: 'hidden', value: DataType.bool },\n                                        0x4598: { name: 'enabled', value: DataType.uid },\n                                        0x8f: {\n                                            name: 'track', container: {\n                                                0x89: { name: 'trackNumber', value: DataType.uid },\n                                                0x80: {\n                                                    name: 'display', container: {\n                                                        0x85: { name: 'string', value: DataType.string },\n                                                        0x437c: { name: 'language ', value: DataType.string },\n                                                        0x437e: { name: 'country ', value: DataType.string }\n                                                    }\n                                                }\n                                            }\n                                        }\n                                    }\n                                }\n                            }\n                        }\n                    }\n                },\n                // Tagging\n                0x1254c367: {\n                    name: 'tags',\n                    container: {\n                        0x7373: {\n                            name: 'tag',\n                            multiple: true,\n                            container: {\n                                0x63c0: {\n                                    name: 'target',\n                                    container: {\n                                        0x63c5: { name: 'tagTrackUID', value: DataType.uid },\n                                        0x63c4: { name: 'tagChapterUID', value: DataType.uint },\n                                        0x63c6: { name: 'tagAttachmentUID', value: DataType.uid },\n                                        0x63ca: { name: 'targetType', value: DataType.string }, // extended\n                                        0x68ca: { name: 'targetTypeValue', value: DataType.uint }, // extended\n                                        0x63c9: { name: 'tagEditionUID', value: DataType.uid } // extended\n                                    }\n                                },\n                                0x67c8: {\n                                    name: 'simpleTags',\n                                    multiple: true,\n                                    container: {\n                                        0x45a3: { name: 'name', value: DataType.string },\n                                        0x4487: { name: 'string', value: DataType.string },\n                                        0x4485: { name: 'binary', value: DataType.binary },\n                                        0x447a: { name: 'language', value: DataType.string }, // extended\n                                        0x447b: { name: 'languageIETF', value: DataType.string }, // extended\n                                        0x4484: { name: 'default', value: DataType.bool } // extended\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        }\n    }\n};\n//# sourceMappingURL=MatroskaDtd.js.map","import { Float32_BE, Float64_BE, StringType, UINT8 } from 'token-types';\nimport initDebug from 'debug';\nimport { EndOfStreamError } from 'strtok3';\nimport { DataType } from './types.js';\nimport * as Token from 'token-types';\nimport { makeUnexpectedFileContentError } from '../ParseError.js';\nconst debug = initDebug('music-metadata:parser:ebml');\nexport class EbmlContentError extends makeUnexpectedFileContentError('EBML') {\n}\nexport const ParseAction = {\n    ReadNext: 0, // Continue reading the next elements\n    IgnoreElement: 2, // Ignore (do not read) this element\n    SkipSiblings: 3, // Skip all remaining elements at the same level\n    TerminateParsing: 4, // Terminate the parsing process\n    SkipElement: 5 // Consider the element has read, assume position is at the next element\n};\n/**\n * Extensible Binary Meta Language (EBML) iterator\n * https://en.wikipedia.org/wiki/Extensible_Binary_Meta_Language\n * http://matroska.sourceforge.net/technical/specs/rfc/index.html\n *\n * WEBM VP8 AUDIO FILE\n */\nexport class EbmlIterator {\n    /**\n     * @param {ITokenizer} tokenizer Input\n     * @param tokenizer\n     */\n    constructor(tokenizer) {\n        this.padding = 0;\n        this.parserMap = new Map();\n        this.ebmlMaxIDLength = 4;\n        this.ebmlMaxSizeLength = 8;\n        this.tokenizer = tokenizer;\n        this.parserMap.set(DataType.uint, e => this.readUint(e));\n        this.parserMap.set(DataType.string, e => this.readString(e));\n        this.parserMap.set(DataType.binary, e => this.readBuffer(e));\n        this.parserMap.set(DataType.uid, async (e) => this.readBuffer(e));\n        this.parserMap.set(DataType.bool, e => this.readFlag(e));\n        this.parserMap.set(DataType.float, e => this.readFloat(e));\n    }\n    async iterate(dtdElement, posDone, listener) {\n        return this.parseContainer(linkParents(dtdElement), posDone, listener);\n    }\n    async parseContainer(dtdElement, posDone, listener) {\n        const tree = {};\n        while (this.tokenizer.position < posDone) {\n            let element;\n            const elementPosition = this.tokenizer.position;\n            try {\n                element = await this.readElement();\n            }\n            catch (error) {\n                if (error instanceof EndOfStreamError) {\n                    break;\n                }\n                throw error;\n            }\n            const child = dtdElement.container[element.id];\n            if (child) {\n                const action = listener.startNext(child);\n                switch (action) {\n                    case ParseAction.ReadNext:\n                        {\n                            if (element.id === 0x1F43B675) {\n                                // Hack to ignore remaining segment, when cluster element received\n                                // await this.tokenizer.ignore(posDone - this.tokenizer.position);\n                                // break;\n                            }\n                            debug(`Read element: name=${getElementPath(child)}{id=0x${element.id.toString(16)}, container=${!!child.container}} at position=${elementPosition}`);\n                            if (child.container) {\n                                const res = await this.parseContainer(child, element.len >= 0 ? this.tokenizer.position + element.len : -1, listener);\n                                if (child.multiple) {\n                                    if (!tree[child.name]) {\n                                        tree[child.name] = [];\n                                    }\n                                    tree[child.name].push(res);\n                                }\n                                else {\n                                    tree[child.name] = res;\n                                }\n                                await listener.elementValue(child, res, elementPosition);\n                            }\n                            else {\n                                const parser = this.parserMap.get(child.value);\n                                if (typeof parser === 'function') {\n                                    const value = await parser(element);\n                                    tree[child.name] = value;\n                                    await listener.elementValue(child, value, elementPosition);\n                                }\n                            }\n                        }\n                        break;\n                    case ParseAction.SkipElement:\n                        debug(`Go to next element: name=${getElementPath(child)}, element.id=0x${element.id}, container=${!!child.container} at position=${elementPosition}`);\n                        break;\n                    case ParseAction.IgnoreElement:\n                        debug(`Ignore element: name=${getElementPath(child)}, element.id=0x${element.id}, container=${!!child.container} at position=${elementPosition}`);\n                        await this.tokenizer.ignore(element.len);\n                        break;\n                    case ParseAction.SkipSiblings:\n                        debug(`Ignore remaining container, at: name=${getElementPath(child)}, element.id=0x${element.id}, container=${!!child.container} at position=${elementPosition}`);\n                        await this.tokenizer.ignore(posDone - this.tokenizer.position);\n                        break;\n                    case ParseAction.TerminateParsing:\n                        debug(`Terminate parsing at element: name=${getElementPath(child)}, element.id=0x${element.id}, container=${!!child.container} at position=${elementPosition}`);\n                        return tree;\n                }\n            }\n            else {\n                switch (element.id) {\n                    case 0xec: // void\n                        this.padding += element.len;\n                        await this.tokenizer.ignore(element.len);\n                        break;\n                    default:\n                        debug(`parseEbml: parent=${getElementPath(dtdElement)}, unknown child: id=${element.id.toString(16)} at position=${elementPosition}`);\n                        this.padding += element.len;\n                        await this.tokenizer.ignore(element.len);\n                }\n            }\n        }\n        return tree;\n    }\n    async readVintData(maxLength) {\n        const msb = await this.tokenizer.peekNumber(UINT8);\n        let mask = 0x80;\n        let oc = 1;\n        // Calculate VINT_WIDTH\n        while ((msb & mask) === 0) {\n            if (oc > maxLength) {\n                throw new EbmlContentError('VINT value exceeding maximum size');\n            }\n            ++oc;\n            mask >>= 1;\n        }\n        const id = new Uint8Array(oc);\n        await this.tokenizer.readBuffer(id);\n        return id;\n    }\n    async readElement() {\n        const id = await this.readVintData(this.ebmlMaxIDLength);\n        const lenField = await this.readVintData(this.ebmlMaxSizeLength);\n        lenField[0] ^= 0x80 >> (lenField.length - 1);\n        return {\n            id: readUIntBE(id, id.length),\n            len: readUIntBE(lenField, lenField.length)\n        };\n    }\n    async readFloat(e) {\n        switch (e.len) {\n            case 0:\n                return 0.0;\n            case 4:\n                return this.tokenizer.readNumber(Float32_BE);\n            case 8:\n                return this.tokenizer.readNumber(Float64_BE);\n            case 10:\n                return this.tokenizer.readNumber(Float64_BE);\n            default:\n                throw new EbmlContentError(`Invalid IEEE-754 float length: ${e.len}`);\n        }\n    }\n    async readFlag(e) {\n        return (await this.readUint(e)) === 1;\n    }\n    async readUint(e) {\n        const buf = await this.readBuffer(e);\n        return readUIntBE(buf, e.len);\n    }\n    async readString(e) {\n        const rawString = await this.tokenizer.readToken(new StringType(e.len, 'utf-8'));\n        return rawString.replace(/\\x00.*$/g, '');\n    }\n    async readBuffer(e) {\n        const buf = new Uint8Array(e.len);\n        await this.tokenizer.readBuffer(buf);\n        return buf;\n    }\n}\nfunction readUIntBE(buf, len) {\n    return Number(readUIntBeAsBigInt(buf, len));\n}\n/**\n * Reeds an unsigned integer from a big endian buffer of length `len`\n * @param buf Buffer to decode from\n * @param len Number of bytes\n * @private\n */\nfunction readUIntBeAsBigInt(buf, len) {\n    const normalizedNumber = new Uint8Array(8);\n    const cleanNumber = buf.subarray(0, len);\n    try {\n        normalizedNumber.set(cleanNumber, 8 - len);\n        return Token.UINT64_BE.get(normalizedNumber, 0);\n    }\n    catch (_error) {\n        return BigInt(-1);\n    }\n}\nfunction linkParents(element) {\n    if (element.container) {\n        Object.keys(element.container)\n            .map(id => {\n            const child = element.container[id];\n            child.id = Number.parseInt(id);\n            return child;\n        }).forEach(child => {\n            child.parent = element;\n            linkParents(child);\n        });\n    }\n    return element;\n}\nexport function getElementPath(element) {\n    let path = '';\n    if (element.parent && element.parent.name !== 'dtd') {\n        path += `${getElementPath(element.parent)}/`;\n    }\n    return path + element.name;\n}\n//# sourceMappingURL=EbmlIterator.js.map","import initDebug from 'debug';\nimport { BasicParser } from '../common/BasicParser.js';\nimport { matroskaDtd } from './MatroskaDtd.js';\nimport { TargetType, TrackType } from './types.js';\nimport { EbmlIterator, ParseAction } from '../ebml/EbmlIterator.js';\nconst debug = initDebug('music-metadata:parser:matroska');\n/**\n * Extensible Binary Meta Language (EBML) parser\n * https://en.wikipedia.org/wiki/Extensible_Binary_Meta_Language\n * http://matroska.sourceforge.net/technical/specs/rfc/index.html\n *\n * WEBM VP8 AUDIO FILE\n */\nexport class MatroskaParser extends BasicParser {\n    constructor() {\n        super(...arguments);\n        this.seekHeadOffset = 0;\n        /**\n         * Use index to skip multiple segment/cluster elements at once.\n         * Significant performance impact\n         */\n        this.flagUseIndexToSkipClusters = this.options.mkvUseIndex ?? false;\n    }\n    async parse() {\n        const containerSize = this.tokenizer.fileInfo.size ?? Number.MAX_SAFE_INTEGER;\n        const matroskaIterator = new EbmlIterator(this.tokenizer);\n        debug('Initializing DTD end MatroskaIterator');\n        await matroskaIterator.iterate(matroskaDtd, containerSize, {\n            startNext: (element) => {\n                switch (element.id) {\n                    // case 0x1f43b675: // cluster\n                    case 0x1c53bb6b: // Cueing Data\n                        debug(`Skip element: name=${element.name}, id=0x${element.id.toString(16)}`);\n                        return ParseAction.IgnoreElement;\n                    case 0x1f43b675: // cluster\n                        if (this.flagUseIndexToSkipClusters && this.seekHead) {\n                            const index = this.seekHead.seek.find(index => index.position + this.seekHeadOffset > this.tokenizer.position);\n                            if (index) {\n                                // Go to next index position\n                                const ignoreSize = index.position + this.seekHeadOffset - this.tokenizer.position;\n                                debug(`Use index to go to next position, ignoring ${ignoreSize} bytes`);\n                                this.tokenizer.ignore(ignoreSize);\n                                return ParseAction.SkipElement;\n                            }\n                        }\n                        return ParseAction.IgnoreElement;\n                    default:\n                        return ParseAction.ReadNext;\n                }\n            },\n            elementValue: async (element, value, offset) => {\n                debug(`Received: name=${element.name}, value=${value}`);\n                switch (element.id) {\n                    case 0x4282: // docType\n                        this.metadata.setFormat('container', `EBML/${value}`);\n                        break;\n                    case 0x114d9b74:\n                        this.seekHead = value;\n                        this.seekHeadOffset = offset;\n                        break;\n                    case 0x1549a966:\n                        { // Info (Segment Information)\n                            const info = value;\n                            const timecodeScale = info.timecodeScale ? info.timecodeScale : 1000000;\n                            if (typeof info.duration === 'number') {\n                                const duration = info.duration * timecodeScale / 1000000000;\n                                await this.addTag('segment:title', info.title);\n                                this.metadata.setFormat('duration', Number(duration));\n                            }\n                        }\n                        break;\n                    case 0x1654ae6b:\n                        { // tracks\n                            const audioTracks = value;\n                            if (audioTracks?.entries) {\n                                audioTracks.entries.forEach(entry => {\n                                    const stream = {\n                                        codecName: entry.codecID.replace('A_', '').replace('V_', ''),\n                                        codecSettings: entry.codecSettings,\n                                        flagDefault: entry.flagDefault,\n                                        flagLacing: entry.flagLacing,\n                                        flagEnabled: entry.flagEnabled,\n                                        language: entry.language,\n                                        name: entry.name,\n                                        type: entry.trackType,\n                                        audio: entry.audio,\n                                        video: entry.video\n                                    };\n                                    this.metadata.addStreamInfo(stream);\n                                });\n                                const audioTrack = audioTracks.entries\n                                    .filter(entry => entry.trackType === TrackType.audio)\n                                    .reduce((acc, cur) => {\n                                    if (!acc)\n                                        return cur;\n                                    if (cur.flagDefault && !acc.flagDefault)\n                                        return cur;\n                                    if (cur.trackNumber < acc.trackNumber)\n                                        return cur;\n                                    return acc;\n                                }, null);\n                                if (audioTrack) {\n                                    this.metadata.setFormat('codec', audioTrack.codecID.replace('A_', ''));\n                                    this.metadata.setFormat('sampleRate', audioTrack.audio.samplingFrequency);\n                                    this.metadata.setFormat('numberOfChannels', audioTrack.audio.channels);\n                                }\n                            }\n                        }\n                        break;\n                    case 0x1254c367:\n                        { // tags\n                            const tags = value;\n                            await Promise.all(tags.tag.map(async (tag) => {\n                                const target = tag.target;\n                                const targetType = target?.targetTypeValue ? TargetType[target.targetTypeValue] : (target?.targetType ? target.targetType : 'track');\n                                await Promise.all(tag.simpleTags.map(async (simpleTag) => {\n                                    const value = simpleTag.string ? simpleTag.string : simpleTag.binary;\n                                    await this.addTag(`${targetType}:${simpleTag.name}`, value);\n                                }));\n                            }));\n                        }\n                        break;\n                    case 0x1941a469:\n                        { // attachments\n                            const attachments = value;\n                            await Promise.all(attachments.attachedFiles\n                                .filter(file => file.mimeType.startsWith('image/'))\n                                .map(file => this.addTag('picture', {\n                                data: file.data,\n                                format: file.mimeType,\n                                description: file.description,\n                                name: file.name\n                            })));\n                        }\n                        break;\n                }\n            }\n        });\n    }\n    async addTag(tagId, value) {\n        await this.metadata.addTag('matroska', tagId, value);\n    }\n}\n//# sourceMappingURL=MatroskaParser.js.map","import * as Token from 'token-types';\nimport initDebug from 'debug';\nimport { FourCcToken } from '../common/FourCC.js';\nimport { makeUnexpectedFileContentError } from '../ParseError.js';\nimport * as util from '../common/Util.js';\nconst debug = initDebug('music-metadata:parser:MP4:atom');\nexport class Mp4ContentError extends makeUnexpectedFileContentError('MP4') {\n}\nexport const Header = {\n    len: 8,\n    get: (buf, off) => {\n        const length = Token.UINT32_BE.get(buf, off);\n        if (length < 0)\n            throw new Mp4ContentError('Invalid atom header length');\n        return {\n            length: BigInt(length),\n            name: new Token.StringType(4, 'latin1').get(buf, off + 4)\n        };\n    },\n    put: (buf, off, hdr) => {\n        Token.UINT32_BE.put(buf, off, Number(hdr.length));\n        return FourCcToken.put(buf, off + 4, hdr.name);\n    }\n};\n/**\n * Ref: https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFChap1/qtff1.html#//apple_ref/doc/uid/TP40000939-CH203-38190\n */\nexport const ExtendedSize = Token.UINT64_BE;\nexport const ftyp = {\n    len: 4,\n    get: (buf, off) => {\n        return {\n            type: new Token.StringType(4, 'ascii').get(buf, off)\n        };\n    }\n};\n/**\n * Token: Movie Header Atom\n */\nexport const mhdr = {\n    len: 8,\n    get: (buf, off) => {\n        return {\n            version: Token.UINT8.get(buf, off),\n            flags: Token.UINT24_BE.get(buf, off + 1),\n            nextItemID: Token.UINT32_BE.get(buf, off + 4)\n        };\n    }\n};\n/**\n * Base class for 'fixed' length atoms.\n * In some cases these atoms are longer then the sum of the described fields.\n * Issue: https://github.com/Borewit/music-metadata/issues/120\n */\nexport class FixedLengthAtom {\n    /**\n     *\n     * @param {number} len Length as specified in the size field\n     * @param {number} expLen Total length of sum of specified fields in the standard\n     * @param atomId Atom ID\n     */\n    constructor(len, expLen, atomId) {\n        if (len < expLen) {\n            throw new Mp4ContentError(`Atom ${atomId} expected to be ${expLen}, but specifies ${len} bytes long.`);\n        }\n        if (len > expLen) {\n            debug(`Warning: atom ${atomId} expected to be ${expLen}, but was actually ${len} bytes long.`);\n        }\n        this.len = len;\n    }\n}\n/**\n * Timestamp stored in seconds since Mac Epoch (1 January 1904)\n */\nconst SecondsSinceMacEpoch = {\n    len: 4,\n    get: (buf, off) => {\n        const secondsSinceUnixEpoch = Token.UINT32_BE.get(buf, off) - 2082844800;\n        return new Date(secondsSinceUnixEpoch * 1000);\n    }\n};\n/**\n * Token: Media Header Atom\n * Ref:\n * - https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFChap2/qtff2.html#//apple_ref/doc/uid/TP40000939-CH204-SW34\n * - https://wiki.multimedia.cx/index.php/QuickTime_container#mdhd\n */\nexport class MdhdAtom extends FixedLengthAtom {\n    constructor(len) {\n        super(len, 24, 'mdhd');\n    }\n    get(buf, off) {\n        return {\n            version: Token.UINT8.get(buf, off + 0),\n            flags: Token.UINT24_BE.get(buf, off + 1),\n            creationTime: SecondsSinceMacEpoch.get(buf, off + 4),\n            modificationTime: SecondsSinceMacEpoch.get(buf, off + 8),\n            timeScale: Token.UINT32_BE.get(buf, off + 12),\n            duration: Token.UINT32_BE.get(buf, off + 16),\n            language: Token.UINT16_BE.get(buf, off + 20),\n            quality: Token.UINT16_BE.get(buf, off + 22)\n        };\n    }\n}\n/**\n * Token: Movie Header Atom\n */\nexport class MvhdAtom extends FixedLengthAtom {\n    constructor(len) {\n        super(len, 100, 'mvhd');\n    }\n    get(buf, off) {\n        return {\n            version: Token.UINT8.get(buf, off),\n            flags: Token.UINT24_BE.get(buf, off + 1),\n            creationTime: SecondsSinceMacEpoch.get(buf, off + 4),\n            modificationTime: SecondsSinceMacEpoch.get(buf, off + 8),\n            timeScale: Token.UINT32_BE.get(buf, off + 12),\n            duration: Token.UINT32_BE.get(buf, off + 16),\n            preferredRate: Token.UINT32_BE.get(buf, off + 20),\n            preferredVolume: Token.UINT16_BE.get(buf, off + 24),\n            // ignore reserver: 10 bytes\n            // ignore matrix structure: 36 bytes\n            previewTime: Token.UINT32_BE.get(buf, off + 72),\n            previewDuration: Token.UINT32_BE.get(buf, off + 76),\n            posterTime: Token.UINT32_BE.get(buf, off + 80),\n            selectionTime: Token.UINT32_BE.get(buf, off + 84),\n            selectionDuration: Token.UINT32_BE.get(buf, off + 88),\n            currentTime: Token.UINT32_BE.get(buf, off + 92),\n            nextTrackID: Token.UINT32_BE.get(buf, off + 96)\n        };\n    }\n}\n/**\n * Data Atom Structure\n */\nexport class DataAtom {\n    constructor(len) {\n        this.len = len;\n    }\n    get(buf, off) {\n        return {\n            type: {\n                set: Token.UINT8.get(buf, off + 0),\n                type: Token.UINT24_BE.get(buf, off + 1)\n            },\n            locale: Token.UINT24_BE.get(buf, off + 4),\n            value: new Token.Uint8ArrayType(this.len - 8).get(buf, off + 8)\n        };\n    }\n}\n/**\n * Data Atom Structure\n * Ref: https://developer.apple.com/library/content/documentation/QuickTime/QTFF/Metadata/Metadata.html#//apple_ref/doc/uid/TP40000939-CH1-SW31\n */\nexport class NameAtom {\n    constructor(len) {\n        this.len = len;\n    }\n    get(buf, off) {\n        return {\n            version: Token.UINT8.get(buf, off),\n            flags: Token.UINT24_BE.get(buf, off + 1),\n            name: new Token.StringType(this.len - 4, 'utf-8').get(buf, off + 4)\n        };\n    }\n}\n/**\n * Track Header Atoms structure (`tkhd`)\n * Ref: https://developer.apple.com/library/content/documentation/QuickTime/QTFF/QTFFChap2/qtff2.html#//apple_ref/doc/uid/TP40000939-CH204-25550\n */\nexport class TrackHeaderAtom {\n    constructor(len) {\n        this.len = len;\n    }\n    get(buf, off) {\n        return {\n            version: Token.UINT8.get(buf, off),\n            flags: Token.UINT24_BE.get(buf, off + 1),\n            creationTime: SecondsSinceMacEpoch.get(buf, off + 4),\n            modificationTime: SecondsSinceMacEpoch.get(buf, off + 8),\n            trackId: Token.UINT32_BE.get(buf, off + 12),\n            // reserved 4 bytes\n            duration: Token.UINT32_BE.get(buf, off + 20),\n            layer: Token.UINT16_BE.get(buf, off + 24),\n            alternateGroup: Token.UINT16_BE.get(buf, off + 26),\n            volume: Token.UINT16_BE.get(buf, off + 28) // ToDo: fixed point\n            // ToDo: add remaining fields\n        };\n    }\n}\n/**\n * Atom: Sample Description Atom ('stsd')\n * Ref: https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFChap2/qtff2.html#//apple_ref/doc/uid/TP40000939-CH204-25691\n */\nconst stsdHeader = {\n    len: 8,\n    get: (buf, off) => {\n        return {\n            version: Token.UINT8.get(buf, off),\n            flags: Token.UINT24_BE.get(buf, off + 1),\n            numberOfEntries: Token.UINT32_BE.get(buf, off + 4)\n        };\n    }\n};\n/**\n * Atom: Sample Description Atom ('stsd')\n * Ref: https://developer.apple.com/documentation/quicktime-file-format/sample_description_atom\n */\nclass SampleDescriptionTable {\n    constructor(len) {\n        this.len = len;\n    }\n    get(buf, off) {\n        const descrLen = this.len - 12;\n        return {\n            dataFormat: FourCcToken.get(buf, off),\n            dataReferenceIndex: Token.UINT16_BE.get(buf, off + 10),\n            description: descrLen > 0 ? new Token.Uint8ArrayType(descrLen).get(buf, off + 12) : undefined\n        };\n    }\n}\n/**\n * Atom: Sample-description Atom ('stsd')\n * Ref: https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFChap2/qtff2.html#//apple_ref/doc/uid/TP40000939-CH204-25691\n */\nexport class StsdAtom {\n    constructor(len) {\n        this.len = len;\n    }\n    get(buf, off) {\n        const header = stsdHeader.get(buf, off);\n        off += stsdHeader.len;\n        const table = [];\n        for (let n = 0; n < header.numberOfEntries; ++n) {\n            const size = Token.UINT32_BE.get(buf, off); // Sample description size\n            off += Token.UINT32_BE.len;\n            table.push(new SampleDescriptionTable(size - Token.UINT32_BE.len).get(buf, off));\n            off += size;\n        }\n        return {\n            header,\n            table\n        };\n    }\n}\n/**\n * Common Sound Sample Description (version & revision)\n * Ref: https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFChap3/qtff3.html#//apple_ref/doc/uid/TP40000939-CH205-57317\n */\nexport const SoundSampleDescriptionVersion = {\n    len: 8,\n    get(buf, off) {\n        return {\n            version: Token.INT16_BE.get(buf, off),\n            revision: Token.INT16_BE.get(buf, off + 2),\n            vendor: Token.INT32_BE.get(buf, off + 4)\n        };\n    }\n};\n/**\n * Sound Sample Description (Version 0)\n * Ref: https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFChap3/qtff3.html#//apple_ref/doc/uid/TP40000939-CH205-130736\n */\nexport const SoundSampleDescriptionV0 = {\n    len: 12,\n    get(buf, off) {\n        return {\n            numAudioChannels: Token.INT16_BE.get(buf, off + 0),\n            sampleSize: Token.INT16_BE.get(buf, off + 2),\n            compressionId: Token.INT16_BE.get(buf, off + 4),\n            packetSize: Token.INT16_BE.get(buf, off + 6),\n            sampleRate: Token.UINT16_BE.get(buf, off + 8) + Token.UINT16_BE.get(buf, off + 10) / 10000\n        };\n    }\n};\nclass SimpleTableAtom {\n    constructor(len, token) {\n        this.len = len;\n        this.token = token;\n    }\n    get(buf, off) {\n        const nrOfEntries = Token.INT32_BE.get(buf, off + 4);\n        return {\n            version: Token.INT8.get(buf, off + 0),\n            flags: Token.INT24_BE.get(buf, off + 1),\n            numberOfEntries: nrOfEntries,\n            entries: readTokenTable(buf, this.token, off + 8, this.len - 8, nrOfEntries)\n        };\n    }\n}\nexport const TimeToSampleToken = {\n    len: 8,\n    get(buf, off) {\n        return {\n            count: Token.INT32_BE.get(buf, off + 0),\n            duration: Token.INT32_BE.get(buf, off + 4)\n        };\n    }\n};\n/**\n * Time-to-sample('stts') atom.\n * Store duration information for a media’s samples.\n * Ref: https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFChap2/qtff2.html#//apple_ref/doc/uid/TP40000939-CH204-25696\n */\nexport class SttsAtom extends SimpleTableAtom {\n    constructor(len) {\n        super(len, TimeToSampleToken);\n    }\n}\nexport const SampleToChunkToken = {\n    len: 12,\n    get(buf, off) {\n        return {\n            firstChunk: Token.INT32_BE.get(buf, off),\n            samplesPerChunk: Token.INT32_BE.get(buf, off + 4),\n            sampleDescriptionId: Token.INT32_BE.get(buf, off + 8)\n        };\n    }\n};\n/**\n * Sample-to-Chunk ('stsc') atom interface\n * Ref: https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFChap2/qtff2.html#//apple_ref/doc/uid/TP40000939-CH204-25706\n */\nexport class StscAtom extends SimpleTableAtom {\n    constructor(len) {\n        super(len, SampleToChunkToken);\n    }\n}\n/**\n * Sample-size ('stsz') atom\n * Ref: https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFChap2/qtff2.html#//apple_ref/doc/uid/TP40000939-CH204-25710\n */\nexport class StszAtom {\n    constructor(len) {\n        this.len = len;\n    }\n    get(buf, off) {\n        const nrOfEntries = Token.INT32_BE.get(buf, off + 8);\n        return {\n            version: Token.INT8.get(buf, off),\n            flags: Token.INT24_BE.get(buf, off + 1),\n            sampleSize: Token.INT32_BE.get(buf, off + 4),\n            numberOfEntries: nrOfEntries,\n            entries: readTokenTable(buf, Token.INT32_BE, off + 12, this.len - 12, nrOfEntries)\n        };\n    }\n}\n/**\n * Chunk offset atom, 'stco'\n * Ref: https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFChap2/qtff2.html#//apple_ref/doc/uid/TP40000939-CH204-25715\n */\nexport class StcoAtom extends SimpleTableAtom {\n    constructor(len) {\n        super(len, Token.INT32_BE);\n        this.len = len;\n    }\n}\n/**\n * Token used to decode text-track from 'mdat' atom (raw data stream)\n */\nexport class ChapterText {\n    constructor(len) {\n        this.len = len;\n    }\n    get(buf, off) {\n        const titleLen = Token.INT16_BE.get(buf, off + 0);\n        const str = new Token.StringType(titleLen, 'utf-8');\n        return str.get(buf, off + 2);\n    }\n}\nfunction readTokenTable(buf, token, off, remainingLen, numberOfEntries) {\n    debug(`remainingLen=${remainingLen}, numberOfEntries=${numberOfEntries} * token-len=${token.len}`);\n    if (remainingLen === 0)\n        return [];\n    if (remainingLen !== numberOfEntries * token.len)\n        throw new Mp4ContentError('mismatch number-of-entries with remaining atom-length');\n    const entries = [];\n    // parse offset-table\n    for (let n = 0; n < numberOfEntries; ++n) {\n        entries.push(token.get(buf, off));\n        off += token.len;\n    }\n    return entries;\n}\n/**\n * Sample-size ('tfhd') TrackFragmentHeaderBox\n */\nexport class TrackFragmentHeaderBox {\n    constructor(len) {\n        this.len = len;\n    }\n    get(buf, off) {\n        const flagOffset = off + 1;\n        const header = {\n            version: Token.INT8.get(buf, off),\n            flags: {\n                baseDataOffsetPresent: util.getBit(buf, flagOffset + 2, 0),\n                sampleDescriptionIndexPresent: util.getBit(buf, flagOffset + 2, 1),\n                defaultSampleDurationPresent: util.getBit(buf, flagOffset + 2, 3),\n                defaultSampleSizePresent: util.getBit(buf, flagOffset + 2, 4),\n                defaultSampleFlagsPresent: util.getBit(buf, flagOffset + 2, 5),\n                defaultDurationIsEmpty: util.getBit(buf, flagOffset, 0),\n                defaultBaseIsMoof: util.getBit(buf, flagOffset, 1)\n            },\n            trackId: Token.UINT32_BE.get(buf, 4)\n        };\n        let dynOffset = 8;\n        if (header.flags.baseDataOffsetPresent) {\n            header.baseDataOffset = Token.UINT64_BE.get(buf, dynOffset);\n            dynOffset += 8;\n        }\n        if (header.flags.sampleDescriptionIndexPresent) {\n            header.sampleDescriptionIndex = Token.UINT32_BE.get(buf, dynOffset);\n            dynOffset += 4;\n        }\n        if (header.flags.defaultSampleDurationPresent) {\n            header.defaultSampleDuration = Token.UINT32_BE.get(buf, dynOffset);\n            dynOffset += 4;\n        }\n        if (header.flags.defaultSampleSizePresent) {\n            header.defaultSampleSize = Token.UINT32_BE.get(buf, dynOffset);\n            dynOffset += 4;\n        }\n        if (header.flags.defaultSampleFlagsPresent) {\n            header.defaultSampleFlags = Token.UINT32_BE.get(buf, dynOffset);\n        }\n        return header;\n    }\n}\n/**\n * Sample-size ('trun') TrackRunBox\n */\nexport class TrackRunBox {\n    constructor(len) {\n        this.len = len;\n    }\n    get(buf, off) {\n        const flagOffset = off + 1;\n        const trun = {\n            version: Token.INT8.get(buf, off),\n            flags: {\n                dataOffsetPresent: util.getBit(buf, flagOffset + 2, 0),\n                firstSampleFlagsPresent: util.getBit(buf, flagOffset + 2, 2),\n                sampleDurationPresent: util.getBit(buf, flagOffset + 1, 0),\n                sampleSizePresent: util.getBit(buf, flagOffset + 1, 1),\n                sampleFlagsPresent: util.getBit(buf, flagOffset + 1, 2),\n                sampleCompositionTimeOffsetsPresent: util.getBit(buf, flagOffset + 1, 3)\n            },\n            sampleCount: Token.UINT32_BE.get(buf, off + 4),\n            samples: []\n        };\n        let dynOffset = off + 8;\n        if (trun.flags.dataOffsetPresent) {\n            trun.dataOffset = Token.UINT32_BE.get(buf, dynOffset);\n            dynOffset += 4;\n        }\n        if (trun.flags.firstSampleFlagsPresent) {\n            trun.firstSampleFlags = Token.UINT32_BE.get(buf, dynOffset);\n            dynOffset += 4;\n        }\n        for (let n = 0; n < trun.sampleCount; ++n) {\n            if (dynOffset >= this.len) {\n                debug(\"TrackRunBox size mismatch\");\n                break;\n            }\n            const sample = {};\n            if (trun.flags.sampleDurationPresent) {\n                sample.sampleDuration = Token.UINT32_BE.get(buf, dynOffset);\n                dynOffset += 4;\n            }\n            if (trun.flags.sampleSizePresent) {\n                sample.sampleSize = Token.UINT32_BE.get(buf, dynOffset);\n                dynOffset += 4;\n            }\n            if (trun.flags.sampleFlagsPresent) {\n                sample.sampleFlags = Token.UINT32_BE.get(buf, dynOffset);\n                dynOffset += 4;\n            }\n            if (trun.flags.sampleCompositionTimeOffsetsPresent) {\n                sample.sampleCompositionTimeOffset = Token.UINT32_BE.get(buf, dynOffset);\n                dynOffset += 4;\n            }\n            trun.samples.push(sample);\n        }\n        return trun;\n    }\n}\n/**\n * HandlerBox (`hdlr`)\n */\nexport class HandlerBox {\n    constructor(len) {\n        this.len = len;\n    }\n    get(buf, off) {\n        const _flagOffset = off + 1;\n        const charTypeToken = new Token.StringType(4, 'utf-8');\n        return {\n            version: Token.INT8.get(buf, off),\n            flags: Token.UINT24_BE.get(buf, off + 1),\n            componentType: charTypeToken.get(buf, off + 4),\n            handlerType: charTypeToken.get(buf, off + 8),\n            componentName: new Token.StringType(this.len - 28, 'utf-8').get(buf, off + 28),\n        };\n    }\n}\n/**\n * Chapter Track Reference Box (`chap`)\n */\nexport class ChapterTrackReferenceBox {\n    constructor(len) {\n        this.len = len;\n    }\n    get(buf, off) {\n        let dynOffset = 0;\n        const trackIds = [];\n        while (dynOffset < this.len) {\n            trackIds.push(Token.UINT32_BE.get(buf, off + dynOffset));\n            dynOffset += 4;\n        }\n        return trackIds;\n    }\n}\n//# sourceMappingURL=AtomToken.js.map","import initDebug from 'debug';\nimport * as AtomToken from './AtomToken.js';\nimport { Header } from './AtomToken.js';\nconst debug = initDebug('music-metadata:parser:MP4:Atom');\nexport class Atom {\n    static async readAtom(tokenizer, dataHandler, parent, remaining) {\n        // Parse atom header\n        const offset = tokenizer.position;\n        debug(`Reading next token on offset=${offset}...`); //  buf.toString('ascii')\n        const header = await tokenizer.readToken(AtomToken.Header);\n        const extended = header.length === 1n;\n        if (extended) {\n            header.length = await tokenizer.readToken(AtomToken.ExtendedSize);\n        }\n        const atomBean = new Atom(header, extended, parent);\n        const payloadLength = atomBean.getPayloadLength(remaining);\n        debug(`parse atom name=${atomBean.atomPath}, extended=${atomBean.extended}, offset=${offset}, len=${atomBean.header.length}`); //  buf.toString('ascii')\n        await atomBean.readData(tokenizer, dataHandler, payloadLength);\n        return atomBean;\n    }\n    constructor(header, extended, parent) {\n        this.header = header;\n        this.extended = extended;\n        this.parent = parent;\n        this.children = [];\n        this.atomPath = (this.parent ? `${this.parent.atomPath}.` : '') + this.header.name;\n    }\n    getHeaderLength() {\n        return this.extended ? 16 : 8;\n    }\n    getPayloadLength(remaining) {\n        return (this.header.length === 0n ? remaining : Number(this.header.length)) - this.getHeaderLength();\n    }\n    async readAtoms(tokenizer, dataHandler, size) {\n        while (size > 0) {\n            const atomBean = await Atom.readAtom(tokenizer, dataHandler, this, size);\n            this.children.push(atomBean);\n            size -= atomBean.header.length === 0n ? size : Number(atomBean.header.length);\n        }\n    }\n    async readData(tokenizer, dataHandler, remaining) {\n        switch (this.header.name) {\n            // \"Container\" atoms, contains nested atoms\n            case 'moov': // The Movie Atom: contains other atoms\n            case 'udta': // User defined atom\n            case 'mdia': // Media atom\n            case 'minf': // Media Information Atom\n            case 'stbl': // The Sample Table Atom\n            case '<id>':\n            case 'ilst':\n            case 'tref':\n            case 'moof':\n                return this.readAtoms(tokenizer, dataHandler, this.getPayloadLength(remaining));\n            case 'meta': { // Metadata Atom, ref: https://developer.apple.com/library/content/documentation/QuickTime/QTFF/Metadata/Metadata.html#//apple_ref/doc/uid/TP40000939-CH1-SW8\n                // meta has 4 bytes of padding, ignore\n                const peekHeader = await tokenizer.peekToken(Header);\n                const paddingLength = peekHeader.name === 'hdlr' ? 0 : 4;\n                await tokenizer.ignore(paddingLength);\n                return this.readAtoms(tokenizer, dataHandler, this.getPayloadLength(remaining) - paddingLength);\n            }\n            default:\n                return dataHandler(this, remaining);\n        }\n    }\n}\n//# sourceMappingURL=Atom.js.map","import initDebug from 'debug';\nimport * as Token from 'token-types';\nimport { BasicParser } from '../common/BasicParser.js';\nimport { Genres } from '../id3v1/ID3v1Parser.js';\nimport { Atom } from './Atom.js';\nimport * as AtomToken from './AtomToken.js';\nimport { ChapterTrackReferenceBox, Mp4ContentError, } from './AtomToken.js';\nimport { TrackType } from '../type.js';\nimport { uint8ArrayToHex, uint8ArrayToString } from 'uint8array-extras';\nconst debug = initDebug('music-metadata:parser:MP4');\nconst tagFormat = 'iTunes';\nconst encoderDict = {\n    raw: {\n        lossy: false,\n        format: 'raw'\n    },\n    MAC3: {\n        lossy: true,\n        format: 'MACE 3:1'\n    },\n    MAC6: {\n        lossy: true,\n        format: 'MACE 6:1'\n    },\n    ima4: {\n        lossy: true,\n        format: 'IMA 4:1'\n    },\n    ulaw: {\n        lossy: true,\n        format: 'uLaw 2:1'\n    },\n    alaw: {\n        lossy: true,\n        format: 'uLaw 2:1'\n    },\n    Qclp: {\n        lossy: true,\n        format: 'QUALCOMM PureVoice'\n    },\n    '.mp3': {\n        lossy: true,\n        format: 'MPEG-1 layer 3'\n    },\n    alac: {\n        lossy: false,\n        format: 'ALAC'\n    },\n    'ac-3': {\n        lossy: true,\n        format: 'AC-3'\n    },\n    mp4a: {\n        lossy: true,\n        format: 'MPEG-4/AAC'\n    },\n    mp4s: {\n        lossy: true,\n        format: 'MP4S'\n    },\n    // Closed Captioning Media, https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFChap3/qtff3.html#//apple_ref/doc/uid/TP40000939-CH205-SW87\n    c608: {\n        lossy: true,\n        format: 'CEA-608'\n    },\n    c708: {\n        lossy: true,\n        format: 'CEA-708'\n    }\n};\nfunction distinct(value, index, self) {\n    return self.indexOf(value) === index;\n}\n/*\n * Parser for the MP4 (MPEG-4 Part 14) container format\n * Standard: ISO/IEC 14496-14\n * supporting:\n * - QuickTime container\n * - MP4 File Format\n * - 3GPP file format\n * - 3GPP2 file format\n *\n * MPEG-4 Audio / Part 3 (.m4a)& MPEG 4 Video (m4v, mp4) extension.\n * Support for Apple iTunes tags as found in a M4A/M4V files.\n * Ref:\n *   https://en.wikipedia.org/wiki/ISO_base_media_file_format\n *   https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/Metadata/Metadata.html\n *   http://atomicparsley.sourceforge.net/mpeg-4files.html\n *   https://github.com/sergiomb2/libmp4v2/wiki/iTunesMetadata\n *   https://wiki.multimedia.cx/index.php/QuickTime_container\n */\nexport class MP4Parser extends BasicParser {\n    constructor() {\n        super(...arguments);\n        this.tracks = new Map();\n        this.hasVideoTrack = false;\n        this.hasAudioTrack = true;\n        this.atomParsers = {\n            /**\n             * Parse movie header (mvhd) atom\n             * Ref: https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFChap2/qtff2.html#//apple_ref/doc/uid/TP40000939-CH204-56313\n             */\n            mvhd: async (len) => {\n                const mvhd = await this.tokenizer.readToken(new AtomToken.MvhdAtom(len));\n                this.metadata.setFormat('creationTime', mvhd.creationTime);\n                this.metadata.setFormat('modificationTime', mvhd.modificationTime);\n            },\n            chap: async (len) => {\n                const td = this.getTrackDescription();\n                const trackIds = [];\n                while (len >= Token.UINT32_BE.len) {\n                    trackIds.push(await this.tokenizer.readNumber(Token.UINT32_BE));\n                    len -= Token.UINT32_BE.len;\n                }\n                td.chapterList = trackIds;\n            },\n            /**\n             * Parse mdat atom.\n             * Will scan for chapters\n             */\n            mdat: async (len) => {\n                this.audioLengthInBytes = len;\n                this.calculateBitRate();\n                if (this.options.includeChapters) {\n                    const trackWithChapters = [...this.tracks.values()].filter(track => track.chapterList);\n                    if (trackWithChapters.length === 1) {\n                        const chapterTrackIds = trackWithChapters[0].chapterList;\n                        const chapterTracks = [...this.tracks.values()].filter(track => chapterTrackIds.indexOf(track.header.trackId) !== -1);\n                        if (chapterTracks.length === 1) {\n                            return this.parseChapterTrack(chapterTracks[0], trackWithChapters[0], len);\n                        }\n                    }\n                }\n                await this.tokenizer.ignore(len);\n            },\n            ftyp: async (len) => {\n                const types = [];\n                while (len > 0) {\n                    const ftype = await this.tokenizer.readToken(AtomToken.ftyp);\n                    len -= AtomToken.ftyp.len;\n                    const value = ftype.type.replace(/\\W/g, '');\n                    if (value.length > 0) {\n                        types.push(value); // unshift for backward compatibility\n                    }\n                }\n                debug(`ftyp: ${types.join('/')}`);\n                const x = types.filter(distinct).join('/');\n                this.metadata.setFormat('container', x);\n            },\n            /**\n             * Parse sample description atom\n             */\n            stsd: async (len) => {\n                const stsd = await this.tokenizer.readToken(new AtomToken.StsdAtom(len));\n                const trackDescription = this.getTrackDescription();\n                trackDescription.soundSampleDescription = stsd.table.map(dfEntry => this.parseSoundSampleDescription(dfEntry));\n            },\n            /**\n             * Parse sample-sizes atom ('stsz')\n             */\n            stsz: async (len) => {\n                const stsz = await this.tokenizer.readToken(new AtomToken.StszAtom(len));\n                const td = this.getTrackDescription();\n                td.sampleSize = stsz.sampleSize;\n                td.sampleSizeTable = stsz.entries;\n            },\n            date: async (len) => {\n                const date = await this.tokenizer.readToken(new Token.StringType(len, 'utf-8'));\n                await this.addTag('date', date);\n            }\n        };\n    }\n    static read_BE_Integer(array, signed) {\n        const integerType = (signed ? 'INT' : 'UINT') + array.length * 8 + (array.length > 1 ? '_BE' : '');\n        const token = Token[integerType];\n        if (!token) {\n            throw new Mp4ContentError(`Token for integer type not found: \"${integerType}\"`);\n        }\n        return Number(token.get(array, 0));\n    }\n    async parse() {\n        this.hasVideoTrack = false;\n        this.hasAudioTrack = true;\n        this.tracks.clear();\n        let remainingFileSize = this.tokenizer.fileInfo.size || 0;\n        while (!this.tokenizer.fileInfo.size || remainingFileSize > 0) {\n            try {\n                const token = await this.tokenizer.peekToken(AtomToken.Header);\n                if (token.name === '\\0\\0\\0\\0') {\n                    const errMsg = `Error at offset=${this.tokenizer.position}: box.id=0`;\n                    debug(errMsg);\n                    this.addWarning(errMsg);\n                    break;\n                }\n            }\n            catch (error) {\n                if (error instanceof Error) {\n                    const errMsg = `Error at offset=${this.tokenizer.position}: ${error.message}`;\n                    debug(errMsg);\n                    this.addWarning(errMsg);\n                }\n                else\n                    throw error;\n                break;\n            }\n            const rootAtom = await Atom.readAtom(this.tokenizer, (atom, remaining) => this.handleAtom(atom, remaining), null, remainingFileSize);\n            remainingFileSize -= rootAtom.header.length === BigInt(0) ? remainingFileSize : Number(rootAtom.header.length);\n        }\n        // Post process metadata\n        const formatList = [];\n        this.tracks.forEach(track => {\n            const trackFormats = [];\n            track.soundSampleDescription.forEach(ssd => {\n                const streamInfo = {};\n                const encoderInfo = encoderDict[ssd.dataFormat];\n                if (encoderInfo) {\n                    trackFormats.push(encoderInfo.format);\n                    streamInfo.codecName = encoderInfo.format;\n                }\n                else {\n                    streamInfo.codecName = `<${ssd.dataFormat}>`;\n                }\n                if (ssd.description) {\n                    const { description } = ssd;\n                    if (description.sampleRate > 0) {\n                        streamInfo.type = TrackType.audio;\n                        streamInfo.audio = {\n                            samplingFrequency: description.sampleRate,\n                            bitDepth: description.sampleSize,\n                            channels: description.numAudioChannels\n                        };\n                    }\n                }\n                this.metadata.addStreamInfo(streamInfo);\n            });\n            if (trackFormats.length >= 1) {\n                formatList.push(trackFormats.join('/'));\n            }\n        });\n        if (formatList.length > 0) {\n            this.metadata.setFormat('codec', formatList.filter(distinct).join('+'));\n        }\n        const audioTracks = [...this.tracks.values()].filter(track => {\n            return track.soundSampleDescription.length >= 1 && track.soundSampleDescription[0].description && track.soundSampleDescription[0].description.numAudioChannels > 0;\n        });\n        if (audioTracks.length >= 1) {\n            const audioTrack = audioTracks[0];\n            if (audioTrack.media.header && audioTrack.media.header.timeScale > 0) {\n                if (audioTrack.media.header.duration > 0) {\n                    debug('Using duration defined on audio track');\n                    const duration = audioTrack.media.header.duration / audioTrack.media.header.timeScale; // calculate duration in seconds\n                    this.metadata.setFormat('duration', duration);\n                }\n                else if (audioTrack.fragments.length > 0) {\n                    debug('Calculate duration defined in track fragments');\n                    let totalTimeUnits = 0;\n                    for (const fragment of audioTrack.fragments) {\n                        const defaultDuration = fragment.header.defaultSampleDuration;\n                        for (const sample of fragment.trackRun.samples) {\n                            const dur = sample.sampleDuration ?? defaultDuration;\n                            if (dur == null) {\n                                throw new Error(\"Missing sampleDuration and no default_sample_duration in tfhd\");\n                            }\n                            totalTimeUnits += dur;\n                        }\n                    }\n                    this.metadata.setFormat('duration', totalTimeUnits / audioTrack.media.header.timeScale);\n                }\n            }\n            const ssd = audioTrack.soundSampleDescription[0];\n            if (ssd.description && audioTrack.media.header) {\n                this.metadata.setFormat('sampleRate', ssd.description.sampleRate);\n                this.metadata.setFormat('bitsPerSample', ssd.description.sampleSize);\n                this.metadata.setFormat('numberOfChannels', ssd.description.numAudioChannels);\n                if (audioTrack.media.header.timeScale === 0 && audioTrack.timeToSampleTable.length > 0) {\n                    const totalSampleSize = audioTrack.timeToSampleTable\n                        .map(ttstEntry => ttstEntry.count * ttstEntry.duration)\n                        .reduce((total, sampleSize) => total + sampleSize);\n                    const duration = totalSampleSize / ssd.description.sampleRate;\n                    this.metadata.setFormat('duration', duration);\n                }\n            }\n            const encoderInfo = encoderDict[ssd.dataFormat];\n            if (encoderInfo) {\n                this.metadata.setFormat('lossless', !encoderInfo.lossy);\n            }\n            this.calculateBitRate();\n        }\n        this.metadata.setFormat('hasAudio', this.hasAudioTrack);\n        this.metadata.setFormat('hasVideo', this.hasVideoTrack);\n    }\n    async handleAtom(atom, remaining) {\n        if (atom.parent) {\n            switch (atom.parent.header.name) {\n                case 'ilst':\n                case '<id>':\n                    return this.parseMetadataItemData(atom);\n                case 'moov':\n                    switch (atom.header.name) {\n                        case 'trak':\n                            return this.parseTrackBox(atom);\n                    }\n                    break;\n                case 'moof':\n                    switch (atom.header.name) {\n                        case 'traf':\n                            return this.parseTrackFragmentBox(atom);\n                    }\n            }\n        }\n        // const payloadLength = atom.getPayloadLength(remaining);\n        if (this.atomParsers[atom.header.name]) {\n            return this.atomParsers[atom.header.name](remaining);\n        }\n        debug(`No parser for atom path=${atom.atomPath}, payload-len=${remaining}, ignoring atom`);\n        await this.tokenizer.ignore(remaining);\n    }\n    getTrackDescription() {\n        // ToDo: pick the right track, not the last track!!!!\n        const tracks = [...this.tracks.values()];\n        return tracks[tracks.length - 1];\n    }\n    calculateBitRate() {\n        if (this.audioLengthInBytes && this.metadata.format.duration) {\n            this.metadata.setFormat('bitrate', 8 * this.audioLengthInBytes / this.metadata.format.duration);\n        }\n    }\n    async addTag(id, value) {\n        await this.metadata.addTag(tagFormat, id, value);\n    }\n    addWarning(message) {\n        debug(`Warning: ${message}`);\n        this.metadata.addWarning(message);\n    }\n    /**\n     * Parse data of Meta-item-list-atom (item of 'ilst' atom)\n     * @param metaAtom\n     * Ref: https://developer.apple.com/library/content/documentation/QuickTime/QTFF/Metadata/Metadata.html#//apple_ref/doc/uid/TP40000939-CH1-SW8\n     */\n    parseMetadataItemData(metaAtom) {\n        let tagKey = metaAtom.header.name;\n        return metaAtom.readAtoms(this.tokenizer, async (child, remaining) => {\n            const payLoadLength = child.getPayloadLength(remaining);\n            switch (child.header.name) {\n                case 'data': // value atom\n                    return this.parseValueAtom(tagKey, child);\n                case 'name': // name atom (optional)\n                case 'mean':\n                case 'rate': {\n                    const name = await this.tokenizer.readToken(new AtomToken.NameAtom(payLoadLength));\n                    tagKey += `:${name.name}`;\n                    break;\n                }\n                default: {\n                    const uint8Array = await this.tokenizer.readToken(new Token.Uint8ArrayType(payLoadLength));\n                    this.addWarning(`Unsupported meta-item: ${tagKey}[${child.header.name}] => value=${uint8ArrayToHex(uint8Array)} ascii=${uint8ArrayToString(uint8Array, 'ascii')}`);\n                }\n            }\n        }, metaAtom.getPayloadLength(0));\n    }\n    async parseValueAtom(tagKey, metaAtom) {\n        const dataAtom = await this.tokenizer.readToken(new AtomToken.DataAtom(Number(metaAtom.header.length) - AtomToken.Header.len));\n        if (dataAtom.type.set !== 0) {\n            throw new Mp4ContentError(`Unsupported type-set != 0: ${dataAtom.type.set}`);\n        }\n        // Use well-known-type table\n        // Ref: https://developer.apple.com/library/content/documentation/QuickTime/QTFF/Metadata/Metadata.html#//apple_ref/doc/uid/TP40000939-CH1-SW35\n        switch (dataAtom.type.type) {\n            case 0: // reserved: Reserved for use where no type needs to be indicated\n                switch (tagKey) {\n                    case 'trkn':\n                    case 'disk': {\n                        const num = Token.UINT8.get(dataAtom.value, 3);\n                        const of = Token.UINT8.get(dataAtom.value, 5);\n                        // console.log(\"  %s[data] = %s/%s\", tagKey, num, of);\n                        await this.addTag(tagKey, `${num}/${of}`);\n                        break;\n                    }\n                    case 'gnre': {\n                        const genreInt = Token.UINT8.get(dataAtom.value, 1);\n                        const genreStr = Genres[genreInt - 1];\n                        // console.log(\"  %s[data] = %s\", tagKey, genreStr);\n                        await this.addTag(tagKey, genreStr);\n                        break;\n                    }\n                    case 'rate': {\n                        const rate = new TextDecoder('ascii').decode(dataAtom.value);\n                        await this.addTag(tagKey, rate);\n                        break;\n                    }\n                    default:\n                        debug(`unknown proprietary value type for: ${metaAtom.atomPath}`);\n                }\n                break;\n            case 1: // UTF-8: Without any count or NULL terminator\n            case 18: // Unknown: Found in m4b in combination with a '©gen' tag\n                await this.addTag(tagKey, new TextDecoder('utf-8').decode(dataAtom.value));\n                break;\n            case 13: // JPEG\n                if (this.options.skipCovers)\n                    break;\n                await this.addTag(tagKey, {\n                    format: 'image/jpeg',\n                    data: Uint8Array.from(dataAtom.value)\n                });\n                break;\n            case 14: // PNG\n                if (this.options.skipCovers)\n                    break;\n                await this.addTag(tagKey, {\n                    format: 'image/png',\n                    data: Uint8Array.from(dataAtom.value)\n                });\n                break;\n            case 21: // BE Signed Integer\n                await this.addTag(tagKey, MP4Parser.read_BE_Integer(dataAtom.value, true));\n                break;\n            case 22: // BE Unsigned Integer\n                await this.addTag(tagKey, MP4Parser.read_BE_Integer(dataAtom.value, false));\n                break;\n            case 65: // An 8-bit signed integer\n                await this.addTag(tagKey, Token.UINT8.get(dataAtom.value, 0));\n                break;\n            case 66: // A big-endian 16-bit signed integer\n                await this.addTag(tagKey, Token.UINT16_BE.get(dataAtom.value, 0));\n                break;\n            case 67: // A big-endian 32-bit signed integer\n                await this.addTag(tagKey, Token.UINT32_BE.get(dataAtom.value, 0));\n                break;\n            default:\n                this.addWarning(`atom key=${tagKey}, has unknown well-known-type (data-type): ${dataAtom.type.type}`);\n        }\n    }\n    async parseTrackBox(trakBox) {\n        // @ts-ignore\n        const track = {\n            media: {},\n            fragments: []\n        };\n        await trakBox.readAtoms(this.tokenizer, async (child, remaining) => {\n            const payLoadLength = child.getPayloadLength(remaining);\n            switch (child.header.name) {\n                case 'chap': {\n                    const chap = await this.tokenizer.readToken(new ChapterTrackReferenceBox(remaining));\n                    track.chapterList = chap;\n                    break;\n                }\n                case 'tkhd': // TrackHeaderBox\n                    track.header = await this.tokenizer.readToken(new AtomToken.TrackHeaderAtom(payLoadLength));\n                    break;\n                case 'hdlr': // TrackHeaderBox\n                    track.handler = await this.tokenizer.readToken(new AtomToken.HandlerBox(payLoadLength));\n                    switch (track.handler.handlerType) {\n                        case 'audi':\n                            debug('Contains audio track');\n                            this.hasAudioTrack = true;\n                            break;\n                        case 'vide':\n                            debug('Contains video track');\n                            this.hasVideoTrack = true;\n                            break;\n                    }\n                    break;\n                case 'mdhd': { // Parse media header (mdhd) box\n                    const mdhd_data = await this.tokenizer.readToken(new AtomToken.MdhdAtom(payLoadLength));\n                    track.media.header = mdhd_data;\n                    break;\n                }\n                case 'stco': {\n                    const stco = await this.tokenizer.readToken(new AtomToken.StcoAtom(payLoadLength));\n                    track.chunkOffsetTable = stco.entries; // remember chunk offsets\n                    break;\n                }\n                case 'stsc': { // sample-to-Chunk box\n                    const stsc = await this.tokenizer.readToken(new AtomToken.StscAtom(payLoadLength));\n                    track.sampleToChunkTable = stsc.entries;\n                    break;\n                }\n                case 'stsd': { // sample description box\n                    const stsd = await this.tokenizer.readToken(new AtomToken.StsdAtom(payLoadLength));\n                    track.soundSampleDescription = stsd.table.map(dfEntry => this.parseSoundSampleDescription(dfEntry));\n                    break;\n                }\n                case 'stts': { // time-to-sample table\n                    const stts = await this.tokenizer.readToken(new AtomToken.SttsAtom(payLoadLength));\n                    track.timeToSampleTable = stts.entries;\n                    break;\n                }\n                case 'stsz': {\n                    const stsz = await this.tokenizer.readToken(new AtomToken.StszAtom(payLoadLength));\n                    track.sampleSize = stsz.sampleSize;\n                    track.sampleSizeTable = stsz.entries;\n                    break;\n                }\n                case 'dinf':\n                case 'vmhd':\n                case 'smhd':\n                    debug(`Ignoring: ${child.header.name}`);\n                    await this.tokenizer.ignore(payLoadLength);\n                    break;\n                default: {\n                    debug(`Unexpected track box: ${child.header.name}`);\n                    await this.tokenizer.ignore(payLoadLength);\n                }\n            }\n        }, trakBox.getPayloadLength(0));\n        // Register track\n        this.tracks.set(track.header.trackId, track);\n    }\n    parseTrackFragmentBox(trafBox) {\n        let tfhd;\n        return trafBox.readAtoms(this.tokenizer, async (child, remaining) => {\n            const payLoadLength = child.getPayloadLength(remaining);\n            switch (child.header.name) {\n                case 'tfhd': { // TrackFragmentHeaderBox\n                    const fragmentHeaderBox = new AtomToken.TrackFragmentHeaderBox(child.getPayloadLength(remaining));\n                    tfhd = await this.tokenizer.readToken(fragmentHeaderBox);\n                    break;\n                }\n                case 'tfdt': // TrackFragmentBaseMediaDecodeTimeBo\n                    await this.tokenizer.ignore(payLoadLength);\n                    break;\n                case 'trun': { // TrackRunBox\n                    const trackRunBox = new AtomToken.TrackRunBox(payLoadLength);\n                    const trun = await this.tokenizer.readToken(trackRunBox);\n                    if (tfhd) {\n                        const track = this.tracks.get(tfhd.trackId);\n                        track?.fragments.push({ header: tfhd, trackRun: trun });\n                    }\n                    break;\n                }\n                default: {\n                    debug(`Unexpected box: ${child.header.name}`);\n                    await this.tokenizer.ignore(payLoadLength);\n                }\n            }\n        }, trafBox.getPayloadLength(0));\n    }\n    /**\n     * @param sampleDescription\n     * Ref: https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFChap3/qtff3.html#//apple_ref/doc/uid/TP40000939-CH205-128916\n     */\n    parseSoundSampleDescription(sampleDescription) {\n        const ssd = {\n            dataFormat: sampleDescription.dataFormat,\n            dataReferenceIndex: sampleDescription.dataReferenceIndex\n        };\n        let offset = 0;\n        if (sampleDescription.description) {\n            const version = AtomToken.SoundSampleDescriptionVersion.get(sampleDescription.description, offset);\n            offset += AtomToken.SoundSampleDescriptionVersion.len;\n            if (version.version === 0 || version.version === 1) {\n                // Sound Sample Description (Version 0)\n                ssd.description = AtomToken.SoundSampleDescriptionV0.get(sampleDescription.description, offset);\n            }\n            else {\n                debug(`Warning: sound-sample-description ${version} not implemented`);\n            }\n        }\n        return ssd;\n    }\n    async parseChapterTrack(chapterTrack, track, len) {\n        if (!chapterTrack.sampleSize) {\n            if (chapterTrack.chunkOffsetTable.length !== chapterTrack.sampleSizeTable.length)\n                throw new Error('Expected equal chunk-offset-table & sample-size-table length.');\n        }\n        const chapters = [];\n        for (let i = 0; i < chapterTrack.chunkOffsetTable.length && len > 0; ++i) {\n            const start = chapterTrack.timeToSampleTable\n                .slice(0, i)\n                .reduce((acc, cur) => acc + cur.duration, 0);\n            const chunkOffset = chapterTrack.chunkOffsetTable[i];\n            const nextChunkLen = chunkOffset - this.tokenizer.position;\n            const sampleSize = chapterTrack.sampleSize > 0 ? chapterTrack.sampleSize : chapterTrack.sampleSizeTable[i];\n            len -= nextChunkLen + sampleSize;\n            if (len < 0)\n                throw new Mp4ContentError('Chapter chunk exceeding token length');\n            await this.tokenizer.ignore(nextChunkLen);\n            const title = await this.tokenizer.readToken(new AtomToken.ChapterText(sampleSize));\n            debug(`Chapter ${i + 1}: ${title}`);\n            const chapter = {\n                title,\n                timeScale: chapterTrack.media.header ? chapterTrack.media.header.timeScale : 0,\n                start,\n                sampleOffset: this.findSampleOffset(track, this.tokenizer.position)\n            };\n            debug(`Chapter title=${chapter.title}, offset=${chapter.sampleOffset}/${track.header.duration}`); // ToDo, use media duration if required!!!\n            chapters.push(chapter);\n        }\n        this.metadata.setFormat('chapters', chapters);\n        await this.tokenizer.ignore(len);\n    }\n    findSampleOffset(track, chapterOffset) {\n        let chunkIndex = 0;\n        while (chunkIndex < track.chunkOffsetTable.length && track.chunkOffsetTable[chunkIndex] < chapterOffset) {\n            ++chunkIndex;\n        }\n        return this.getChunkDuration(chunkIndex + 1, track);\n    }\n    getChunkDuration(chunkId, track) {\n        let ttsi = 0;\n        let ttsc = track.timeToSampleTable[ttsi].count;\n        let ttsd = track.timeToSampleTable[ttsi].duration;\n        let curChunkId = 1;\n        let samplesPerChunk = this.getSamplesPerChunk(curChunkId, track.sampleToChunkTable);\n        let totalDuration = 0;\n        while (curChunkId < chunkId) {\n            const nrOfSamples = Math.min(ttsc, samplesPerChunk);\n            totalDuration += nrOfSamples * ttsd;\n            ttsc -= nrOfSamples;\n            samplesPerChunk -= nrOfSamples;\n            if (samplesPerChunk === 0) {\n                ++curChunkId;\n                samplesPerChunk = this.getSamplesPerChunk(curChunkId, track.sampleToChunkTable);\n            }\n            else {\n                ++ttsi;\n                ttsc = track.timeToSampleTable[ttsi].count;\n                ttsd = track.timeToSampleTable[ttsi].duration;\n            }\n        }\n        return totalDuration;\n    }\n    getSamplesPerChunk(chunkId, stcTable) {\n        for (let i = 0; i < stcTable.length - 1; ++i) {\n            if (chunkId >= stcTable[i].firstChunk && chunkId < stcTable[i + 1].firstChunk) {\n                return stcTable[i].samplesPerChunk;\n            }\n        }\n        return stcTable[stcTable.length - 1].samplesPerChunk;\n    }\n}\n//# sourceMappingURL=MP4Parser.js.map","import * as Token from 'token-types';\nimport initDebug from 'debug';\nimport * as util from '../../common/Util.js';\nconst debug = initDebug('music-metadata:parser:musepack:sv8');\nconst PacketKey = new Token.StringType(2, 'latin1');\n/**\n * Stream Header Packet part 1\n * Ref: http://trac.musepack.net/musepack/wiki/SV8Specification#StreamHeaderPacket\n */\nconst SH_part1 = {\n    len: 5,\n    get: (buf, off) => {\n        return {\n            crc: Token.UINT32_LE.get(buf, off),\n            streamVersion: Token.UINT8.get(buf, off + 4)\n        };\n    }\n};\n/**\n * Stream Header Packet part 3\n * Ref: http://trac.musepack.net/musepack/wiki/SV8Specification#StreamHeaderPacket\n */\nconst SH_part3 = {\n    len: 2,\n    get: (buf, off) => {\n        return {\n            sampleFrequency: [44100, 48000, 37800, 32000][util.getBitAllignedNumber(buf, off, 0, 3)],\n            maxUsedBands: util.getBitAllignedNumber(buf, off, 3, 5),\n            channelCount: util.getBitAllignedNumber(buf, off + 1, 0, 4) + 1,\n            msUsed: util.isBitSet(buf, off + 1, 4),\n            audioBlockFrames: util.getBitAllignedNumber(buf, off + 1, 5, 3)\n        };\n    }\n};\nexport class StreamReader {\n    get tokenizer() {\n        return this._tokenizer;\n    }\n    set tokenizer(value) {\n        this._tokenizer = value;\n    }\n    constructor(_tokenizer) {\n        this._tokenizer = _tokenizer;\n    }\n    async readPacketHeader() {\n        const key = await this.tokenizer.readToken(PacketKey);\n        const size = await this.readVariableSizeField();\n        return {\n            key,\n            payloadLength: size.value - 2 - size.len\n        };\n    }\n    async readStreamHeader(size) {\n        const streamHeader = {};\n        debug(`Reading SH at offset=${this.tokenizer.position}`);\n        const part1 = await this.tokenizer.readToken(SH_part1);\n        size -= SH_part1.len;\n        Object.assign(streamHeader, part1);\n        debug(`SH.streamVersion = ${part1.streamVersion}`);\n        const sampleCount = await this.readVariableSizeField();\n        size -= sampleCount.len;\n        streamHeader.sampleCount = sampleCount.value;\n        const bs = await this.readVariableSizeField();\n        size -= bs.len;\n        streamHeader.beginningOfSilence = bs.value;\n        const part3 = await this.tokenizer.readToken(SH_part3);\n        size -= SH_part3.len;\n        Object.assign(streamHeader, part3);\n        // assert.equal(size, 0);\n        await this.tokenizer.ignore(size);\n        return streamHeader;\n    }\n    async readVariableSizeField(len = 1, hb = 0) {\n        let n = await this.tokenizer.readNumber(Token.UINT8);\n        if ((n & 0x80) === 0) {\n            return { len, value: hb + n };\n        }\n        n &= 0x7F;\n        n += hb;\n        return this.readVariableSizeField(len + 1, n << 7);\n    }\n}\n//# sourceMappingURL=StreamVersion8.js.map","import { makeUnexpectedFileContentError } from '../ParseError.js';\nexport class MusepackContentError extends makeUnexpectedFileContentError('Musepack') {\n}\n//# sourceMappingURL=MusepackConentError.js.map","import initDebug from 'debug';\nimport { BasicParser } from '../../common/BasicParser.js';\nimport { tryParseApeHeader } from '../../apev2/APEv2Parser.js';\nimport { FourCcToken } from '../../common/FourCC.js';\nimport * as SV8 from './StreamVersion8.js';\nimport { MusepackContentError } from '../MusepackConentError.js';\nconst debug = initDebug('music-metadata:parser:musepack');\nexport class MpcSv8Parser extends BasicParser {\n    constructor() {\n        super(...arguments);\n        this.audioLength = 0;\n    }\n    async parse() {\n        const signature = await this.tokenizer.readToken(FourCcToken);\n        if (signature !== 'MPCK')\n            throw new MusepackContentError('Invalid Magic number');\n        this.metadata.setFormat('container', 'Musepack, SV8');\n        return this.parsePacket();\n    }\n    async parsePacket() {\n        const sv8reader = new SV8.StreamReader(this.tokenizer);\n        do {\n            const header = await sv8reader.readPacketHeader();\n            debug(`packet-header key=${header.key}, payloadLength=${header.payloadLength}`);\n            switch (header.key) {\n                case 'SH': { // Stream Header\n                    const sh = await sv8reader.readStreamHeader(header.payloadLength);\n                    this.metadata.setFormat('numberOfSamples', sh.sampleCount);\n                    this.metadata.setFormat('sampleRate', sh.sampleFrequency);\n                    this.metadata.setFormat('duration', sh.sampleCount / sh.sampleFrequency);\n                    this.metadata.setFormat('numberOfChannels', sh.channelCount);\n                    break;\n                }\n                case 'AP': // Audio Packet\n                    this.audioLength += header.payloadLength;\n                    await this.tokenizer.ignore(header.payloadLength);\n                    break;\n                case 'RG': // Replaygain\n                case 'EI': // Encoder Info\n                case 'SO': // Seek Table Offset\n                case 'ST': // Seek Table\n                case 'CT': // Chapter-Tag\n                    await this.tokenizer.ignore(header.payloadLength);\n                    break;\n                case 'SE': // Stream End\n                    if (this.metadata.format.duration) {\n                        this.metadata.setFormat('bitrate', this.audioLength * 8 / this.metadata.format.duration);\n                    }\n                    return tryParseApeHeader(this.metadata, this.tokenizer, this.options);\n                default:\n                    throw new MusepackContentError(`Unexpected header: ${header.key}`);\n            }\n            // biome-ignore lint/correctness/noConstantCondition: break is handled in the switch statement\n        } while (true);\n    }\n}\n//# sourceMappingURL=MpcSv8Parser.js.map","import * as Token from 'token-types';\nexport class BitReader {\n    constructor(tokenizer) {\n        this.pos = 0;\n        this.dword = null;\n        this.tokenizer = tokenizer;\n    }\n    /**\n     *\n     * @param bits 1..30 bits\n     */\n    async read(bits) {\n        while (this.dword === null) {\n            this.dword = await this.tokenizer.readToken(Token.UINT32_LE);\n        }\n        let out = this.dword;\n        this.pos += bits;\n        if (this.pos < 32) {\n            out >>>= (32 - this.pos);\n            return out & ((1 << bits) - 1);\n        }\n        this.pos -= 32;\n        if (this.pos === 0) {\n            this.dword = null;\n            return out & ((1 << bits) - 1);\n        }\n        this.dword = await this.tokenizer.readToken(Token.UINT32_LE);\n        if (this.pos) {\n            out <<= this.pos;\n            out |= this.dword >>> (32 - this.pos);\n        }\n        return out & ((1 << bits) - 1);\n    }\n    async ignore(bits) {\n        if (this.pos > 0) {\n            const remaining = 32 - this.pos;\n            this.dword = null;\n            bits -= remaining;\n            this.pos = 0;\n        }\n        const remainder = bits % 32;\n        const numOfWords = (bits - remainder) / 32;\n        await this.tokenizer.ignore(numOfWords * 4);\n        return this.read(remainder);\n    }\n}\n//# sourceMappingURL=BitReader.js.map","import * as Token from 'token-types';\nimport * as util from '../../common/Util.js';\n/**\n * BASIC STRUCTURE\n */\nexport const Header = {\n    len: 6 * 4,\n    get: (buf, off) => {\n        const header = {\n            // word 0\n            signature: new TextDecoder('latin1').decode(buf.subarray(off, off + 3)),\n            // versionIndex number * 1000 (3.81 = 3810) (remember that 4-byte alignment causes this to take 4-bytes)\n            streamMinorVersion: util.getBitAllignedNumber(buf, off + 3, 0, 4),\n            streamMajorVersion: util.getBitAllignedNumber(buf, off + 3, 4, 4),\n            // word 1\n            frameCount: Token.UINT32_LE.get(buf, off + 4),\n            // word 2\n            maxLevel: Token.UINT16_LE.get(buf, off + 8),\n            sampleFrequency: [44100, 48000, 37800, 32000][util.getBitAllignedNumber(buf, off + 10, 0, 2)],\n            link: util.getBitAllignedNumber(buf, off + 10, 2, 2),\n            profile: util.getBitAllignedNumber(buf, off + 10, 4, 4),\n            maxBand: util.getBitAllignedNumber(buf, off + 11, 0, 6),\n            intensityStereo: util.isBitSet(buf, off + 11, 6),\n            midSideStereo: util.isBitSet(buf, off + 11, 7),\n            // word 3\n            titlePeak: Token.UINT16_LE.get(buf, off + 12),\n            titleGain: Token.UINT16_LE.get(buf, off + 14),\n            // word 4\n            albumPeak: Token.UINT16_LE.get(buf, off + 16),\n            albumGain: Token.UINT16_LE.get(buf, off + 18),\n            // word\n            lastFrameLength: (Token.UINT32_LE.get(buf, off + 20) >>> 20) & 0x7FF,\n            trueGapless: util.isBitSet(buf, off + 23, 0)\n        };\n        header.lastFrameLength = header.trueGapless ? (Token.UINT32_LE.get(buf, 20) >>> 20) & 0x7FF : 0;\n        return header;\n    }\n};\n//# sourceMappingURL=StreamVersion7.js.map","import initDebug from 'debug';\nimport { BasicParser } from '../../common/BasicParser.js';\nimport { tryParseApeHeader } from '../../apev2/APEv2Parser.js';\nimport { BitReader } from './BitReader.js';\nimport * as SV7 from './StreamVersion7.js';\nimport { MusepackContentError } from '../MusepackConentError.js';\nconst debug = initDebug('music-metadata:parser:musepack');\nexport class MpcSv7Parser extends BasicParser {\n    constructor() {\n        super(...arguments);\n        this.bitreader = null;\n        this.audioLength = 0;\n        this.duration = null;\n    }\n    async parse() {\n        const header = await this.tokenizer.readToken(SV7.Header);\n        if (header.signature !== 'MP+')\n            throw new MusepackContentError('Unexpected magic number');\n        debug(`stream-version=${header.streamMajorVersion}.${header.streamMinorVersion}`);\n        this.metadata.setFormat('container', 'Musepack, SV7');\n        this.metadata.setFormat('sampleRate', header.sampleFrequency);\n        const numberOfSamples = 1152 * (header.frameCount - 1) + header.lastFrameLength;\n        this.metadata.setFormat('numberOfSamples', numberOfSamples);\n        this.duration = numberOfSamples / header.sampleFrequency;\n        this.metadata.setFormat('duration', this.duration);\n        this.bitreader = new BitReader(this.tokenizer);\n        this.metadata.setFormat('numberOfChannels', header.midSideStereo || header.intensityStereo ? 2 : 1);\n        const version = await this.bitreader.read(8);\n        this.metadata.setFormat('codec', (version / 100).toFixed(2));\n        await this.skipAudioData(header.frameCount);\n        debug(`End of audio stream, switching to APEv2, offset=${this.tokenizer.position}`);\n        return tryParseApeHeader(this.metadata, this.tokenizer, this.options);\n    }\n    async skipAudioData(frameCount) {\n        while (frameCount-- > 0) {\n            const frameLength = await this.bitreader.read(20);\n            this.audioLength += 20 + frameLength;\n            await this.bitreader.ignore(frameLength);\n        }\n        // last frame\n        const lastFrameLength = await this.bitreader.read(11);\n        this.audioLength += lastFrameLength;\n        if (this.duration !== null) {\n            this.metadata.setFormat('bitrate', this.audioLength / this.duration);\n        }\n    }\n}\n//# sourceMappingURL=MpcSv7Parser.js.map","import initDebug from 'debug';\nimport * as Token from 'token-types';\nimport { AbstractID3Parser } from '../id3v2/AbstractID3Parser.js';\nimport { MpcSv8Parser } from './sv8/MpcSv8Parser.js';\nimport { MpcSv7Parser } from './sv7/MpcSv7Parser.js';\nimport { MusepackContentError } from './MusepackConentError.js';\nconst debug = initDebug('music-metadata:parser:musepack');\nexport class MusepackParser extends AbstractID3Parser {\n    async postId3v2Parse() {\n        const signature = await this.tokenizer.peekToken(new Token.StringType(3, 'latin1'));\n        let mpcParser;\n        switch (signature) {\n            case 'MP+': {\n                debug('Stream-version 7');\n                mpcParser = new MpcSv7Parser(this.metadata, this.tokenizer, this.options);\n                break;\n            }\n            case 'MPC': {\n                debug('Stream-version 8');\n                mpcParser = new MpcSv8Parser(this.metadata, this.tokenizer, this.options);\n                break;\n            }\n            default: {\n                throw new MusepackContentError('Invalid signature prefix');\n            }\n        }\n        this.metadata.setAudioOnly();\n        return mpcParser.parse();\n    }\n}\n//# sourceMappingURL=MusepackParser.js.map","import * as Token from 'token-types';\nimport { makeUnexpectedFileContentError } from '../../ParseError.js';\nexport class OpusContentError extends makeUnexpectedFileContentError('Opus') {\n}\n/**\n * Opus ID Header parser\n * Ref: https://wiki.xiph.org/OggOpus#ID_Header\n */\nexport class IdHeader {\n    constructor(len) {\n        if (len < 19) {\n            throw new OpusContentError('ID-header-page 0 should be at least 19 bytes long');\n        }\n        this.len = len;\n    }\n    get(buf, off) {\n        return {\n            magicSignature: new Token.StringType(8, 'ascii').get(buf, off + 0),\n            version: Token.UINT8.get(buf, off + 8),\n            channelCount: Token.UINT8.get(buf, off + 9),\n            preSkip: Token.UINT16_LE.get(buf, off + 10),\n            inputSampleRate: Token.UINT32_LE.get(buf, off + 12),\n            outputGain: Token.UINT16_LE.get(buf, off + 16),\n            channelMapping: Token.UINT8.get(buf, off + 18)\n        };\n    }\n}\n//# sourceMappingURL=Opus.js.map","import * as Token from 'token-types';\nimport { VorbisStream } from '../vorbis/VorbisStream.js';\nimport * as Opus from './Opus.js';\nimport { OpusContentError } from './Opus.js';\n/**\n * Opus parser\n * Internet Engineering Task Force (IETF) - RFC 6716\n * Used by OggStream\n */\nexport class OpusStream extends VorbisStream {\n    constructor(metadata, options, tokenizer) {\n        super(metadata, options);\n        this.idHeader = null;\n        this.lastPos = -1;\n        this.tokenizer = tokenizer;\n    }\n    /**\n     * Parse first Opus Ogg page\n     * @param {IPageHeader} header\n     * @param {Uint8Array} pageData\n     */\n    parseFirstPage(_header, pageData) {\n        this.metadata.setFormat('codec', 'Opus');\n        // Parse Opus ID Header\n        this.idHeader = new Opus.IdHeader(pageData.length).get(pageData, 0);\n        if (this.idHeader.magicSignature !== \"OpusHead\")\n            throw new OpusContentError(\"Illegal ogg/Opus magic-signature\");\n        this.metadata.setFormat('sampleRate', this.idHeader.inputSampleRate);\n        this.metadata.setFormat('numberOfChannels', this.idHeader.channelCount);\n        this.metadata.setAudioOnly();\n    }\n    async parseFullPage(pageData) {\n        const magicSignature = new Token.StringType(8, 'ascii').get(pageData, 0);\n        switch (magicSignature) {\n            case 'OpusTags':\n                await this.parseUserCommentList(pageData, 8);\n                this.lastPos = this.tokenizer.position - pageData.length;\n                break;\n            default:\n                break;\n        }\n    }\n    calculateDuration() {\n        if (this.lastPageHeader && this.metadata.format.sampleRate && this.lastPageHeader.absoluteGranulePosition >= 0) {\n            // Calculate duration\n            const pos_48bit = this.lastPageHeader.absoluteGranulePosition - this.idHeader.preSkip;\n            this.metadata.setFormat('numberOfSamples', pos_48bit);\n            this.metadata.setFormat('duration', pos_48bit / 48000);\n            if (this.lastPos !== -1 && this.tokenizer.fileInfo.size && this.metadata.format.duration) {\n                const dataSize = this.tokenizer.fileInfo.size - this.lastPos;\n                this.metadata.setFormat('bitrate', 8 * dataSize / this.metadata.format.duration);\n            }\n        }\n    }\n}\n//# sourceMappingURL=OpusStream.js.map","import * as Token from 'token-types';\nimport * as util from '../../common/Util.js';\n/**\n * Speex Header Packet\n * Ref: https://www.speex.org/docs/manual/speex-manual/node8.html#SECTION00830000000000000000\n */\nexport const Header = {\n    len: 80,\n    get: (buf, off) => {\n        return {\n            speex: new Token.StringType(8, 'ascii').get(buf, off + 0),\n            version: util.trimRightNull(new Token.StringType(20, 'ascii').get(buf, off + 8)),\n            version_id: Token.INT32_LE.get(buf, off + 28),\n            header_size: Token.INT32_LE.get(buf, off + 32),\n            rate: Token.INT32_LE.get(buf, off + 36),\n            mode: Token.INT32_LE.get(buf, off + 40),\n            mode_bitstream_version: Token.INT32_LE.get(buf, off + 44),\n            nb_channels: Token.INT32_LE.get(buf, off + 48),\n            bitrate: Token.INT32_LE.get(buf, off + 52),\n            frame_size: Token.INT32_LE.get(buf, off + 56),\n            vbr: Token.INT32_LE.get(buf, off + 60),\n            frames_per_packet: Token.INT32_LE.get(buf, off + 64),\n            extra_headers: Token.INT32_LE.get(buf, off + 68),\n            reserved1: Token.INT32_LE.get(buf, off + 72),\n            reserved2: Token.INT32_LE.get(buf, off + 76)\n        };\n    }\n};\n//# sourceMappingURL=Speex.js.map","import initDebug from 'debug';\nimport { VorbisStream } from '../vorbis/VorbisStream.js';\nimport * as Speex from './Speex.js';\nconst debug = initDebug('music-metadata:parser:ogg:speex');\n/**\n * Speex, RFC 5574\n * Ref:\n * - https://www.speex.org/docs/manual/speex-manual/\n * - https://tools.ietf.org/html/rfc5574\n */\nexport class SpeexStream extends VorbisStream {\n    constructor(metadata, options, tokenizer) {\n        super(metadata, options);\n        this.tokenizer = tokenizer;\n    }\n    /**\n     * Parse first Speex Ogg page\n     * @param {IPageHeader} header\n     * @param {Uint8Array} pageData\n     */\n    parseFirstPage(_header, pageData) {\n        debug('First Ogg/Speex page');\n        const speexHeader = Speex.Header.get(pageData, 0);\n        this.metadata.setFormat('codec', `Speex ${speexHeader.version}`);\n        this.metadata.setFormat('numberOfChannels', speexHeader.nb_channels);\n        this.metadata.setFormat('sampleRate', speexHeader.rate);\n        if (speexHeader.bitrate !== -1) {\n            this.metadata.setFormat('bitrate', speexHeader.bitrate);\n        }\n        this.metadata.setAudioOnly();\n    }\n}\n//# sourceMappingURL=SpeexStream.js.map","import * as Token from 'token-types';\n/**\n * 6.2 Identification Header\n * Ref: https://theora.org/doc/Theora.pdf: 6.2 Identification Header Decode\n */\nexport const IdentificationHeader = {\n    len: 42,\n    get: (buf, off) => {\n        return {\n            id: new Token.StringType(7, 'ascii').get(buf, off),\n            vmaj: Token.UINT8.get(buf, off + 7),\n            vmin: Token.UINT8.get(buf, off + 8),\n            vrev: Token.UINT8.get(buf, off + 9),\n            vmbw: Token.UINT16_BE.get(buf, off + 10),\n            vmbh: Token.UINT16_BE.get(buf, off + 17),\n            nombr: Token.UINT24_BE.get(buf, off + 37),\n            nqual: Token.UINT8.get(buf, off + 40)\n        };\n    }\n};\n//# sourceMappingURL=Theora.js.map","import initDebug from 'debug';\nimport { IdentificationHeader } from './Theora.js';\nconst debug = initDebug('music-metadata:parser:ogg:theora');\n/**\n * Ref:\n * - https://theora.org/doc/Theora.pdf\n */\nexport class TheoraStream {\n    constructor(metadata, _options, tokenizer) {\n        this.metadata = metadata;\n        this.tokenizer = tokenizer;\n    }\n    /**\n     * Vorbis 1 parser\n     * @param header Ogg Page Header\n     * @param pageData Page data\n     */\n    async parsePage(header, pageData) {\n        if (header.headerType.firstPage) {\n            await this.parseFirstPage(header, pageData);\n        }\n    }\n    calculateDuration() {\n        debug('duration calculation not implemented');\n    }\n    /**\n     * Parse first Theora Ogg page. the initial identification header packet\n     */\n    async parseFirstPage(_header, pageData) {\n        debug('First Ogg/Theora page');\n        this.metadata.setFormat('codec', 'Theora');\n        const idHeader = IdentificationHeader.get(pageData, 0);\n        this.metadata.setFormat('bitrate', idHeader.nombr);\n        this.metadata.setFormat('hasVideo', true);\n    }\n    flush() {\n        return Promise.resolve();\n    }\n}\n//# sourceMappingURL=TheoraStream.js.map","import * as Token from 'token-types';\nimport * as util from '../common/Util.js';\nimport { StringType } from 'token-types';\nexport const PageHeader = {\n    len: 27,\n    get: (buf, off) => {\n        return {\n            capturePattern: new StringType(4, 'latin1').get(buf, off),\n            version: Token.UINT8.get(buf, off + 4),\n            headerType: {\n                continued: util.getBit(buf, off + 5, 0),\n                firstPage: util.getBit(buf, off + 5, 1),\n                lastPage: util.getBit(buf, off + 5, 2)\n            },\n            // packet_flag: Token.UINT8.get(buf, off + 5),\n            absoluteGranulePosition: Number(Token.UINT64_LE.get(buf, off + 6)),\n            streamSerialNumber: Token.UINT32_LE.get(buf, off + 14),\n            pageSequenceNo: Token.UINT32_LE.get(buf, off + 18),\n            pageChecksum: Token.UINT32_LE.get(buf, off + 22),\n            page_segments: Token.UINT8.get(buf, off + 26)\n        };\n    }\n};\nexport class SegmentTable {\n    static sum(buf, off, len) {\n        const dv = new DataView(buf.buffer, 0);\n        let s = 0;\n        for (let i = off; i < off + len; ++i) {\n            s += dv.getUint8(i);\n        }\n        return s;\n    }\n    constructor(header) {\n        this.len = header.page_segments;\n    }\n    get(buf, off) {\n        return {\n            totalPageSize: SegmentTable.sum(buf, off, this.len)\n        };\n    }\n}\n//# sourceMappingURL=OggToken.js.map","import * as Token from 'token-types';\nimport { EndOfStreamError } from 'strtok3';\nimport initDebug from 'debug';\nimport { BasicParser } from '../common/BasicParser.js';\nimport { VorbisStream } from './vorbis/VorbisStream.js';\nimport { OpusStream } from './opus/OpusStream.js';\nimport { SpeexStream } from './speex/SpeexStream.js';\nimport { TheoraStream } from './theora/TheoraStream.js';\nimport { makeUnexpectedFileContentError } from '../ParseError.js';\nimport { PageHeader, SegmentTable } from './OggToken.js';\nexport class OggContentError extends makeUnexpectedFileContentError('Ogg') {\n}\nconst debug = initDebug('music-metadata:parser:ogg');\nclass OggStream {\n    constructor(metadata, streamSerial, options) {\n        this.pageNumber = 0;\n        this.closed = false;\n        this.metadata = metadata;\n        this.streamSerial = streamSerial;\n        this.options = options;\n    }\n    async parsePage(tokenizer, header) {\n        this.pageNumber = header.pageSequenceNo;\n        debug('serial=%s page#=%s, Ogg.id=%s', header.streamSerialNumber, header.pageSequenceNo, header.capturePattern);\n        const segmentTable = await tokenizer.readToken(new SegmentTable(header));\n        debug('totalPageSize=%s', segmentTable.totalPageSize);\n        const pageData = await tokenizer.readToken(new Token.Uint8ArrayType(segmentTable.totalPageSize));\n        debug('firstPage=%s, lastPage=%s, continued=%s', header.headerType.firstPage, header.headerType.lastPage, header.headerType.continued);\n        if (header.headerType.firstPage) {\n            const idData = pageData.slice(0, 7); // Copy this portion\n            switch (idData[0]) {\n                case 0x01:\n                case 0x80:\n                    idData[0] = 0x5F; // underscore\n                    break;\n            }\n            const id = new TextDecoder('latin1').decode(idData);\n            switch (id) {\n                case '_vorbis': // Ogg/Vorbis\n                    debug(`Set Ogg stream serial ${header.streamSerialNumber}, codec=Vorbis`);\n                    this.pageConsumer = new VorbisStream(this.metadata, this.options);\n                    break;\n                case 'OpusHea': // Ogg/Opus\n                    debug('Set page consumer to Ogg/Opus');\n                    this.pageConsumer = new OpusStream(this.metadata, this.options, tokenizer);\n                    break;\n                case 'Speex  ': // Ogg/Speex\n                    debug('Set page consumer to Ogg/Speex');\n                    this.pageConsumer = new SpeexStream(this.metadata, this.options, tokenizer);\n                    break;\n                case 'fishead':\n                case '_theora': // Ogg/Theora\n                    debug('Set page consumer to Ogg/Theora');\n                    this.pageConsumer = new TheoraStream(this.metadata, this.options, tokenizer);\n                    break;\n                default:\n                    throw new OggContentError(`Ogg codec not recognized (id=${id})`);\n            }\n        }\n        if (header.headerType.lastPage) {\n            this.closed = true;\n        }\n        if (this.pageConsumer) {\n            await this.pageConsumer.parsePage(header, pageData);\n        }\n        else\n            throw new Error('pageConsumer should be initialized');\n    }\n}\n/**\n * Parser for Ogg logical bitstream framing\n */\nexport class OggParser extends BasicParser {\n    constructor() {\n        super(...arguments);\n        this.streams = new Map();\n    }\n    /**\n     * Parse page\n     * @returns {Promise<void>}\n     */\n    async parse() {\n        this.streams = new Map();\n        debug('pos=%s, parsePage()', this.tokenizer.position);\n        let header;\n        try {\n            do {\n                header = await this.tokenizer.readToken(PageHeader);\n                if (header.capturePattern !== 'OggS')\n                    throw new OggContentError('Invalid Ogg capture pattern');\n                this.metadata.setFormat('container', 'Ogg');\n                let stream = this.streams.get(header.streamSerialNumber);\n                if (!stream) {\n                    stream = new OggStream(this.metadata, header.streamSerialNumber, this.options);\n                    this.streams.set(header.streamSerialNumber, stream);\n                }\n                await stream.parsePage(this.tokenizer, header);\n            } while (![...this.streams.values()].every(item => item.closed));\n        }\n        catch (err) {\n            if (err instanceof EndOfStreamError) {\n                debug(\"Reached end-of-stream\");\n            }\n            else if (err instanceof OggContentError) {\n                this.metadata.addWarning(`Corrupt Ogg content at ${this.tokenizer.position}`);\n            }\n            else\n                throw err;\n        }\n        for (const stream of this.streams.values()) {\n            if (!stream.closed) {\n                this.metadata.addWarning(`End-of-stream reached before reaching last page in Ogg stream serial=${stream.streamSerial}`);\n                await stream.pageConsumer?.flush();\n            }\n            stream.pageConsumer?.calculateDuration();\n        }\n    }\n}\n//# sourceMappingURL=OggParser.js.map","import * as Token from 'token-types';\nimport { FourCcToken } from '../common/FourCC.js';\nconst SampleRates = [6000, 8000, 9600, 11025, 12000, 16000, 22050, 24000, 32000, 44100,\n    48000, 64000, 88200, 96000, 192000, -1];\n/**\n * WavPack Block Header\n *\n * 32-byte little-endian header at the front of every WavPack block\n *\n * Ref: http://www.wavpack.com/WavPack5FileFormat.pdf (page 2/6: 2.0 \"Block Header\")\n */\nexport const BlockHeaderToken = {\n    len: 32,\n    get: (buf, off) => {\n        const flags = Token.UINT32_LE.get(buf, off + 24);\n        const res = {\n            // should equal 'wvpk'\n            BlockID: FourCcToken.get(buf, off),\n            //  0x402 to 0x410 are valid for decode\n            blockSize: Token.UINT32_LE.get(buf, off + 4),\n            //  0x402 (1026) to 0x410 are valid for decode\n            version: Token.UINT16_LE.get(buf, off + 8),\n            //  40-bit total samples for entire file (if block_index == 0 and a value of -1 indicates an unknown length)\n            totalSamples: /* replace with bigint? (Token.UINT8.get(buf, off + 11) << 32) + */ Token.UINT32_LE.get(buf, off + 12),\n            // 40-bit block_index\n            blockIndex: /* replace with bigint? (Token.UINT8.get(buf, off + 10) << 32) + */ Token.UINT32_LE.get(buf, off + 16),\n            // 40-bit total samples for entire file (if block_index == 0 and a value of -1 indicates an unknown length)\n            blockSamples: Token.UINT32_LE.get(buf, off + 20),\n            // various flags for id and decoding\n            flags: {\n                bitsPerSample: (1 + getBitAllignedNumber(flags, 0, 2)) * 8,\n                isMono: isBitSet(flags, 2),\n                isHybrid: isBitSet(flags, 3),\n                isJointStereo: isBitSet(flags, 4),\n                crossChannel: isBitSet(flags, 5),\n                hybridNoiseShaping: isBitSet(flags, 6),\n                floatingPoint: isBitSet(flags, 7),\n                samplingRate: SampleRates[getBitAllignedNumber(flags, 23, 4)],\n                isDSD: isBitSet(flags, 31)\n            },\n            // crc for actual decoded data\n            crc: new Token.Uint8ArrayType(4).get(buf, off + 28)\n        };\n        if (res.flags.isDSD) {\n            res.totalSamples *= 8;\n        }\n        return res;\n    }\n};\n/**\n * 3.0 Metadata Sub-Blocks\n * Ref: http://www.wavpack.com/WavPack5FileFormat.pdf (page 4/6: 3.0 \"Metadata Sub-Block\")\n */\nexport const MetadataIdToken = {\n    len: 1,\n    get: (buf, off) => {\n        return {\n            functionId: getBitAllignedNumber(buf[off], 0, 6), // functionId overlaps with isOptional flag\n            isOptional: isBitSet(buf[off], 5),\n            isOddSize: isBitSet(buf[off], 6),\n            largeBlock: isBitSet(buf[off], 7)\n        };\n    }\n};\nfunction isBitSet(flags, bitOffset) {\n    return getBitAllignedNumber(flags, bitOffset, 1) === 1;\n}\nfunction getBitAllignedNumber(flags, bitOffset, len) {\n    return (flags >>> bitOffset) & (0xffffffff >>> (32 - len));\n}\n//# sourceMappingURL=WavPackToken.js.map","import * as Token from 'token-types';\nimport { tryParseApeHeader } from '../apev2/APEv2Parser.js';\nimport { FourCcToken } from '../common/FourCC.js';\nimport { BasicParser } from '../common/BasicParser.js';\nimport { BlockHeaderToken, MetadataIdToken } from './WavPackToken.js';\nimport initDebug from 'debug';\nimport { uint8ArrayToHex } from 'uint8array-extras';\nimport { makeUnexpectedFileContentError } from '../ParseError.js';\nconst debug = initDebug('music-metadata:parser:WavPack');\nexport class WavPackContentError extends makeUnexpectedFileContentError('WavPack') {\n}\n/**\n * WavPack Parser\n */\nexport class WavPackParser extends BasicParser {\n    constructor() {\n        super(...arguments);\n        this.audioDataSize = 0;\n    }\n    async parse() {\n        this.metadata.setAudioOnly();\n        this.audioDataSize = 0;\n        // First parse all WavPack blocks\n        await this.parseWavPackBlocks();\n        // try to parse APEv2 header\n        return tryParseApeHeader(this.metadata, this.tokenizer, this.options);\n    }\n    async parseWavPackBlocks() {\n        do {\n            const blockId = await this.tokenizer.peekToken(FourCcToken);\n            if (blockId !== 'wvpk')\n                break;\n            const header = await this.tokenizer.readToken(BlockHeaderToken);\n            if (header.BlockID !== 'wvpk')\n                throw new WavPackContentError('Invalid WavPack Block-ID');\n            debug(`WavPack header blockIndex=${header.blockIndex}, len=${BlockHeaderToken.len}`);\n            if (header.blockIndex === 0 && !this.metadata.format.container) {\n                this.metadata.setFormat('container', 'WavPack');\n                this.metadata.setFormat('lossless', !header.flags.isHybrid);\n                // tagTypes: this.type,\n                this.metadata.setFormat('bitsPerSample', header.flags.bitsPerSample);\n                if (!header.flags.isDSD) {\n                    // In case isDSD, these values will ne set in ID_DSD_BLOCK\n                    this.metadata.setFormat('sampleRate', header.flags.samplingRate);\n                    this.metadata.setFormat('duration', header.totalSamples / header.flags.samplingRate);\n                }\n                this.metadata.setFormat('numberOfChannels', header.flags.isMono ? 1 : 2);\n                this.metadata.setFormat('numberOfSamples', header.totalSamples);\n                this.metadata.setFormat('codec', header.flags.isDSD ? 'DSD' : 'PCM');\n            }\n            const ignoreBytes = header.blockSize - (BlockHeaderToken.len - 8);\n            await (header.blockIndex === 0 ? this.parseMetadataSubBlock(header, ignoreBytes) : this.tokenizer.ignore(ignoreBytes));\n            if (header.blockSamples > 0) {\n                this.audioDataSize += header.blockSize; // Count audio data for bit-rate calculation\n            }\n        } while (!this.tokenizer.fileInfo.size || this.tokenizer.fileInfo.size - this.tokenizer.position >= BlockHeaderToken.len);\n        if (this.metadata.format.duration) {\n            this.metadata.setFormat('bitrate', this.audioDataSize * 8 / this.metadata.format.duration);\n        }\n    }\n    /**\n     * Ref: http://www.wavpack.com/WavPack5FileFormat.pdf, 3.0 Metadata Sub-blocks\n     * @param header Header\n     * @param remainingLength Remaining length\n     */\n    async parseMetadataSubBlock(header, remainingLength) {\n        let remaining = remainingLength;\n        while (remaining > MetadataIdToken.len) {\n            const id = await this.tokenizer.readToken(MetadataIdToken);\n            const dataSizeInWords = await this.tokenizer.readNumber(id.largeBlock ? Token.UINT24_LE : Token.UINT8);\n            const data = new Uint8Array(dataSizeInWords * 2 - (id.isOddSize ? 1 : 0));\n            await this.tokenizer.readBuffer(data);\n            debug(`Metadata Sub-Blocks functionId=0x${id.functionId.toString(16)}, id.largeBlock=${id.largeBlock},data-size=${data.length}`);\n            switch (id.functionId) {\n                case 0x0: // ID_DUMMY: could be used to pad WavPack blocks\n                    break;\n                case 0xe: { // ID_DSD_BLOCK\n                    debug('ID_DSD_BLOCK');\n                    // https://github.com/dbry/WavPack/issues/71#issuecomment-483094813\n                    const mp = 1 << Token.UINT8.get(data, 0);\n                    const samplingRate = header.flags.samplingRate * mp * 8; // ToDo: second factor should be read from DSD-metadata block https://github.com/dbry/WavPack/issues/71#issuecomment-483094813\n                    if (!header.flags.isDSD)\n                        throw new WavPackContentError('Only expect DSD block if DSD-flag is set');\n                    this.metadata.setFormat('sampleRate', samplingRate);\n                    this.metadata.setFormat('duration', header.totalSamples / samplingRate);\n                    break;\n                }\n                case 0x24: // ID_ALT_TRAILER: maybe used to embed original ID3 tag header\n                    debug('ID_ALT_TRAILER: trailer for non-wav files');\n                    break;\n                case 0x26: // ID_MD5_CHECKSUM\n                    this.metadata.setFormat('audioMD5', data);\n                    break;\n                case 0x2f: // ID_BLOCK_CHECKSUM\n                    debug(`ID_BLOCK_CHECKSUM: checksum=${uint8ArrayToHex(data)}`);\n                    break;\n                default:\n                    debug(`Ignore unsupported meta-sub-block-id functionId=0x${id.functionId.toString(16)}`);\n                    break;\n            }\n            remaining -= MetadataIdToken.len + (id.largeBlock ? Token.UINT24_LE.len : Token.UINT8.len) + dataSizeInWords * 2;\n            debug(`remainingLength=${remaining}`);\n            if (id.isOddSize)\n                this.tokenizer.ignore(1);\n        }\n        if (remaining !== 0)\n            throw new WavPackContentError('metadata-sub-block should fit it remaining length');\n    }\n}\n//# sourceMappingURL=WavPackParser.js.map","import * as Token from 'token-types';\n/**\n * Common RIFF chunk header\n */\nexport const Header = {\n    len: 8,\n    get: (buf, off) => {\n        return {\n            // Group-ID\n            chunkID: new Token.StringType(4, 'latin1').get(buf, off),\n            // Size\n            chunkSize: Token.UINT32_LE.get(buf, off + 4)\n        };\n    }\n};\n/**\n * Token to parse RIFF-INFO tag value\n */\nexport class ListInfoTagValue {\n    constructor(tagHeader) {\n        this.tagHeader = tagHeader;\n        this.len = tagHeader.chunkSize;\n        this.len += this.len & 1; // if it is an odd length, round up to even\n    }\n    get(buf, off) {\n        return new Token.StringType(this.tagHeader.chunkSize, 'ascii').get(buf, off);\n    }\n}\n//# sourceMappingURL=RiffChunk.js.map","import * as Token from 'token-types';\nimport { makeUnexpectedFileContentError } from '../ParseError.js';\nexport class WaveContentError extends makeUnexpectedFileContentError('Wave') {\n}\n/**\n * Ref: https://msdn.microsoft.com/en-us/library/windows/desktop/dd317599(v=vs.85).aspx\n */\nexport const WaveFormat = {\n    PCM: 0x0001,\n    // MPEG-4 and AAC Audio Types\n    ADPCM: 0x0002,\n    IEEE_FLOAT: 0x0003,\n    MPEG_ADTS_AAC: 0x1600,\n    MPEG_LOAS: 0x1602,\n    RAW_AAC1: 0x00FF,\n    // Dolby Audio Types\n    DOLBY_AC3_SPDIF: 0x0092,\n    DVM: 0x2000,\n    RAW_SPORT: 0x0240,\n    ESST_AC3: 0x0241,\n    DRM: 0x0009,\n    DTS2: 0x2001,\n    MPEG: 0x0050\n};\nexport const WaveFormatNameMap = {\n    [WaveFormat.PCM]: 'PCM',\n    [WaveFormat.ADPCM]: 'ADPCM',\n    [WaveFormat.IEEE_FLOAT]: 'IEEE_FLOAT',\n    [WaveFormat.MPEG_ADTS_AAC]: 'MPEG_ADTS_AAC',\n    [WaveFormat.MPEG_LOAS]: 'MPEG_LOAS',\n    [WaveFormat.RAW_AAC1]: 'RAW_AAC1',\n    [WaveFormat.DOLBY_AC3_SPDIF]: 'DOLBY_AC3_SPDIF',\n    [WaveFormat.DVM]: 'DVM',\n    [WaveFormat.RAW_SPORT]: 'RAW_SPORT',\n    [WaveFormat.ESST_AC3]: 'ESST_AC3',\n    [WaveFormat.DRM]: 'DRM',\n    [WaveFormat.DTS2]: 'DTS2',\n    [WaveFormat.MPEG]: 'MPEG'\n};\n/**\n * format chunk; chunk-id is \"fmt \"\n * http://soundfile.sapp.org/doc/WaveFormat/\n */\nexport class Format {\n    constructor(header) {\n        if (header.chunkSize < 16)\n            throw new WaveContentError('Invalid chunk size');\n        this.len = header.chunkSize;\n    }\n    get(buf, off) {\n        return {\n            wFormatTag: Token.UINT16_LE.get(buf, off),\n            nChannels: Token.UINT16_LE.get(buf, off + 2),\n            nSamplesPerSec: Token.UINT32_LE.get(buf, off + 4),\n            nAvgBytesPerSec: Token.UINT32_LE.get(buf, off + 8),\n            nBlockAlign: Token.UINT16_LE.get(buf, off + 12),\n            wBitsPerSample: Token.UINT16_LE.get(buf, off + 14)\n        };\n    }\n}\n/**\n * Fact chunk; chunk-id is \"fact\"\n * http://www-mmsp.ece.mcgill.ca/Documents/AudioFormats/WAVE/WAVE.html\n * http://www.recordingblogs.com/wiki/fact-chunk-of-a-wave-file\n */\nexport class FactChunk {\n    constructor(header) {\n        if (header.chunkSize < 4) {\n            throw new WaveContentError('Invalid fact chunk size.');\n        }\n        this.len = header.chunkSize;\n    }\n    get(buf, off) {\n        return {\n            dwSampleLength: Token.UINT32_LE.get(buf, off)\n        };\n    }\n}\n//# sourceMappingURL=WaveChunk.js.map","import * as Token from 'token-types';\nimport { stripNulls } from '../common/Util.js';\n/**\n * Broadcast Audio Extension Chunk\n * Ref: https://tech.ebu.ch/docs/tech/tech3285.pdf\n */\nexport const BroadcastAudioExtensionChunk = {\n    len: 420,\n    get: (uint8array, off) => {\n        return {\n            description: stripNulls(new Token.StringType(256, 'ascii').get(uint8array, off)).trim(),\n            originator: stripNulls(new Token.StringType(32, 'ascii').get(uint8array, off + 256)).trim(),\n            originatorReference: stripNulls(new Token.StringType(32, 'ascii').get(uint8array, off + 288)).trim(),\n            originationDate: stripNulls(new Token.StringType(10, 'ascii').get(uint8array, off + 320)).trim(),\n            originationTime: stripNulls(new Token.StringType(8, 'ascii').get(uint8array, off + 330)).trim(),\n            timeReferenceLow: Token.UINT32_LE.get(uint8array, off + 338),\n            timeReferenceHigh: Token.UINT32_LE.get(uint8array, off + 342),\n            version: Token.UINT16_LE.get(uint8array, off + 346),\n            umid: new Token.Uint8ArrayType(64).get(uint8array, off + 348),\n            loudnessValue: Token.UINT16_LE.get(uint8array, off + 412),\n            maxTruePeakLevel: Token.UINT16_LE.get(uint8array, off + 414),\n            maxMomentaryLoudness: Token.UINT16_LE.get(uint8array, off + 416),\n            maxShortTermLoudness: Token.UINT16_LE.get(uint8array, off + 418)\n        };\n    }\n};\n//# sourceMappingURL=BwfChunk.js.map","import * as strtok3 from 'strtok3';\nimport * as Token from 'token-types';\nimport initDebug from 'debug';\nimport * as riff from '../riff/RiffChunk.js';\nimport * as WaveChunk from './WaveChunk.js';\nimport { ID3v2Parser } from '../id3v2/ID3v2Parser.js';\nimport * as util from '../common/Util.js';\nimport { FourCcToken } from '../common/FourCC.js';\nimport { BasicParser } from '../common/BasicParser.js';\nimport { BroadcastAudioExtensionChunk } from './BwfChunk.js';\nimport { WaveContentError } from './WaveChunk.js';\nconst debug = initDebug('music-metadata:parser:RIFF');\n/**\n * Resource Interchange File Format (RIFF) Parser\n *\n * WAVE PCM soundfile format\n *\n * Ref:\n * - http://www.johnloomis.org/cpe102/asgn/asgn1/riff.html\n * - http://soundfile.sapp.org/doc/WaveFormat\n *\n * ToDo: Split WAVE part from RIFF parser\n */\nexport class WaveParser extends BasicParser {\n    constructor() {\n        super(...arguments);\n        this.blockAlign = 0;\n    }\n    async parse() {\n        const riffHeader = await this.tokenizer.readToken(riff.Header);\n        debug(`pos=${this.tokenizer.position}, parse: chunkID=${riffHeader.chunkID}`);\n        if (riffHeader.chunkID !== 'RIFF')\n            return; // Not RIFF format\n        this.metadata.setAudioOnly();\n        return this.parseRiffChunk(riffHeader.chunkSize).catch(err => {\n            if (!(err instanceof strtok3.EndOfStreamError)) {\n                throw err;\n            }\n        });\n    }\n    async parseRiffChunk(chunkSize) {\n        const type = await this.tokenizer.readToken(FourCcToken);\n        this.metadata.setFormat('container', type);\n        switch (type) {\n            case 'WAVE':\n                return this.readWaveChunk(chunkSize - FourCcToken.len);\n            default:\n                throw new WaveContentError(`Unsupported RIFF format: RIFF/${type}`);\n        }\n    }\n    async readWaveChunk(remaining) {\n        while (remaining >= riff.Header.len) {\n            const header = await this.tokenizer.readToken(riff.Header);\n            remaining -= riff.Header.len + header.chunkSize;\n            if (header.chunkSize > remaining) {\n                this.metadata.addWarning('Data chunk size exceeds file size');\n            }\n            this.header = header;\n            debug(`pos=${this.tokenizer.position}, readChunk: chunkID=RIFF/WAVE/${header.chunkID}`);\n            switch (header.chunkID) {\n                case 'LIST':\n                    await this.parseListTag(header);\n                    break;\n                case 'fact': // extended Format chunk,\n                    this.metadata.setFormat('lossless', false);\n                    this.fact = await this.tokenizer.readToken(new WaveChunk.FactChunk(header));\n                    break;\n                case 'fmt ': { // The Util Chunk, non-PCM Formats\n                    const fmt = await this.tokenizer.readToken(new WaveChunk.Format(header));\n                    let subFormat = WaveChunk.WaveFormatNameMap[fmt.wFormatTag];\n                    if (!subFormat) {\n                        debug(`WAVE/non-PCM format=${fmt.wFormatTag}`);\n                        subFormat = `non-PCM (${fmt.wFormatTag})`;\n                    }\n                    this.metadata.setFormat('codec', subFormat);\n                    this.metadata.setFormat('bitsPerSample', fmt.wBitsPerSample);\n                    this.metadata.setFormat('sampleRate', fmt.nSamplesPerSec);\n                    this.metadata.setFormat('numberOfChannels', fmt.nChannels);\n                    this.metadata.setFormat('bitrate', fmt.nBlockAlign * fmt.nSamplesPerSec * 8);\n                    this.blockAlign = fmt.nBlockAlign;\n                    break;\n                }\n                case 'id3 ': // The way Picard, FooBar currently stores, ID3 meta-data\n                case 'ID3 ': { // The way Mp3Tags stores ID3 meta-data\n                    const id3_data = await this.tokenizer.readToken(new Token.Uint8ArrayType(header.chunkSize));\n                    const rst = strtok3.fromBuffer(id3_data);\n                    await new ID3v2Parser().parse(this.metadata, rst, this.options);\n                    break;\n                }\n                case 'data': { // PCM-data\n                    if (this.metadata.format.lossless !== false) {\n                        this.metadata.setFormat('lossless', true);\n                    }\n                    let chunkSize = header.chunkSize;\n                    if (this.tokenizer.fileInfo.size) {\n                        const calcRemaining = this.tokenizer.fileInfo.size - this.tokenizer.position;\n                        if (calcRemaining < chunkSize) {\n                            this.metadata.addWarning('data chunk length exceeding file length');\n                            chunkSize = calcRemaining;\n                        }\n                    }\n                    const numberOfSamples = this.fact ? this.fact.dwSampleLength : (chunkSize === 0xffffffff ? undefined : chunkSize / this.blockAlign);\n                    if (numberOfSamples) {\n                        this.metadata.setFormat('numberOfSamples', numberOfSamples);\n                        if (this.metadata.format.sampleRate) {\n                            this.metadata.setFormat('duration', numberOfSamples / this.metadata.format.sampleRate);\n                        }\n                    }\n                    if (this.metadata.format.codec === 'ADPCM') { // ADPCM is 4 bits lossy encoding resulting in 352kbps\n                        this.metadata.setFormat('bitrate', 352000);\n                    }\n                    else if (this.metadata.format.sampleRate) {\n                        this.metadata.setFormat('bitrate', this.blockAlign * this.metadata.format.sampleRate * 8);\n                    }\n                    await this.tokenizer.ignore(header.chunkSize);\n                    break;\n                }\n                case 'bext': { // Broadcast Audio Extension chunk\thttps://tech.ebu.ch/docs/tech/tech3285.pdf\n                    const bext = await this.tokenizer.readToken(BroadcastAudioExtensionChunk);\n                    Object.keys(bext).forEach(key => {\n                        this.metadata.addTag('exif', `bext.${key}`, bext[key]);\n                    });\n                    const bextRemaining = header.chunkSize - BroadcastAudioExtensionChunk.len;\n                    await this.tokenizer.ignore(bextRemaining);\n                    break;\n                }\n                case '\\x00\\x00\\x00\\x00': // padding ??\n                    debug(`Ignore padding chunk: RIFF/${header.chunkID} of ${header.chunkSize} bytes`);\n                    this.metadata.addWarning(`Ignore chunk: RIFF/${header.chunkID}`);\n                    await this.tokenizer.ignore(header.chunkSize);\n                    break;\n                default:\n                    debug(`Ignore chunk: RIFF/${header.chunkID} of ${header.chunkSize} bytes`);\n                    this.metadata.addWarning(`Ignore chunk: RIFF/${header.chunkID}`);\n                    await this.tokenizer.ignore(header.chunkSize);\n            }\n            if (this.header.chunkSize % 2 === 1) {\n                debug('Read odd padding byte'); // https://wiki.multimedia.cx/index.php/RIFF\n                await this.tokenizer.ignore(1);\n            }\n        }\n    }\n    async parseListTag(listHeader) {\n        const listType = await this.tokenizer.readToken(new Token.StringType(4, 'latin1'));\n        debug('pos=%s, parseListTag: chunkID=RIFF/WAVE/LIST/%s', this.tokenizer.position, listType);\n        switch (listType) {\n            case 'INFO':\n                return this.parseRiffInfoTags(listHeader.chunkSize - 4);\n            default:\n                this.metadata.addWarning(`Ignore chunk: RIFF/WAVE/LIST/${listType}`);\n                debug(`Ignoring chunkID=RIFF/WAVE/LIST/${listType}`);\n                return this.tokenizer.ignore(listHeader.chunkSize - 4).then();\n        }\n    }\n    async parseRiffInfoTags(chunkSize) {\n        while (chunkSize >= 8) {\n            const header = await this.tokenizer.readToken(riff.Header);\n            const valueToken = new riff.ListInfoTagValue(header);\n            const value = await this.tokenizer.readToken(valueToken);\n            this.addTag(header.chunkID, util.stripNulls(value));\n            chunkSize -= (8 + valueToken.len);\n        }\n        if (chunkSize !== 0) {\n            throw new WaveContentError(`Illegal remaining size: ${chunkSize}`);\n        }\n    }\n    addTag(id, value) {\n        this.metadata.addTag('exif', id, value);\n    }\n}\n//# sourceMappingURL=WaveParser.js.map"],"names":["exports","s","a","o","h","u","r","e","require","l","n","Error","code","i","call","length","t","d","c","p","encode","f","getTypeOf","charCodeAt","push","charAt","join","decode","substr","replace","uint8array","Uint8Array","Array","indexOf","this","compressedSize","uncompressedSize","crc32","compression","compressedContent","prototype","getContentWorker","Promise","resolve","pipe","uncompressWorker","on","streamInfo","data_length","getCompressedWorker","withStreamInfo","createWorkerFrom","compressWorker","STORE","magic","DEFLATE","base64","binary","dir","createFolders","date","compressionOptions","comment","unixPermissions","dosPermissions","lie","Uint16Array","Uint32Array","_pako","_pakoAction","_pakoOptions","meta","inherits","processChunk","_createPako","transformTo","data","flush","cleanUp","raw","level","onData","pako","A","String","fromCharCode","file","O","utf8encode","I","name","m","_","g","b","v","y","w","k","x","S","z","C","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCFullYear","getUTCMonth","getUTCDate","B","E","fileRecord","R","LOCAL_FILE_HEADER","dirRecord","CENTRAL_FILE_HEADER","bytesWritten","zipComment","zipPlatform","encodeFileName","streamFiles","accumulate","contentBuffer","dirRecords","currentSourceOffset","entriesCount","currentFile","_sources","percent","openedSource","closedSource","DATA_DESCRIPTOR","shift","CENTRAL_DIRECTORY_END","prepareNextSource","previous","isPaused","pause","resume","registerPrevious","end","error","generatedError","lock","generateWorker","platform","forEach","options","_compressWorker","arguments","files","Object","create","root","clone","loadAsync","support","defaults","version","external","decompressed","extend","checkCRC32","optimizedBinaryString","decodeFileName","utf8decode","isNode","isStream","reject","prepareContent","then","load","all","fileNameStr","fileCommentStr","unsafeOriginalName","_upstreamEnded","_bindStream","_stream","Readable","_helper","emit","_read","Buffer","newBufferFrom","from","allocBuffer","alloc","fill","isBuffer","Date","toUpperCase","parseInt","slice","substring","lastIndexOf","toString","filter","test","folder","remove","generate","generateInternalStream","type","mimeType","toLowerCase","checkSupport","generateAsync","generateNodeStream","toNodejsStream","stream","byteAt","zero","lastIndexOfSignature","readAndCheckSignature","readData","checkOffset","index","checkIndex","setIndex","skip","readInt","readString","readDate","UTC","subarray","ZIP64_CENTRAL_DIRECTORY_LOCATOR","ZIP64_CENTRAL_DIRECTORY_END","destType","propName","dataIsReady","max","_tickScheduled","_tickAndRepeat","delay","isFinished","_tick","Math","min","extraStreamInfo","isLocked","_listeners","mergeStreamInfo","hasOwnProperty","nodestream","_internalType","_outputType","_mimeType","_worker","newBlob","concat","apply","set","objectMode","array","string","arraybuffer","ArrayBuffer","nodebuffer","blob","Blob","size","self","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","MSBlobBuilder","append","getBlob","leftOver","applyFromCharCode","Utf8DecodeWorker","Utf8EncodeWorker","stringifyByChunk","stringifyByChar","applyCanBeUsed","floor","buffer","byteLength","split","pop","MAX_VALUE_16BITS","MAX_VALUE_32BITS","pretty","setImmediate","FileReader","onload","target","result","onerror","readAsArrayBuffer","setimmediate","loadOptions","checkSignature","reader","isSignature","readBlockEndOfCentral","diskNumber","diskWithCentralDirStart","centralDirRecordsOnThisDisk","centralDirRecords","centralDirSize","centralDirOffset","zipCommentLength","readBlockZip64EndOfCentral","zip64EndOfCentralSize","zip64ExtensibleData","id","value","readBlockZip64EndOfCentralLocator","diskWithZip64CentralDirStart","relativeOffsetEndOfZip64CentralDir","disksCount","readLocalFiles","localHeaderOffset","readLocalPart","handleUTF8","processAttributes","readCentralDir","zip64","readCentralPart","readEndOfCentral","abs","prepareReader","isEncrypted","bitFlag","useUTF8","fileNameLength","fileName","compressionMethod","versionMadeBy","extraFieldsLength","fileCommentLength","diskNumberStart","internalFileAttributes","externalFileAttributes","readExtraFields","parseZIP64ExtraField","fileComment","extraFields","findExtraFieldUnicodePath","findExtraFieldUnicodeComment","_data","_dataBinary","internalStream","_decompressWorker","async","nodeStream","MutationObserver","WebKitMutationObserver","document","createTextNode","observe","characterData","MessageChannel","createElement","onreadystatechange","parentNode","removeChild","documentElement","appendChild","setTimeout","port1","onmessage","port2","postMessage","global","window","TypeError","state","queue","outcome","promise","onFulfilled","callFulfilled","otherCallFulfilled","onRejected","callRejected","otherCallRejected","status","finally","constructor","catch","race","immediate","assign","method","chunkSize","windowBits","memLevel","strategy","to","gzip","err","msg","ended","chunks","strm","avail_out","deflateInit2","header","deflateSetHeader","dictionary","string2buf","deflateSetDictionary","_dict_set","input","next_in","avail_in","output","Buf8","next_out","deflate","onEnd","buf2binstring","shrinkBuf","deflateEnd","flattenChunks","Deflate","deflateRaw","inflateInit2","Z_OK","inflateGetHeader","Z_FINISH","Z_NO_FLUSH","binstring2buf","inflate","Z_NEED_DICT","inflateSetDictionary","Z_BUF_ERROR","Z_STREAM_END","Z_SYNC_FLUSH","utf8border","buf2string","arraySet","inflateEnd","Inflate","inflateRaw","ungzip","Int32Array","setTyped","Buf16","Buf32","Z_PARTIAL_FLUSH","Z_FULL_FLUSH","Z_BLOCK","Z_TREES","Z_ERRNO","Z_STREAM_ERROR","Z_DATA_ERROR","Z_NO_COMPRESSION","Z_BEST_SPEED","Z_BEST_COMPRESSION","Z_DEFAULT_COMPRESSION","Z_FILTERED","Z_HUFFMAN_ONLY","Z_RLE","Z_FIXED","Z_DEFAULT_STRATEGY","Z_BINARY","Z_TEXT","Z_UNKNOWN","Z_DEFLATED","T","D","F","pending","pending_buf","pending_out","total_out","N","_tr_flush_block","block_start","strstart","U","P","L","max_chain_length","prev_length","nice_match","w_size","w_mask","prev","good_match","lookahead","match_start","j","window_size","hash_size","head","wrap","adler","total_in","insert","ins_h","hash_shift","hash_mask","Z","match_length","_tr_tally","max_lazy_match","last_lit","W","prev_match","match_available","M","good_length","max_lazy","nice_length","max_chain","func","H","pending_buf_size","gzhead","gzindex","last_flush","w_bits","hash_bits","dyn_ltree","dyn_dtree","bl_tree","l_desc","d_desc","bl_desc","bl_count","heap","heap_len","heap_max","depth","l_buf","lit_bufsize","d_buf","opt_len","static_len","matches","bi_buf","bi_valid","G","data_type","_tr_init","K","Y","deflateInit","deflateReset","deflateResetKeep","text","hcrc","extra","time","os","_tr_align","_tr_stored_block","deflateInfo","xflags","extra_len","done","dmax","wsize","whave","wnext","hold","bits","lencode","distcode","lenbits","distbits","mode","sane","last","havedict","flags","check","total","wbits","offset","ncode","nlen","ndist","have","next","lens","work","lendyn","distdyn","back","was","inflateReset","inflateReset2","inflateResetKeep","inflateInit","inflateInfo","static_tree","extra_bits","extra_base","elems","max_length","has_stree","dyn_tree","max_code","stat_desc","X","V","q","J","getPrototypeOf","process","nextTick","importScripts","random","addEventListener","attachEvent","Function","callback","args","clearImmediate","source","EndOfStreamError","super","AbortError","message","AbstractStreamReader","endOfStream","interrupted","peekQueue","peek","uint8Array","mayBeLess","bytesRead","read","readFromPeekBuffer","readRemainderFromStream","remaining","peekData","lenCopy","chunkLen","readFromStream","WebStreamReader","abort","close","releaseLock","WebStreamByobReader","undefined","WebStreamDefaultReader","writeChunk","chunk","written","totalBytesRead","cancel","AbstractTokenizer","numBuffer","position","onClose","abortSignal","readToken","token","len","readBuffer","get","peekToken","peekBuffer","readNumber","peekNumber","ignore","fileInfo","bytesLeft","normalizeOptions","supportsRandomAccess","ReadStreamTokenizer","streamReader","normOptions","skipBytes","skipBuffer","bufSize","buf","totBytesRead","BufferTokenizer","bytes2read","setPosition","fromWebStream","webStream","webStreamReader","getReader","ReadableStreamDefaultReader","makeWebStreamReader","_options","chainedClose","fromBuffer","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","Infinity","pow","write","rt","isNaN","log","LN2","dv","DataView","byteOffset","UINT8","getUint8","put","setUint8","UINT16_LE","getUint16","setUint16","UINT16_BE","UINT24_LE","dataView","UINT24_BE","UINT32_LE","getUint32","setUint32","UINT32_BE","INT8","getInt8","setInt8","INT16_BE","getInt16","setInt16","INT16_LE","INT24_LE","unsigned","INT24_BE","INT32_BE","getInt32","setInt32","INT32_LE","UINT64_LE","getBigUint64","setBigUint64","INT64_LE","getBigInt64","setBigInt64","UINT64_BE","INT64_BE","Float16_BE","ieee754.read","ieee754.write","Float16_LE","Float32_BE","getFloat32","setFloat32","Float32_LE","Float64_BE","getFloat64","setFloat64","Float64_LE","Float80_BE","Float80_LE","Uint8ArrayType","StringType","encoding","decoder","decodeWindows1252","textDecoder","TextDecoder","bytes","byte","win1252Map","_array","_off","u8","u16","i32","fleb","fdeb","clim","freb","eb","start","_a","fl","revfl","fd","rev","hMap","cd","mb","co","le","rvb","sv","r_1","flt","fdt","flrm","fdrm","bits16","shft","ec","ind","nt","captureStackTrace","inflt","dat","st","dict","sl","noBuf","resize","noSt","cbuf","bl","nbuf","final","pos","bt","lm","dm","lbt","dbt","tbts","hLit","hcLen","tl","ldt","clt","clb","clbmsk","clm","lt","dt","lms","dms","lpos","sym","add","dsym","dend","slc","et","decompressSync","opts","flg","zs","gzs","gzl","gunzipSync","inflateSync","zls","unzlibSync","td","common","env","createDebug","namespace","prevTime","namespacesCache","enabledCache","enableOverride","debug","enabled","curr","Number","ms","diff","coerce","unshift","match","format","formatter","formatters","val","splice","formatArgs","useColors","color","selectColor","destroy","defineProperty","enumerable","configurable","namespaces","init","delimiter","newDebug","matchesTemplate","search","template","searchIndex","templateIndex","starIndex","matchIndex","default","stack","disable","names","skips","map","enable","save","trim","Boolean","ns","humanize","plural","msAbs","isPlural","round","str","exec","parseFloat","parse","isFinite","long","fmtLong","fmtShort","JSON","stringify","require$$0","keys","key","hash","colors","module","lastC","storage","setItem","removeItem","getItem","DEBUG","__nwjs","navigator","userAgent","style","WebkitAppearance","console","firebug","exception","table","localStorage","localstorage","warned","Signature","DataDescriptor","signature","LocalFileHeaderToken","minVersion","dataDescriptor","compressedMethod","filenameLength","extraFieldLength","filename","EndOfCentralDirectoryRecordToken","nrOfThisDisk","nrOfThisDiskWithTheStart","nrOfEntriesOnThisDisk","nrOfEntriesOfSize","sizeOfCd","offsetOfStartOfCd","zipFileCommentLength","FileHeader","relativeOffsetOfLocalHeader","signatureToArray","signatureBytes","initDebug","syncBufferSize","ddSignatureArray","eocdSignatureBytes","ZipHandler","tokenizer","syncBuffer","isZip","peekSignature","findEndOfCentralDirectoryLocator","randomReadTokenizer","chunkLength","readCentralDirectory","eocdHeader","entry","unzip","fileCb","entries","iterateOverCentralDirectory","stop","zipHeader","readLocalFileHeader","fileData","nextHeaderIndex","handler","mergeArrays","fileHeader","cb","portion","bufferLength","portionLength","found","totalLength","reduce","acc","mergedArray","objectToString","isType","typeConstructor","typeStringified","isUint8Array","cachedDecoders","utf8","globalThis","uint8ArrayToString","isArrayBuffer","isUint8ArrayOrArrayBuffer","assertUint8ArrayOrArrayBuffer","assertString","cachedEncoder","TextEncoder","byteToHexLookupTable","padStart","uint8ArrayToHex","assertUint8Array","hexString","hexToDecimalLookupTable","hexToUint8Array","resultLength","highNibble","lowNibble","getUintBE","view","uint32SyncSafeToken","reasonableDetectionSizeInBytes","fileTypeFromBuffer","FileTypeParser","getFileTypeFromMimeType","ext","mime","_check","headers","mask","mpegOffsetTolerance","detectors","customDetectors","detect","detectConfident","detectImprecise","tokenizerOptions","signal","fromTokenizer","initialPosition","detector","fileType","strtok3.fromBuffer","fromBlob","fromStream","strtok3.fromWebStream","toDetectionStream","sampleSize","detectedFileType","firstChunk","strtok3.EndOfStreamError","transformStream","TransformStream","controller","enqueue","transform","newStream","pipeThrough","checkString","character","MAX_SAFE_INTEGER","id3HeaderLength","xmlContent","endPos","includes","firstPos","readTiffHeader","readField","msb","Token.UINT8","ic","readElement","idField","lengthField","nrLength","idView","lengthView","readChildren","children","element","Token.StringType","replaceAll","re","some","char7","readChunkHeader","Token.INT32_BE","brandMajor","startsWith","readHeader","guid","Token.UINT64_LE","payload","typeId","jsonSize","arrayBuffer","readSum","sum","tarHeaderChecksumMatches","scanMpeg","readTiffTag","bigEndian","tagId","Token.UINT16_BE","Token.UINT16_LE","readTiffIFD","numberOfTags","ifdOffset","Token.UINT32_BE","Token.UINT32_LE","someId1","someId2","Set","PARAM_REGEXP","TEXT_REGEXP","TOKEN_REGEXP","QESC_REGEXP","QUOTE_REGEXP","TYPE_REGEXP","qstring","ContentType","parameters","contentType","obj","param","params","sort","getHeader","getcontenttype","lastIndex","MediaType","subtype","suffix","TargetType","TrackType","TrackTypeValueToKeyMap","TrackType_video","TrackType_audio","TrackType_complex","TrackType_logo","TrackType_subtitle","TrackType_button","TrackType_control","makeParseError","CouldNotDetermineFileTypeError","UnsupportedFileTypeError","UnexpectedFileContentError","FieldDecodingError","InternalParserError","makeUnexpectedFileContentError","getBit","off","bit","findZero","trimRightNull","pos0","decodeString","swapBytes","stripNulls","getBitAllignedNumber","bitOffset","bitOff","bitsRead","bitsLeft","isBitSet","AttachedPictureType","LyricsContentType","other","lyrics","movement_part","events","chord","trivia_pop","TimestampFormat","notSynchronized0","mpegFrameNumber","milliseconds","UINT32SYNCSAFE","ID3v2Header","fileIdentifier","major","Token.INT8","revision","unsynchronisation","util.getBit","isExtendedHeader","expIndicator","footer","ExtendedHeader","extendedFlags","sizeOfPadding","crcDataPresent","TextEncodingToken","bom","TextHeader","language","defaultTagInfo","multiple","commonTags","year","track","disk","title","artist","artists","unique","albumartist","album","originaldate","originalyear","releasedate","genre","picture","composer","albumsort","titlesort","artistsort","albumartistsort","composersort","lyricist","writer","conductor","remixer","arranger","engineer","producer","technician","djmixer","mixer","label","grouping","subtitle","discsubtitle","totaltracks","totaldiscs","compilation","rating","bpm","mood","media","catalognumber","tvShow","tvShowSort","tvSeason","tvEpisode","tvEpisodeId","tvNetwork","podcast","podcasturl","releasestatus","releasetype","releasecountry","script","copyright","license","encodedby","encodersettings","gapless","barcode","isrc","asin","musicbrainz_recordingid","musicbrainz_trackid","musicbrainz_albumid","musicbrainz_artistid","musicbrainz_albumartistid","musicbrainz_releasegroupid","musicbrainz_workid","musicbrainz_trmid","musicbrainz_discid","acoustid_id","acoustid_fingerprint","musicip_puid","musicip_fingerprint","website","averageLevel","peakLevel","notes","originalalbum","originalartist","discogs_artist_id","discogs_release_id","discogs_label_id","discogs_master_release_id","discogs_votes","discogs_rating","replaygain_track_peak","replaygain_track_gain","replaygain_album_peak","replaygain_album_gain","replaygain_track_minmax","replaygain_album_minmax","replaygain_undo","description","longDescription","category","hdVideo","keywords","movement","movementIndex","movementTotal","podcastId","showMovement","stik","CommonTagMapper","toIntOrNull","cleaned","normalizeTrack","origVal","no","of","tagTypes","tagMap","mapGenericTag","tag","warnings","postMap","getCommonName","_tag","_warnings","maxRatingScore","id3v1TagMap","ID3v1TagMapper","CaseInsensitiveTagMap","upperCaseMap","id3v24TagMap","TIT2","TPE1","TPE2","TALB","TDRV","TORY","TPOS","TCON","APIC","TCOM","USLT","TSOA","TSOT","TOAL","TSOP","TSO2","TSOC","TEXT","TPE3","TPE4","TPUB","TIT1","TIT3","TRCK","TCMP","POPM","TBPM","TMED","TLAN","TCOP","WCOP","TENC","TSSE","TSRC","WOAR","TDRC","TYER","TDOR","TMOO","SYLT","TSST","TKEY","COMM","TOPE","MVNM","MVIN","PCST","TCAT","TDES","TDRL","TGID","TKWD","WFED","GRP1","ID3v24TagMapper","toRating","popm","email","idTag","owner_identifier","identifier","customTag","addWarning","asfTagMap","Title","Author","Description","Copyright","LICENSE","ASIN","AsfTagMapper","id3v22TagMap","TT2","TP1","TP2","TAL","TYE","COM","TRK","TPA","TCO","PIC","TCM","TOR","TOT","TXT","TP3","TPB","TT1","TT3","TLA","TCR","WCP","TEN","TSS","WAR","PCS","TCP","TDR","TS2","TSA","TSC","TSP","TST","WFD","TBP","ID3v22TagMapper","apev2TagMap","Artist","Artists","Album","Year","Originalyear","Originaldate","Releasedate","Comment","Track","Disc","DISCNUMBER","Genre","Composer","Lyrics","ALBUMSORT","TITLESORT","WORK","ARTISTSORT","ALBUMARTISTSORT","COMPOSERSORT","Lyricist","Writer","Conductor","MixArtist","Arranger","Engineer","Producer","DJMixer","Mixer","Label","Grouping","Subtitle","DiscSubtitle","Compilation","BPM","Mood","Media","CatalogNumber","MUSICBRAINZ_ALBUMSTATUS","MUSICBRAINZ_ALBUMTYPE","RELEASECOUNTRY","Script","Language","EncodedBy","EncoderSettings","Barcode","ISRC","musicbrainz_releasetrackid","MUSICBRAINZ_ALBUMID","MUSICBRAINZ_ARTISTID","MUSICBRAINZ_ALBUMARTISTID","MUSICBRAINZ_RELEASEGROUPID","MUSICBRAINZ_WORKID","MUSICBRAINZ_TRMID","MUSICBRAINZ_DISCID","Acoustid_Id","ACOUSTID_FINGERPRINT","MUSICIP_PUID","Weblink","REPLAYGAIN_TRACK_GAIN","REPLAYGAIN_TRACK_PEAK","MP3GAIN_MINMAX","MP3GAIN_UNDO","APEv2TagMapper","mp4TagMap","aART","trkn","covr","soal","sonm","soar","soaa","soco","cpil","tmpo","tvsh","tvsn","tves","sosn","tven","tvnn","pcst","purl","cprt","pgap","gnre","desc","ldes","catg","egid","hdvd","keyw","shwm","rate","MP4TagMapper","vorbisTagMap","TITLE","ARTIST","ARTISTS","ALBUMARTIST","ALBUM","DATE","ORIGINALDATE","ORIGINALYEAR","RELEASEDATE","COMMENT","TRACKNUMBER","GENRE","METADATA_BLOCK_PICTURE","COMPOSER","LYRICS","LYRICIST","WRITER","CONDUCTOR","REMIXER","ARRANGER","ENGINEER","PRODUCER","DJMIXER","MIXER","LABEL","GROUPING","SUBTITLE","DISCSUBTITLE","TRACKTOTAL","DISCTOTAL","COMPILATION","RATING","KEY","MOOD","MEDIA","CATALOGNUMBER","RELEASESTATUS","RELEASETYPE","SCRIPT","LANGUAGE","COPYRIGHT","ENCODEDBY","ENCODERSETTINGS","BARCODE","MUSICBRAINZ_TRACKID","MUSICBRAINZ_RELEASETRACKID","ACOUSTID_ID","ACOUSTID_ID_FINGERPRINT","WEBSITE","NOTES","TOTALTRACKS","TOTALDISCS","DISCOGS_ARTIST_ID","DISCOGS_ARTISTS","DISCOGS_ARTIST_NAME","DISCOGS_ALBUM_ARTISTS","DISCOGS_CATALOG","DISCOGS_COUNTRY","DISCOGS_DATE","DISCOGS_LABEL","DISCOGS_LABEL_ID","DISCOGS_MASTER_RELEASE_ID","DISCOGS_RATING","DISCOGS_RELEASED","DISCOGS_RELEASE_ID","DISCOGS_VOTES","CATALOGID","STYLE","REPLAYGAIN_ALBUM_GAIN","REPLAYGAIN_ALBUM_PEAK","REPLAYGAIN_MINMAX","REPLAYGAIN_ALBUM_MINMAX","REPLAYGAIN_UNDO","VorbisTagMapper","maxScore","riffInfoTagMap","IART","ICRD","INAM","TITL","IPRD","ITRK","IPRT","ICMT","ICNT","GNRE","IWRI","RATE","YEAR","ISFT","CODE","TURL","IGNR","IENG","ITCH","IMED","IRPD","RiffInfoTagMapper","ebmlTagMap","MatroskaTagMapper","NAME","AUTH","ANNO","AiffTagMapper","CombinedTagMapper","tagMappers","mapper","registerTagMapper","mapTag","tagType","genericTagMapper","TagPriority","MetadataCollector","trackInfo","native","quality","commonOrigin","originPriority","tagMapper","priority","artificial","id3v1","hasAny","addStreamInfo","codecName","setFormat","observer","metadata","setAudioOnly","addTag","toCommon","warning","setGenericTag","artistTag","postFixPicture","ps","dB","ratio","log10","toRatio","minMix","leftChannel","rightChannel","commonTag","descriptor","lrcString","lines","syncText","timestampRegex","line","minutes","seconds","millisecondsStr","timestamp","timeStampFormat","parseLrc","toCommonMetadata","toLocaleLowerCase","genericTag","prio0","prio1","alias","isUnique","mpegParserLoader","parserType","extensions","mimeTypes","MpegParser$1","MpegParser","apeParserLoader","APEv2Parser$1","APEv2Parser","asfParserLoader","AsfParser$1","AsfParser","dsdiffParserLoader","DsdiffParser$1","DsdiffParser","aiffParserLoader","AiffParser","AIFFParser","dsfParserLoader","DsfParser$1","DsfParser","flacParserLoader","FlacParser$1","FlacParser","matroskaParserLoader","MatroskaParser$1","MatroskaParser","mp4ParserLoader","MP4Parser$1","MP4Parser","musepackParserLoader","MusepackParser$1","MusepackParser","oggParserLoader","OggParser$1","OggParser","wavpackParserLoader","WavPackParser$1","WavPackParser","riffParserLoader","WaveParser$1","WaveParser","ParserFactory","parsers","parser","registerParser","parserLoader","scanAppendingHeaders","findLoaderForContentType","path","findLoaderForExtension","guessedType","hasAudio","find","hasVideo","filePath","extension","fname","getExtension","httpContentType","mimeTypeParse","parseHttpContentType","_err","subType","loader","getSupportedMimeTypes","mimeTypeSet","BasicParser","validFourCC","FourCcToken","arr","hex","util.a2hex","DescriptorParser","ID","descriptorBytes","headerBytes","seekTableBytes","headerDataBytes","apeFrameDataBytes","apeFrameDataBytesHigh","terminatingDataBytes","fileMD5","Token.Uint8ArrayType","Header","compressionLevel","formatFlags","blocksPerFrame","finalFrameBlocks","totalFrames","bitsPerSample","channel","sampleRate","TagFooter","fields","parseTagFlags","TagItemHeader","containsHeader","containsFooter","isHeader","readOnly","dataType","num","tagFormat","preamble","ApeContentError","tryParseApeHeader","ape","calculateDuration","ah","duration","findApeFooterOffset","apeBuf","tagFooter","parseTagFooter","parseTags","lenExp","parseDescriptorExpansion","parseHeader","forwardBytes","keyBuffer","bytesRemaining","tagItemHeader","util.findZero","values","skipCovers","picData","Genres","Iid3v1Token","Id3v1StringType","zeroByte","stringType","util.trimRightNull","ID3v1Parser","apeHeader","getGenre","genreIndex","apeParser","props","endTag2","parseWebStream","parseFromTokenizer","apeOffset","hasID3v1Header","lyricsLen","fileSize","txt","getLyricsHeaderLength","nativeTags","tags","File","_filePath","_fileInfo","pictures","cur","REACT_ELEMENT_TYPE","Symbol","for","REACT_FRAGMENT_TYPE","jsxProd","config","maybeKey","ref","$$typeof","reactJsxRuntime_production","Fragment","jsx","jsxs","jsxRuntimeModule","node","parentIndex","parent","compare","first","halfLength","leftIndex","left","rightIndex","right","sortIndex","unstable_now","performance","now","localPerformance","localDate","initialTime","taskQueue","timerQueue","taskIdCounter","currentTask","currentPriorityLevel","isPerformingWork","isHostCallbackScheduled","isHostTimeoutScheduled","needsPaint","localSetTimeout","localClearTimeout","clearTimeout","localSetImmediate","advanceTimers","currentTime","timer","startTime","expirationTime","handleTimeout","isMessageLoopRunning","schedulePerformWorkUntilDeadline","firstTimer","requestHostTimeout","taskTimeoutID","frameInterval","shouldYieldToHost","performWorkUntilDeadline","hasMoreWork","previousPriorityLevel","priorityLevel","continuationCallback","port","unstable_IdlePriority","unstable_ImmediatePriority","unstable_LowPriority","unstable_NormalPriority","unstable_Profiling","unstable_UserBlockingPriority","unstable_cancelCallback","task","unstable_forceFrameRate","fps","unstable_getCurrentPriorityLevel","unstable_next","eventHandler","unstable_requestPaint","unstable_runWithPriority","unstable_scheduleCallback","timeout","unstable_shouldYield","unstable_wrapCallback","parentPriorityLevel","schedulerModule","REACT_PORTAL_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_CONSUMER_TYPE","REACT_CONTEXT_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","MAYBE_ITERATOR_SYMBOL","iterator","ReactNoopUpdateQueue","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","emptyObject","Component","context","updater","refs","ComponentDummy","PureComponent","isReactComponent","setState","partialState","forceUpdate","pureComponentPrototype","isPureReactComponent","isArrayImpl","isArray","ReactSharedInternals","ReactElement","owner","isValidElement","object","userProvidedKeyEscapeRegex","getElementKey","escaperLookup","escape","noop$1","mapIntoArray","escapedPrefix","nameSoFar","oldElement","newKey","invokeCallback","_init","_payload","maybeIterable","nextNamePrefix","thenable","reason","fulfilledValue","resolveThenable","mapChildren","count","child","lazyInitializer","_status","ctor","_result","moduleObject","reportGlobalError","reportError","ErrorEvent","event","bubbles","cancelable","dispatchEvent","noop","react_production","Children","forEachFunc","forEachContext","toArray","only","Profiler","StrictMode","Suspense","__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE","__COMPILER_RUNTIME","__proto__","useMemoCache","cache","fn","cloneElement","childArray","createContext","defaultValue","_currentValue","_currentValue2","_threadCount","Provider","Consumer","_context","childrenLength","defaultProps","createRef","current","forwardRef","render","lazy","memo","startTransition","scope","prevTransition","currentTransition","returnValue","onStartTransitionFinish","unstable_useCacheRefresh","useCacheRefresh","use","usable","useActionState","action","initialState","permalink","useCallback","deps","useContext","Context","useDebugValue","useDeferredValue","initialValue","useEffect","createDeps","update","dispatcher","useId","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useOptimistic","passthrough","reducer","useReducer","initialArg","useRef","useState","useSyncExternalStore","subscribe","getSnapshot","getServerSnapshot","useTransition","reactModule","React","formatProdErrorMessage","url","encodeURIComponent","Internals","findDOMNode","getCrossOriginStringAs","as","reactDom_production","__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE","createPortal","container","nodeType","containerInfo","implementation","createPortal$1","flushSync","previousTransition","previousUpdatePriority","preconnect","href","crossOrigin","prefetchDNS","preinit","integrity","fetchPriority","precedence","nonce","preinitModule","preload","referrerPolicy","imageSrcSet","imageSizes","preloadModule","requestFormReset","form","unstable_batchedUpdates","useFormState","useFormStatus","useHostTransitionStatus","checkDCE","__REACT_DEVTOOLS_GLOBAL_HOOK__","reactDomModule","Scheduler","require$$1","ReactDOM","require$$2","isValidContainer","getNearestMountedFiber","fiber","nearestMounted","alternate","return","getSuspenseInstanceFromFiber","suspenseState","memoizedState","dehydrated","assertIsMounted","findCurrentHostFiberImpl","sibling","REACT_LEGACY_ELEMENT_TYPE","REACT_PROVIDER_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_ACTIVITY_TYPE","REACT_MEMO_CACHE_SENTINEL","getIteratorFn","REACT_CLIENT_REFERENCE","getComponentNameFromType","displayName","innerType","ReactDOMSharedInternals","sharedNotPendingObject","valueStack","createCursor","cursor","contextStackCursor","contextFiberStackCursor","rootInstanceStackCursor","hostTransitionProviderCursor","pushHostContainer","nextRootInstance","namespaceURI","getOwnHostContext","tagName","getChildHostContextProd","popHostContainer","pushHostContext","JSCompiler_inline_result","popHostContext","HostTransitionContext","scheduleCallback$3","cancelCallback$1","shouldYield","requestPaint","getCurrentPriorityLevel","ImmediatePriority","UserBlockingPriority","NormalPriority$1","LowPriority","IdlePriority","log$1","unstable_setDisableYieldValue","rendererID","injectedHook","setIsStrictModeForDevtools","newIsStrictMode","setStrictMode","clz32","nextTransitionLane","nextRetryLane","getHighestPriorityLanes","lanes","pendingSyncLanes","getNextLanes","wipLanes","rootHasPendingCommit","pendingLanes","nextLanes","suspendedLanes","pingedLanes","warmLanes","nonIdlePendingLanes","checkIfRootIsPrerendering","renderLanes","computeExpirationTime","lane","claimNextTransitionLane","claimNextRetryLane","createLaneMap","initial","laneMap","markRootUpdated$1","updateLane","markSpawnedDeferredLane","spawnedLane","entangledLanes","spawnedLaneIndex","entanglements","markRootEntangled","rootEntangledLanes","index$6","getBumpedLaneForHydrationByLane","lanesToEventPriority","resolveUpdatePriority","updatePriority","getEventPriority","randomKey","internalInstanceKey","internalPropsKey","internalContainerInstanceKey","internalEventHandlersKey","internalEventHandlerListenersKey","internalEventHandlesSetKey","internalRootNodeResourcesKey","internalHoistableMarker","detachDeletedInstance","getClosestInstanceFromNode","targetNode","targetInst","getParentSuspenseInstance","getInstanceFromNode","getNodeFromInstance","inst","stateNode","getResourcesFromRoot","resources","hoistableStyles","Map","hoistableScripts","markNodeAsHoistable","allNativeEvents","registrationNameDependencies","registerTwoPhaseEvent","registrationName","dependencies","registerDirectEvent","prefix","VALID_ATTRIBUTE_NAME_REGEX","RegExp","illegalAttributeNameCache","validatedAttributeNameCache","setValueForAttribute","attributeName","removeAttribute","prefix$8","setAttribute","setValueForKnownAttribute","setValueForNamespacedAttribute","setAttributeNS","describeBuiltInComponentFrame","reentry","describeNativeComponentFrame","construct","previousPrepareStackTrace","prepareStackTrace","RunInRootFrame","DetermineComponentFrameRoot","Fake","Reflect","control","x$9","x$10","sample","namePropDescriptor","getOwnPropertyDescriptor","_RunInRootFrame$Deter","sampleStack","controlStack","sampleLines","controlLines","frame","describeFiber","getStackByFiberInDevAndProd","workInProgress","info","getToStringValue","isCheckable","elem","nodeName","_valueTracker","valueField","currentValue","getValue","setValue","stopTracking","trackValueOnNode","updateValueIfChanged","tracker","lastValue","checked","getActiveElement","doc","activeElement","body","escapeSelectorAttributeValueInsideDoubleQuotesRegex","escapeSelectorAttributeValueInsideDoubleQuotes","ch","updateInput","lastDefaultValue","defaultChecked","setDefaultValue","initInput","isHydrating","ownerDocument","updateOptions","propValue","setDefaultSelected","selected","defaultSelected","disabled","updateTextarea","initTextarea","textContent","setTextContent","firstChild","lastChild","nodeValue","unitlessNumbers","setValueForStyle","styleName","isCustomProperty","setProperty","cssFloat","has","setValueForStyles","styles","prevStyles","styleName$16","styleName$17","isCustomElement","aliases","isJavaScriptProtocol","sanitizeURL","currentReplayingEvent","getEventTarget","nativeEvent","srcElement","correspondingUseElement","restoreTarget","restoreQueue","restoreStateOfTarget","internalInstance","querySelectorAll","otherNode","otherProps","isInsideEventHandler","batchedUpdates$1","flushSyncWork$1","getListener","canUseDOM","passiveBrowserEventsSupported","removeEventListener","startText","fallbackText","getData","startValue","startLength","endValue","endLength","minEnd","getEventCharCode","keyCode","charCode","functionThatReturnsTrue","functionThatReturnsFalse","createSyntheticEvent","Interface","SyntheticBaseEvent","reactName","reactEventType","nativeEventTarget","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","isPropagationStopped","preventDefault","stopPropagation","cancelBubble","persist","isPersistent","lastMovementX","lastMovementY","lastMouseEvent","EventInterface","eventPhase","timeStamp","isTrusted","SyntheticEvent","UIEventInterface","detail","SyntheticUIEvent","MouseEventInterface","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","getEventModifierState","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","SyntheticMouseEvent","SyntheticDragEvent","dataTransfer","SyntheticFocusEvent","SyntheticAnimationEvent","animationName","elapsedTime","pseudoElement","SyntheticClipboardEvent","clipboardData","SyntheticCompositionEvent","normalizeKey","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","translateToKey","modifierKeyToProp","Alt","Control","Meta","Shift","modifierStateGetter","keyArg","KeyboardEventInterface","location","repeat","locale","which","SyntheticKeyboardEvent","SyntheticPointerEvent","pointerId","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","SyntheticTouchEvent","touches","targetTouches","changedTouches","SyntheticTransitionEvent","propertyName","SyntheticWheelEvent","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","SyntheticToggleEvent","newState","oldState","END_KEYCODES","canUseCompositionEvent","documentMode","canUseTextInputEvent","useFallbackCompositionData","SPACEBAR_CHAR","hasSpaceKeypress","isFallbackCompositionEnd","domEventName","getDataFromCustomEvent","isComposing","supportedInputTypes","datetime","month","number","password","range","tel","week","isTextInputElement","createAndAccumulateChangeEvent","dispatchQueue","accumulateTwoPhaseListeners","listeners","activeElement$1","activeElementInst$1","runEventInBatch","processDispatchQueue","getInstIfValueChanged","getTargetInstForChangeEvent","isInputEventSupported","JSCompiler_inline_result$jscomp$282","isSupported$jscomp$inline_417","element$jscomp$inline_418","oninput","stopWatchingForValueChange","detachEvent","handlePropertyChange","handleEventsForInputEventPolyfill","getTargetInstForInputEventPolyfill","getTargetInstForClickEvent","getTargetInstForInputOrChangeEvent","objectIs","is","shallowEqual","objA","objB","keysA","keysB","currentKey","getLeafNode","getNodeForCharacterOffset","nodeEnd","nextSibling","containsNode","outerNode","innerNode","contains","compareDocumentPosition","getActiveElementDeep","defaultView","HTMLIFrameElement","contentWindow","hasSelectionCapabilities","contentEditable","skipSelectionChangeEvent","activeElementInst","lastSelection","mouseDown","constructSelectEvent","selectionStart","selectionEnd","anchorNode","getSelection","anchorOffset","focusNode","focusOffset","makePrefixMap","styleProp","eventName","prefixes","vendorPrefixes","animationend","animationiteration","animationstart","transitionrun","transitionstart","transitioncancel","transitionend","prefixedEventNames","getVendorPrefixedEventName","prefixMap","animation","transition","ANIMATION_END","ANIMATION_ITERATION","ANIMATION_START","TRANSITION_RUN","TRANSITION_START","TRANSITION_CANCEL","TRANSITION_END","topLevelEventsToReactNames","simpleEventPluginEvents","registerSimpleEvent","CapturedStacks","WeakMap","createCapturedValueAtFiber","existing","concurrentQueues","concurrentQueuesIndex","concurrentlyUpdatedLanes","finishQueueingConcurrentUpdates","endIndex","markUpdateLaneFromFiberToRoot","enqueueUpdate$1","enqueueConcurrentHookUpdate","getRootForUpdatedFiber","enqueueConcurrentRenderForLane","sourceFiber","isHidden","childLanes","_visibility","hiddenUpdates","nestedUpdateCount","rootWithNestedUpdates","emptyContextObject","FiberNode","pendingProps","elementType","refCleanup","updateQueue","memoizedProps","subtreeFlags","deletions","createFiberImplClass","shouldConstruct","createWorkInProgress","firstContext","resetWorkInProgress","createFiberFromTypeAndProps","fiberTag","itemProp","rel","onLoad","onError","src","isHostHoistableType","createFiberFromFragment","elements","createFiberFromText","content","createFiberFromPortal","portal","pendingChildren","forkStack","forkStackIndex","treeForkProvider","treeForkCount","idStack","idStackIndex","treeContextProvider","treeContextId","treeContextOverflow","pushTreeFork","totalChildren","pushTreeId","baseIdWithLeadingBit","baseLength","numberOfOverflowBits","pushMaterializedTreeId","popTreeContext","hydrationParentFiber","nextHydratableInstance","hydrationErrors","rootOrSingletonContext","HydrationMismatchException","throwOnHydrationMismatch","queueHydrationError","prepareToHydrateHostInstance","instance","listenToNonDelegatedEvent","mediaEventTypes","suppressHydrationWarning","checkForUnmatchedText","popover","onScroll","onScrollEnd","onClick","onclick","popToNextHostParent","popHydrationState","JSCompiler_temp","shouldSetTextContent","getNextHydratable","isSingletonScope","previousHydratableOnEnteringScopedSingleton","resetHydrationState","upgradeHydrationErrorsToRecoverable","queuedErrors","workInProgressRootRecoverableErrors","valueCursor","currentlyRenderingFiber$1","lastContextDependency","pushProvider","providerFiber","nextValue","popProvider","scheduleContextWorkOnParentPath","propagationRoot","propagateContextChanges","contexts","forcePropagateEntireTree","list","nextFiber","dependency","propagateParentContextChanges","isInsidePropagationBailout","currentParent","checkIfContextChanged","currentDependencies","memoizedValue","prepareToReadContext","readContext","readContextForConsumer","readContextDuringReconciliation","consumer","AbortControllerLocal","AbortController","aborted","listener","scheduleCallback$2","NormalPriority","CacheContext","createCache","refCount","releaseCache","currentEntangledListeners","currentEntangledPendingCount","currentEntangledLane","currentEntangledActionThenable","pingEngtangledActionScope","prevOnStartTransitionFinish","entangledListeners","requestTransitionLane","entangleAsyncAction","resumedCache","peekCacheFromPool","cacheResumedFromPreviousRender","workInProgressRoot","pooledCache","pushTransition","offscreenWorkInProgress","prevCachePool","pool","getSuspendedCache","cacheFromPool","SuspenseException","SuspenseyCommitException","SuspenseActionException","noopSuspenseyCommitThenable","isThenableResolved","noop$3","trackUsedThenable","thenableState","checkIfUseWrappedInAsyncCatch","shellSuspendCounter","fulfilledThenable","rejectedThenable","suspendedThenable","getSuspendedThenable","rejectedReason","hasForceUpdate","initializeUpdateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","hiddenCallbacks","callbacks","cloneUpdateQueue","createUpdate","enqueueUpdate","executionContext","entangleTransitions","queueLanes","enqueueCapturedUpdate","capturedUpdate","newFirst","newLast","didReadFromEntangledAsyncAction","suspendIfUpdateReadFromEntangledAsyncAction","processUpdateQueue","workInProgress$jscomp$0","instance$jscomp$0","pendingQueue","lastPendingUpdate","firstPendingUpdate","isHiddenUpdate","workInProgressRootRenderLanes","workInProgressRootSkippedLanes","callCallback","commitCallbacks","currentTreeHiddenStackCursor","prevEntangledRenderLanesCursor","pushHiddenContext","entangledRenderLanes","baseLanes","reuseHiddenContextOnStack","popHiddenContext","currentlyRenderingFiber","currentHook","workInProgressHook","didScheduleRenderPhaseUpdate","didScheduleRenderPhaseUpdateDuringThisPass","shouldDoubleInvokeUserFnsInHooksDEV","localIdCounter","thenableIndexCounter$1","thenableState$1","globalClientIdCounter","throwInvalidHookError","areHookInputsEqual","nextDeps","prevDeps","renderWithHooks","secondArg","nextRenderLanes","HooksDispatcherOnMount","HooksDispatcherOnUpdate","renderWithHooksAgain","finishRenderingHooks","ContextOnlyDispatcher","didRenderTooFewHooks","didReceiveUpdate","numberOfReRenders","lastEffect","stores","memoCache","HooksDispatcherOnRerender","TransitionAwareHostComponent","maybeThenable","useThenable","checkDidRenderIdHook","didRenderIdHook","bailoutHooks","resetHooksOnUnwind","mountWorkInProgressHook","hook","baseQueue","updateWorkInProgressHook","nextCurrentHook","nextWorkInProgressHook","basicStateReducer","updateReducer","updateReducerImpl","lastRenderedReducer","baseFirst","newBaseQueueFirst","newBaseQueueLast","didReadFromEntangledAsyncAction$32","revertLane","hasEagerState","eagerState","lastRenderedState","dispatch","rerenderReducer","lastRenderPhaseUpdate","updateSyncExternalStore","isHydrating$jscomp$0","snapshotChanged","updateEffectImpl","subscribeToStore","bind","pushSimpleEffect","resource","updateStoreInstance","pushStoreConsistencyCheck","renderedSnapshot","nextSnapshot","checkIfSnapshotChanged","forceStoreRerender","latestGetSnapshot","scheduleUpdateOnFiber","mountStateImpl","initialStateInitializer","updateOptimisticImpl","dispatchActionState","actionQueue","setPendingState","isRenderPhaseUpdate","actionNode","isTransition","runActionStateAction","prevState","handleActionReturnValue","onActionError","error$38","nextState","onActionSuccess","notifyActionListeners","actionStateReducer","mountActionState","initialStateProp","ssrFormState","formState","JSCompiler_inline_result$jscomp$0","inRootOrSingleton","dispatchSetState","dispatchOptimisticSetState","updateActionState","updateActionStateImpl","stateHook","currentStateHook","actionStateActionEffect","rerenderActionState","updateRef","mountEffectImpl","fiberFlags","hookFlags","mountEffect","updateEffect","updateInsertionEffect","updateLayoutEffect","imperativeHandleEffect","updateImperativeHandle","mountDebugValue","updateCallback","updateMemo","nextCreate","mountDeferredValueImpl","requestDeferredLane","updateDeferredValueImpl","prevValue","pendingState","finishedState","previousPriority","thenableWithOverride","thenableForFinishedState","dispatchSetStateInternal","requestUpdateLane","noop$2","startHostTransition","formFiber","formData","ensureFormComponentIsStateful","requestFormReset$1","existingStateHook","initialResetState","updateId","updateRefresh","refreshCache","provider","root$41","dispatchReducerAction","enqueueRenderPhaseUpdate","entangleTransitionUpdate","currentState","throwIfDuringRender","identifierPrefix","booleanOrThenable","thenableIndexCounter","unwrapThenable","coerceRef","throwOnInvalidObjectType","returnFiber","newChild","resolveLazy","lazyType","createChildReconciler","shouldTrackSideEffects","deleteChild","childToDelete","deleteRemainingChildren","currentFirstChild","mapRemainingChildren","existingChildren","useFiber","placeChild","newFiber","lastPlacedIndex","newIndex","placeSingleChild","updateTextNode","updateElement","updateFragment","updatePortal","fragment","createChild","updateSlot","oldFiber","updateFromMap","newIdx","reconcileChildFibersImpl","newChildren","resultingFirstChild","previousNewFiber","nextOldFiber","delete","reconcileChildrenArray","step","reconcileChildrenIterator","firstChildFiber","reconcileChildFibers","mountChildFibers","suspenseHandlerStackCursor","shellBoundary","pushPrimaryTreeSuspenseHandler","suspenseStackCursor","pushOffscreenSuspenseHandler","reuseSuspenseHandlerOnStack","popSuspenseHandler","findFirstSuspended","row","isSuspenseInstanceFallback","revealOrder","applyDerivedStateFromProps","getDerivedStateFromProps","nextProps","classComponentUpdater","_reactInternals","checkShouldComponentUpdate","oldProps","newProps","nextContext","shouldComponentUpdate","callComponentWillReceiveProps","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","resolveClassComponentProps","baseProps","propName$73","defaultOnUncaughtError","defaultOnCaughtError","defaultOnRecoverableError","logUncaughtError","errorInfo","onUncaughtError","componentStack","e$74","logCaughtError","boundary","onCaughtError","errorBoundary","e$75","createRootErrorUpdate","createClassErrorUpdate","initializeClassErrorUpdate","getDerivedStateFromError","componentDidCatch","legacyErrorBoundariesThatAlreadyFailed","SelectiveHydrationException","reconcileChildren","nextChildren","updateForwardRef","propsWithoutRef","bailoutOnAlreadyFinishedWork","updateMemoComponent","updateSimpleMemoComponent","checkScheduledUpdateOrContext","prevProps","updateFunctionComponent","updateOffscreenComponent","deferHiddenOffscreenComponent","cachePool","nextBaseLanes","markRef","replayFunctionComponent","updateClassComponent","contextType","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","unresolvedOldProps","oldContext","contextType$jscomp$0","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","mountHostRootWithoutHydrating","SUSPENDED_MARKER","treeContext","retryLane","mountSuspenseOffscreenState","getRemainingWorkInPrimaryTree","primaryTreeDidDefer","workInProgressDeferredLane","updateSuspenseComponent","showFallback","didSuspend","JSCompiler_temp$jscomp$0","nextInstance","overflow","fallback","mountWorkInProgressOffscreenFiber","mountSuspensePrimaryChildren","retrySuspenseComponentWithoutHydrating","dataset","digest","dgst","renderDidSuspendDelayIfPossible","primaryChildren","offscreenProps","_pendingMarkers","_retryCache","_transitions","scheduleSuspenseWorkOnFiber","initSuspenseListRenderState","isBackwards","tail","lastContentRow","tailMode","renderState","rendering","renderingStartTime","updateSuspenseListComponent","beginWork","didSuspendBefore","attemptEarlyBailoutIfNoScheduledUpdate","lazyComponent","isDehydrated","getResource","getOwnerDocumentFromRootContainer","setInitialProperties","resolveSingletonInstance","anyProps","hasAttribute","getAttribute","canHydrateInstance","canHydrateTextInstance","pooledCacheLanes","markUpdate","preloadResourceAndSuspendIfNeeded","loading","preloadResource","scheduleRetryEffect","retryQueue","workInProgressSuspendedRetryLanes","cutOffTailIfNeeded","hasRenderedATailFallback","lastTailNode","lastTailNode$113","bubbleProperties","completedWork","didBailout","newChildLanes","child$114","completeWork","pendingContext","createElementNS","innerHTML","autoFocus","cache$127","listenToAllSupportedEvents","workInProgressRootExitStatus","workInProgressRootRenderTargetTime","unwindWork","unwindInterruptedWork","interruptedWork","commitHookEffectListMount","finishedWork","firstEffect","captureCommitPhaseError","commitHookEffectListUnmount","nearestMountedAncestor$jscomp$0","nearestMountedAncestor","destroy_","commitClassCallbacks","safelyCallComponentWillUnmount","componentWillUnmount","safelyAttachRef","instanceToUse","safelyDetachRef","error$143","commitHostMount","focus","srcSet","srcset","commitHostUpdate","domElement","lastProps","propKey","lastProp","setProp","propKey$205","propKey$221","propKey$226","propKey$231","setPropOnCustomElement","propKey$236","updateProperties","isHostParent","getHostSibling","insertOrAppendPlacementNodeIntoContainer","before","insertBefore","_reactRootContainer","insertOrAppendPlacementNode","commitHostSingletonAcquisition","singleton","attributes","removeAttributeNode","offscreenSubtreeIsHidden","offscreenSubtreeWasHidden","needsFormReset","PossiblyWeakSet","WeakSet","nextEffect","commitLayoutEffectOnFiber","finishedRoot","recursivelyTraverseLayoutEffects","__reactInternalSnapshotBeforeUpdate","error$142","commitSuspenseHydrationCallbacks","readyState","_reactRetry","registerSuspenseInstanceRetry","retryDehydratedSuspenseBoundary","prevOffscreenSubtreeWasHidden","recursivelyTraverseReappearLayoutEffects","detachFiberAfterEffects","hostParent","hostParentIsContainer","recursivelyTraverseDeletionEffects","commitDeletionEffectsOnFiber","deletedFiber","onCommitFiberUnmount","prevHostParent","prevHostParentIsContainer","releaseSingletonInstance","clearSuspenseBoundary","retryIfBlockedOn","attachSuspenseRetryListeners","wakeables","retryCache","getRetryCache","wakeable","retry","resolveRetryWakeable","recursivelyTraverseMutationEffects","root$jscomp$0","parentFiber","commitMutationEffectsOnFiber","currentHoistableRoot","commitReconciliationEffects","hoistableRoot","currentResource","getElementsByTagName","querySelector","maybeNodes","getHydratableHoistableCache","property","httpEquiv","charSet","mountHoistable","acquireResource","tagCaches","getHoistableRoot","recursivelyResetForms","globalMostRecentFallbackTime","wasHidden","prevOffscreenSubtreeIsHidden","recursivelyTraverseDisappearLayoutEffects","display","hostParentFiber","parent$144","parent$146","reset","finishedRoot$jscomp$0","includeWorkInProgressEffects","commitOffscreenPassiveMountEffects","previousCache","commitCachePassiveMountEffect","recursivelyTraversePassiveMountEffects","committedLanes","committedTransitions","commitPassiveMountOnFiber","_finishedWork$memoize2","onPostCommit","passiveEffectDuration","recursivelyTraverseAtomicPassiveEffects","recursivelyTraverseReconnectPassiveEffects","committedLanes$jscomp$0","committedTransitions$jscomp$0","suspenseyCommitFlag","recursivelyAccumulateSuspenseyCommit","accumulateSuspenseyCommitOnFiber","suspendedState","matchMedia","getStyleKey","getStylesheetSelectorFromKey","_p","onUnsuspend","stylesheetPropsFromRawProps","preloadPropsMap","adoptPreloadPropsForStylesheet","linkInstance","stylesheets","suspendResource","previousHoistableRoot","detachAlternateSiblings","previousFiber","recursivelyTraversePassiveUnmountEffects","commitPassiveUnmountEffectsInsideOfDeletedTree_begin","commitPassiveUnmountOnFiber","recursivelyTraverseDisconnectPassiveEffects","deletedSubtreeRoot","DefaultAsyncDispatcher","getCacheForType","resourceType","cacheForType","PossiblyWeakMap","workInProgressSuspendedReason","workInProgressThrownValue","workInProgressRootDidSkipSuspendedSiblings","workInProgressRootIsPrerendering","workInProgressRootDidAttachPingListener","workInProgressRootInterleavedUpdatedLanes","workInProgressRootPingedLanes","workInProgressRootConcurrentErrors","workInProgressRootDidIncludeRecursiveRenderUpdate","workInProgressTransitions","pendingEffectsStatus","pendingEffectsRoot","pendingFinishedWork","pendingEffectsLanes","pendingEffectsRemainingLanes","pendingPassiveTransitions","pendingRecoverableErrors","suspenseHandler","cancelPendingCommit","prepareFreshStack","markRootSuspended","ensureRootIsScheduled","performWorkOnRoot","forceSync","shouldTimeSlice","expiredLanes","exitStatus","prevExecutionContext","prevDispatcher","pushDispatcher","prevAsyncDispatcher","pushAsyncDispatcher","thrownValue","throwAndUnwindWorkLoop","replaySuspendedUnitOfWork","hostFiber","completeUnitOfWork","resetWorkInProgressStack","workLoopConcurrentByScheduler","thrownValue$169","handleThrow","renderRootConcurrent","renderRootSync","renderWasConcurrent","isRenderConsistentWithExternalStores","errorRecoveryDisabledLanes","wasRootDehydrated","timeoutHandle","scheduleTimeout","commitRootWhenReady","recoverableErrors","transitions","didIncludeRenderPhaseUpdate","updatedLanes","suspendedRetryLanes","didSkipSuspendedSiblings","suspendedCommitReason","completedRenderStartTime","completedRenderEndTime","unsuspend","insertSuspendedStylesheets","commit","stylesheetTimer","waitForCommitToBeReady","commitRoot","didAttemptEntireTree","expirationTimes","index$4","flushSyncWorkAcrossRoots_impl","cancelTimeout","allEntangledLanes","index$2","shouldYieldForPrerendering","unitOfWork","workLoopSync","thrownValue$167","performUnitOfWork","suspendedReason","rootRenderLanes","attachPingListener","markerInstances","cause","wrapperError","throwException","unwindUnitOfWork","skipSiblings","flushPendingEffects","finishedLanes","remainingLanes","previouslyPendingLanes","index$5","hiddenUpdatesForLane","markRootFinished","callbackNode","callbackPriority","flushPassiveEffects","eventsEnabled","_enabled","selection","rangeCount","indexWithinAnchor","indexWithinFocus","selectionInformation","focusedElem","selectionRange","resolvedPrevProps","clearContainerSparingly","commitBeforeMutationEffects","flushMutationEffects","flushLayoutEffects","flushSpawnedWork","rootMutationHasEffect","priorSelectionInformation","curFocusedElem","priorFocusedElem","priorSelectionRange","win","start$jscomp$0","end$jscomp$0","startMarker","endMarker","createRange","setStart","removeAllRanges","addRange","setEnd","scrollLeft","top","scrollTop","rootHasLayoutEffect","releaseRootPooledCache","onCommitFiberRoot","onRecoverableError","recoverableError","wasDelayedCommit","renderPriority","onPostCommitFiberRoot","captureCommitPhaseErrorOnRoot","rootFiber","pingCache","threadIDs","pingSuspendedRoot","retryTimedOutBoundary","boundaryFiber","firstScheduledRoot","lastScheduledRoot","didScheduleMicrotask","mightHavePendingSyncWork","isFlushingWork","currentEventTransitionLane","scheduleMicrotask","processRootScheduleInImmediateTask","processRootScheduleInMicrotask","syncTransitionLanes","onlyLegacy","didPerformSomeWork","root$174","performSyncWorkOnRoot","currentPopstateTransitionEvent","scheduleTaskForRootDuringMicrotask","index$3","performWorkOnRootViaSchedulerTask","didTimeout","originalCallbackNode","workInProgressRootRenderLanes$jscomp$0","coerceFormActionProp","actionProp","createFormDataWithSubmitter","submitter","temp","FormData","i$jscomp$inline_1528","eventName$jscomp$inline_1529","nonDelegatedEvents","eventSystemFlags","_dispatchQueue$i","previousInstance","i$jscomp$0","_dispatchListeners$i","targetElement","listenerSetKey","addTrappedEventListener","listenToNativeEvent","isCapturePhaseListener","listeningMarker","rootContainerElement","targetContainer","listenerWrapper","dispatchDiscreteEvent","dispatchContinuousEvent","capture","passive","dispatchEventForPluginEventSystem","targetInst$jscomp$0","ancestorInst","nodeTag","grandTag","SyntheticEventCtor","inCapturePhase","accumulateTargetOnly","reactEventName","lastHostComponent","_instance","createDispatchListener","parentWindow","getParent","accumulateEnterLeaveListenersForEvent","getTargetInstFunc","handleEventFunc","fallbackData","eventType","getNativeBeforeInputChars","char","getFallbackBeforeInputChars","maybeTargetInst","formAction","extractEvents$1","targetFiber","captureName","_instance2","_instance3","NORMALIZE_NEWLINES_REGEX","NORMALIZE_NULL_AND_REPLACEMENT_REGEX","normalizeMarkupForTextOrAttribute","markup","serverText","clientText","formEncType","formMethod","formTarget","encType","__html","muted","endsWith","hasSrc","hasSrcSet","propValue$188","parentNamespace","dangerouslySetInnerHTML","localPromise","queueMicrotask","handleErrorInNextTick","parentInstance","suspenseInstance","possiblePreambleContribution","nextNode","nextNode$jscomp$0","targetInstance","previousSibling","rootContainerInstance","preconnectsSet","getRootNode","previousDispatcher","previousWasRendering","wasRendering","formInst","preconnectAs","globalDocument","preloadSelector","getScriptKey","getScriptSelectorFromKey","scripts","adoptPreloadPropsForScript","link","insertStylesheet","limitedEscapedHref","currentProps","styles$244","resource$245","hrefLang","preloadProps","preloadStylesheet","rawProps","styleProps","instance$250","nodes","prior","stylesheetProps","scriptProps","keyAttribute","caches","nodeKey","precedencesByRoot","insertStylesheetIntoRoot","precedences","FiberRootNode","hydrate","incompleteTransitions","createFiberRoot","initialChildren","hydrationCallbacks","isStrictMode","transitionCallbacks","getContextForSubtree","parentComponent","updateContainerImpl","markRetryLaneImpl","markRetryLaneIfNotHydrated","attemptContinuousHydration","blockedOn","findInstanceBlockingEvent","return_targetInst","clearIfContinuousEvent","queuedFocus","accumulateOrCreateContinuousQueuedReplayableEvent","queuedDrag","queuedMouse","queuedPointers","queuedPointerCaptures","queueIfContinuousEvent","discreteReplayableEvents","findInstanceBlockingTarget","hasScheduledReplayAttempt","queuedExplicitHydrationTargets","existingQueuedEvent","targetContainers","attemptExplicitHydrationTarget","queuedTarget","runWithPriority","attemptReplayContinuousQueuedEvent","queuedEvent","nextBlockedOn","nativeEventClone","attemptReplayContinuousQueuedEventInMap","replayUnblockedEvents","scheduleCallbackIfUnblocked","unblocked","lastScheduledReplayQueue","scheduleReplayQueueIfNeeded","formReplayingQueue","submitterOrAction","unblock","$$reactFormReplay","formProps","ReactDOMRoot","internalRoot","_internalRoot","ReactDOMHydrationRoot","unmount","unstable_scheduleHydration","isomorphicReactPackageVersion$jscomp$inline_1785","componentOrElement","parentA","parentB","didFindChild","child$0","findCurrentFiberUsingSlowPath","internals$jscomp$inline_2256","bundleType","rendererPackageName","currentDispatcherRef","reconcilerVersion","hook$jscomp$inline_2257","isDisabled","supportsFiber","inject","reactDomClient_production","createRoot","unstable_strictMode","unstable_transitionCallbacks","hydrateRoot","clientModule","useSyncExternalStoreShim_production_min","shimModule","withSelector_production_min","useSyncExternalStoreWithSelector","hasValue","withSelectorModule","batch","getBatch","ContextKey","gT","getContext","_gT$ContextKey","React.createContext","contextMap","realContext","ReactReduxContext","createReduxContextHook","useReduxContext","refEquality","createSelectorHook","useDefaultReduxContext","selector","equalityFnOrOptions","equalityFn","stabilityCheck","noopCheck","store","subscription","getServerState","globalStabilityCheck","globalNoopCheck","wrappedSelector","selectedState","addNestedSub","getState","useSelector","reactIs_production_min","AsyncMode","ConcurrentMode","ContextProvider","Element","ForwardRef","Memo","Portal","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isMemo","isProfiler","isSuspense","isValidElementType","typeOf","ContextConsumer","Lazy","SuspenseList","isPortal","isSuspenseList","getModuleId","nullListeners","notify","useIsomorphicLayoutEffect","React.useLayoutEffect","React.useEffect","serverState","contextValue","React.useMemo","unsubscribe","subscriptionsAmount","selfSubscribed","handleChangeWrapper","onStateChange","trySubscribe","clear","isSubscribed","createListenerCollection","tryUnsubscribe","cleanupListener","removed","notifyNestedSubs","getListeners","createSubscription","previousState","React.createElement","createStoreHook","useStore","createDispatchHook","useDefaultStore","useDispatch","newBatch","symbol_observable_default","observable","randomString","actionTypes_default","INIT","REPLACE","PROBE_UNKNOWN_ACTION","createStore","preloadedState","enhancer","currentReducer","currentListeners","nextListeners","listenerIdCounter","isDispatching","ensureCanMutateNextListeners","listenerId","proto","isPlainObject","replaceReducer","nextReducer","outerSubscribe","observeState","observerAsObserver","compose","funcs","arg","createThunkMiddleware","extraArgument","_ref","thunk","withExtraArgument","composeWithDevTools","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","_len","_key","BANDS","WINDOWS","LOAD_STYLE","MEDIA_TAG_REQUEST_STATUS","UTF8_ELLIPSIS","LETTERS","DEFAULT_SKIN","VISUALIZERS","VISUALIZER_ORDER","TIME_MODE","MEDIA_STATUS","PLAYER_MEDIA_STATUS","imgFromUrl","img","Image","getTimeObj","minutesFirstDigit","minutesSecondDigit","secondsFirstDigit","secondsSecondDigit","digits","getTimeStr","truncate","SECTION_REGEX","PROPERTY_REGEX","parseIni","section","clamp","base64FromDataArray","dataArray","btoa","downloadURI","uri","download","click","toPercent","percentToRange","percentToIndex","rebound","oldMin","oldMax","newMin","newMax","oldValue","normalizeEqBand","denormalizeEqBand","merge","segment","newValues","shuffle","sorted","moveSelected","isSelected","newArr","replaceAtIndex","newValue","counter","objectMap","modified","calculateBoundingBox","windows","windowSizes","bottom","getWindowSize","scrollWidth","offsetWidth","clientWidth","scrollHeight","offsetHeight","clientHeight","getPos","touch","getX","getY","defaultPlaylistState","trackOrder","currentTrack","lastSelectedIndex","selectedTracks","defaultWindowsState","focused","positionsAreRelative","genWindows","WINDOWS_MAIN","open","shade","canResize","canShade","canDouble","hotkey","WINDOWS_EQUALIZER","WINDOWS_PLAYLIST","WINDOWS_MILKDROP","browserWindowSize","windowOrder","milkdropEnabled","getSerializedState","Utils.objectMap","hidden","defaultState","timeMode","timeElapsed","volume","balance","defaultMemoize_1","defaultMemoize","defaultEqualityCheck","equalityCheck","lastArgs","lastResult","areArgumentsShallowlyEqual","createSelector_1","memoize","memoizeOptions","_len2","_key2","recomputations","resultFunc","every","dep","dependencyTypes","getDependencies","memoizedResultFunc","resetRecomputations","createSelectorCreator","defaultSkinGenExColors","itemBackground","itemForeground","windowBackground","buttonText","windowText","divider","playlistSelection","listHeaderBackground","listHeaderText","listHeaderFrameTopAndLeft","listHeaderFrameBottomAndRight","listHeaderFramePressed","listHeaderDeadArea","scrollbarOne","scrollbarTwo","pressedScrollbarOne","pressedScrollbarTwo","scrollbarDeadArea","listTextHighlighted","listTextHighlightedBackground","listTextSelected","listTextSelectedBackground","defaultDisplayState","doubled","marqueeStep","disableMarquee","llama","closed","working","skinImages","images","skinColors","skinCursors","skinPlaylistStyle","skinRegion","visualizerStyle","dummyVizData","playlistScrollPosition","skinGenLetterWidths","skinGenExColors","additionalVisualizers","zIndex","newCursors","getVisualizerStyle","createSelector","visualizationStyle","defaultUserInput","bandFocused","scrubPosition","userMessage","auto","sliders","preamp","defaultSettingsState","availableSkins","browser","condition","argIndex","framesToPop","genStringFromFileReference","fileReference","readAsText","promptForFileReferences","accept","directory","fileInput","webkitdirectory","mozdirectory","curUrlFromByteArray","Utils.base64FromDataArray","trackName","defaultName","urlIsBlobUrl","lastSegment","FileUtils.filenameFromUrl","Utils.weakMapMemoize","TransitionType","defaultMilkdropState","overlay","presetHistory","presets","currentPresetIndex","butterchurn","transitionType","DEFAULT","randomize","cycling","reducers","reducerKeys","finalReducers","finalReducerKeys","shapeAssertionError","assertReducerShape","hasChanged","previousStateForKey","nextStateForKey","combineReducers","userInput","windowId","windowState","absolute","newPosition","positions","serializedState","serializedW","rest","newSkinCursors","settings","skins","equalizer","newSliders","band","playlist","newSelectedTracks","clickedIndex","actionIds","ids","trackId","reverse","atIndex","newMode","elapsed","network","connected","tracks","mediaTagsRequestStatus","newTrack","bitrate","numberOfChannels","albumArtUrl","kbps","khz","channels","milkdrop","addToHistory","preset","Utils.replaceAtIndex","json","noshadeStyle","borderWidth","backgroundColor","Font","_jsx","Hr","Div","Table","Playlist","_jsxs","_Fragment","align","className","border","cellSpacing","cellPadding","face","numberOfTracks","averageTrackLength","playlistLengthMinutes","playlistLengthSeconds","getSliders","getEqfData","Utils.denormalizeEqBand","hz60","hz170","hz310","hz600","hz1000","hz3000","hz6000","hz12000","hz14000","hz16000","getTracks","getTrackUrl","getTrackOrder","getTrackCount","getOrderedTracks","getPlaylistTracks","getUserTracks","metaData","getOrderedTrackObjects","getSelectedTrackIds","getSelectedTrackIdsSet","selectedTrackArray","getSelectedTrackObjects","selectedIds","runningTimeFromTracks","getTotalRunningTime","getSelectedRunningTime","getRunningTimeMessage","totalRunningTime","selectedRunningTime","Utils.getTimeStr","getCurrentTrackIndex","getCurrentTrackNumber","currentTrackIndex","getCurrentTrackId","getGenWindows","getWindowOpen","getWindowHidden","milkdropWindowEnabled","getWindowShade","getWindowPositions","getNumberOfVisibleTracks","getWindowSize_","playlistSize","getOverflowTrackCount","trackCount","numberOfVisibleTracks","_getPlaylistScrollPosition","getPlaylistScrollPosition","overflowTrackCount","getScrollOffset","Utils.percentToIndex","getVisibleTrackIds","getAllTracksAreVisible","getTrackIsVisibleFunction","visibleTrackIds","getDuration","getTrackDisplayName","TrackUtils.trackName","fromTracks.getTrackDisplayName","getCurrentTrackDisplayName","getName","getPlayerMediaStatus","getMediaStatus","getMediaIsPlaying","getCurrentTrack","getCurrentlyPlayingTrackIdIfLoaded","mediaIsPlaying","getCurrentTrackInfo","getMinimalMediaText","trackNumber","getMediaText","minimalMediaText","getNumberOfTracks","getPlaylistDuration","getPlaylistURL","playlistDuration","getDisplayName","createPlaylistURL","createPlaylistHTML","getWPixelSize","doubledMultiplier","pix","getFocusedWindow","getDoubled","getLlamaMode","getZIndex","getWindowSizes","getWindowPixelSize","sizes","getNormalizedWindowOrder","getWindowsInfo","getWindowGraph","bottoms","rights","graph","edges","tops","lefts","below","isToTheLeft","isToTheRight","isAbove","isBelow","defaultPlaylistStyle","normal","normalbg","selectedbg","font","getSkinColors","getSkinPlaylistStyle","fromDisplay.getVisualizerStyle","getVolume","getBalance","getShuffle","getRepeat","getChannels","getTimeElapsed","getEqualizerEnabled","getBrowserWindowSize","getOpenWindows","Utils.objectFilter","predicate","newObj","getStackedLayoutPositions","openWindows","getUserInputFocus","getUserInputScrubPosition","getMarqueeText","defaultText","direction","MarqueeUtils.getBalanceText","seekToPercent","MarqueeUtils.getPositionText","db","toFixed","hz","ensureSign","MarqueeUtils.getEqText","mediaText","getKbps","getKhz","getMilkdropMessage","getMilkdropEnabled","getMilkdropDesktopEnabled","getMilkdropFullscreenEnabled","getButterchurn","getPresetTransitionType","getCurrentPresetIndex","getCurrentPreset","getPresetNames","getPresetOverlayOpen","getPresetsAreCycling","getRandomizePresets","getClosed","getSkinRegion","getPreampLineImage","EQ_PREAMP_LINE","Utils.imgFromUrl","getLineColorsImage","EQ_GRAPH_LINE_COLORS","getMarqueeStep","getNetworkConnected","getTimeMode","getLoading","getWorking","getAvaliableSkins","SNAP_DISTANCE","box","near","snap","boxA","boxB","overlapY","overlapX","snapDiff","newPos","snapDiffManyToMany","bs","applyDiff","withWindowGraphIntegrity","Selectors.getWindowGraph","originalSizes","Selectors.getWindowSizes","newSizes","sizeDiff","original","positionDiff","newGraph","above","neighbors","walkRight","nodeSizeDiff","walkDown","getPositionDiff","newPositions","Selectors.getWindowPositions","updateWindowPositions","toggleDoubleSizeMode","toggleEqualizerShadeMode","toggleMainWindowShadeMode","togglePlaylistShadeMode","closeWindow","setFocusedWindow","setWindowSize","toggleWindow","centerWindows","windowsInfo","Selectors.getWindowsInfo","getOpen","Selectors.getWindowOpen","offsetLeft","scrollX","offsetTop","scrollY","bounding","Utils.calculateBoundingBox","boxHeight","boxWidth","move","ceil","browserWindowSizeChanged","ensureWindowsAreOnScreen","stackWindows","Selectors.getStackedLayoutPositions","Utils.getWindowSize","boundingHeight","moveY","moveX","innerHeight","innerWidth","centerWindowsInView","PRESET_VALUES","HEADER","FONT_LOOKUP","$","imageConstFromChar","characterSprites","sprites","BALANCE","CBUTTONS","MAIN","MONOSTER","NUMBERS","NUMS_EX","PLAYPAUS","PLEDIT","EQ_EX","EQMAIN","POSBAR","SHUFREP","TITLEBAR","VOLUME","GEN","getFilenameRegex","base","getFileFromZip","zip","lastFile","contents","getSpriteUrisFromImg","canvas","willReadFrequently","sprite","drawImage","image","toDataURL","getImgFromFilename","getFileExtension","createImageBitmap","URL","createObjectURL","fallbackGetImgFromBlob","ee","getImgFromBlob","RIFF_MAGIC","getCursorFromFilename","item","aniData","FileUtils.curUrlFromByteArray","getPlaylistStyle","playlistStyle","ini","Utils.parseIni","colorKey","getGenExColors","getColorAt","getImageData","shallowMerge","objs","CURSORS","genVizColors","viscolor","SkinParserUtils","regex","rgb","parseViscolors","genImages","imageObjs","SKIN_SPRITES","genCursors","cursorObjs","cursorName","genRegion","region","regionStr","iniData","numpoints","pointlist","pointCounts","points","pairedValues","pointPairs","pointIndex","validPolygons","numStr","polygon","regionParser","genGenTextSprites","getLetters","letter","nextBackground","letterWidths","TinyQueue","defaultCompare","_down","tinyqueueModule","_up","best","cropPlaylist","Selectors.getSelectedTrackObjects","selectedTrackIds","Selectors.getSelectedTrackIds","removeSelectedTracks","removeAllTracks","reverseList","randomizeList","sortListByTitle","Selectors.getTracks","Selectors.getTrackOrder","iteratee","aKey","bKey","setPlaylistScrollPosition","scrollNTracks","Selectors.getOverflowTrackCount","currentOffset","Selectors.getScrollOffset","scrollPlaylistByDelta","totalPixelHeight","percentDelta","scrollUpFourTracks","scrollDownFourTracks","dragSelected","Selectors.getSelectedTrackIdsSet","firstSelected","findIndex","lastSelected","findLastIndex","normalizedOffset","invertSelection","selectZero","selectAll","_snapBandValue","BAND_MID_POINT_VALUE","setEqBand","_setEqTo","setEqToMax","setEqToMid","setEqToMin","setPreamp","toggleEq","toggleEqAuto","loadQueue","threads","_queue","_availableThreads","_run","t1","invariant","addTracksFromReferences","fileReferences","loadStyle","loadMediaFiles","SKIN_FILENAME_MATCHER","EQF_FILENAME_MATCHER","loadFilesFromReferences","setSkinFromBlob","genArrayBufferFromFileReference","eqf","Int8Array","nameStart","nameEnd","valueName","setEqFromObject","setEqFromFileReference","requireJSZip","alert","JSZip","skinData","zipFileBuffer","cursors","genTextSprites","genExColors","genLetterWidths","genTextImages","skinParser","setSkinFromUrl","response","fetch","ok","statusText","_openFileDialog","expectedType","firstFileName","openEqfFileDialog","openMediaFileDialog","openSkinFileDialog","loadMedia","handleTrackDropEvent","canonicalUrl","audio","durationChange","errorHandler","genMediaDuration","trackIsVisible","fetchMediaDuration","fetchMediaTags","queueFetchingMediaTags","loadMediaFile","requireMusicMetadata","musicMetadata","skipPostHeaders","fetchFromUrl","parseBlob","genMediaTags","byteArray","Utils.normalizeEqBand","downloadPreset","ending","creator","Utils.base64FromArrayBuffer","Utils.downloadURI","downloadHtmlPlaylist","el","DIR_SUPPORT","addFilesAtIndex","nextIndex","addDirAtIndex","addFilesFromUrl","handleAddUrlEvent","addFilesFromList","handleLoadListEvent","saveFilesToList","handleSaveListEvent","droppedFiles","playTrack","Selectors.getMediaStatus","playTrackNow","play","nextN","nextTrackId","nextId","getRandomTrackId","currentIndex","Utils.clamp","Selectors.getNextTrackId","seekToTime","Selectors.getDuration","seekForward","Selectors.getTimeElapsed","seekBackward","setVolume","adjustVolume","volumeDiff","scrollVolume","setBalance","toggleRepeat","toggleShuffle","toggleTimeMode","normalizePresetTypes","butterchurnPresetObject","getPreset","getButterchrunPresetObject","butterchurnPresetUrl","loadPresets","presetsLength","Selectors.getRandomizePresets","selectRandomPreset","requestPresetAtIndex","IMMEDIATE","appendPresetFileList","fileList","convertPreset","MILK_EXT","JSON_EXT","FileUtils.genStringFromFileReference","selectNextPreset","Selectors.getCurrentPresetIndex","selectPreviousPreset","handlePresetDrop","toggleRandomizePresets","togglePresetCycling","scheduleMilkdropMessage","toggleVisualizerStyle","minimize","setFocus","unsetFocus","focusBand","loadDefaultSkin","toggleMilkdropDesktop","Selectors.getMilkdropDesktopEnabled","setMilkdropFullscreen","toggleMilkdropFullscreen","Selectors.getMilkdropFullscreenEnabled","togglePresetOverlay","Selectors.getPresetOverlayOpen","stepMarquee","mediaMiddleware","nextTrack","Selectors.getCurrentTrackId","Selectors.getVolume","Selectors.getBalance","seekToPercentComplete","Selectors.getTrackUrl","loadFromUrl","disableEq","enableEq","Selectors.getEqualizerEnabled","slider","actionsDenylist","createWebampStore","actionEmitter","customMiddlewares","stateOverrides","extras","middlewares","trigger","createStore2","middlewareAPI","chain","middleware","applyMiddleware","fullscreenEnabled","fullscreenElement","requestFullscreen","exitFullscreen","fullscreenchange","fullscreenerror","fullscreen","webkit","moz","vendor","fscreen","requestFullscreenFunction","fullscreenPseudoClass","onfullscreenchange","onfullscreenerror","FullScreen","onChange","detectFullScreen","isEnabled","usePromiseValueOrNull","disposed","resolvedValue","cursorPositionRef","listenerRefCount","globalMouseMoveHandler","useTypedSelector","useActionCreator","actionCreator","useTypedDispatch","hasOwn","classNames","classes","appendClass","parseValue","newClass","currentSize","widthOnly","passThroughProps","setMouseDown","mouseStart","setMouseStart","handleMove","Utils.getX","Utils.getY","newSize","handleMouseUp","handleMouseDown","onMouseDown","onTouchStart","FocusTarget","onKeyDown","focusedWindowId","Selectors.getFocusedWindow","Actions.setFocusedWindow","focusHandler","setRef","mutations","mutation","removedNodes","subtree","childList","disconnect","onPointerDown","onFocus","tabIndex","ACTIVE_CLASSNAME","WinampButton","requireClicksOriginateLocally","originalOnPointerDown","htmlProps","active","setActive","releasePointerCapture","onRelease","classnames","onPointerEnter","CustomEvent","Text","letters","React.Fragment","GenWindow","Actions.setWindowSize","Actions.closeWindow","Selectors.getWindowPixelSize","focusedWindow","windowSize","Selectors.getWindowSize","ResizeTarget","TRANSITION_TYPE_DURATIONS","USER_PRESET","Visualizer","analyser","Selectors.getVisualizerStyle","playing","Selectors.getMediaIsPlaying","Selectors.getButterchurn","trackTitle","Selectors.getCurrentTrackDisplayName","currentPreset","Selectors.getCurrentPreset","Selectors.getPresetTransitionType","Selectors.getMilkdropMessage","isEnabledVisualizer","canvasRef","visualizer","setVisualizer","_visualizer","createVisualizer","meshWidth","meshHeight","pixelRatio","devicePixelRatio","onlyUseWASM","connectAudio","setRendererSize","hasLoadedPreset","loadPreset","launchSongTitleAnim","lastShownMessage","shouldAnimate","animationFrameRequest","loop","requestAnimationFrame","cancelAnimationFrame","Background","innerRef","LOADING_STYLE","background","OUTER_WRAPPER_STYLE","padding","INNER_WRAPPER_STYLE","whiteSpace","fontSize","presetIndexFromListIndex","listIndex","PresetOverlay","presetKeys","Selectors.getPresetNames","Actions.requestPresetAtIndex","Actions.togglePresetOverlay","Actions.appendPresetFileList","unmountedRef","useUnmountedRef","selectedListIndex","setSelectedListIndex","maxListIndex","renderList","maxVisibleRows","rowsToShow","startIndex","maxRangeSize","indexToCenter","rangeSize","halfRangeSize","getRangeCenteredOnIndex","presetElms","presetIndex","isCurrent","lineHeight","loadLocalDir","handleFocusedKeyboardInput","handleNode","maxHeight","listStyleType","margin","suppress","dropEffect","effectAllowed","DropTarget","handleDrop","onWheelActive","divRef","Actions.droppedFiles","handleWheel","onDrop","getBoundingClientRect","onDragStart","onDragEnter","onDragOver","div","Parent","LinkNode","Node","ContextMenu","Selectors.getZIndex","ContextMenuWraper","renderContents","openPosition","setOpenPosition","closeMenu","handleGlobalClick","handleRightClick","onContextMenu","MilkdropContextMenu","desktop","toggleDesktop","Actions.toggleMilkdropDesktop","toggleFullscreen","Actions.toggleMilkdropFullscreen","ContextMenuWrapper","Desktop","React.memo","desktopNode","React.useState","classList","Milkdrop","presetsAreCycling","Selectors.getPresetsAreCycling","Actions.selectNextPreset","Actions.handlePresetDrop","setFullscreen","Actions.setMilkdropFullscreen","handleKeyDown","Actions.selectPreviousPreset","toggleRandomize","Actions.toggleRandomizePresets","Actions.scheduleMilkdropMessage","toggleCycling","Actions.togglePresetCycling","useKeyHandler","intervalId","setInterval","clearInterval","screenSize","screen","useScreenSize","setSize","useWindowSize","toggleFullScreenIfEnabled","genWindowSize","Fullscreen","onDoubleClick","PlaybackContextMenu","Actions.previous","Actions.play","Actions.pause","Actions.stop","Actions.next","Actions.seekForward","Actions.seekBackward","Actions.nextN","SkinContextMenu","Actions.loadDefaultSkin","Actions.openSkinFileDialog","setSkin","Actions.setSkinFromUrl","Selectors.getAvaliableSkins","skin","OptionsContextMenu","Actions.toggleTimeMode","Actions.toggleDoubleSizeMode","Actions.toggleRepeat","Actions.toggleShuffle","Selectors.getDoubled","Selectors.getTimeMode","Selectors.getRepeat","Selectors.getShuffle","SkinsContextMenu","MainContextMenu","filePickers","networkConnected","Selectors.getNetworkConnected","Selectors.getGenWindows","Actions.close","Actions.openMediaFileDialog","Actions.loadMediaFiles","Actions.toggleWindow","menuOpened","isMilkdropEnabled","Selectors.getMilkdropEnabled","picker","requiresNetwork","filePicker","contextMenuName","abuts","wouldMoveTo","SnapUtils.snap","useHandleMouseDown","propsWindows","Selectors.getWindowHidden","Selectors.getBrowserWindowSize","Actions.updateWindowPositions","draggingState","setDraggingState","boundingBox","moving","stationary","handleMouseMove","proposedDiff","proposedWindows","SnapUtils.applyDiff","proposedBox","SnapUtils.snapDiffManyToMany","withinDiff","snapWithin","SnapUtils.snapWithinDiff","finalDiff","diffs","metaDiff","SnapUtils.applyMultipleDiffs","windowPositionDiff","movingSet","findAllConnected","areConnected","candidates","checkNode","candidate","boxes","firstNode","SnapUtils.boundingBox","WindowManager","onBlur","touchAction","_deburrLetter","freeGlobal","freeSelf","_Symbol","isArray_1","objectProto","nativeObjectToString","symToStringTag","toStringTag","getRawTag","isOwn","unmasked","baseGetTag","arrayMap","symbolProto","symbolToString","baseToString","isObjectLike","isSymbol","deburrLetter","reLatin","reComboMark","characterClassName","deburr","Character","passThrough","MiniTime","toggle","timeObj","showMinus","blinking","ClickedDiv","clicked","setClicked","ContextMenuTarget","setSelected","rect","pageXOffset","pageYOffset","getNodeOffset","renderMenu","FFT","bitrevtable","envelope","equalize","temp1","temp2","cossintable","static","NFREQ","samplesOut","initBitRevTable","initCosSinTable","initEnvelopeTable","initEqualizeTable","Float32Array","bias","invHalfNfreq","samplesIn","power","mult","TWO_PI","sin","HALF_PI","dftsize","theta","PI","cos","timeToFrequencyDomain","inWavedata","outSpectraldata","idx","real","imag","wpr","wpi","wr","wi","hdftsize","tempr","tempi","wtemp","sqrt","VisPaintHandler","_vis","_ctx","vis","prepare","paintFrame","dispose","BarPaintHandler","saPeaks","saData2","saData","saFalloff","barPeak","uVar12","falloff","peakFalloff","pushDown","inWaveData","outSpectralData","_analyser","_fft","_color","_colorPeak","_bar","_peak","_16h","_bufferLength","_dataArray","colorssmall","colorssmall2","_renderHeight","_smallVis","_pixelDensity","_doubled","_isMWOpen","paintBar","frequencyBinCount","renderHeight","smallVis","pixelDensity","isMWOpen","paintAnalyzer","Int16Array","coloring","paintBarFire","paintBarLine","paintBarNormal","saPeakFalloff","ctx","fillStyle","fillRect","logMaxFreqIndex","targetSize","maxWidth","fft","getByteTimeDomainData","processFFT","logScaledIndex","scaledIndex","index1","index2","maxFreqIndex","frac2","frac1","bandwidth","x2","barHeight","peakHeight","peaks","peakY","slice1st","sliceWidth","sliceNumber","WavePaintHandler","_lastX","_lastY","_pixelRatio","paintWav","fftSize","paintOscilloscope","imageSmoothingEnabled","mozImageSmoothingEnabled","webkitImageSmoothingEnabled","msImageSmoothingEnabled","amplitude","colorIndex","yadjust","oscStyle","NoVisualizerHandler","cleared","Vis","Selectors.getSkinColors","audioStatus","Selectors.getWindowShade","Actions.toggleVisualizerStyle","windowShade","renderWidthBG","bgCanvas","bgColor","fgColor","distance","bgCanvasCtx","preRenderBg","setCanvas","painter","sa","canvasCtx","clearRect","animationRequest","ActionButtons","Balance","Actions.setBalance","Actions.setFocus","Actions.unsetFocus","onPointerUp","offsetFromBalance","MainBalance","backgroundPosition","Close","setFocusDouble","mouseUp","ClutterBar","Eject","toggleEqualizer","EqToggleButton","handleClick","windowOpen","togglePlaylist","PlaylistToggleButton","CharacterString","chars","Kbps","Selectors.getKbps","Khz","Selectors.getKhz","isLong","loopText","padEnd","Marquee","Selectors.getMarqueeText","Selectors.getMarqueeStep","Actions.stepMarquee","dragOffset","dragging","mouseDownX","setMouseDownX","setDragOffset","xStart","cleanedUp","React.useCallback","useDragX","pixels","mod","SEPARATOR","stepOffset","offsetPixels","stepping","setStepping","stepHandle","steppingTimeout","useStepper","willChange","MonoStereo","Selectors.getChannels","Position","displayedPosition","Selectors.getUserInputScrubPosition","Selectors.getUserInputFocus","usePosition","onInput","Repeat","Shade","Actions.toggleMainWindowShadeMode","Minimize","Actions.minimize","Shuffle","Time","Utils.getTimeObj","Volume","Actions.setVolume","MainVolume","loadMediaAndPlay","Actions.loadMedia","MainWindow","mainShade","Selectors.getLoading","Selectors.getLlamaMode","Selectors.getWorking","draggable","Actions.scrollVolume","PlaylistResizeTarget","PlaylistShade","Selectors.getMinimalMediaText","toggleShade","Actions.togglePlaylistShadeMode","focusWindow","addedWidth","trimmedName","nameLength","hover","cursorRef","setHover","setNode","domRect","enter","leave","useIsHovered","handleClickOut","clickOutTarget","useOnClickAway","selected_","PlaylistMenuEntry","AddMenu","Selectors.getTrackCount","Actions.addDirAtIndex","Actions.addFilesAtIndex","Actions.addFilesFromUrl","PlaylistMenu","RemoveMenu","removeSelected","Actions.removeSelectedTracks","removeAll","Actions.removeAllTracks","crop","Actions.cropPlaylist","SelectionMenu","invert","Actions.invertSelection","Actions.selectZero","Actions.selectAll","SortContextMenu","Actions.reverseList","Actions.randomizeList","Actions.sortListByTitle","MiscOptionsContextMenu","Actions.downloadHtmlPlaylist","MiscMenu","ListMenu","Actions.addFilesFromList","Actions.saveFilesToList","RunningTimeDisplay","runningTimeMessage","Actions.getRunningTimeMessage","rightPad","PlaylistWindow","TrackCell","handleMoveClick","Selectors.getSkinPlaylistStyle","currentTrackId","Actions.playTrackNow","handleTouchStart","handleSecondTap","TrackTitle","paddedTrackNumber","Selectors.getTrackDisplayName","TrackList","trackIds","Selectors.getVisibleTrackIds","Selectors.getNumberOfTracks","Actions.dragSelected","Actions.scrollPlaylistByDelta","setMoving","mouseStartY","setMouseStartY","_handleMoveClick","_renderTracks","lastDiff","maxTrackNumberLength","paddedTrackNumForIndex","userSelect","VerticalSlider","handle","handleHeight","onBeforeChange","onAfterChange","handleRef","handlePointerDown","sliderNode","sliderRect","handleRect","sliderTop","sliderHeight","handleTop","realHandleHeight","baseOffset","spanSize","moveToPosition","handlePointerMove","handleRelease","registerMoveListener","Handle","PlaylistScrollBar","playlistHeight","Selectors.getPlaylistScrollPosition","allTracksAreVisible","Selectors.getAllTracksAreVisible","Actions.setPlaylistScrollPosition","marginLeft","_maxTrackIndex","selectedWindow","maxTrackIndex","playlistShade","playlistWindowPixelSize","Actions.scrollUpFourTracks","Actions.scrollDownFourTracks","showVisualizer","activateVisualizer","targetCoords","fontFamily","showSpacers","PlaylistActionArea","Band","clickOriginatedInEq","Selectors.getSliders","spriteNumber","Actions.focusBand","EqOn","Actions.toggleEq","EqAuto","toggleAuto","Actions.toggleEqAuto","swapRows","EqGraph","preampLineImage","Selectors.getPreampLineImage","canvasNode","setCanvasNode","colorPattern","lineColorsImage","Selectors.getLineColorsImage","createPattern","useColorPattern","preampValue","GRAPH_HEIGHT","amplitudes","xs","ys","allYs","ks","matrix","rows","columns","zerosMatrix","iMax","vali","NEGATIVE_INFINITY","solve","getNaturalKs","maxX","spline","lastY","yTop","drawEqLine","PresetsContextMenu","Actions.openEqfFileDialog","Actions.downloadPreset","Actions.setEqFromObject","builtin","EqTitleButtons","Actions.toggleEqualizerShadeMode","EqualizerShade","eqVolumeClassName","eqBalanceClassName","EqualizerWindow","setPreampValue","Actions.setPreamp","Actions.setEqToMin","Actions.setEqToMid","Actions.setEqToMax","setHertzValue","Actions.setEqBand","setClickOriginatedInEq","onReleaseHz","hertz","imageSelectors","MAIN_BALANCE_BACKGROUND","MAIN_BALANCE_THUMB","MAIN_BALANCE_THUMB_ACTIVE","MAIN_PREVIOUS_BUTTON","MAIN_PREVIOUS_BUTTON_ACTIVE","MAIN_PLAY_BUTTON","MAIN_PLAY_BUTTON_ACTIVE","MAIN_PAUSE_BUTTON","MAIN_PAUSE_BUTTON_ACTIVE","MAIN_STOP_BUTTON","MAIN_STOP_BUTTON_ACTIVE","MAIN_NEXT_BUTTON","MAIN_NEXT_BUTTON_ACTIVE","MAIN_EJECT_BUTTON","MAIN_EJECT_BUTTON_ACTIVE","MAIN_WINDOW_BACKGROUND","MAIN_STEREO","MAIN_STEREO_SELECTED","MAIN_MONO","MAIN_MONO_SELECTED","NO_MINUS_SIGN","MINUS_SIGN","DIGIT_0","DIGIT_1","DIGIT_2","DIGIT_3","DIGIT_4","DIGIT_5","DIGIT_6","DIGIT_7","DIGIT_8","DIGIT_9","NO_MINUS_SIGN_EX","MINUS_SIGN_EX","DIGIT_0_EX","DIGIT_1_EX","DIGIT_2_EX","DIGIT_3_EX","DIGIT_4_EX","DIGIT_5_EX","DIGIT_6_EX","DIGIT_7_EX","DIGIT_8_EX","DIGIT_9_EX","MAIN_PLAYING_INDICATOR","MAIN_PAUSED_INDICATOR","MAIN_STOPPED_INDICATOR","MAIN_NOT_WORKING_INDICATOR","MAIN_WORKING_INDICATOR","PLAYLIST_TOP_TILE","PLAYLIST_TOP_LEFT_CORNER","PLAYLIST_TITLE_BAR","PLAYLIST_TOP_RIGHT_CORNER","PLAYLIST_TOP_TILE_SELECTED","PLAYLIST_TOP_LEFT_SELECTED","PLAYLIST_TITLE_BAR_SELECTED","PLAYLIST_TOP_RIGHT_CORNER_SELECTED","PLAYLIST_LEFT_TILE","PLAYLIST_RIGHT_TILE","PLAYLIST_SCROLL_HANDLE","PLAYLIST_SCROLL_HANDLE_SELECTED","PLAYLIST_BOTTOM_TILE","PLAYLIST_BOTTOM_LEFT_CORNER","PLAYLIST_BOTTOM_RIGHT_CORNER","PLAYLIST_VISUALIZER_BACKGROUND","PLAYLIST_SHADE_BACKGROUND","PLAYLIST_SHADE_BACKGROUND_LEFT","PLAYLIST_SHADE_BACKGROUND_RIGHT","PLAYLIST_SHADE_BACKGROUND_RIGHT_SELECTED","PLAYLIST_ADD_MENU_BAR","PLAYLIST_ADD_URL","PLAYLIST_ADD_URL_SELECTED","PLAYLIST_ADD_DIR","PLAYLIST_ADD_DIR_SELECTED","PLAYLIST_ADD_FILE","PLAYLIST_ADD_FILE_SELECTED","PLAYLIST_REMOVE_MENU_BAR","PLAYLIST_REMOVE_ALL","PLAYLIST_REMOVE_ALL_SELECTED","PLAYLIST_CROP","PLAYLIST_CROP_SELECTED","PLAYLIST_REMOVE_SELECTED","PLAYLIST_REMOVE_SELECTED_SELECTED","PLAYLIST_REMOVE_MISC","PLAYLIST_REMOVE_MISC_SELECTED","PLAYLIST_SELECT_MENU_BAR","PLAYLIST_INVERT_SELECTION","PLAYLIST_INVERT_SELECTION_SELECTED","PLAYLIST_SELECT_ZERO","PLAYLIST_SELECT_ZERO_SELECTED","PLAYLIST_SELECT_ALL","PLAYLIST_SELECT_ALL_SELECTED","PLAYLIST_CLOSE_SELECTED","PLAYLIST_COLLAPSE_SELECTED","PLAYLIST_EXPAND_SELECTED","PLAYLIST_MISC_MENU_BAR","PLAYLIST_MISC_OPTIONS","PLAYLIST_MISC_OPTIONS_SELECTED","PLAYLIST_FILE_INFO","PLAYLIST_FILE_INFO_SELECTED","PLAYLIST_SORT_LIST","PLAYLIST_SORT_LIST_SELECTED","PLAYLIST_LIST_BAR","PLAYLIST_NEW_LIST","PLAYLIST_NEW_LIST_SELECTED","PLAYLIST_LOAD_LIST","PLAYLIST_LOAD_LIST_SELECTED","PLAYLIST_SAVE_LIST","PLAYLIST_SAVE_LIST_SELECTED","EQ_WINDOW_BACKGROUND","EQ_TITLE_BAR","EQ_TITLE_BAR_SELECTED","EQ_SLIDER_BACKGROUND","EQ_SLIDER_THUMB","EQ_SLIDER_THUMB_SELECTED","EQ_ON_BUTTON","EQ_ON_BUTTON_DEPRESSED","EQ_ON_BUTTON_SELECTED","EQ_ON_BUTTON_SELECTED_DEPRESSED","EQ_AUTO_BUTTON","EQ_AUTO_BUTTON_DEPRESSED","EQ_AUTO_BUTTON_SELECTED","EQ_AUTO_BUTTON_SELECTED_DEPRESSED","EQ_GRAPH_BACKGROUND","EQ_PRESETS_BUTTON","EQ_PRESETS_BUTTON_SELECTED","EQ_SHADE_BACKGROUND","EQ_SHADE_BACKGROUND_SELECTED","EQ_SHADE_VOLUME_SLIDER_LEFT","EQ_SHADE_VOLUME_SLIDER_CENTER","EQ_SHADE_VOLUME_SLIDER_RIGHT","EQ_SHADE_BALANCE_SLIDER_LEFT","EQ_SHADE_BALANCE_SLIDER_CENTER","EQ_SHADE_BALANCE_SLIDER_RIGHT","EQ_MAXIMIZE_BUTTON_ACTIVE","EQ_MINIMIZE_BUTTON_ACTIVE","EQ_CLOSE_BUTTON","EQ_CLOSE_BUTTON_ACTIVE","EQ_SHADE_CLOSE_BUTTON","EQ_SHADE_CLOSE_BUTTON_ACTIVE","MAIN_POSITION_SLIDER_BACKGROUND","MAIN_POSITION_SLIDER_THUMB","MAIN_POSITION_SLIDER_THUMB_SELECTED","MAIN_SHUFFLE_BUTTON","MAIN_SHUFFLE_BUTTON_DEPRESSED","MAIN_SHUFFLE_BUTTON_SELECTED","MAIN_SHUFFLE_BUTTON_SELECTED_DEPRESSED","MAIN_REPEAT_BUTTON","MAIN_REPEAT_BUTTON_DEPRESSED","MAIN_REPEAT_BUTTON_SELECTED","MAIN_REPEAT_BUTTON_SELECTED_DEPRESSED","MAIN_EQ_BUTTON","MAIN_EQ_BUTTON_SELECTED","MAIN_EQ_BUTTON_DEPRESSED","MAIN_EQ_BUTTON_DEPRESSED_SELECTED","MAIN_PLAYLIST_BUTTON","MAIN_PLAYLIST_BUTTON_SELECTED","MAIN_PLAYLIST_BUTTON_DEPRESSED","MAIN_PLAYLIST_BUTTON_DEPRESSED_SELECTED","MAIN_TITLE_BAR","MAIN_TITLE_BAR_SELECTED","MAIN_EASTER_EGG_TITLE_BAR","MAIN_EASTER_EGG_TITLE_BAR_SELECTED","MAIN_OPTIONS_BUTTON","MAIN_OPTIONS_BUTTON_DEPRESSED","MAIN_MINIMIZE_BUTTON","MAIN_MINIMIZE_BUTTON_DEPRESSED","MAIN_SHADE_BUTTON","MAIN_SHADE_BUTTON_DEPRESSED","MAIN_CLOSE_BUTTON","MAIN_CLOSE_BUTTON_DEPRESSED","MAIN_CLUTTER_BAR_BACKGROUND","MAIN_CLUTTER_BAR_BACKGROUND_DISABLED","MAIN_CLUTTER_BAR_BUTTON_O_SELECTED","MAIN_CLUTTER_BAR_BUTTON_A_SELECTED","MAIN_CLUTTER_BAR_BUTTON_I_SELECTED","MAIN_CLUTTER_BAR_BUTTON_D_SELECTED","MAIN_CLUTTER_BAR_BUTTON_V_SELECTED","MAIN_SHADE_BACKGROUND","MAIN_SHADE_BACKGROUND_SELECTED","MAIN_SHADE_BUTTON_SELECTED","MAIN_SHADE_BUTTON_SELECTED_DEPRESSED","MAIN_SHADE_POSITION_BACKGROUND","MAIN_SHADE_POSITION_THUMB","MAIN_SHADE_POSITION_THUMB_LEFT","MAIN_SHADE_POSITION_THUMB_RIGHT","MAIN_VOLUME_BACKGROUND","MAIN_VOLUME_THUMB","MAIN_VOLUME_THUMB_SELECTED","GEN_TOP_CENTER_FILL","GEN_TOP_LEFT","GEN_TOP_LEFT_END","GEN_TOP_RIGHT","GEN_TOP_RIGHT_END","GEN_TOP_LEFT_RIGHT_FILL","GEN_TOP_CENTER_FILL_SELECTED","GEN_TOP_LEFT_SELECTED","GEN_TOP_LEFT_END_SELECTED","GEN_TOP_RIGHT_SELECTED","GEN_TOP_RIGHT_END_SELECTED","GEN_TOP_LEFT_RIGHT_FILL_SELECTED","GEN_BOTTOM_LEFT","GEN_BOTTOM_RIGHT","GEN_BOTTOM_FILL","GEN_MIDDLE_LEFT","GEN_MIDDLE_LEFT_BOTTOM","GEN_MIDDLE_RIGHT","GEN_MIDDLE_RIGHT_BOTTOM","GEN_CLOSE_SELECTED","cursorSelectors","CLOSE","EQSLID","EQNORMAL","EQCLOSE","EQTITLE","MAINMENU","MIN","NORMAL","MMENU","PNORMAL","PTBAR","PCLOSE","PWINBUT","PSIZE","PWSSIZE","PWSNORM","PVSCROLL","SONGNAME","VOLBAL","WINBUT","WSNORMAL","WSPOSBAR","Css","ClipPaths","paths","endianness","swap","theByte","IntParser","signed","lastByteMask_","unpack","unpackUnsigned_","unpackSigned_","overflow_","overflowClamp_","pack","unpack_","sign_","RangeError","IEEE754Buffer","ebits","fbits","numBytes","biasP2","ebitsFbits","fbias","sign","exp","fraction","roundToEven","packFloatBits_","significand","leftBits","exponent","unpackString","lowerBoundary","upperBoundary","unpackUTF8","unpackArray","theType","safe","packer","fp","TYPE_ERR","validateFloatType","validateIntType","getParser_","getUnpackLen_","be","throwValueError_","unpackArrayTo","RIFFFile","uInt32","supported_containers","setSignature","readUInt32","chunkId","subChunks","getSubChunksIndex_","chunkData","findChunk","maxSize","getSubChunkIndex_","getChunkId_","getChunkSize_","realChunkSize","DWORD","JIFFIES_PER_MS","uniqueId","CSS_PREFIX","mapRegionNamesToIds","windowshade","equalizerws","mapRegionNamesToMatcher","FALLBACKS","normalizeCursorSelector","getCssRules","Selectors.getSkinRegion","cssRules","imageName","imageUrl","_selector","selectedWidth","cursorSelector","cursorRules","aniBinary","ani","riff","mapChunk","readImages","frameCount","words","cbSize","nFrames","nSteps","iWidth","iHeight","iBitCount","nPlanes","iDispRate","bfAttributes","seq","lists","imageChunk","infoChunk","parseAni","frames","percents","frameIdx","readAni","convertAniBinaryToCSS","numExIsUsed","regionName","polygons","matcher","getClipPaths","clipPaths","Skin","App","onMount","parentDomNode","Selectors.getClosed","genWindowsInfo","Actions.browserWindowSizeChanged","webampNode","role","handleWindowResize","renderWindows","getAnalyser","MilkdropWindow","IGNORE_EVENTS_FROM_TAGS","Emitter","eventListeners","Disposable","_teardowns","teardowns","teardown","StereoBalanceNode","upMixer","createGain","channelCount","channelCountMode","channelInterpretation","splitter","createChannelSplitter","leftGain","rightGain","merger","createChannelMerger","rawValue","gain","connect","audioParam","defineProperties","writable","AudioNode","ElementSource","_emitter","_source","_destination","_audio","_stalled","_disposable","destination","suspendHandler","_setStalled","durationChangeHandler","endedHandler","_setStatus","timeUpdateHandler","createMediaElementSource","stalled","loadUrl","getStalled","getStatus","_balance","_staticSource","_preamp","_gainNode","_bands","AudioContext","webkitAudioContext","resumeHandler","createAnalyser","smoothingTimeConstant","createBiquadFilter","frequency","timeRemaining","percentComplete","seekTime","autoPlay","Webamp$1","_actionEmitter","_root","browserIsSupported","supportsAudioApi","supportsCanvas","initialTracks","initialSkin","enableHotkeys","enableDoubleSizeMode","__butterchurnOptions","__customMediaClass","importConvertPreset","presetConverterEndpoint","convert","webamp","presetOptions","getStore","__customMiddlewares","__initialState","enableMediaSession","onTrackDidChange","mediaSession","MediaMetadata","artwork","setActionHandler","previousTrack","onLine","butterchurnOpen","getPresets","importButterchurn","butterchurnModule","normalizePresets","handleOnline","handleOffline","layout","_bufferTracks","avaliableSkins","windowLayout","extraHeight","plusHeight","extraWidth","plusWidth","shadeMode","currentPos","bindHotkeys","Actions.seekToTime","isShuffleEnabled","isRepeatEnabled","setCurrentTrack","Actions.playTrack","appendTracks","setTracksToPlay","Selectors.getPlaylistTracks","Selectors.getPlayerMediaStatus","onWillClose","reopen","previousTrackId","Selectors.getCurrentlyPlayingTrackIdIfLoaded","Selectors.getCurrentTrackInfo","onMinimize","skinIsLoaded","storeHas","renderWhenReady","mountPromise","__loadSerializedState","Actions.loadSerializedState","__getSerializedState","fromMedia.getSerializedState","fromDisplay.getSerializedState","fromWindows.getSerializedState","__onStateChange","unsubscribed","Webamp","nextHandle","tasksByHandle","registerImmediate","currentlyRunningATask","runIfPresent","run","postMessageIsAsynchronous","oldOnMessage","canUsePostMessage","messagePrefix","installPostMessageImplementation","builder","readableStreamBrowser","utils","_keyStr","chr1","chr2","chr3","enc1","enc2","enc3","enc4","remainingBytes","resultIndex","dataUrlPrefix","ES6Promise","nodejsUtils","scheduleDrain","draining","Mutation","called","scriptEl","oldQueue","INTERNAL","handlers","REJECTED","FULFILLED","PENDING","resolver","safelyResolveThenable","QueueItem","unwrap","getThen","onSuccess","tryCatch","out","iterable","resolved","allResolver","outValue","require$$3","identity","stringToArrayLike","part","arrayToStringHelper","resultStr","arrayLikeToString","canUseApply","arrayLikeToArrayLike","arrayFrom","arrayTo","outputType","inputType","parts","res","superCtor","Obj","attr","inputData","isBinary","isOptimizedBinaryString","isBase64","WebampLazy","scale","DEG_PER_RAD","RAD_PER_DEG","sqr","LOG10E","rand","randint","bnot","bitor","bitand","sigmoid","bor","equal","ifcond","memcpy","copyWithin","trace","yy","symbols_","expression","EOF","expressionsOptionalTrailingSemi","separator","expressions","EXPRESSION_BLOCK","IDENTIFIER","IDENTIFIER_TOKEN","argument","FUNCTION_CALL","LOGICAL_EXPRESSION","LOGICAL_OPERATOR_TOKEN","ASSIGNMENT","ASSIGNMENT_OPERATOR_TOKEN","DIGITS_TOKEN","NUMBER_LITERAL","UNARY_EXPRESSION","BINARY_EXPRESSION","COMPARISON_TOKEN","$accept","$end","terminals_","productions_","performAction","loc","_$","callee","operator","defaultActions","parseError","recoverable","lexer","setInput","yylloc","ranges","lex","showPosition","yylineno","expected","yytext","yyleng","first_line","last_line","first_column","last_column","_input","_more","_backtrack","matched","conditionStack","unput","more","backtrack_lexer","less","pastInput","upcomingInput","test_match","_currentRules","rules","flex","begin","popState","conditions","INITIAL","topState","pushState","stateStackSize","inclusive","Parser","main","arrayJoin","flatten","times","ScopedIdMap","_map","formatList","printLoc","sourceContext","createUserError","createCompilerError","getLoc","destCol","srcCol","srcLine","column","preProcess","ASSIGNMENT_EXPRESSION","CALL_EXPRESSION","mapAst","__importStar","__esModule","log2","MAGIC","WASM_VERSION","EPSILON","SECTION","TYPE","IMPORT","FUNC","MEMORY","GLOBAL","EXPORT","EXPORT_TYPE","TABLE","op","block","if","else","br_if","drop","select","local_get","local_set","local_tee","global_get","global_set","f64_load","f64_store","i32_const","f64_const","i32_eqz","i32_ne","i32_lt_s","i32_lt_u","i32_gt_s","i32_le_s","i32_le_u","i32_ge_s","f64_eq","f64_ne","f64_lt","f64_gt","f64_le","f64_ge","i32_add","i32_sub","i32_mul","i32_rem_s","i32_and","i32_or","i64_rem_s","i64_and","i64_or","f64_abs","f64_neg","f64_ceil","f64_floor","f64_sqrt","f64_add","f64_sub","f64_mul","f64_div","f64_min","f64_max","i32_trunc_f64_s","i32_trunc_f64_u","i64_trunc_s_f64","f64_convert_i64_s","f64_convert_i32_s","VAL_TYPE","i64","f32","f64","MUTABILITY","const","var","BLOCK","void","FUNCTION_TYPE","MEMORY_IDX","GLOBAL_TYPE","TYPE_IDX","IS_ZEROISH","IS_NOT_ZEROISH","encodef64","encodeString","unsignedLEB128","signedLEB128","encodeFlatVector","encodeNestedVector","encodeSection","tan","acos","atan","atan2","Q","MAX_LOOP_COUNT","BUFFER_SIZE","WASM_MEMORY_SIZE","localFuncMap","returns","localVariables","bitwiseOr","bitwiseAnd","_getBufferIndex","__importDefault","resolveFunc","rawSource","resolveLocal","resolveVar","comparison","shortCircutValue","compileModule","pools","functions","eelVersion","preParsed","exportName","shims","loadModule","WebAssembly","compile","instantiate","BigUint64Array","memory","seed","__new","__retain","__rtti_base","Float64Array","BigInt64Array","__newString","__getString","__newArray","__getArrayView","__getArray","__getArrayBuffer","Uint8ClampedArray","BYTES_PER_ELEMENT","__instanceof","it","Response","Module","tt","instantiateStreaming","__argumentsLength","__setArgumentsLength","__setargc","valueOf","getOwnPropertyNames","instantiateSync","Instance","demangle","equalizeArr","at","numSamps","audioContext","audible","createDelay","analyserL","analyserR","timeByteArray","timeByteArrayL","timeByteArrayR","timeArray","timeByteArraySignedL","timeByteArraySignedR","tempTimeArrayL","tempTimeArrayR","timeArrayL","timeArrayR","sampleAudio","processAudio","updateAudio","freqArray","freqArrayL","freqArrayR","disconnectAudio","ot","starts","stops","imm","att","avg","longAvg","bass","bass_att","mid","mid_att","treb","treb_att","isFiniteNumber","adjustRateToFPS","updateAudioLevels","ht","baseVals","gammaadj","wave_g","mv_x","warpscale","brighten","mv_y","wave_scale","echo_alpha","additivewave","sx","sy","warp","red_blue","wave_mode","wave_brighten","zoomexp","fshader","wave_r","echo_zoom","wave_smoothing","warpanimspeed","wave_dots","wave_x","wave_y","zoom","solarize","modwavealphabyvolume","dx","cx","dy","darken_center","cy","bmotionvectorson","rot","modwavealphaend","wave_mystery","decay","wave_a","wave_b","modwavealphastart","darken","echo_orient","ib_r","ib_g","ib_b","ib_a","ib_size","ob_r","ob_g","ob_b","ob_a","ob_size","mv_dx","mv_dy","mv_a","mv_r","mv_g","mv_b","mv_l","init_eqs","frame_eqs","rkeys","pixel_eqs","rad","waves","scaling","samples","additive","usedots","spectrum","smoothing","thick","sep","point_eqs","shapes","r2","tex_ang","thickoutline","textured","g2","tex_zoom","border_a","border_b","b2","a2","border_g","ang","sides","border_r","comp","At","cloneVars","pick","omit","setWasm","pickWasm","initializeState","warmUp","nextInt","getRNG","ct","mt","ut","rng","texsizeX","texsizeY","mesh_width","mesh_height","aspectx","aspecty","invAspectx","invAspecty","qs","ts","regs","initializeEquations","runVertEQs","mdVSQInit","mdVSRegs","mdVSFrame","mdVSUserKeys","mdVSFrameMap","mdVSShapes","mdVSUserKeysShapes","mdVSFrameMapShapes","mdVSWaves","mdVSUserKeysWaves","mdVSFrameMapWaves","mdVSQAfterFrame","gmegabuf","meshx","meshy","pixelsx","pixelsy","mdVS","megabuf","rand_start","rand_preset","mdVSTWaveInits","mdVSTShapeInits","updatePreset","updateGlobals","runFrameEquations","runPixelEquations","runShapeFrameEquations","runWaveFrameEquations","runWavePointEquations","ft","globalKeys","frameKeys","waveFrameKeys","waveFrameInputKeys","getQVars","globalPools","getTVars","perFrame","save_qs","pt","_t","getShaderParts","getFragmentFloatPrecision","getShaderPrecisionFormat","FRAGMENT_SHADER","HIGH_FLOAT","precision","MEDIUM_FLOAT","getUserSamplers","sampler","Et","smoothWave","smoothWaveAndColor","gl","positions2","oldPositions","oldPositions2","smoothedPositions","smoothedPositions2","floatPrecision","createShader","vertexBuf","createBuffer","shaderProgram","createProgram","VERTEX_SHADER","shaderSource","compileShader","attachShader","linkProgram","aPosLoc","getAttribLocation","colorLoc","getUniformLocation","thickOffsetLoc","processWaveform","generateWaveform","old_wave_mode","numVert","oldNumVert","alpha","oldAlpha","smoothedNumVert","drawBasicWaveform","useProgram","bindBuffer","ARRAY_BUFFER","bufferData","STATIC_DRAW","vertexAttribPointer","FLOAT","enableVertexAttribArray","uniform4fv","wave_thick","blendFunc","SRC_ALPHA","ONE","ONE_MINUS_SRC_ALPHA","POINTS","LINE_STRIP","uniform2fv","drawArrays","xt","pointsData","smoothedColors","positionVertexBuf","colorVertexBuf","aPosLocation","aColorLocation","sizeLoc","useWASM","value1","value2","mdVSWaveFrame","drawCustomWaveform","uniform1f","vt","uvs","borderPositions","uvVertexBuf","borderPositionVertexBuf","createBorderShader","mainSampler","createSampler","samplerParameteri","TEXTURE_MIN_FILTER","LINEAR_MIPMAP_LINEAR","TEXTURE_MAG_FILTER","LINEAR","TEXTURE_WRAP_S","REPEAT","TEXTURE_WRAP_T","aUvLocation","texturedLoc","textureLoc","borderShaderProgram","aBorderPosLoc","uBorderColorLoc","drawCustomShape","setupShapeBuffers","restore_qs","save_ts","frame_eqs_save","num_inst","frame_eqs_restore","restore_ts","borderColor","drawCustomShapeInstance","frame_eqs_str","mdVSShapeFrame","DYNAMIC_DRAW","CLAMP_TO_EDGE","bufferSubData","activeTexture","TEXTURE0","bindTexture","TEXTURE_2D","bindSampler","uniform1i","TRIANGLE_FAN","Tt","addTriangle","generateBorder","drawBorder","TRIANGLES","St","generatePositions","drawDarkenCenter","Pt","maxY","getMotionDir","generateMotionVectors","numVecVerts","drawMotionVectors","lineWidth","LINES","wt","noise","buildPositions","indexBuf","warpUvVertexBuf","warpColorVertexBuf","mainSamplerFW","mainSamplerFC","mainSamplerPW","mainSamplerPC","NEAREST_MIPMAP_NEAREST","NEAREST","vertices","indices","userTextures","positionLocation","warpUvLocation","warpColorLocation","textureFWLoc","textureFCLoc","texturePWLoc","texturePCLoc","blurTexture1Loc","blurTexture2Loc","blurTexture3Loc","noiseLQLoc","noiseMQLoc","noiseHQLoc","noiseLQLiteLoc","noisePointLQLoc","noiseVolLQLoc","noiseVolHQLoc","decayLoc","texsizeLoc","texsizeNoiseLQLoc","texsizeNoiseMQLoc","texsizeNoiseHQLoc","texsizeNoiseLQLiteLoc","texsizeNoiseVolLQLoc","texsizeNoiseVolHQLoc","resolutionLoc","aspectLoc","bassLoc","midLoc","trebLoc","volLoc","bassAttLoc","midAttLoc","trebAttLoc","volAttLoc","timeLoc","frameLoc","fpsLoc","blur1MinLoc","blur1MaxLoc","blur2MinLoc","blur2MaxLoc","blur3MinLoc","blur3MaxLoc","scale1Loc","scale2Loc","scale3Loc","bias1Loc","bias2Loc","bias3Loc","randPresetLoc","randFrameLoc","qaLoc","qbLoc","qcLoc","qdLoc","qeLoc","qfLoc","qgLoc","qhLoc","slowRoamCosLoc","roamCosLoc","slowRoamSinLoc","roamSinLoc","updateShader","bindBlurVals","renderQuadTexture","ELEMENT_ARRAY_BUFFER","TEXTURE1","TEXTURE2","TEXTURE3","TEXTURE4","TEXTURE5","TEXTURE6","TEXTURE7","TEXTURE8","noiseTexLQ","TEXTURE9","noiseTexMQ","TEXTURE10","noiseTexHQ","TEXTURE11","noiseTexLQLite","TEXTURE12","noiseTexPointLQ","TEXTURE13","TEXTURE_3D","noiseTexVolLQ","TEXTURE14","noiseTexVolHQ","TEXTURE15","getTexture","q1","q2","q3","q4","q5","q6","q7","q8","q9","q10","q11","q12","q13","q14","q15","q16","q17","q18","q19","q20","q21","q22","q23","q24","q25","q26","q27","q28","q29","q30","q31","q32","BLEND","drawElements","UNSIGNED_SHORT","It","compWidth","compHeight","compColorVertexBuf","compColorLocation","gammaAdjLoc","echoZoomLoc","echoAlphaLoc","echoOrientationLoc","invertLoc","brightenLoc","darkenLoc","solarizeLoc","fShaderLoc","generateHueBase","generateCompColors","Rt","textureRatio","useFXAA","createFXAAShader","deleteProgram","TRIANGLE_STRIP","yt","generateMipmap","Bt","blurLevel","wds","wDiv","texsizeLocation","ed1Loc","ed2Loc","ed3Loc","wdsLocation","wdivLoc","b1ed","Lt","ws","ds","scaleLoc","biasLoc","wsLoc","dsLocation","getScaleAndBias","Ct","blurRatios","anisoExt","blurHorizontalFrameBuffer","createFramebuffer","blurVerticalFrameBuffer","blurHorizontalTexture","createTexture","blurVerticalTexture","setupFrameBufferTextures","blurHorizontal","blurVertical","getTextureSize","bindFrameBufferTexture","horizontalTexsizes","verticalTexsizes","bindFrambufferAndSetViewport","bindFramebuffer","FRAMEBUFFER","viewport","pixelStorei","UNPACK_ALIGNMENT","texImage2D","RGBA","UNSIGNED_BYTE","texParameteri","getParameter","MAX_TEXTURE_MAX_ANISOTROPY_EXT","texParameterf","TEXTURE_MAX_ANISOTROPY_EXT","framebufferTexture2D","COLOR_ATTACHMENT0","renderBlurTexture","Ut","randomFn","nTexArrLQ","createNoiseTex","nTexArrLQLite","nTexArrMQ","nTexArrHQ","nTexArrVolLQ","createNoiseVolTex","nTexArrVolHQ","bindTexture3D","texImage3D","TEXTURE_WRAP_R","fCubicInterpolate","dwCubicInterpolate","Mt","samplers","clouds2Image","clouds2","emptyImage","empty","loadExtraImages","Ft","textTexture","context2D","generateTitleTexture","measureText","fillText","UNPACK_FLIP_Y_WEBGL","uvLocation","textColorLoc","generateUvs","renderTitle","Qt","vertInfoA","vertInfoC","createBlendPattern","resizeMatrixValues","genPlasma","Vt","frameNum","presetTime","lastTime","timeHist","timeHistMax","blending","blendStartTime","blendProgress","blendDuration","outputFXAA","audioLevels","prevFrameBuffer","targetFrameBuffer","prevTexture","targetTexture","compFrameBuffer","compTexture","warpShader","compShader","outputShader","prevWarpShader","prevCompShader","numBlurPasses","blurShader1","blurShader2","blurShader3","blurTexture1","blurTexture2","blurTexture3","basicWaveform","customWaveforms","customShapes","prevCustomWaveforms","prevCustomShapes","darkenCenter","innerBorder","outerBorder","motionVectors","titleText","blendPattern","resampleShader","supertext","warpUVs","warpColor","clearColor","blankPreset","prevPreset","presetEquationRunner","prevPresetEquationRunner","regVars","getHighestBlur","pixel_eqs_initialize_array","renderToScreen","setInternalMeshSize","setOutputAA","calcTimeAndFPS","perVertex","pixel_eqs_wasm","pixel_eqs_get_array","mdVSVertex","mixFrameEquations","b1n","b2n","b3n","b1x","b2x","b3x","getBlurValues","blurMins","blurMaxs","prevMDVSFrame","COLOR_BUFFER_BIT","blendEquation","FUNC_ADD","globalVars","mdVSFrameMixed","readPixels","createImageData","putImageData","deleteTexture","deleteFramebuffer","warpBufferToDataURL","Dt","deterministic","testMode","gt","deterministicMode","OffscreenCanvas","internalCanvas","antialias","stencil","premultipliedAlpha","outputGl","baseValsDefaults","shapeBaseValsDefaults","waveBaseValsDefaults","globalPerFrameVars","globalPerPixelVars","globalShapeVars","shapeBaseVars","globalWaveVars","renderer","loseGLContext","loseContext","audioNode","overrideDefaultVars","createQVars","Global","mutable","createTVars","createPerFramePool","createPerPixelPool","createCustomShapePerFramePool","createCustomWavePerFramePool","makeShapeResetPool","base64ToArrayBuffer","atob","useJS","loadWASMPreset","loadJSPreset","presetInit","init_eqs_eel","frame_eqs_eel","pixel_eqs_eel","perPixel","point_eqs_eel","pixelEqs","perPixelEqs","pixelVarPool","qVarPool","tVarPool","shapePool0","shapePerFrame0","shapePool1","shapePerFrame1","shapePool2","shapePerFrame2","shapePool3","shapePerFrame3","logi","logf","saveQs","restoreQs","saveTs","restoreTs","createFloat32Array","pixel_eqs_array","__getFloat32ArrayView","init_eqs_str","pixel_eqs_str","point_eqs_str","qt","factory","__webpack_modules__","__unused_webpack_module","__webpack_exports__","__webpack_require__","__WEBPACK_DEFAULT_EXPORT__","__webpack_module_cache__","moduleId","definition","prop","DEFAULT_BUTTERCHURN_WINDOW_LAYOUT","WebampWithButterchurn","butterchurnPresets","defaultEnc","parseGenreCode","FrameParser","warningCollector","includeCovers","nullTerminatorLength","getNullTerminatorLength","fzero","util.decodeString","functionList","splitValue","genres","word","parseGenre","idAndData","readIdentifierAndData","pic","majorVer","Id3v2ContentError","makeUnexpectedMajorVersionError","fixPictureMimeType","syltHeader","SyncTextHeader","readSyllables","nullStr","readNullTerminatedString","textHeader","descriptorStr","textStr","ufid","priv","dataLen","zeroIndex","pictureType","trimArray","enc","asciiDecoder","ID3v2Parser","id3Header","headerType","removeUnsyncBytes","readI","writeI","getFrameHeaderLength","readFrameFlags","tag_alter_preservation","file_alter_preservation","read_only","grouping_identity","encryption","data_length_indicator","readFrameData","frameHeader","frameParser","makeDescriptionTagName","parseExtendedHeader","parseId3Data","extendedHeader","dataRemaining","parseExtendedHeaderData","extendedHeaderSize","parseMetadata","handleTag","resolveValue","frameHeaderLength","frameHeaderBytes","readFrameHeader","frameDataBytes","Token.UINT24_BE","AbstractID3Parser","id3parser","startsWithID3v2Header","parseID3v2","finalize","tryReadId3v2Headers","postId3v2Parse","id3v1parser","ReplayGain","gain_type","common.getBitAllignedNumber","gain_adj","origin","adjustment","ExtendedLameHeader","track_peak","vbr_method","lowpass_filter","track_gain","album_gain","music_length","music_crc","header_crc","InfoTagHeaderTag","LameEncoderVersion","XingHeaderFlags","util.isBitSet","toc","vbrScale","MpegContentError","MPEG4","AudioObjectTypes","SamplingFrequencies","MPEG4_ChannelConfigurations","MpegFrameHeader","bitrateIndex","sampRateFreqIndex","privateBit","channelModeIndex","modeExtension","isOriginalMedia","samplingRate","frameLength","versionIndex","layer","LayerDescription","parseAdtsHeader","parseMpegHeader","isProtectedByCRC","common.isBitSet","calcDuration","numFrames","calcSamplesPerFrame","samplesInFrameTable","calculateSideInfoLength","calcSlotSize","isCopyrighted","emphasis","VersionID","channelMode","ChannelMode","codec","bitrateInKbps","calcBitrate","calcSamplingRate","profileIndex","codecProfile","samplingFrequencyIndex","channelIndex","mp4ChannelConfig","codecIndex","bitrate_index","sampling_rate_freq_index","SyncByte1","SyncByte2","syncFrameCount","countSkipFrameData","totalDataLength","bitrates","frame_size","crc","calculateEofDuration","samplesPerFrame","buf_frame_header","mpegOffset","syncPeek","quit","sync","parseCommonMpegHeader","numberOfSamples","hasID3v1","ID3v1","mpegSize","gotFirstSync","bo","FrameHeader","parseAdts","parseAudioFrameHeader","slot_size","samples_per_frame","bps","fsize","audioFrameHeader","skipSideInformation","areAllSame","parseCrc","framesPerSec","Token.INT16_BE","sideinfo_length","readXtraInfoHeader","headerTag","readXingInfoHeader","infoTag","skipFrameData","frameDataLeft","xingInfoTag","streamSize","lame","extended","readXingHeader","common.stripNulls","GUID","fromBin","bin","objectId","decodeMediaType","mediaType","AudioMedia","VideoMedia","CommandMedia","Degradable_JPEG_Media","FileTransferMedia","BinaryMedia","equals","toBin","parseUnicodeAttr","util.stripNulls","HeaderObject","DataObject","SimpleIndexObject","IndexObject","MediaObjectIndexObject","TimecodeIndexObject","FilePropertiesObject","StreamPropertiesObject","HeaderExtensionObject","CodecListObject","ScriptCommandObject","MarkerObject","BitrateMutualExclusionObject","ErrorCorrectionObject","ContentDescriptionObject","ExtendedContentDescriptionObject","ContentBrandingObject","StreamBitratePropertiesObject","ContentEncryptionObject","ExtendedContentEncryptionObject","DigitalSignatureObject","PaddingObject","ExtendedStreamPropertiesObject","AdvancedMutualExclusionObject","GroupMutualExclusionObject","StreamPrioritizationObject","BandwidthSharingObject","LanguageListObject","MetadataObject","MetadataLibraryObject","IndexParametersObject","MediaObjectIndexParametersObject","TimecodeIndexParametersObject","CompatibilityObject","AdvancedContentEncryptionObject","JFIF_Media","ASF_Index_Placeholder_Object","attributeParsers","parseByteArrayAttr","parseWordAttr","AsfContentParseError","TopLevelHeaderObjectToken","objectSize","numberOfHeaderObjects","HeaderObjectToken","State","postProcessTag","valueType","WmPictureToken","parseAttr","getParserForAttr","IgnoreObjectState","_buf","fileId","creationDate","dataPacketsCount","playDuration","sendDuration","preroll","broadcast","seekable","minimumDataPacketSize","maximumDataPacketSize","maximumBitrate","streamType","errorCorrectionType","reserved1","reserved2","extensionDataSize","CodecListObjectHeader","entryCount","readCodecEntries","codecHeader","readCodecEntry","readInformation","videoCodec","audioCodec","information","ContentDescriptionObjectState","contentDescTags","ExtendedContentDescriptionObjectState","attrCount","nameLen","valueLen","ExtendedStreamPropertiesObjectState","endTime","dataBitrate","bufferSize","initialBufferFullness","alternateDataBitrate","alternateBufferSize","alternateInitialBufferFullness","maximumObjectSize","reliableFlag","seekableFlag","resendLiveCleanpointsFlag","streamNumber","streamLanguageId","averageTimePerFrame","streamNameCount","payloadExtensionSystems","streamNames","streamPropertiesObject","MetadataObjectState","descriptionRecordsCount","MetadataLibraryObjectState","AsfObject.TopLevelHeaderObjectToken","parseObjectHeader","numberOfObjectHeaders","AsfObject.HeaderObjectToken","AsfObject.FilePropertiesObject","fpo","BigInt","AsfObject.StreamPropertiesObject","spo","AsfObject.HeaderExtensionObject","extHeader","parseExtensionObject","AsfObject.ContentDescriptionObjectState","addTags","AsfObject.ExtendedContentDescriptionObjectState","codecs","AsfObject.readCodecEntries","audioCodecs","AsfObject.IgnoreObjectState","extensionSize","AsfObject.ExtendedStreamPropertiesObjectState","AsfObject.MetadataObjectState","moTags","AsfObject.MetadataLibraryObjectState","mlTags","ChunkHeader64","chunkID","Token.INT64_BE","DsdiffContentParseError","readFmt8Chunks","remainingSize","chunkHeader","p0","handleSoundPropertyChunks","rst","sndPropHeader","numChannels","handleChannelChunks","compressionIdCode","compressionName","hours","lsConfig","lossless","channelId","compressionTypes","NONE","sowt","fl32","fl64","alaw","ulaw","ULAW","ALAW","FL32","AiffContentError","Common","isAifc","minimumChunkSize","baseSampleRate","numSampleFrames","compressionType","strLen","isCompressed","iff.Header","nextChunk","AiffToken.Common","readTextChunk","ChunkHeader","DsdChunk","Token.INT64_LE","metadataPointer","FormatChunk","formatVersion","Token.INT32_LE","formatID","channelType","channelNum","samplingFrequency","sampleCount","blockSizePerChannel","DsdContentParseError","dsdChunk","parseChunks","formatChunk","VorbisPictureToken","fromBase64","base64str","mimeLen","descLen","colour_depth","indexed_color","picDataLen","CommonHeader","packetType","vorbis","VorbisDecoder","readInt32","readStringUtf8","parseUserComment","offset0","debugInit","VorbisContentError","VorbisStream","pageSegments","parsePage","pageData","lastPageHeader","firstPage","parseFirstPage","continued","lastPage","fullPage","mergeUint8Arrays","parseFullPage","arrays","totalSize","merged","_arrays","absoluteGranulePosition","_header","commonHeader","idHeader","bitrateMax","bitrateNominal","bitrateMin","IdentificationHeader","parseUserCommentList","userCommentListLength","FlacContentError","BlockHeader","lastBlock","util.getBitAllignedNumber","BlockStreamInfo","minimumBlockSize","maximumBlockSize","minimumFrameSize","maximumFrameSize","totalSamples","vorbisParser","blockHeader","parseDataBlock","dataSize","parseBlockStreamInfo","parseComment","parsePicture","commentListLength","matroskaDtd","EbmlContentError","EbmlIterator","parserMap","ebmlMaxIDLength","ebmlMaxSizeLength","readUint","readFlag","readFloat","iterate","dtdElement","posDone","parseContainer","linkParents","tree","elementPosition","startNext","getElementPath","elementValue","readVintData","maxLength","oc","lenField","readUIntBE","normalizedNumber","cleanNumber","Token.UINT64_BE","_error","readUIntBeAsBigInt","seekHeadOffset","flagUseIndexToSkipClusters","mkvUseIndex","containerSize","matroskaIterator","seekHead","seek","ignoreSize","timecodeScale","audioTracks","codecID","codecSettings","flagDefault","flagLacing","flagEnabled","trackType","video","audioTrack","targetType","targetTypeValue","simpleTags","simpleTag","attachments","attachedFiles","Mp4ContentError","hdr","ExtendedSize","ftyp","FixedLengthAtom","expLen","atomId","SecondsSinceMacEpoch","secondsSinceUnixEpoch","MdhdAtom","creationTime","modificationTime","timeScale","MvhdAtom","preferredRate","preferredVolume","previewTime","previewDuration","posterTime","selectionTime","selectionDuration","nextTrackID","DataAtom","NameAtom","TrackHeaderAtom","alternateGroup","SampleDescriptionTable","descrLen","dataFormat","dataReferenceIndex","StsdAtom","numberOfEntries","stsdHeader","SoundSampleDescriptionVersion","SoundSampleDescriptionV0","numAudioChannels","compressionId","packetSize","SimpleTableAtom","nrOfEntries","Token.INT24_BE","readTokenTable","TimeToSampleToken","SttsAtom","SampleToChunkToken","samplesPerChunk","sampleDescriptionId","StscAtom","StszAtom","StcoAtom","ChapterText","titleLen","remainingLen","TrackFragmentHeaderBox","flagOffset","baseDataOffsetPresent","sampleDescriptionIndexPresent","defaultSampleDurationPresent","defaultSampleSizePresent","defaultSampleFlagsPresent","defaultDurationIsEmpty","defaultBaseIsMoof","dynOffset","baseDataOffset","sampleDescriptionIndex","defaultSampleDuration","defaultSampleSize","defaultSampleFlags","TrackRunBox","trun","dataOffsetPresent","firstSampleFlagsPresent","sampleDurationPresent","sampleSizePresent","sampleFlagsPresent","sampleCompositionTimeOffsetsPresent","dataOffset","firstSampleFlags","sampleDuration","sampleFlags","sampleCompositionTimeOffset","HandlerBox","charTypeToken","componentType","handlerType","componentName","ChapterTrackReferenceBox","Atom","readAtom","dataHandler","AtomToken.Header","AtomToken.ExtendedSize","atomBean","payloadLength","getPayloadLength","atomPath","getHeaderLength","readAtoms","paddingLength","encoderDict","lossy","MAC3","MAC6","ima4","Qclp","alac","mp4a","mp4s","c608","c708","distinct","hasVideoTrack","hasAudioTrack","atomParsers","mvhd","AtomToken.MvhdAtom","chap","getTrackDescription","chapterList","mdat","audioLengthInBytes","calculateBitRate","includeChapters","trackWithChapters","chapterTrackIds","chapterTracks","parseChapterTrack","types","ftype","AtomToken.ftyp","stsd","AtomToken.StsdAtom","soundSampleDescription","dfEntry","parseSoundSampleDescription","stsz","AtomToken.StszAtom","sampleSizeTable","read_BE_Integer","integerType","Token","remainingFileSize","errMsg","rootAtom","atom","handleAtom","trackFormats","ssd","encoderInfo","bitDepth","fragments","totalTimeUnits","defaultDuration","trackRun","dur","timeToSampleTable","ttstEntry","parseMetadataItemData","parseTrackBox","parseTrackFragmentBox","metaAtom","tagKey","payLoadLength","parseValueAtom","AtomToken.NameAtom","dataAtom","AtomToken.DataAtom","genreInt","genreStr","trakBox","AtomToken.TrackHeaderAtom","AtomToken.HandlerBox","mdhd_data","AtomToken.MdhdAtom","stco","AtomToken.StcoAtom","chunkOffsetTable","stsc","AtomToken.StscAtom","sampleToChunkTable","stts","AtomToken.SttsAtom","trafBox","tfhd","fragmentHeaderBox","AtomToken.TrackFragmentHeaderBox","trackRunBox","AtomToken.TrackRunBox","sampleDescription","AtomToken.SoundSampleDescriptionVersion","AtomToken.SoundSampleDescriptionV0","chapterTrack","chapters","nextChunkLen","AtomToken.ChapterText","chapter","sampleOffset","findSampleOffset","chapterOffset","chunkIndex","getChunkDuration","ttsi","ttsc","ttsd","curChunkId","getSamplesPerChunk","totalDuration","nrOfSamples","stcTable","PacketKey","SH_part1","streamVersion","SH_part3","sampleFrequency","maxUsedBands","msUsed","audioBlockFrames","StreamReader","_tokenizer","readPacketHeader","readVariableSizeField","readStreamHeader","streamHeader","part1","beginningOfSilence","part3","hb","MusepackContentError","MpcSv8Parser","audioLength","parsePacket","sv8reader","SV8.StreamReader","sh","BitReader","dword","remainder","numOfWords","streamMinorVersion","streamMajorVersion","maxLevel","profile","maxBand","intensityStereo","midSideStereo","titlePeak","titleGain","albumPeak","albumGain","lastFrameLength","trueGapless","MpcSv7Parser","bitreader","SV7.Header","skipAudioData","mpcParser","OpusContentError","IdHeader","magicSignature","preSkip","inputSampleRate","outputGain","channelMapping","OpusStream","lastPos","Opus.IdHeader","pos_48bit","SpeexStream","speexHeader","speex","version_id","header_size","mode_bitstream_version","nb_channels","vbr","frames_per_packet","extra_headers","Speex.Header","TheoraStream","vmaj","vmin","vrev","vmbw","vmbh","nombr","nqual","PageHeader","capturePattern","streamSerialNumber","pageSequenceNo","pageChecksum","page_segments","SegmentTable","totalPageSize","OggContentError","OggStream","streamSerial","pageNumber","segmentTable","idData","pageConsumer","streams","SampleRates","BlockHeaderToken","BlockID","blockSize","blockIndex","blockSamples","isMono","isHybrid","isJointStereo","crossChannel","hybridNoiseShaping","floatingPoint","isDSD","MetadataIdToken","functionId","isOptional","isOddSize","largeBlock","WavPackContentError","audioDataSize","parseWavPackBlocks","ignoreBytes","parseMetadataSubBlock","remainingLength","dataSizeInWords","Token.UINT24_LE","mp","ListInfoTagValue","tagHeader","WaveContentError","WaveFormat","WaveFormatNameMap","WaveFormat_PCM","WaveFormat_ADPCM","WaveFormat_IEEE_FLOAT","WaveFormat_MPEG_ADTS_AAC","WaveFormat_MPEG_LOAS","WaveFormat_RAW_AAC1","WaveFormat_DOLBY_AC3_SPDIF","WaveFormat_DVM","WaveFormat_RAW_SPORT","WaveFormat_ESST_AC3","WaveFormat_DRM","WaveFormat_DTS2","WaveFormat_MPEG","Format","wFormatTag","nChannels","nSamplesPerSec","nAvgBytesPerSec","nBlockAlign","wBitsPerSample","FactChunk","dwSampleLength","BroadcastAudioExtensionChunk","originator","originatorReference","originationDate","originationTime","timeReferenceLow","timeReferenceHigh","umid","loudnessValue","maxTruePeakLevel","maxMomentaryLoudness","maxShortTermLoudness","blockAlign","riffHeader","riff.Header","parseRiffChunk","readWaveChunk","parseListTag","fact","WaveChunk.FactChunk","fmt","WaveChunk.Format","subFormat","WaveChunk.WaveFormatNameMap","calcRemaining","bext","bextRemaining","listHeader","listType","parseRiffInfoTags","valueToken","riff.ListInfoTagValue"],"mappings":"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,IAAK,MACLC,KAAM,cAKR,GAAIr+B,KAAKyhB,MAAM,CAAC,GAAO,CAACG,OAAQA,EAAS,EAAG4c,KAAM,CAAC,KAClD,MAAO,CACNJ,IAAK,MACLC,KAAM,aAGR,CACD,EAGiC,IAAIsF,IChzDb,CACzB,MACA,MACA,OACA,MACA,OACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,MACA,MACA,OACA,MACA,MACA,MACA,KACA,MACA,KACA,MACA,MACA,MACA,MACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,MACA,MACA,MACA,MACA,OACA,MACA,QACA,MACA,MACA,MACA,OACA,OACA,QACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,KACA,SACA,MACA,MACA,MACA,MACA,MACA,KACA,MACA,IACA,KACA,MACA,MACA,MACA,QACA,MACA,OACA,OACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,MACA,MACA,MACA,KACA,MACA,MACA,MACA,OACA,MACA,MACA,QACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,QACA,MACA,MACA,MACA,KACA,MACA,KACA,MACA,OACA,MACA,MACA,MACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,UACA,QACA,MACA,OACA,MACA,OACA,MACA,MACA,OACA,MACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,OACA,MACA,KACA,OACA,SDkoDiC,IAAIA,IC/nDb,CACxB,aACA,YACA,YACA,aACA,aACA,cACA,oBACA,oBACA,aACA,YACA,qBACA,4BACA,yBACA,uBACA,0BACA,0DACA,0CACA,iDACA,kDACA,0EACA,4EACA,oEACA,yEACA,kBACA,oBACA,+BACA,mBACA,sBACA,8BACA,gCACA,oCACA,YACA,aACA,iBACA,aACA,kBACA,gBACA,YACA,cACA,iBACA,iBACA,yBACA,aACA,aACA,aACA,YACA,YACA,YACA,yBACA,kBACA,aACA,YACA,gBACA,YACA,kBACA,oBACA,4BACA,2BACA,gCACA,kBACA,mBACA,YACA,aACA,gCACA,WACA,WACA,kBACA,eACA,cACA,yBACA,kBACA,mBACA,wBACA,iCACA,wCACA,oCACA,oBACA,6BACA,oBACA,yBACA,qBACA,oBACA,oBACA,kBACA,aACA,wBACA,YACA,YACA,YACA,YACA,YACA,YACA,aACA,kBACA,iCACA,aACA,sBACA,aACA,sBACA,aACA,YACA,oBACA,mBACA,gBACA,aACA,WACA,oBACA,+BACA,cACA,4BACA,4BACA,cACA,yBACA,cACA,aACA,sBACA,mBACA,oBACA,oBACA,wBACA,uBACA,cACA,cACA,2BACA,YACA,aACA,cACA,aACA,aACA,aACA,+BACA,aACA,+BACA,4BACA,qBACA,YACA,8BACA,YACA,YACA,mBACA,YACA,6BACA,gBACA,iCACA,sBACA,oBACA,qBACA,+BACA,mBACA,6BACA,6BACA,wBACA,0CACA,+BACA,oBACA,wEACA,uEACA,0EACA,oDACA,mDACA,0DACA,2DACA,8CACA,uDACA,iDACA,mDACA,mDACA,yDACA,6DACA,2BACA,2CCvUGC,GAAe,mKACfC,GAAc,wCACdC,GAAe,gCAQfC,GAAc,6BAKdC,GAAe,WASfC,GAAc,6DA4JlB,SAASC,GAAS/P,GAChB,IAAIqC,EAAMtzB,OAAOixB,GAGjB,GAAI2P,GAAa15B,KAAKosB,GACpB,OAAOA,EAGT,GAAIA,EAAI33B,OAAS,IAAMglC,GAAYz5B,KAAKosB,GACtC,MAAM,IAAI1hB,UAAU,2BAGtB,MAAO,IAAM0hB,EAAI72B,QAAQqkC,GAAc,QAAU,GACnD,CAMA,SAASG,GAAa15B,GACpBzK,KAAKokC,WAAa/8B,OAAOC,OAAO,MAChCtH,KAAKyK,KAAOA,CACd,CA3KA45B,GAAArQ,OAW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AUrT,MACnDhtB,EAAU,KACV,OAASsmC,EAAa//B,eACpB,OAAS+/B,EAAa//B,cAAc85B,YACnCrgC,EAAUsmC,EAAa//B,cAAc85B,UAAUrT,MAClDhtB,IAAYqtC,IACT,MAAQrtC,GAAWA,EAAQ6rB,WAC5B,MAAQwhB,GAAiBvhB,GAAauhB,GAC1C,CACA,SAASC,GAA8BttC,EAASsmC,GAC9CtmC,EAAU,KACV,OAASsmC,EAAangC,YACnBnG,EAAUsmC,EAAangC,UAAUI,cAActH,QAClDqnC,EAAeA,EAAa//B,cAActH,SACzBe,IACdsmC,EAAaza,WAAY,MAAQ7rB,GAAW8rB,GAAa9rB,GAC9D,CACA,SAASutC,GACPljG,EACAkhG,EACAiC,EACAC,GAEA,GAA+B,MAA3BlC,EAAYhmB,aACd,IAAKgmB,EAAcA,EAAYjuC,MAAO,OAASiuC,GAC7CmC,GACErjG,EACAkhG,EACAiC,EACAC,GAEClC,EAAcA,EAAY5kC,OACnC,CACA,SAAS+mC,GACPnE,EACAjD,EACAkH,EACAC,GAEA,IAAInpF,EAAQgiF,EAAahiF,MACzB,OAAQgiF,EAAanzD,KACnB,KAAK,EACL,KAAK,GACL,KAAK,GACHo6D,GACEhE,EACAjD,EACAkH,EACAC,GAEM,KAARnpF,GAAgB+hF,GAA0B,EAAGC,GAC7C,MACF,KAAK,EAuDL,KAAK,GAiDL,QACEiH,GACEhE,EACAjD,EACAkH,EACAC,SArGJ,KAAK,EACHF,GACEhE,EACAjD,EACAkH,EACAC,GAEM,KAARnpF,IACIilF,EAAe,KACjB,OAASjD,EAAangC,YACnBojC,EAAejD,EAAangC,UAAUI,cAActH,QACtDqnC,EAAeA,EAAa//B,cAActH,SAC1BsqC,IACdjD,EAAaza,WACd,MAAQ0d,GAAgBzd,GAAayd,KACzC,MACF,KAAK,GACH,GAAY,KAARjlF,EAAc,CAChBipF,GACEhE,EACAjD,EACAkH,EACAC,GAEFlE,EAAejD,EAAan5B,UAC5B,IACE,IAAIwgC,EAAyBrH,EAAahhB,cACxCvxE,EAAK45F,EAAuB55F,GAC5B65F,EAAeD,EAAuBC,aACxC,mBAAsBA,GACpBA,EACE75F,EACA,OAASuyF,EAAangC,UAAY,QAAU,SAC5CojC,EAAasE,uBACZ,EAEN,CAAC,MAAOpkG,GACP+8F,GAAwBF,EAAcA,EAAalgC,OAAQ38D,EAC5D,CACF,MACC8jG,GACEhE,EACAjD,EACAkH,EACAC,GAEJ,MASF,KAAK,GACH,MACF,KAAK,GACHE,EAAyBrH,EAAan5B,UACtCp5D,EAAKuyF,EAAangC,UAClB,OAASmgC,EAAa//B,cACmB,EAArConC,EAAuB/oB,YACrB2oB,GACEhE,EACAjD,EACAkH,EACAC,GAEFK,GAAwCvE,EAAcjD,GACnB,EAArCqH,EAAuB/oB,YACrB2oB,GACEhE,EACAjD,EACAkH,EACAC,IAEAE,EAAuB/oB,aAAe,EACxCmpB,GACExE,EACAjD,EACAkH,EACAC,KACmC,MAA5BnH,EAAa/gB,gBAEpB,KAARjhE,GAAgB8oF,GAAmCr5F,EAAIuyF,GACvD,MACF,KAAK,GACHiH,GACEhE,EACAjD,EACAkH,EACAC,GAEM,KAARnpF,GACEgpF,GAA8BhH,EAAangC,UAAWmgC,GAU9D,CACA,SAASyH,GACPb,EACA3B,EACAyC,EACAC,EACAd,GAIA,IAFAA,EACEA,MAAkE,MAA3B5B,EAAYhmB,cAChDgmB,EAAcA,EAAYjuC,MAAO,OAASiuC,GAAe,CAC5D,IAAIhC,EAAe2D,EACjB5G,EAAeiF,EACfiC,EAAiBQ,EACjBP,EAAuBQ,EACvB3pF,EAAQgiF,EAAahiF,MACvB,OAAQgiF,EAAanzD,KACnB,KAAK,EACL,KAAK,GACL,KAAK,GACH46D,GACExE,EACAjD,EACAkH,EACAC,EACAN,GAEF9G,GAA0B,EAAGC,GAC7B,MACF,KAAK,GACH,MACF,KAAK,GACH,IAAIhe,EAAWge,EAAan5B,UAC5B,OAASm5B,EAAa//B,cACK,EAAvB+hB,EAAS1D,YACPmpB,GACExE,EACAjD,EACAkH,EACAC,EACAN,GAEFW,GACEvE,EACAjD,IAEFhe,EAAS1D,aAAe,EAC1BmpB,GACExE,EACAjD,EACAkH,EACAC,EACAN,IAENA,GACU,KA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AEkC,CAClC,GACE2nC,KACC0C,EACD,CACAvoG,EAAKsoG,4BAA8BF,EACnCtC,IACEsC,EACFjB,EAAa,EACb,MAAM1wG,CACP,CACD2xG,EAAsB/oB,GACtBA,GAAsC8nB,EACtC,OAASiB,IACN,OAAS/oB,GACLA,GAAsC+oB,EACvC/oB,GAAoCtnF,KAAKmO,MACvCm5E,GACA+oB,GAET,CACDjB,EAAajpC,CACd,CAED,GADAkqC,GAAsB,EAClB,IAAMjB,EAAY,QACvB,CACF,CACD,GAAI,IAAMA,EAAY,CACpBP,GAAkB3F,EAAe,GACjC4F,GAAkB5F,EAAevhC,EAAO,GAAG,GAC3C,KACD,CACDjpE,EAAG,CAGD,OAFAwwG,EAAkBhG,EAClBmH,EAAsBjB,GAEpB,KAAK,EACL,KAAK,EACH,MAAMjwG,MAAM0hE,GAAuB,MACrC,KAAK,EACH,IAAa,QAAR8G,KAAqBA,EAAO,MACnC,KAAK,EACHmnC,GACEI,EACAvnC,EACA63B,IACCoO,IAEH,MAAMlvG,EACR,KAAK,EACH4oF,GAAsC,KACtC,MACF,KAAK,EACL,KAAK,EACH,MACF,QACE,MAAMnoF,MAAM0hE,GAAuB,MAEvC,IACW,SAAR8G,KAAsBA,GAEvB,IADEynC,EAAa/E,GAA+B,IAAMr2C,MAFtD,CAWE,GANA86C,GACEI,EACAvnC,EACA63B,IACCoO,IAEC,IAAM/lC,GAAaqnC,EAAiB,GAAG,GAAK,MAAMxwG,EACtDwwG,EAAgBuB,cAAgBC,GAC9BC,GAAoBze,KAClB,KACAgd,EACAD,EACA3nB,GACA6mB,GACAD,GACAvmC,EACA63B,GACAuO,GACApL,GACAiL,GACAyC,EACA,GACC,EACD,GAEFjB,EAGH,MACDuB,GACEzB,EACAD,EACA3nB,GACA6mB,GACAD,GACAvmC,EACA63B,GACAuO,GACApL,GACAiL,GACAyC,EACA,GACC,EACD,EAEH,CAEH,KAxIG,CAHCjB,EAAagB,GAAelH,EAAevhC,GAAO,GAClD0oC,GAAsB,CA2I3B,CACDtB,GAAsB7F,EACxB,CACA,SAASyH,GACP1oG,EACAi8F,EACA0M,EACAC,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AU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IACxD,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IACxD,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IACxD,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IAAK,IAAU,IACvE,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IAAK,IAAU,IACvE,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IACxD,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IACxD,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IACxD,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IAAK,IAAU,IACvE,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IAAK,IAAU,IACvE,IAAU,IAAM,IAAU,IAC1B,IAAU,IAAM,IAAU,IAAK,IAAU,IACzC,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IAAK,IAAU,IACvE,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IAAK,IAAU,IACvE,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IACxD,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IACxD,IAAU,IAAM,IAAU,IAAK,IAAU,IACzC,IAAU,IAAM,IAAU,IAAK,IAAU,IACzC,IAAU,IAAM,IAAU,IAAK,IAAU,IACzC,IAAU,IAAM,IAAU,IAAK,IAAU,IACzC,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IACxD,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IACxD,IAAU,IAAM,IAAU,IAAK,IAAU,IACzC,IAAU,IAAM,IAAU,IAAK,IAAU,IACzC,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IAAK,IAAU,IAAK,IAAU,IACtF,IAAU,IAAM,IAAU,IAAK,IAAU,IAAK,IAAU,IAAK,IAAU,IAAK,IAAU,IACtF,IAAU,IAAM,IAAU,IAC1B,IAAU,IAAM,IAAU,IAAK,IAAU,IACzC,IAAU,IAAM,IAAU,IAAK,IAAU,IACzC,IAAU,IAAM,IAAU,IAAK,IAAU,IACzC,IAAU,KAAM,IA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","x_google_ignoreList":[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,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,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,101,106,125,137,140,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,234,235,236,237,238,239,253,254,255,256,257,258,259,260,262,263,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314]}