@mudlet/mudlet-web 0.5.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist-lib/analytics.d.ts +27 -0
- package/dist-lib/assets/fonts/Vera.woff2 +0 -0
- package/dist-lib/assets/fonts/VeraBI.woff2 +0 -0
- package/dist-lib/assets/fonts/VeraBd.woff2 +0 -0
- package/dist-lib/assets/fonts/VeraIt.woff2 +0 -0
- package/dist-lib/assets/mapParser.worker-DrVZ3wg_.js +9 -0
- package/dist-lib/backupImport-wt8r7JXI.js +233 -0
- package/dist-lib/branding.d.ts +111 -13
- package/dist-lib/db/sqliteClient.d.ts +195 -7
- package/dist-lib/hooks/useAutoReconnect.d.ts +61 -0
- package/dist-lib/hooks/useDocumentFullscreen.d.ts +23 -0
- package/dist-lib/hooks/useKeyboardShortcuts.d.ts +37 -0
- package/dist-lib/hooks/useRecordLastPlayed.d.ts +10 -0
- package/dist-lib/import/applyMudletProfile.d.ts +35 -9
- package/dist-lib/import/backupImport.d.ts +118 -0
- package/dist-lib/import/collectProfileExport.d.ts +33 -2
- package/dist-lib/import/defaultPackages.d.ts +57 -14
- package/dist-lib/import/defaults/CF-loader/CF-loader.mpackage +0 -0
- package/dist-lib/import/defaults/MedBootstrap/MedBootstrap.mpackage +0 -0
- package/dist-lib/import/defaults/deleteOldProfiles/deleteOldProfiles.mpackage +0 -0
- package/dist-lib/import/defaults/echo/echo.mpackage +0 -0
- package/dist-lib/import/defaults/enable-accessibility/enable-accessibility.mpackage +0 -0
- package/dist-lib/import/defaults/generic_mapper/generic_mapper.mpackage +0 -0
- package/dist-lib/import/defaults/gui-drop/gui-drop.mpackage +0 -0
- package/dist-lib/import/defaults/icesus-loader/icesus-loader.mpackage +0 -0
- package/dist-lib/import/defaults/mg-loader/mg-loader.mpackage +0 -0
- package/dist-lib/import/defaults/mudlet-base-ui/mudlet-base-ui.mpackage +0 -0
- package/dist-lib/import/defaults/mudlet-mapper.xml +1215 -389
- package/dist-lib/import/mudletControlChars.d.ts +14 -0
- package/dist-lib/import/mudletHost.d.ts +73 -10
- package/dist-lib/import/mudletLink.d.ts +53 -2
- package/dist-lib/import/mudletProfileExport.d.ts +38 -5
- package/dist-lib/import/mudletProfileImport.d.ts +110 -12
- package/dist-lib/import/mudletVariables.d.ts +4 -3
- package/dist-lib/import/mudletWriteback.d.ts +15 -1
- package/dist-lib/import/mudletXmlImport.d.ts +46 -0
- package/dist-lib/import/packageFonts.d.ts +33 -0
- package/dist-lib/import/packageInstaller.d.ts +111 -7
- package/dist-lib/import/qtProfileData.d.ts +10 -0
- package/dist-lib/import/remotePackageInstall.d.ts +23 -7
- package/dist-lib/import/zipEntries.d.ts +45 -0
- package/dist-lib/index.d.ts +7 -3
- package/dist-lib/index.js +50508 -29836
- package/dist-lib/logging/SessionLogger.d.ts +75 -15
- package/dist-lib/map/MapSelectionOverlay.d.ts +2 -2
- package/dist-lib/map/MapStore.d.ts +387 -60
- package/dist-lib/map/MudletHighlightOverlay.d.ts +2 -2
- package/dist-lib/map/{MudixMapReader.d.ts → MudletMapReader.d.ts} +2 -2
- package/dist-lib/map/areaGraph.d.ts +120 -0
- package/dist-lib/map/environmentKit.d.ts +36 -0
- package/dist-lib/map/labelPixmap.d.ts +90 -0
- package/dist-lib/map/mapImageExport.d.ts +36 -2
- package/dist-lib/map/mapStyle.d.ts +11 -0
- package/dist-lib/map/mapVersion.d.ts +66 -0
- package/dist-lib/map/pathfinding.d.ts +2 -2
- package/dist-lib/mud/CharLoginController.d.ts +230 -0
- package/dist-lib/mud/ItemIdSequence.d.ts +1 -1
- package/dist-lib/mud/MudSession.d.ts +279 -22
- package/dist-lib/mud/PatternEngine.d.ts +153 -14
- package/dist-lib/mud/aliases/AliasEngine.d.ts +55 -9
- package/dist-lib/mud/autoLogin.d.ts +59 -0
- package/dist-lib/mud/commandSplit.d.ts +9 -0
- package/dist-lib/mud/connection/LineAssembler.d.ts +38 -11
- package/dist-lib/mud/connection/MudClient.d.ts +291 -53
- package/dist-lib/mud/connection/SubnegotiationRepair.d.ts +24 -0
- package/dist-lib/mud/connection/TelnetNegotiator.d.ts +208 -68
- package/dist-lib/mud/connection/telnetDebug.d.ts +8 -8
- package/dist-lib/mud/events.d.ts +102 -23
- package/dist-lib/mud/games/bundledGames.d.ts +12 -7
- package/dist-lib/mud/games/gameLinks.d.ts +40 -0
- package/dist-lib/mud/games/icons/3Kingdoms.png +0 -0
- package/dist-lib/mud/games/icons/3Scapes.png +0 -0
- package/dist-lib/mud/games/icons/achaea.png +0 -0
- package/dist-lib/mud/games/icons/aetolia.png +0 -0
- package/dist-lib/mud/games/icons/banner_astaria.png +0 -0
- package/dist-lib/mud/games/icons/banner_darkmists.png +0 -0
- package/dist-lib/mud/games/icons/banner_dreamland.png +0 -0
- package/dist-lib/mud/games/icons/banner_petria.jpg +0 -0
- package/dist-lib/mud/games/icons/banner_ropmud.png +0 -0
- package/dist-lib/mud/games/icons/blackmud.png +0 -0
- package/dist-lib/mud/games/icons/carrionfields.png +0 -0
- package/dist-lib/mud/games/icons/dragonfire_icon.png +0 -0
- package/dist-lib/mud/games/icons/fed2-logo.png +0 -0
- package/dist-lib/mud/games/icons/icesus_480x120.png +0 -0
- package/dist-lib/mud/games/icons/imperian.png +0 -0
- package/dist-lib/mud/games/icons/infinity_480x120.png +0 -0
- package/dist-lib/mud/games/icons/lusternia.png +0 -0
- package/dist-lib/mud/games/icons/morgengrauen_480x120.png +0 -0
- package/dist-lib/mud/games/icons/mudlet-tutorial.png +0 -0
- package/dist-lib/mud/games/icons/phoenixmud_480x120.png +0 -0
- package/dist-lib/mud/games/icons/starmourn.png +0 -0
- package/dist-lib/mud/games/icons/voidmud_icon.png +0 -0
- package/dist-lib/mud/games/icons/wotmudicon.png +0 -0
- package/dist-lib/mud/games/websiteLinks.d.ts +21 -0
- package/dist-lib/mud/keybindings/KeyEngine.d.ts +110 -4
- package/dist-lib/mud/keybindings/browserReservedKeys.d.ts +2 -2
- package/dist-lib/mud/keybindings/keyEventTarget.d.ts +61 -0
- package/dist-lib/mud/keybindings/qtKeys.d.ts +91 -12
- package/dist-lib/mud/protocol/atcp.d.ts +19 -0
- package/dist-lib/mud/protocol/byteString.d.ts +24 -0
- package/dist-lib/mud/protocol/charLoginFlow.d.ts +243 -16
- package/dist-lib/mud/protocol/charset.d.ts +111 -46
- package/dist-lib/mud/protocol/codePages.d.ts +10 -0
- package/dist-lib/mud/protocol/constants.d.ts +17 -10
- package/dist-lib/mud/protocol/echo.d.ts +23 -27
- package/dist-lib/mud/protocol/gmcp.d.ts +36 -6
- package/dist-lib/mud/protocol/index.d.ts +3 -2
- package/dist-lib/mud/protocol/luaLiteral.d.ts +12 -0
- package/dist-lib/mud/protocol/mccp.d.ts +83 -1
- package/dist-lib/mud/protocol/mnes.d.ts +41 -58
- package/dist-lib/mud/protocol/msdp.d.ts +11 -4
- package/dist-lib/mud/protocol/msp.d.ts +3 -2
- package/dist-lib/mud/protocol/mssp.d.ts +9 -4
- package/dist-lib/mud/protocol/multiByte.d.ts +51 -0
- package/dist-lib/mud/protocol/multiByteEncode.d.ts +42 -0
- package/dist-lib/mud/protocol/mxp.d.ts +193 -14
- package/dist-lib/mud/protocol/oauthClientFlow.d.ts +128 -0
- package/dist-lib/mud/protocol/qtCodePages.generated.d.ts +1 -0
- package/dist-lib/mud/protocol/tlsCodes.d.ts +40 -3
- package/dist-lib/mud/replay/ReplayPlayer.d.ts +16 -1
- package/dist-lib/mud/replay/replayFormat.d.ts +29 -2
- package/dist-lib/mud/text/Console.d.ts +255 -49
- package/dist-lib/mud/text/FormatState.d.ts +137 -14
- package/dist-lib/mud/text/ansiEscapes.d.ts +32 -16
- package/dist-lib/mud/text/colorParsers.d.ts +14 -2
- package/dist-lib/mud/text/colorSpaceId.d.ts +2 -0
- package/dist-lib/mud/text/colors.d.ts +17 -10
- package/dist-lib/mud/text/controlCharacterMode.d.ts +1 -1
- package/dist-lib/mud/text/hyperlinkVisibility.d.ts +1 -1
- package/dist-lib/mud/text/lineBreak.d.ts +5 -0
- package/dist-lib/mud/text/serverWrap.d.ts +2 -2
- package/dist-lib/mud/text/textAnalyzer.d.ts +79 -0
- package/dist-lib/mud/text/unicodeRuns.d.ts +11 -0
- package/dist-lib/mud/text/unicodeTables.generated.d.ts +3 -0
- package/dist-lib/mud/text/wcwidth.d.ts +27 -22
- package/dist-lib/mud/timers/TimerEngine.d.ts +163 -11
- package/dist-lib/mud/timers/workerClock.d.ts +67 -0
- package/dist-lib/mud/triggers/TriggerEngine.d.ts +449 -47
- package/dist-lib/mud/triggers/legacyColorPatterns.d.ts +58 -0
- package/dist-lib/mud/triggers/pcre/Pcre2.d.ts +83 -1
- package/dist-lib/oauth-callback.html +94 -0
- package/dist-lib/pcre2Wasm.d.ts +54 -0
- package/dist-lib/pcre2Wasm.js +241 -0
- package/dist-lib/scripting/EngineHost.d.ts +45 -21
- package/dist-lib/scripting/IScriptingRuntime.d.ts +103 -27
- package/dist-lib/scripting/MxpFrameManager.d.ts +10 -1
- package/dist-lib/scripting/ScriptingAPI.d.ts +1030 -213
- package/dist-lib/scripting/ScriptingEngine.d.ts +727 -106
- package/dist-lib/scripting/StopwatchManager.d.ts +97 -36
- package/dist-lib/scripting/http/HttpService.d.ts +9 -1
- package/dist-lib/scripting/http/userUrl.d.ts +41 -0
- package/dist-lib/scripting/lua/LuaRuntime.d.ts +352 -77
- package/dist-lib/scripting/lua/argContracts.d.ts +71 -0
- package/dist-lib/scripting/lua/bindings/automation.d.ts +1 -1
- package/dist-lib/scripting/lua/bindings/commands.d.ts +13 -0
- package/dist-lib/scripting/lua/bindings/context.d.ts +20 -2
- package/dist-lib/scripting/lua/bindings/diagnostics.d.ts +1 -1
- package/dist-lib/scripting/lua/bindings/map.d.ts +1 -1
- package/dist-lib/scripting/lua/bindings/media.d.ts +2 -2
- package/dist-lib/scripting/lua/bindings/output.d.ts +1 -1
- package/dist-lib/scripting/lua/bindings/session.d.ts +2 -2
- package/dist-lib/scripting/lua/bindings/textEdit.d.ts +1 -1
- package/dist-lib/scripting/lua/bindings/userWindows.d.ts +1 -1
- package/dist-lib/scripting/lua/byteArmor.d.ts +36 -0
- package/dist-lib/scripting/lua/imageSize.d.ts +7 -0
- package/dist-lib/scripting/lua/rex.d.ts +4 -2
- package/dist-lib/scripting/lua/sqlRowEncoder.d.ts +6 -1
- package/dist-lib/scripting/lua/utf8CaseMap.d.ts +1 -0
- package/dist-lib/scripting/lua/utf8Patterns.d.ts +21 -1
- package/dist-lib/scripting/lua/wellFormedStrings.d.ts +40 -0
- package/dist-lib/scripting/lua/yajl.d.ts +43 -5
- package/dist-lib/scripting/profilesPresence.d.ts +20 -2
- package/dist-lib/scripting/vfs/ProfileVFS.d.ts +164 -10
- package/dist-lib/scripting/vfs/fsErrors.d.ts +28 -0
- package/dist-lib/scripting/vfs/idbCommit.d.ts +20 -0
- package/dist-lib/storage/appStore.d.ts +24 -9
- package/dist-lib/storage/hooks.d.ts +5 -1
- package/dist-lib/storage/index.d.ts +2 -2
- package/dist-lib/storage/mapStorage.d.ts +2 -0
- package/dist-lib/storage/persistentStorage.d.ts +3 -1
- package/dist-lib/storage/profileStorage.d.ts +15 -0
- package/dist-lib/storage/profileVfsData.d.ts +3 -3
- package/dist-lib/storage/schema.d.ts +512 -40
- package/dist-lib/storage/storageMigration.d.ts +82 -0
- package/dist-lib/storage-g5V1b-c1.js +2039 -0
- package/dist-lib/styles.css +1 -1
- package/dist-lib/ui/AboutModal.d.ts +1 -1
- package/dist-lib/ui/BrandLoginFields.d.ts +1 -1
- package/dist-lib/ui/BrowserSignInModal.d.ts +23 -0
- package/dist-lib/ui/CmdLineMenuRegistry.d.ts +14 -5
- package/dist-lib/ui/CommandBar.d.ts +8 -8
- package/dist-lib/ui/ConnectionFormModal.d.ts +20 -1
- package/dist-lib/ui/ConnectionScreen.d.ts +9 -1
- package/dist-lib/ui/GameLinkPrompt.d.ts +28 -0
- package/dist-lib/ui/HelpModal.d.ts +5 -1
- package/dist-lib/ui/MapSymbolUsageModal.d.ts +32 -0
- package/dist-lib/ui/MouseEventRegistry.d.ts +31 -4
- package/dist-lib/ui/NotepadModal.d.ts +22 -0
- package/dist-lib/ui/ResizableModal.d.ts +16 -1
- package/dist-lib/ui/SettingsModal.d.ts +10 -1
- package/dist-lib/ui/TlsAlertBanner.d.ts +3 -1
- package/dist-lib/ui/Toolbar.d.ts +22 -1
- package/dist-lib/ui/VaultManageButton.d.ts +10 -5
- package/dist-lib/ui/VaultModal.d.ts +3 -0
- package/dist-lib/ui/buttons/ButtonsBar.d.ts +3 -1
- package/dist-lib/ui/buttons/inactiveButtons.d.ts +25 -0
- package/dist-lib/ui/cmdline/CommandLineManager.d.ts +19 -0
- package/dist-lib/ui/cmdline/plainText.d.ts +16 -0
- package/dist-lib/ui/cmdline/subCommandLine.d.ts +78 -0
- package/dist-lib/ui/cmdline/useCmdLineSelection.d.ts +26 -0
- package/dist-lib/ui/cmdline/useSubCommandLineKeys.d.ts +33 -0
- package/dist-lib/ui/codemirror/lineParagraphMarks.d.ts +19 -0
- package/dist-lib/ui/codemirror/luaHover.d.ts +7 -0
- package/dist-lib/ui/codemirror/options.d.ts +33 -0
- package/dist-lib/ui/codemirror/theme.d.ts +29 -5
- package/dist-lib/ui/commands/addonCommands.d.ts +134 -0
- package/dist-lib/ui/commands/appShortcuts.d.ts +86 -0
- package/dist-lib/ui/commands/hostCommands.d.ts +88 -0
- package/dist-lib/ui/commands/keyMatch.d.ts +20 -0
- package/dist-lib/ui/commands/keySequence.d.ts +57 -0
- package/dist-lib/ui/components/ContextMenu.d.ts +21 -1
- package/dist-lib/ui/components/FontPicker.d.ts +5 -1
- package/dist-lib/ui/components/useModalFocus.d.ts +13 -1
- package/dist-lib/ui/helpTopics.d.ts +15 -0
- package/dist-lib/ui/labels/LabelManager.d.ts +172 -9
- package/dist-lib/ui/labels/LabelOverlay.d.ts +19 -0
- package/dist-lib/ui/labels/backgroundImageSize.d.ts +19 -0
- package/dist-lib/ui/labels/labelModel.d.ts +64 -0
- package/dist-lib/ui/labels/qColor.d.ts +13 -0
- package/dist-lib/ui/labels/qtCss.d.ts +12 -4
- package/dist-lib/ui/landmarks.d.ts +9 -0
- package/dist-lib/ui/launcher/ActionMenu.d.ts +19 -0
- package/dist-lib/ui/launcher/GameDetails.d.ts +21 -0
- package/dist-lib/ui/launcher/GameSection.d.ts +18 -0
- package/dist-lib/ui/launcher/LauncherSearch.d.ts +23 -0
- package/dist-lib/ui/launcher/ProfileArt.d.ts +20 -0
- package/dist-lib/ui/launcher/ProfileSection.d.ts +43 -0
- package/dist-lib/ui/launcher/launcherModel.d.ts +72 -0
- package/dist-lib/ui/layout/overlayLayerOrder.d.ts +2 -2
- package/dist-lib/ui/menu/MenuBar.d.ts +31 -0
- package/dist-lib/ui/menu/SplitButton.d.ts +39 -0
- package/dist-lib/ui/menu/anchoredPopup.d.ts +74 -0
- package/dist-lib/ui/menu/appMenus.d.ts +65 -0
- package/dist-lib/ui/menu/menuModel.d.ts +88 -0
- package/dist-lib/ui/menu/toolbarModel.d.ts +56 -0
- package/dist-lib/ui/notepad.d.ts +76 -0
- package/dist-lib/ui/openSignInPage.d.ts +14 -0
- package/dist-lib/ui/output/OutputContextMenu.d.ts +14 -1
- package/dist-lib/ui/output/OutputRenderer.d.ts +5 -0
- package/dist-lib/ui/output/OutputSearchBar.d.ts +5 -1
- package/dist-lib/ui/output/StickyOutputPanel.d.ts +17 -3
- package/dist-lib/ui/output/TextAnalyzerModal.d.ts +25 -0
- package/dist-lib/ui/output/caretMode.d.ts +3 -2
- package/dist-lib/ui/output/clearSplit.d.ts +11 -0
- package/dist-lib/ui/output/outputCopy.d.ts +41 -2
- package/dist-lib/ui/output/outputRows.d.ts +43 -0
- package/dist-lib/ui/output/selectionGesture.d.ts +35 -0
- package/dist-lib/ui/output/wordSelection.d.ts +33 -0
- package/dist-lib/ui/search/matcher.d.ts +14 -4
- package/dist-lib/ui/settings/SettingsShell.d.ts +91 -0
- package/dist-lib/ui/settings/ShortcutEditor.d.ts +13 -0
- package/dist-lib/ui/sound/SoundManager.d.ts +210 -44
- package/dist-lib/ui/sound/closedCaption.d.ts +4 -1
- package/dist-lib/ui/sound/mediaDirection.d.ts +35 -0
- package/dist-lib/ui/tabCompletion.d.ts +53 -0
- package/dist-lib/ui/textedit/TextEditManager.d.ts +11 -2
- package/dist-lib/ui/useOpenProfiles.d.ts +1 -1
- package/dist-lib/ui/video/VideoManager.d.ts +7 -0
- package/dist-lib/ui/windows/WindowManager.d.ts +452 -37
- package/dist-lib/ui/windows/panels/ScriptEditorPanel.d.ts +14 -0
- package/dist-lib/ui/windows/panels/ScriptSearch.d.ts +6 -1
- package/dist-lib/ui/windows/panels/TextPanel.d.ts +4 -1
- package/dist-lib/ui/windows/panels/VariablesView.d.ts +37 -7
- package/dist-lib/ui/windows/panels/WindowCmdLine.d.ts +4 -2
- package/dist-lib/ui/windows/panels/aliasLoop.d.ts +24 -0
- package/dist-lib/ui/windows/panels/editorClipboard.d.ts +45 -0
- package/dist-lib/ui/windows/panels/editorUndo.d.ts +79 -0
- package/dist-lib/ui/windows/panels/mapAreaChange.d.ts +10 -0
- package/dist-lib/utils/appShellCache.d.ts +25 -0
- package/dist-lib/utils/fontFamilyName.d.ts +13 -0
- package/dist-lib/utils/fontLoader.d.ts +31 -0
- package/dist-lib/utils/formatBytes.d.ts +4 -0
- package/dist-lib/utils/mustBeOneOf.d.ts +9 -0
- package/dist-lib/utils/profileLock.d.ts +1 -1
- package/dist-lib/utils/systemTheme.d.ts +24 -0
- package/dist-lib/utils/timeZone.d.ts +10 -0
- package/dist-lib/vault/CredentialVault.d.ts +51 -5
- package/dist-lib/vault/deviceUnlock.d.ts +47 -0
- package/dist-lib/vault/vaultAccess.d.ts +24 -2
- package/dist-lib/vault/vaultHelpTopic.d.ts +9 -0
- package/dist-lib/vault/vaultRecord.d.ts +33 -1
- package/dist-lib/vfs-sw.js +220 -11
- package/dist-lib/vite.d.ts +1 -1
- package/dist-lib/vite.js +66 -43
- package/package.json +23 -15
- package/dist-lib/assets/mapParser.worker-t-3rd1zR.js +0 -9
- package/dist-lib/mud/connection/PingTracker.d.ts +0 -41
- package/dist-lib/ui/BundledGameGrid.d.ts +0 -21
- package/dist-lib/ui/ConnectionGrid.d.ts +0 -21
- package/dist-lib/ui/bufferWords.d.ts +0 -38
|
@@ -0,0 +1,2039 @@
|
|
|
1
|
+
import { createContext as e, useContext as t } from "react";
|
|
2
|
+
import { create as n } from "zustand";
|
|
3
|
+
import { persist as r } from "zustand/middleware";
|
|
4
|
+
//#region src/assets/mudlet-logo.svg?url
|
|
5
|
+
var i = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='147.957'%20height='147.898'%20viewBox='0%200%20147.957%20147.898'%3e%3c!--%20Mudlet%20application%20icon,%20from%20the%20Mudlet%20project%20(github.com/Mudlet/Mudlet,%20mudlet.svg).%20GPL-2.0-or-later,%20copyright%20the%20Mudlet%20contributors.%20Only%20a%20viewBox%20was%20added.%20--%3e%3clinearGradient%20id='a'%3e%3cstop%20offset='0'%20stop-color='%23fff'/%3e%3cstop%20offset='.393'%20stop-color='%23fff'/%3e%3cstop%20offset='1'/%3e%3c/linearGradient%3e%3clinearGradient%20id='b'%3e%3cstop%20offset='0'%20stop-color='%23c3a87a'%20stop-opacity='0'/%3e%3cstop%20offset='1'%20stop-color='%23c29752'/%3e%3c/linearGradient%3e%3clinearGradient%20id='c'%3e%3cstop%20offset='0'%20stop-color='%23826e4a'%20stop-opacity='0'/%3e%3cstop%20offset='.213'%20stop-color='%237d6948'/%3e%3cstop%20offset='1'%20stop-color='%237f6a49'/%3e%3c/linearGradient%3e%3clinearGradient%20id='d'%3e%3cstop%20offset='0'%20stop-color='%23e8d3ae'/%3e%3cstop%20offset='1'%20stop-color='%23dec393'/%3e%3c/linearGradient%3e%3clinearGradient%20id='e'%3e%3cstop%20offset='0'%20stop-color='%23d8b880'/%3e%3cstop%20offset='1'%20stop-color='%23b6a280'/%3e%3c/linearGradient%3e%3clinearGradient%20id='f'%3e%3cstop%20offset='0'%20stop-color='%2356421e'%20stop-opacity='0'/%3e%3cstop%20offset='.361'%20stop-color='%235e4a28'/%3e%3cstop%20offset='1'%20stop-color='%23675332'/%3e%3c/linearGradient%3e%3clinearGradient%20id='g'%3e%3cstop%20offset='0'%20stop-color='%23c2ac88'/%3e%3cstop%20offset='.643'%20stop-color='%23c0ad84'/%3e%3cstop%20offset='1'%20stop-color='%23d4c387'/%3e%3c/linearGradient%3e%3clinearGradient%20id='h'%3e%3cstop%20offset='0'%20stop-color='%23dec495'/%3e%3cstop%20offset='1'%20stop-color='%235d5546'/%3e%3c/linearGradient%3e%3clinearGradient%20id='i'%3e%3cstop%20offset='0'%20stop-color='%23cd9f4b'/%3e%3cstop%20offset='1'%20stop-color='%23cab791'/%3e%3c/linearGradient%3e%3clinearGradient%20id='j'%3e%3cstop%20offset='0'%20stop-color='%23f8e2ba'/%3e%3cstop%20offset='1'%20stop-color='%23e3c897'/%3e%3c/linearGradient%3e%3cclipPath%20id='k'%3e%3crect%20width='55.5'%20height='34'%20x='7.5'%20y='489.5'%20rx='3'/%3e%3c/clipPath%3e%3cclipPath%20id='l'%3e%3crect%20width='36'%20height='54'%20x='17'%20y='435.5'%20rx='3'/%3e%3c/clipPath%3e%3cclipPath%20id='m'%3e%3crect%20width='49'%20height='17'%20x='8'%20y='418.5'%20rx='3'/%3e%3c/clipPath%3e%3cclipPath%20id='n'%3e%3cpath%20d='m27.649267%20414.77215c.378131-17.01867%202.858251-32.8784%207.102372-42.91717.499529-1.54168%202.189612-3.01006%203.393063-2.66431l18.774085%206.94084c1.645393.52253%203.090707%202.14012%202.50279%203.6376-3.592606%2010.89416-6.30948%2024.38484-6.30948%2036.04197%200%201.98793-1.879838%202.7527-3.48145%202.7527h-19.434396c-1.640157-.43948-2.516183-1.98479-2.546984-3.79163z'/%3e%3c/clipPath%3e%3cclipPath%20id='o'%3e%3cpath%20d='m37.391926%20365.06074c3.416875-9.71451%2015.009391-29.13964%2023.619168-35.99848%201.193294-.9942%202.848203-1.29646%204.161818-.30276l14.573276%2013.46865c1.225226%201.21467%201.773765%202.89594.580473%203.84595-8.576892%207.92782-15.651682%2021.05732-19.470112%2029.54243-.707157%201.30356-2.71562%201.11969-4.206012.47953l-18.722332-6.9684c-1.225226-.77273-1.066659-2.71916-.536279-4.06692z'/%3e%3c/clipPath%3e%3cclipPath%20id='p'%3e%3cpath%20d='m65.997202%20324.0991c6.097174-6.52483%2024.799866-19.24027%2040.014248-23.32202%201.72415-.42947%202.77958.541%203.00995%201.74194l4.1895%2019.78632c.35913%201.65171.18735%203.26672-1.19579%203.76231-12.59904%204.6186-22.988128%2011.95434-28.525366%2017.31473-.933234.90303-2.930279-.20233-4.026421-1.3l-14.485127-13.42548c-.963559-1.05348-.143315-3.31395%201.019006-4.5578z'/%3e%3c/clipPath%3e%3cclipPath%20id='q'%3e%3cpath%20d='m135%20287.60225c10.8992%200%2022.70601%208.45621%2026.125%2013.50079l-4.5%2020.56949c-.375%201.54066-1.463%203.58128-3%202.89378-5.84098-2.48853-15.60287-4.05793-18.62511-4.05793-3.01187%200-12.70071%202.01089-18.87489%204.05793-1.15756.54105-2.69064-1.33482-3-2.89378l-4.5-20.81064c3.6766-5.03702%2015.29911-13.25964%2026.375-13.25964z'/%3e%3c/clipPath%3e%3cclipPath%20id='r'%3e%3cpath%20d='m204.0028%20324.0991c-6.09718-6.52483-24.79987-19.24027-40.01425-23.32202-1.72415-.42947-2.77958.541-3.00995%201.74194l-4.1895%2019.78632c-.35913%201.65171-.18735%203.26672%201.19579%203.76231%2012.59904%204.6186%2022.98813%2011.95434%2028.52537%2017.31473.93323.90303%202.93028-.20233%204.02642-1.3l14.48512-13.42548c.96356-1.05348.14332-3.31395-1.019-4.5578z'/%3e%3c/clipPath%3e%3cclipPath%20id='s'%3e%3cpath%20d='m232.60807%20365.06074c-3.41687-9.71451-15.00939-29.13964-23.61916-35.99848-1.1933-.9942-2.84821-1.29646-4.16182-.30276l-14.57328%2013.46865c-1.22522%201.21467-1.77376%202.89594-.58047%203.84595%208.57689%207.92782%2015.65168%2021.05732%2019.47011%2029.54243.70716%201.30356%202.71562%201.11969%204.20601.47953l18.72234-6.9684c1.22522-.77273%201.06665-2.71916.53627-4.06692z'/%3e%3c/clipPath%3e%3cclipPath%20id='t'%3e%3cpath%20d='m242.35073%20414.77215c-.37813-17.01867-2.85825-32.8784-7.10237-42.91717-.49953-1.54168-2.18961-3.01006-3.39306-2.66431l-18.77409%206.94084c-1.64539.52253-3.0907%202.14012-2.50279%203.6376%203.59261%2010.89416%206.30948%2024.38484%206.30948%2036.04197%200%201.98793%201.87984%202.7527%203.48145%202.7527h19.4344c1.64016-.43948%202.51618-1.98479%202.54698-3.79163z'/%3e%3c/clipPath%3e%3cclipPath%20id='u'%3e%3crect%20width='49'%20height='17'%20x='-262'%20y='418.5'%20rx='3'%20transform='scale(-1%201)'/%3e%3c/clipPath%3e%3cclipPath%20id='v'%3e%3crect%20width='36'%20height='54'%20x='-253'%20y='435.5'%20rx='3'%20transform='scale(-1%201)'/%3e%3c/clipPath%3e%3cclipPath%20id='w'%3e%3crect%20width='55.5'%20height='34'%20x='-262.5'%20y='489.5'%20rx='3'%20transform='scale(-1%201)'/%3e%3c/clipPath%3e%3cfilter%20id='x'%20width='1.212'%20height='1.347'%20x='-.106'%20y='-.173'%3e%3cfeGaussianBlur%20stdDeviation='2.454'/%3e%3c/filter%3e%3cfilter%20id='y'%20width='1.369'%20height='1.238'%20x='-.185'%20y='-.119'%3e%3cfeGaussianBlur%20stdDeviation='2.454'/%3e%3c/filter%3e%3cfilter%20id='z'%20width='1.241'%20height='1.274'%20x='-.121'%20y='-.137'%3e%3cfeGaussianBlur%20stdDeviation='2.454'/%3e%3c/filter%3e%3cfilter%20id='A'%20width='1.268'%20height='1.243'%20x='-.134'%20y='-.122'%3e%3cfeGaussianBlur%20stdDeviation='2.454'/%3e%3c/filter%3e%3cfilter%20id='B'%20width='1.327'%20height='1.218'%20x='-.164'%20y='-.109'%3e%3cfeGaussianBlur%20stdDeviation='2.454'/%3e%3c/filter%3e%3cfilter%20id='C'%20width='1.224'%20height='1.318'%20x='-.112'%20y='-.159'%3e%3cfeGaussianBlur%20stdDeviation='2.454'/%3e%3c/filter%3e%3cfilter%20id='D'%20width='1.24'%20height='1.693'%20x='-.12'%20y='-.347'%3e%3cfeGaussianBlur%20stdDeviation='2.454'/%3e%3c/filter%3e%3clinearGradient%20id='E'%20x1='179'%20x2='242.5'%20y1='415'%20y2='435.5'%20gradientUnits='userSpaceOnUse'%20xlink:href='%23h'/%3e%3clinearGradient%20id='F'%20x1='16'%20x2='24'%20y1='413'%20y2='432'%20gradientUnits='userSpaceOnUse'%20xlink:href='%23h'/%3e%3clinearGradient%20id='G'%20x1='40.994'%20x2='58.993'%20y1='338.869'%20y2='366.869'%20gradientUnits='userSpaceOnUse'%20xlink:href='%23h'/%3e%3clinearGradient%20id='H'%20x1='83.053'%20x2='94.873'%20y1='307.194'%20y2='330.194'%20gradientUnits='userSpaceOnUse'%20xlink:href='%23h'/%3e%3clinearGradient%20id='I'%20x1='24.649'%20x2='43.602'%20y1='386.14'%20y2='412.352'%20gradientUnits='userSpaceOnUse'%20xlink:href='%23h'/%3e%3clinearGradient%20id='J'%20x1='122.625'%20x2='131.125'%20y1='287.602'%20y2='315.653'%20gradientUnits='userSpaceOnUse'%20xlink:href='%23h'/%3e%3clinearGradient%20id='K'%20x1='181.5'%20x2='238.5'%20y1='482.5'%20y2='523.5'%20gradientUnits='userSpaceOnUse'%20xlink:href='%23h'/%3e%3clinearGradient%20id='L'%20x1='178.5'%20x2='241'%20y1='438.5'%20y2='489.5'%20gradientUnits='userSpaceOnUse'%20xlink:href='%23h'/%3e%3clinearGradient%20id='M'%20x1='172.009'%20x2='220.006'%20y1='364.369'%20y2='370.369'%20gradientUnits='userSpaceOnUse'%20xlink:href='%23h'/%3e%3clinearGradient%20id='N'%20x1='174.127'%20x2='176.947'%20y1='304.694'%20y2='329.194'%20gradientUnits='userSpaceOnUse'%20xlink:href='%23h'/%3e%3clinearGradient%20id='O'%20x1='178.445'%20x2='230.851'%20y1='387.852'%20y2='415.852'%20gradientUnits='userSpaceOnUse'%20xlink:href='%23h'/%3e%3clinearGradient%20id='P'%20x1='15'%20x2='23'%20y1='482.5'%20y2='523.5'%20gradientUnits='userSpaceOnUse'%20xlink:href='%23h'/%3e%3clinearGradient%20id='Q'%20x1='118.476'%20x2='130.902'%20y1='60.962'%20y2='195.019'%20gradientUnits='userSpaceOnUse'%20xlink:href='%23j'/%3e%3clinearGradient%20id='R'%20x1='129.746'%20x2='143.328'%20y1='60.385'%20y2='195.019'%20gradientUnits='userSpaceOnUse'%20xlink:href='%23i'/%3e%3clinearGradient%20id='S'%20x1='-51.433'%20x2='-39.007'%20y1='60.962'%20y2='195.019'%20gradientUnits='userSpaceOnUse'%20xlink:href='%23j'/%3e%3clinearGradient%20id='T'%20x1='-40.163'%20x2='-26.581'%20y1='60.385'%20y2='195.019'%20gradientUnits='userSpaceOnUse'%20xlink:href='%23i'/%3e%3clinearGradient%20id='U'%20x1='58'%20x2='79.5'%20y1='12.051'%20y2='244'%20gradientTransform='matrix(.5779564%200%200%20.5511991%20-84.954305%2058.15821)'%20gradientUnits='userSpaceOnUse'%20xlink:href='%23d'/%3e%3clinearGradient%20id='V'%20x1='77.5'%20x2='101'%20y1='11.051'%20y2='244'%20gradientTransform='matrix(.5779564%200%200%20.5565506%20-84.954304%2057.32606)'%20gradientUnits='userSpaceOnUse'%20xlink:href='%23i'/%3e%3clinearGradient%20id='W'%20x1='58'%20x2='79.5'%20y1='12.051'%20y2='244'%20gradientTransform='matrix(.5779564%200%200%20.5565507%2084.954305%2057.32606)'%20gradientUnits='userSpaceOnUse'%20xlink:href='%23d'/%3e%3clinearGradient%20id='X'%20x1='77.5'%20x2='101'%20y1='11.051'%20y2='244'%20gradientTransform='matrix(.5779564%200%200%20.5565506%2084.954304%2057.32606)'%20gradientUnits='userSpaceOnUse'%20xlink:href='%23i'/%3e%3clinearGradient%20id='Y'%20x1='129.746'%20x2='143.328'%20y1='60.385'%20y2='195.019'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0'%20stop-color='%23e2c89a'/%3e%3cstop%20offset='1'%20stop-color='%23bba072'/%3e%3c/linearGradient%3e%3clinearGradient%20id='Z'%20x1='17'%20x2='28'%20y1='410'%20y2='489.5'%20gradientUnits='userSpaceOnUse'%20xlink:href='%23h'/%3e%3clinearGradient%20id='aa'%20x1='105.417'%20x2='123.258'%20y1='172.539'%20y2='193.779'%20gradientUnits='userSpaceOnUse'%20xlink:href='%23e'/%3e%3clinearGradient%20id='ab'%20x1='59.801'%20x2='54.254'%20y1='197.681'%20y2='240.441'%20gradientTransform='matrix(-.5779564%200%200%20.5779564%20241.00254%2053.99746)'%20gradientUnits='userSpaceOnUse'%20xlink:href='%23e'/%3e%3clinearGradient%20id='ac'%20x1='135.941'%20x2='190.449'%20y1='74.871'%20y2='137.868'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0'%20stop-color='%23c3a87a'/%3e%3cstop%20offset='1'%20stop-color='%23ceb791'/%3e%3c/linearGradient%3e%3clinearGradient%20id='ad'%20x1='163.42'%20x2='163.42'%20y1='76'%20y2='144.892'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0'%20stop-color='%23b3f8ff'/%3e%3cstop%20offset='1'%20stop-color='%23fff'/%3e%3c/linearGradient%3e%3cclipPath%20id='ae'%3e%3cpath%20d='m9.2807765%20209.98429%2015.7902645-8.285h43.83813c1.368952%200%202.990173%201.44895%202.990173%202.86488v23.23763c0%201.28784-.434978%202.38479-1.018429%203.125l-8.684446%2011.58432z'/%3e%3c/clipPath%3e%3cfilter%20id='af'%20width='1.612'%20height='1.203'%20x='-.306'%20y='-.102'%3e%3cfeGaussianBlur%20stdDeviation='1.693'/%3e%3c/filter%3e%3clinearGradient%20id='ag'%20x1='66.25'%20x2='82.513'%20y1='209.688'%20y2='225.878'%20gradientUnits='userSpaceOnUse'%20xlink:href='%23g'/%3e%3clinearGradient%20id='ah'%20x1='66.25'%20x2='77.917'%20y1='209.688'%20y2='226.232'%20gradientUnits='userSpaceOnUse'%20xlink:href='%23g'/%3e%3cfilter%20id='ai'%3e%3cfeGaussianBlur%20stdDeviation='.601'/%3e%3c/filter%3e%3clinearGradient%20id='aj'%20x1='89.931'%20x2='106.266'%20y1='190.196'%20y2='195.019'%20gradientUnits='userSpaceOnUse'%20spreadMethod='reflect'%20xlink:href='%23f'/%3e%3clinearGradient%20id='ak'%20x1='8.611'%20x2='36.875'%20y1='235.656'%20y2='244'%20gradientTransform='matrix(-.5779564%200%200%20.5779564%20241.00253%2053.99745)'%20gradientUnits='userSpaceOnUse'%20spreadMethod='reflect'%20xlink:href='%23f'/%3e%3cfilter%20id='al'%3e%3cfeGaussianBlur%20stdDeviation='.246'/%3e%3c/filter%3e%3clinearGradient%20id='am'%20x1='94.491'%20x2='105.981'%20y1='172.117'%20y2='174.212'%20gradientUnits='userSpaceOnUse'%20spreadMethod='reflect'%20xlink:href='%23f'/%3e%3clinearGradient%20id='an'%20x1='-43.5'%20x2='-23.619'%20y1='204.375'%20y2='208'%20gradientTransform='matrix(-.5779564%200%200%20.5779564%20206.32515%2053.99745)'%20gradientUnits='userSpaceOnUse'%20spreadMethod='reflect'%20xlink:href='%23f'/%3e%3cclipPath%20id='ao'%3e%3cpath%20d='m-4.71875%20155.28125-9.6875.15625v.0625h-25.59375c-1.662%200-3%201.338-3%203v46c0%201.662%201.338%203%203%203h30c.695352%200%201.336087-.23084%201.84375-.625v.03125l4.5-3.09375c.792279-.61851%201.224877-1.3744%201.28125-2.5625v-43.34375c0-1.29363-1.083352-2.625-2.34375-2.625z'/%3e%3c/clipPath%3e%3cfilter%20id='ap'%20width='1.115'%20height='3.712'%20x='-.057'%20y='-1.356'%3e%3cfeGaussianBlur%20stdDeviation='.971'/%3e%3c/filter%3e%3clinearGradient%20id='aq'%20x1='89.867'%20x2='105.221'%20y1='140.953'%20y2='144.161'%20gradientUnits='userSpaceOnUse'%20spreadMethod='reflect'%20xlink:href='%23c'/%3e%3clinearGradient%20id='ar'%20x1='8.5'%20x2='35.065'%20y1='150.453'%20y2='156.004'%20gradientTransform='matrix(-.5779564%200%200%20.5779564%20241.00253%2053.99745)'%20gradientUnits='userSpaceOnUse'%20spreadMethod='reflect'%20xlink:href='%23c'/%3e%3clinearGradient%20id='as'%20x1='110.144'%20x2='110.144'%20y1='129.019'%20y2='134.433'%20gradientUnits='userSpaceOnUse'%20xlink:href='%23b'/%3e%3clinearGradient%20id='at'%20x1='43.585'%20x2='43.585'%20y1='129.804'%20y2='139.172'%20gradientTransform='matrix(-.5779564%200%200%20.5779564%20241.00254%2053.99746)'%20gradientUnits='userSpaceOnUse'%20xlink:href='%23b'/%3e%3cclipPath%20id='au'%3e%3cpath%20d='m63.10928%20241.45056%208.662058-11.66726c13.798057-17.43491%2043.663052-40.42737%2056.617522-49.82852%209.90658-7.18928%2038.18833-20.11492%2041.4957-32.11484%2010.51625%202.44608%206.79575%2024.44828%207.76346%2035.4108%201.4984%2016.97429%208.87239%2031.95167%2020.31063%2046.21562l8.83477%2011.9842z'/%3e%3c/clipPath%3e%3cfilter%20id='av'%20width='1.178'%20height='1.606'%20x='-.089'%20y='-.303'%3e%3cfeGaussianBlur%20stdDeviation='4.554'/%3e%3c/filter%3e%3cradialGradient%20id='aw'%20cx='55.888'%20cy='238.674'%20r='98.818'%20gradientTransform='matrix(2.1281542%20.3712152%20-.1781874%201.0215381%206.48732%20-47.124421)'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0'%20stop-color='%2392d84b'/%3e%3cstop%20offset='.655'%20stop-color='%239ce463'/%3e%3cstop%20offset='1'%20stop-color='%23cbf0a8'/%3e%3c/radialGradient%3e%3cclipPath%20id='ax'%3e%3cpath%20d='m51.265242%20103.1228c39.694702%207.81967%20107.458578%2033.14008%20118.619798%2045.43053%2020.46922%202.11455%2031.46896%202.19053%2066.64218%201.94563v90.15611h-197.636347z'/%3e%3c/clipPath%3e%3clinearGradient%20id='ay'%20x1='157.685'%20x2='62.225'%20y1='143.958'%20y2='218.912'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0'%20stop-color='%2397d766'/%3e%3cstop%20offset='1'%20stop-color='%2387de45'%20stop-opacity='0'/%3e%3c/linearGradient%3e%3cfilter%20id='az'%20width='1.406'%20height='1.451'%20x='-.203'%20y='-.225'%3e%3cfeGaussianBlur%20stdDeviation='10.195'/%3e%3c/filter%3e%3cradialGradient%20id='aA'%20cx='201.195'%20cy='152.835'%20r='64.452'%20gradientTransform='matrix(1.3101069%20-.2311015%20.09384409%20.5319982%20-52.3378%20121.81406)'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0'%20stop-color='%2378cb7b'/%3e%3cstop%20offset='1'%20stop-color='%23aee6be'/%3e%3c/radialGradient%3e%3cfilter%20id='aB'%3e%3cfeGaussianBlur%20stdDeviation='.838'/%3e%3c/filter%3e%3cfilter%20id='aC'%3e%3cfeGaussianBlur%20stdDeviation='.397'/%3e%3c/filter%3e%3cfilter%20id='aD'%3e%3cfeGaussianBlur%20stdDeviation='1.086'/%3e%3c/filter%3e%3cradialGradient%20id='aE'%20cx='129.75'%20cy='245.25'%20r='88.25'%20gradientTransform='matrix(1.130307%200%200%20.184136%20-16.907327%20200.09065)'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0'%20stop-color='%23fff6af'/%3e%3cstop%20offset='.655'%20stop-color='%23fff6af'/%3e%3cstop%20offset='1'%20stop-color='%23fff6af'%20stop-opacity='0'/%3e%3c/radialGradient%3e%3clinearGradient%20id='aF'%20x1='119'%20x2='119'%20y1='263'%20y2='148.543'%20gradientUnits='userSpaceOnUse'%20xlink:href='%23a'/%3e%3cmask%20id='aG'%20maskUnits='userSpaceOnUse'%3e%3cpath%20fill='url(%23aF)'%20d='m9.999991%20148.54703h250v114.453h-250z'/%3e%3c/mask%3e%3clinearGradient%20id='aH'%20x1='119'%20x2='119'%20y1='-148.547'%20y2='-263.004'%20gradientUnits='userSpaceOnUse'%20xlink:href='%23a'/%3e%3cmask%20id='aI'%20maskUnits='userSpaceOnUse'%3e%3cpath%20fill='url(%23aH)'%20d='m9.999991-263h250v114.453h-250z'%20transform='scale(1%20-1)'/%3e%3c/mask%3e%3cfilter%20id='aJ'%3e%3cfeGaussianBlur%20stdDeviation='1.604'/%3e%3c/filter%3e%3cfilter%20id='aK'%3e%3cfeGaussianBlur%20stdDeviation='.115'/%3e%3c/filter%3e%3cfilter%20id='aL'%3e%3cfeGaussianBlur%20stdDeviation='.11'/%3e%3c/filter%3e%3cg%20transform='translate(-89%20-58.102252)'%3e%3cpath%20fill='url(%23ad)'%20fill-rule='evenodd'%20d='m111.31397%20159.36976v-43.11542c9.04355-20.49509%2018.25388-40.87662%2052.31064-44.34144%2036.49604%201.98373%2046.79743%2028.72355%2051.90197%2045.1588v42.29806z'/%3e%3cpath%20fill='url(%23aA)'%20fill-rule='evenodd'%20d='m150.1978%20149.8589c24.13641-17.53857%2042.38808-24.67921%2086.32055-34.24041l30.19085%2059.5508-6.24638%2028.82714c-66.05481-16.33279-155.79476-21.05362-110.26502-54.13753z'%20filter='url(%23aD)'%20transform='matrix(.5779564%200%200%20.5779564%2069.349481%2051.68563)'/%3e%3cpath%20fill='url(%23aw)'%20fill-rule='evenodd'%20d='m78.26524%20107.1228c39.6947%207.81967%20107.45858%2033.14008%20118.6198%2045.43053%2020.46922%202.11455%2031.46896%202.19053%2066.64218%201.94563v90.15611h-197.63635z'%20filter='url(%23aB)'%20transform='matrix(.5779564%200%200%20.5779564%2069.349481%2051.68563)'/%3e%3cg%20filter='url(%23aJ)'%20mask='url(%23aI)'%20transform='matrix(.5779564%200%200%20.5779564%2084.954305%2053.99746)'%3e%3cpath%20fill='%23fff8af'%20fill-rule='evenodd'%20d='m63.10928%20242.15767%208.662058-11.66726c13.798057-17.43491%2043.663052-40.42737%2056.617522-49.82852%209.90658-7.18928%2038.18833-20.11492%2041.4957-32.11484%2010.51625%202.44608%206.79575%2024.44828%207.76346%2035.4108%201.4984%2016.97429%208.87239%2031.95167%2020.31063%2046.21562l8.83477%2011.9842z'/%3e%3cpath%20fill='url(%23aE)'%20d='m218%20245.25a88.25%2016.25%200%201%201%20-176.5%200%2088.25%2016.25%200%201%201%20176.5%200z'%20transform='matrix(1.1695201%200%200%201.1846154%20-16.745242%20-46.776923)'/%3e%3cpath%20fill='%23f3cf48'%20d='m205.76808%20185.50073a61.518291%2018.031223%200%201%201%20-123.036585%200%2061.518291%2018.031223%200%201%201%20123.036585%200z'%20clip-path='url(%23au)'%20filter='url(%23av)'%20opacity='.075'%20transform='matrix(.9959362%200%200%201.1663781%20.336207%20-29.656146)'/%3e%3c/g%3e%3cg%20mask='url(%23aG)'%20transform='matrix(.5779564%200%200%20.5779564%2084.954305%2053.99746)'%3e%3cpath%20fill='%23fff6af'%20fill-rule='evenodd'%20d='m63.10928%20242.15767%208.662058-11.66726c13.798057-17.43491%2043.663052-40.42737%2056.617522-49.82852%209.90658-7.18928%2038.18833-20.11492%2041.4957-32.11484%2010.51625%202.44608%206.79575%2024.44828%207.76346%2035.4108%201.4984%2016.97429%208.87239%2031.95167%2020.31063%2046.21562l8.83477%2011.9842z'/%3e%3cpath%20fill='url(%23aE)'%20d='m218%20245.25a88.25%2016.25%200%201%201%20-176.5%200%2088.25%2016.25%200%201%201%20176.5%200z'%20transform='matrix(1.1695201%200%200%201.1846154%20-16.745242%20-46.776923)'/%3e%3cpath%20fill='%23f3cf48'%20d='m205.76808%20185.50073a61.518291%2018.031223%200%201%201%20-123.036585%200%2061.518291%2018.031223%200%201%201%20123.036585%200z'%20clip-path='url(%23au)'%20filter='url(%23av)'%20opacity='.075'%20transform='matrix(.9959362%200%200%201.1663781%20.336207%20-29.656146)'/%3e%3c/g%3e%3cpath%20fill='%2385e239'%20fill-rule='evenodd'%20d='m196.875%20152.5625c10.51624%202.44607%206.81354%2024.44373%207.78125%2035.40625%201.49839%2016.97428%208.87426%2031.9548%2020.3125%2046.21875l7.71875%2010.46875h30.84375v-90.15625'%20filter='url(%23aC)'%20opacity='.332'%20transform='matrix(.5779564%200%200%20.5779564%2069.349481%2051.68563)'/%3e%3cpath%20fill='url(%23ay)'%20fill-rule='evenodd'%20d='m50.911688%20204.94618c72.779012-42.71761%20119.596962-56.48194%20110.959412-72.80256l9.66295%2018.8198-101.530479%2092.16652z'%20clip-path='url(%23ax)'%20filter='url(%23az)'%20opacity='.409'%20transform='matrix(.5779564%200%200%20.5779564%2084.954305%2053.99746)'/%3e%3cpath%20fill='%23282d30'%20d='m24.3125%20228.8125-15.3125%2013.0625c0%201.662%201.338%202.99998%203%203h49.5c1.147627%200%202.120189-.65167%202.625-1.59375l8.5625-12.15625c.966114-1.58514-.030774-2.3125-1.53125-2.3125z'%20filter='url(%23ai)'%20opacity='.72'%20transform='matrix(.5711909%200%200%20.5779564%2085.015193%2053.99746)'/%3e%3cpath%20fill='%23cdb690'%20fill-rule='evenodd'%20stroke='%23a6926e'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-width='.578'%20d='m206.42029%20143.47881c-.88399%200-1.37268-.47487-1.32355-1.08135v-7.11998c0-.57357.48639-.89686%201.23387-.89686l3.58025-.3251%201.6606%209.90525z'/%3e%3cpath%20fill='%23282d30'%20d='m24.3125%20228.8125-15.3125%2013.0625c0%201.662%201.338%202.99998%203%203h49.5c1.147627%200%202.120189-.65167%202.625-1.59375l8.5625-12.15625c.966114-1.58514-.030774-2.3125-1.53125-2.3125z'%20filter='url(%23ai)'%20opacity='.72'%20transform='matrix(-.5711909%200%200%20.5779564%20241.24817%2053.99746)'/%3e%3cpath%20fill='url(%23ab)'%20fill-rule='evenodd'%20d='m235.63866%20175.35923-9.12609-4.78837h-25.33653c-.79119%200-1.72818.83743-1.72818%201.65578v13.43033c0%20.74432.25139%201.37831.5886%201.80612l5.01923%206.69523z'/%3e%3cpath%20fill='%23282d30'%20d='m34.34375%20199.9375-16.84375%205.5625c0%201.662%201.338%203%203%203h30c.695351%200%201.336087-.23084%201.84375-.625v.03125l4.5-3.09375c.792279-.61851%201.224877-1.3744%201.28125-2.5625z'%20filter='url(%23al)'%20opacity='.528'%20transform='matrix(-.5779564%200%200%20.5779564%20241.20688%2053.99746)'/%3e%3cpath%20fill='url(%23ah)'%20fill-rule='evenodd'%20d='m58.625%20216.5%2015.25-14v37.25l-14.25%2010.625z'%20clip-path='url(%23ae)'%20filter='url(%23af)'%20opacity='.481'%20transform='matrix(-.5779564%200%200%20.5779564%20241.00254%2053.99746)'/%3e%3cpath%20fill='none'%20stroke='%23aa9876'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-width='.578'%20d='m235.63866%20175.35923-9.12609-4.78837h-25.33653c-.79119%200-1.72818.83743-1.72818%201.65578v13.43033c0%20.74432.25139%201.37831.5886%201.80612l5.01923%206.69523z'/%3e%3cpath%20fill='%23c0ab87'%20fill-rule='evenodd'%20stroke='%23a6926e'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-width='.578'%20d='m208.44067%20171.78482c-.45791-.35747-.71272-.79434-.74529-1.48101v-25.03863c0-.74766.62528-1.51417%201.35374-1.51417l5.59376.08902-3.61223%2029.73229z'/%3e%3cpath%20fill='url(%23ac)'%20fill-rule='evenodd'%20stroke='%23a6926e'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-width='.578'%20d='m125.46544%2085.55026-17.12196%2036.68218%205.27385%2011.79392%203.03427.10837c.88761.07687%201.5352-.39984%201.5352-1.39071.33367-8.53485%201.40835-13.15815%203.64835-19.65052.36075-.62485-.08102-1.49158-.19867-1.60744.1623.05572.77207-.07439%201.08367-.61408%202.39951-6.77828%206.06272-11.57056%2010.34903-16.32727.4065-.36719.64975-.88407.30704-1.40877.4257.45501.86593.17981%201.44489-.18061%204.98132-5.24554%209.72063-7.39278%2015.37003-9.69883.55406-.25936%201.22218-.43875%201.0656-1.39071.29179.67888.78197.65795%201.39071.57796%203.9918-.90596%207.13887-2.14975%2010.29485-2.05897s6.95332%201.21717%2010.36709%202.05897c.60875.07999%201.09893.10092%201.39071-.57796-.15657.95196.51155%201.13135%201.06561%201.39071%205.6494%202.30605%2010.3887%204.45329%2015.37003%209.69883.57896.36042%201.01918.63562%201.44489.18061-.34272.5247-.09946%201.04158.30704%201.40877%204.2863%204.75671%207.94952%209.54899%2010.34903%2016.32727.31159.53969.92137.6698%201.08367.61408-.11765.11586-.55943.98259-.19867%201.60744%202.23999%206.49237%203.31467%2011.11567%203.64835%2019.65052%200%20.99087.64759%201.46758%201.53519%201.39071l3.03428-.10837%205.27385-11.79392-17.12196-36.68218-37.51299-13.31105z'/%3e%3cpath%20fill='url(%23Q)'%20d='m219.39164%20103.15886c-1.97481-5.61457-8.67478-16.84145-13.65085-20.80555-.68968-.57461-1.64614-.74931-2.40535-.17499l-8.42272%207.78429c-.70813.70203-1.02516%201.67373-.33549%202.2228%204.95707%204.58193%209.04599%2012.17021%2011.25288%2017.07423.40871.75341%201.56951.64713%202.43089.27715l10.82069-4.02743c.70813-.4466.61648-1.57156.30995-2.3505z'/%3e%3cpath%20fill='url(%23M)'%20d='m207.125%20325.1875c-1.39457-.11543-2.83681.23667-4.09375%201.1875-.08653.05811-.16998.1207-.25.1875l-14.5625%2013.46875c-.02114.02053-.04197.04136-.0625.0625-.94511.93697-1.72575%202.06691-2.03125%203.5625-.29277%201.43327.24803%203.38386%201.5625%204.5625l-.0625.0625c7.96834%207.36533%2015.05664%2020.28586%2018.78125%2028.5625.02834.07413.05962.1471.09375.21875.9494%201.75012%202.90031%202.46407%204.3125%202.53125%201.36281.06483%202.52587-.27364%203.59375-.71875v.03125l.125-.0625%2018.59375-6.90625c.19683-.07379.38537-.16805.5625-.28125%201.62334-1.02381%202.22808-2.81217%202.3125-4.15625.08212-1.30743-.17307-2.42247-.5625-3.4375-3.70623-10.53721-14.85134-29.58261-24.59375-37.34375-1.00577-.83796-2.32418-1.41582-3.71875-1.53125zm-.46875%205.96875c.09039-.07209.05263-.07587.40625.21875.02071.01066.04155.02108.0625.03125%207.47713%205.95654%2019.52876%2025.76446%2022.65625%2034.65625.0099.03142.02032.06267.03125.09375.07138.1814.09322.35969.125.5625l-17.625%206.5625c-.05266.01937-.10476.04021-.15625.0625-.25313.10872-.45904.11861-.6875.15625-3.89085-8.50392-10.55892-20.78546-19.1875-29.03125.04963-.06804.02372-.05557.09375-.125z'%20clip-path='url(%23s)'%20filter='url(%23A)'%20opacity='.24'%20transform='matrix(.5779564%200%200%20.5779564%2084.954305%20-107.83034)'/%3e%3cpath%20fill='url(%23Q)'%20d='m202.85904%2079.48482c-3.52391-3.77107-14.33325-11.12004-23.1265-13.47912-.99648-.24821-1.60647.31268-1.73962%201.00677l-2.42135%2011.43563c-.20756.95462-.10828%201.88802.69112%202.17445%207.28169%202.66935%2013.28614%206.90909%2016.48642%2010.00716.53937.52191%201.69357-.11694%202.32709-.75134l8.37177-7.75935c.5569-.60886.08284-1.91531-.58893-2.6342z'/%3e%3crect%20width='32.077'%20height='19.651'%20x='-236.668'%20y='175.079'%20fill='url(%23S)'%20rx='1.734'%20transform='scale(-1%201)'/%3e%3cpath%20fill='url(%23K)'%20d='m259.5%20486.5c3.27211%200%206%202.72789%206%206v28c0%203.27211-2.72789%206-6%206h-49.5c-3.27211%200-6-2.72789-6-6v-28c0-3.27211%202.72789-6%206-6zm0%206h-49.5v28h49.5z'%20clip-path='url(%23w)'%20filter='url(%23x)'%20opacity='.24'%20transform='matrix(.5779564%200%200%20.5779564%2084.954305%20-107.83034)'/%3e%3cpath%20fill='url(%23aa)'%20fill-rule='evenodd'%20d='m90.31819%20175.35923%209.12608-4.78837h25.33653c.7912%200%201.72819.83743%201.72819%201.65578v13.43033c0%20.74432-.25139%201.37831-.5886%201.80612l-5.01923%206.69523z'/%3e%3cpath%20fill='url(%23ag)'%20fill-rule='evenodd'%20d='m58.625%20216.5%2015.25-14v37.25l-14.25%2010.625z'%20clip-path='url(%23ae)'%20filter='url(%23af)'%20transform='matrix(.5779564%200%200%20.5779564%2084.954305%2053.99746)'/%3e%3cpath%20fill='none'%20stroke='%23aa9876'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-width='.578'%20d='m90.31819%20175.35923%209.12608-4.78837h25.33653c.7912%200%201.72819.83743%201.72819%201.65578v13.43033c0%20.74432-.25139%201.37831-.5886%201.80612l-5.01923%206.69523z'/%3e%3cpath%20fill='%23282d30'%20d='m61.34375%20203.9375-16.84375%205.5625c0%201.662%201.338%203%203%203h30c.69535%200%201.33609-.23084%201.84375-.625v.03125l4.5-3.09375c.79228-.61851%201.22488-1.3744%201.28125-2.5625z'%20filter='url(%23al)'%20opacity='.491'%20transform='matrix(.5779564%200%200%20.5779564%2069.349481%2051.68563)'/%3e%3cpath%20fill='%23bca276'%20fill-rule='evenodd'%20stroke='%23a6926e'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-width='.578'%20d='m117.51618%20171.78482c.4579-.35747.71271-.79434.74529-1.48101v-25.03863c0-.74766-.62528-1.51417-1.35374-1.51417l-5.59376.08902%203.61223%2029.73229z'/%3e%3crect%20width='32.077'%20height='19.651'%20x='89.289'%20y='175.079'%20fill='url(%23Q)'%20rx='1.734'/%3e%3cpath%20fill='url(%23P)'%20d='m10.5%20486.5c-3.2721083%200-6%202.72789-6%206v28c0%203.27211%202.7278917%206%206%206h49.5c3.272108%200%206-2.72789%206-6v-28c0-3.27211-2.727892-6-6-6zm0%206h49.5v28h-49.5z'%20clip-path='url(%23k)'%20filter='url(%23x)'%20opacity='.24'%20transform='matrix(.5779564%200%200%20.5779564%2084.954305%20-107.83034)'/%3e%3cpath%20fill='%23c3a87a'%20fill-rule='evenodd'%20stroke='%23a6926e'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-width='.578'%20d='m119.53655%20143.47881c.88399%200%201.37269-.47487%201.32355-1.08135v-7.11998c0-.57357-.48638-.89686-1.23386-.89686l-3.58025-.3251-1.66061%209.90525z'/%3e%3crect%20width='20.806'%20height='30.054'%20x='94.78'%20y='143.87'%20fill='url(%23W)'%20rx='1.734'/%3e%3cpath%20fill='url(%23Z)'%20d='m20%20432.5c-3.272108%200-6%202.72789-6%206v48c0%203.27211%202.727888%206.00001%206%206h30c3.272108%200%206-2.72789%206-6v-48c0-3.27211-2.727892-6-6-6zm0%206h30v48h-30z'%20clip-path='url(%23l)'%20filter='url(%23B)'%20opacity='.24'%20transform='matrix(.5779564%200%200%20.5565507%2084.954305%20-98.50812)'/%3e%3crect%20width='28.32'%20height='9.825'%20x='89.578'%20y='134.044'%20fill='url(%23Q)'%20rx='1.734'/%3e%3cpath%20fill='url(%23F)'%20d='m11%20415.5c-3.2721083%200-6%202.72789-6%206v11c0%203.27211%202.7278917%206%206%206h43c3.272108%200%206-2.72789%206-6v-11c0-3.27211-2.727892-6-6-6zm0%206h43v11h-43z'%20clip-path='url(%23m)'%20filter='url(%23D)'%20opacity='.24'%20transform='matrix(.5779564%200%200%20.5779564%2084.954305%20-107.83034)'/%3e%3cpath%20fill='url(%23Q)'%20d='m106.56521%20103.15886c1.9748-5.61457%208.67478-16.84145%2013.65085-20.80555.68967-.57461%201.64614-.74931%202.40535-.17499l8.42272%207.78429c.70812.70203%201.02516%201.67373.33549%202.2228-4.95707%204.58193-9.04599%2012.17021-11.25288%2017.07423-.40871.75341-1.56951.64713-2.43089.27715l-10.8207-4.02743c-.70812-.4466-.61647-1.57156-.30994-2.3505z'/%3e%3cpath%20fill='url(%23Q)'%20d='m123.09781%2079.48482c3.52391-3.77107%2014.33325-11.12004%2023.1265-13.47912.99648-.24821%201.60647.31268%201.73961%201.00677l2.42135%2011.43563c.20756.95462.10828%201.88802-.69111%202.17445-7.2817%202.66935-13.28614%206.90909-16.48642%2010.00716-.53937.52191-1.69357-.11694-2.3271-.75134l-8.37177-7.75935c-.55689-.60886-.08283-1.91531.58894-2.6342z'/%3e%3cpath%20fill='url(%23H)'%20d='m107.625%20297.75c-.76784-.11154-1.58592-.06376-2.34375.125-.02083-.00022-.04167-.00022-.0625%200-16.126114%204.32635-34.547055%2016.84721-41.40625%2024.1875-.959773%201.0271-1.653608%202.1938-2.03125%203.59375s-.52038%203.40316.96875%205.03125c.060355.0546.122907.10673.1875.15625l14.5%2013.4375c.835974.83714%201.732287%201.49376%203%202%20.633857.25312%201.350408.45415%202.25.4375s2.037644-.37725%202.875-1.1875c5.172645-5.00744%2015.3644-12.20755%2027.5-16.65625%201.62859-.58354%202.77872-2.13843%203.125-3.5s.21254-2.59749-.03125-3.71875l-4.1875-19.75c-.24671-1.28611-.96666-2.53961-2.21875-3.375-.62605-.41769-1.35716-.66971-2.125-.78125zm-1.375%206.125%204.03125%2019.0625c.07298.33564.03212.42796.03125.59375-12.18879%204.58588-22.079259%2011.4048-28%2016.90625-.257963-.15968-.544739-.2945-.71875-.46875-.030556-.03194-.061813-.06319-.09375-.09375l-13.8125-12.8125c.123087-.31306.327761-.72193.5-.90625%205.270626-5.6403%2023.824142-18.27566%2038.0625-22.28125z'%20clip-path='url(%23p)'%20filter='url(%23z)'%20opacity='.24'%20transform='matrix(.5779564%200%200%20.5779564%2084.954305%20-107.83034)'/%3e%3cpath%20fill='url(%23Q)'%20d='m100.93438%20131.88989c.21854-9.83605%201.65194-19.00228%204.10486-24.80426.2887-.89102%201.2655-1.73968%201.96104-1.53985l10.85061%204.0115c.95096.302%201.78629%201.2369%201.4465%202.10238-2.07637%206.29635-3.64661%2014.09337-3.64661%2020.83069%200%201.14893-1.08646%201.59094-2.01212%201.59094h-11.23224c-.94794-.254-1.45424-1.14713-1.47204-2.1914z'/%3e%3cpath%20fill='url(%23I)'%20d='m38.96875%20366.3125c-2.043231-.58702-3.60001.30335-4.6875%201.1875-1.01733.82711-1.7669%201.87252-2.25%203.1875h-.03125c-.023627.05589-.038987.13132-.0625.1875-.007763.02319-.023678.03913-.03125.0625-4.461024%2010.69589-6.869024%2026.63452-7.25%2043.78125-.000488.03125-.000488.0625%200%20.09375.046827%202.74695%201.669592%205.83085%204.75%206.65625.255172.06541.517847.09693.78125.09375h19.4375c1.278297%200%202.667247-.2506%204-1.125s2.499998-2.68541%202.5-4.625c0-11.13728%202.615908-24.3413%206.09375-34.9375.016776-.05111.045685-.10526.0625-.15625l-.0625-.03125c.623058-1.81281.083322-3.71385-.8125-4.90625-.891865-1.18713-2.074804-1.97307-3.4375-2.4375v-.03125l-18.78125-6.9375c-.0721-.02359-.145069-.04444-.21875-.0625zm-1.03125%206%2017.9375%206.625c.041176.0218.082854.04264.125.0625.157798.05011.309916.17474.4375.28125-3.580289%2010.98523-6.231145%2024.29906-6.28125%2036.1875-.11559.03877-.281651.09375-.53125.09375h-18.6875c-.158103-.04915-.26347-.10172-.28125-.8125-.000613-.02451.000443-.00525%200-.03125.382538-16.72065%202.887761-32.33026%206.84375-41.6875.034944-.0819.066225-.16532.09375-.25.022355-.06899.193736-.29087.34375-.46875z'%20clip-path='url(%23n)'%20filter='url(%23y)'%20opacity='.24'%20transform='matrix(.5779564%200%200%20.5779564%2084.954305%20-107.83034)'/%3e%3cpath%20fill='none'%20stroke='%23a6926e'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-width='.578'%20d='m121.72678%20111.468-3.07039-1.6255'/%3e%3cpath%20fill='none'%20stroke='url(%23R)'%20stroke-linecap='square'%20stroke-width='.578'%20d='m100.93438%20131.88989c.21854-9.83605%201.65194-19.00228%204.10486-24.80426.2887-.89102%201.2655-1.73968%201.96104-1.53985l10.85061%204.0115c.95096.302%201.78629%201.2369%201.4465%202.10238-2.07637%206.29635-3.64661%2014.09337-3.64661%2020.83069%200%201.14893-1.08646%201.59094-2.01212%201.59094h-11.23224c-.94794-.254-1.45424-1.14713-1.47204-2.1914z'/%3e%3cpath%20fill='url(%23Q)'%20d='m162.97842%2058.39123c6.29927%200%2013.12309%204.88732%2015.09912%207.80286l-2.60081%2011.88827c-.21673.89043-.84555%202.06983-1.73387%201.67248-3.37583-1.43826-9.01778-2.3453-10.7645-2.3453-1.74073%200-7.34046%201.1622-10.90886%202.3453-.66902.31271-1.55508-.77147-1.73387-1.67248l-2.60081-12.02764c2.12492-2.91118%208.84222-7.66349%2015.2436-7.66349z'/%3e%3cpath%20fill='url(%23J)'%20d='m135%20284.59375c-6.28033%200-12.36767%202.25873-17.4375%205.125s-9.10749%206.26847-11.375%209.375c-.5026.6939-.68455%201.56957-.5%202.40625l4.5%2020.8125c.29413%201.48219.93921%202.60586%201.9375%203.65625.49915.5252%201.0965%201.02722%201.96875%201.375.77971.31088%201.90678.35201%202.9375%200l.03125.0625c2.92068-.96835%206.83215-1.94804%2010.3125-2.6875s6.78673-1.21875%207.625-1.21875c1.98368%200%2012.28696%201.61812%2017.4375%203.8125%201.00962.4516%202.28341.49057%203.28125.125s1.67013-.97574%202.15625-1.5625c.97223-1.17353%201.38306-2.37761%201.65625-3.5.01066-.02071.02108-.04155.03125-.0625l4.5-20.5625c.17511-.81245.00538-1.66115-.46875-2.34375-2.17251-3.20545-6.15685-6.60115-11.21875-9.53125s-11.14954-5.28126-17.375-5.28125zm0%206c4.67374-.00001%209.95394%201.9096%2014.375%204.46875%203.9222%202.27038%206.93861%205.0016%208.5%206.90625l-4.1875%2019.0625c-.03522.14468-.09339.19619-.15625.34375-6.4137-2.46938-14.71615-3.875-18.53125-3.875-2.17361-.00001-5.21442.566-8.875%201.34375-3.30482.70216-6.81123%201.63063-9.875%202.59375-.07521-.14553-.18051-.30851-.1875-.34375.00022-.02083.00022-.04167%200-.0625l-4.15625-19.25c1.68526-1.95071%204.68193-4.60092%208.59375-6.8125%204.42955-2.50429%209.70444-4.375%2014.5-4.375z'%20clip-path='url(%23q)'%20filter='url(%23C)'%20opacity='.24'%20transform='matrix(.5779564%200%200%20.5779564%2084.954305%20-107.83034)'/%3e%3crect%20width='20.806'%20height='29.765'%20x='-231.177'%20y='143.87'%20fill='url(%23U)'%20rx='1.734'%20transform='scale(-1%201)'/%3e%3cpath%20fill='url(%23L)'%20d='m250%20432.5c3.27211%200%206%202.72789%206%206v48c0%203.27211-2.72789%206.00001-6%206h-30c-3.27211%200-6-2.72789-6-6v-48c0-3.27211%202.72789-6%206-6zm0%206h-30v48h30z'%20clip-path='url(%23v)'%20filter='url(%23B)'%20opacity='.24'%20transform='matrix(.5779564%200%200%20.5568851%2084.954305%20-98.65376)'/%3e%3crect%20width='28.32'%20height='9.825'%20x='-236.379'%20y='134.044'%20fill='url(%23S)'%20rx='1.734'%20transform='scale(-1%201)'/%3e%3cpath%20fill='url(%23E)'%20d='m259%20415.5c3.27211%200%206%202.72789%206%206v11c0%203.27211-2.72789%206-6%206h-43c-3.27211%200-6-2.72789-6-6v-11c0-3.27211%202.72789-6%206-6zm0%206h-43v11h43z'%20clip-path='url(%23u)'%20filter='url(%23D)'%20opacity='.24'%20transform='matrix(.5779564%200%200%20.5779564%2084.954305%20-107.83034)'/%3e%3cpath%20fill='url(%23Q)'%20d='m225.02247%20131.88989c-.21854-9.83605-1.65195-19.00228-4.10486-24.80426-.28871-.89102-1.2655-1.73968-1.96104-1.53985l-10.85061%204.0115c-.95096.302-1.78629%201.2369-1.4465%202.10238%202.07637%206.29635%203.6466%2014.09337%203.6466%2020.83069%200%201.14893%201.08647%201.59094%202.01213%201.59094h11.23224c.94794-.254%201.45424-1.14713%201.47204-2.1914z'/%3e%3cpath%20fill='url(%23O)'%20d='m231.03125%20366.3125c-.07368.01806-.14665.03891-.21875.0625l-18.78125%206.9375v.03125c-1.36269.46443-2.54564%201.25037-3.4375%202.4375-.89582%201.1924-1.43555%203.09344-.8125%204.90625l-.0625.03125c.01682.05099.04572.10514.0625.15625%203.47785%2010.5962%206.09375%2023.80022%206.09375%2034.9375.00001%201.93959%201.16725%203.7506%202.5%204.625s2.7217%201.125%204%201.125h19.4375c.2634.00318.52608-.02834.78125-.09375%203.08041-.8254%204.70317-3.90931%204.75-6.65625.00049-.03125.00049-.0625%200-.09375-.38097-17.14673-2.78898-33.08537-7.25-43.78125-.00757-.02337-.02349-.03931-.03125-.0625-.02351-.05618-.03887-.13161-.0625-.1875h-.03125c-.4831-1.31497-1.23267-2.36039-2.25-3.1875-1.08749-.88415-2.64427-1.77452-4.6875-1.1875zm1.03125%206c.15002.17789.32139.39975.34375.46875.02752.08468.05881.1681.09375.25%203.9585%209.36319%206.4637%2024.98606%206.84375%2041.71875-.01778.71079-.12315.76335-.28125.8125h-18.6875c-.2496%200-.41566-.05498-.53125-.09375-.05011-11.88844-2.70095-25.20227-6.28125-36.1875.12758-.10651.27971-.23114.4375-.28125.04215-.01986.08382-.0407.125-.0625z'%20clip-path='url(%23t)'%20filter='url(%23y)'%20opacity='.24'%20transform='matrix(.5779564%200%200%20.5779564%2084.954305%20-107.83034)'/%3e%3cpath%20fill='url(%23G)'%20d='m62.84375%20325.21875c-1.407324.12583-2.744231.69329-3.75%201.53125-9.718525%207.74211-20.766821%2026.66605-24.5%2037.21875-.003512.00892.003491.02231%200%20.03125-.00649.01838-.024805.04418-.03125.0625-.389435%201.01503-.644622%202.13007-.5625%203.4375.084424%201.34407.689159%203.13244%202.3125%204.15625.17713.1132.365665.20746.5625.28125l18.59375%206.90625.125.0625v-.03125c1.067881.44511%202.230943.78358%203.59375.71875%201.412193-.06718%203.363099-.78112%204.3125-2.53125.034131-.07165.065405-.14462.09375-.21875%203.724613-8.27664%2010.812909-21.19717%2018.78125-28.5625l-.0625-.0625c1.314472-1.17864%201.855267-3.12923%201.5625-4.5625-.305495-1.49559-1.086139-2.62553-2.03125-3.5625-.020525-.02114-.041361-.04197-.0625-.0625l-14.5625-13.46875c-.08002-.0668-.163466-.12939-.25-.1875-1.256938-.95083-2.717676-1.28208-4.125-1.15625zm.5%205.9375%2014.375%2013.28125c.02465.02444.010238.00739.03125.03125-8.635756%208.24572-15.325663%2020.52243-19.21875%2029.03125-.228464-.03764-.434374-.04753-.6875-.15625-.051489-.02229-.103593-.04313-.15625-.0625l-17.625-6.5625c.031782-.20281.053616-.3811.125-.5625.010931-.03108.021349-.06233.03125-.09375%203.127505-8.89179%2015.17911-28.69971%2022.65625-34.65625.020954-.01017.041789-.02059.0625-.03125.353621-.29462.315852-.29084.40625-.21875z'%20clip-path='url(%23o)'%20filter='url(%23A)'%20opacity='.24'%20transform='matrix(.5779564%200%200%20.5779564%2084.954305%20-107.83034)'/%3e%3cpath%20fill='url(%23N)'%20d='m162.375%20297.75c-.76785.11154-1.49895.36355-2.125.78125-1.25209.83539-1.97204%202.1514-2.21875%203.4375l-4.1875%2019.71875c-.24379%201.12126-.37753%202.32593-.03125%203.6875s1.52766%202.94771%203.15625%203.53125c12.1356%204.4487%2022.2961%2011.61756%2027.46875%2016.625.83736.81025%201.97541%201.17085%202.875%201.1875s1.61614-.18438%202.25-.4375c1.26771-.50624%202.25778-1.25661%203.09375-2.09375l14.40625-13.34375c.06459-.04952.12715-.10165.1875-.15625%201.48913-1.62809%201.34639-3.6313.96875-5.03125s-1.07148-2.56665-2.03125-3.59375c-6.8592-7.34028-25.28014-19.86115-41.40625-24.1875-.02083-.00022-.04167-.00022-.0625%200-.75783-.18876-1.5759-.23654-2.34375-.125zm1.375%206.09375c14.2424%203.99279%2032.78693%2016.66693%2038.0625%2022.3125.17224.18432.37691.59319.5.90625l-13.8125%2012.8125c-.03194.03056-.06319.06181-.09375.09375-.17401.17425-.46079.30907-.71875.46875-5.92071-5.50141-15.81123-12.32038-28-16.90625-.00087-.16579-.04173-.2581.03125-.59375z'%20clip-path='url(%23r)'%20filter='url(%23z)'%20opacity='.24'%20transform='matrix(.5779564%200%200%20.5779564%2084.954305%20-107.83034)'/%3e%3crect%20width='32.077'%20height='19.651'%20x='89.289'%20y='175.079'%20fill='none'%20stroke='url(%23Y)'%20stroke-linecap='square'%20stroke-width='.578'%20rx='1.734'/%3e%3crect%20width='20.806'%20height='30.054'%20x='94.78'%20y='143.87'%20fill='none'%20stroke='url(%23X)'%20stroke-linecap='square'%20stroke-width='.578'%20rx='1.734'/%3e%3crect%20width='32.077'%20height='19.651'%20x='-236.668'%20y='175.079'%20fill='none'%20stroke='url(%23T)'%20stroke-linecap='square'%20stroke-width='.578'%20rx='1.734'%20transform='scale(-1%201)'/%3e%3cpath%20fill='%23282d30'%20fill-rule='evenodd'%20d='m-7.75%20157h-50.375l.875-16.375h61.5l-.375%2014.75z'%20clip-path='url(%23ao)'%20filter='url(%23ap)'%20opacity='.467'%20transform='matrix(.5779564%200%200%20.5779564%20119.63169%2053.99746)'/%3e%3cg%20stroke-width='.578'%3e%3crect%20width='28.32'%20height='9.825'%20x='89.578'%20y='134.044'%20fill='none'%20stroke='url(%23R)'%20stroke-linecap='square'%20rx='1.734'/%3e%3cpath%20fill='none'%20stroke='%23a6926e'%20stroke-linecap='round'%20stroke-linejoin='round'%20d='m133.30397%2093.0637-1.51713-2.23958'/%3e%3cpath%20fill='none'%20stroke='url(%23R)'%20stroke-linecap='square'%20d='m106.56521%20103.15886c1.9748-5.61457%208.67478-16.84145%2013.65085-20.80555.68967-.57461%201.64614-.74931%202.40535-.17499l8.42272%207.78429c.70812.70203%201.02516%201.67373.33549%202.2228-4.95707%204.58193-9.04599%2012.17021-11.25288%2017.07423-.40871.75341-1.56951.64713-2.43089.27715l-10.8207-4.02743c-.70812-.4466-.61647-1.57156-.30994-2.3505z'/%3e%3cpath%20fill='none'%20stroke='%23a6926e'%20stroke-linecap='round'%20stroke-linejoin='round'%20d='m151.27481%2081.84773-.68633-2.70917'/%3e%3cpath%20fill='none'%20stroke='url(%23R)'%20stroke-linecap='square'%20d='m123.09781%2079.48482c3.52391-3.77107%2014.33325-11.12004%2023.1265-13.47912.99648-.24821%201.60647.31268%201.73961%201.00677l2.42135%2011.43563c.20756.95462.10828%201.88802-.69111%202.17445-7.2817%202.66935-13.28614%206.90909-16.48642%2010.00716-.53937.52191-1.69357-.11694-2.3271-.75134l-8.37177-7.75935c-.55689-.60886-.08283-1.91531.58894-2.6342z'/%3e%3cpath%20fill='none'%20stroke='%23a6926e'%20stroke-linecap='round'%20stroke-linejoin='round'%20d='m204.19909%20111.468%203.07039-1.6255'/%3e%3cpath%20fill='none'%20stroke='%23a6926e'%20stroke-linecap='round'%20stroke-linejoin='round'%20d='m192.6219%2093.0637%201.51713-2.23958'/%3e%3cpath%20fill='none'%20stroke='%23a6926e'%20stroke-linecap='round'%20stroke-linejoin='round'%20d='m174.65106%2081.84773.68633-2.70917'/%3e%3cpath%20fill='none'%20stroke='url(%23R)'%20stroke-linecap='square'%20d='m162.97842%2058.39123c6.29927%200%2013.12309%204.88732%2015.09912%207.80286l-2.60081%2011.88827c-.21673.89043-.84555%202.06983-1.73387%201.67248-3.37583-1.43826-9.01778-2.3453-10.7645-2.3453-1.74073%200-7.34046%201.1622-10.90886%202.3453-.66902.31271-1.55508-.77147-1.73387-1.67248l-2.60081-12.02764c2.12492-2.91118%208.84222-7.66349%2015.2436-7.66349z'/%3e%3cpath%20fill='none'%20stroke='url(%23R)'%20stroke-linecap='square'%20d='m202.85904%2079.48482c-3.52391-3.77107-14.33325-11.12004-23.1265-13.47912-.99648-.24821-1.60647.31268-1.73962%201.00677l-2.42135%2011.43563c-.20756.95462-.10828%201.88802.69112%202.17445%207.28169%202.66935%2013.28614%206.90909%2016.48642%2010.00716.53937.52191%201.69357-.11694%202.32709-.75134l8.37177-7.75935c.5569-.60886.08284-1.91531-.58893-2.6342z'/%3e%3cpath%20fill='none'%20stroke='url(%23R)'%20stroke-linecap='square'%20d='m225.02247%20131.88989c-.21854-9.83605-1.65195-19.00228-4.10486-24.80426-.28871-.89102-1.2655-1.73968-1.96104-1.53985l-10.85061%204.0115c-.95096.302-1.78629%201.2369-1.4465%202.10238%202.07637%206.29635%203.6466%2014.09337%203.6466%2020.83069%200%201.14893%201.08647%201.59094%202.01213%201.59094h11.23224c.94794-.254%201.45424-1.14713%201.47204-2.1914z'/%3e%3c/g%3e%3cpath%20fill='url(%23at)'%20fill-rule='evenodd'%20d='m218.19132%20105.50782c1.27637.03613%202.3678.43402%202.98009%201.40877.0078.01742.01384.03557.01806.05419%202.47981%205.86558%203.89887%2015.06435%204.11794%2024.92437-.01931%201.13317-.59367%202.16531-1.67968%202.45631-.0232.00911-.04749.01519-.07225.01806h-11.23403c-.14527%200-.28735-.01588-.43346-.03612h-.05419l-2.5105.09031c-.50097.04339-.9568-.06727-1.3004-.36122-.3436-.29396-.54183-.76008-.54183-1.31847-.3319-8.48947-1.39028-13.0572-3.61223-19.50603-.01019-.01765-.00886-.03637-.01806-.05418-.20271-.39264-.17756-.81883-.09031-1.15591.04561-.17619.10218-.32771.16255-.45153.06038-.12383.10534-.19707.19868-.28898.01095-.01309.02303-.02518.03612-.03612%201.41438-1.0049%204.931-3.10962%208.45261-4.47917%201.76081-.68477%203.50972-1.19004%205.021-1.26428.18891-.00928.37755-.00516.55989%200z'%20opacity='.5'/%3e%3cpath%20fill='none'%20stroke='url(%23R)'%20stroke-linecap='square'%20stroke-width='.578'%20d='m219.39164%20103.15886c-1.97481-5.61457-8.67478-16.84145-13.65085-20.80555-.68968-.57461-1.64614-.74931-2.40535-.17499l-8.42272%207.78429c-.70813.70203-1.02516%201.67373-.33549%202.2228%204.95707%204.58193%209.04599%2012.17021%2011.25288%2017.07423.40871.75341%201.56951.64713%202.43089.27715l10.82069-4.02743c.70813-.4466.61648-1.57156.30995-2.3505z'/%3e%3crect%20width='28.32'%20height='9.825'%20x='-236.379'%20y='134.044'%20fill='none'%20stroke='url(%23T)'%20stroke-linecap='square'%20stroke-width='.578'%20rx='1.734'%20transform='scale(-1%201)'/%3e%3crect%20width='20.806'%20height='30.054'%20x='-231.177'%20y='143.87'%20fill='none'%20stroke='url(%23V)'%20stroke-linecap='square'%20stroke-width='.578'%20rx='1.734'%20transform='scale(-1%201)'/%3e%3cpath%20fill='none'%20stroke='url(%23aj)'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-width='.578'%20d='m89.288978%20192.99598c0%20.96056.773302%201.73387%201.733872%201.73387h28.60884c.66328%200%201.22538-.37664%201.51714-.92112l4.76814-6.33946c.33721-.42781.59602-1.06179.59602-1.80611'/%3e%3cpath%20fill='none'%20stroke='url(%23ak)'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-width='.578'%20d='m236.66787%20192.99598c0%20.96056-.77331%201.73387-1.73387%201.73387h-28.60884c-.66328%200-1.22538-.37664-1.51714-.92112l-4.76814-6.33946c-.33721-.42781-.59602-1.06179-.59602-1.80611'/%3e%3cpath%20fill='none'%20stroke='url(%23am)'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-width='.578'%20d='m94.77956%20172.18955c0%20.96056.77331%201.73387%201.73387%201.73387h17.3387c.40188%200%20.7722-.13342%201.0656-.36122v.01806l2.60081-1.78806c.4579-.35747.70793-.79434.7405-1.48101'%20opacity='.64'/%3e%3cpath%20fill='none'%20stroke='url(%23an)'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-width='.578'%20d='m231.17728%20172.18955c0%20.96056-.7733%201.73387-1.73387%201.73387h-17.33869c-.40188%200-.7722-.13342-1.06561-.36122v.01806l-2.6008-1.78806c-.4579-.35747-.70793-.79434-.74051-1.48101'%20opacity='.57'/%3e%3cpath%20fill='%23282d30'%20fill-rule='evenodd'%20d='m-7.75%20157h-50.375l.875-16.375h61.5l-.375%2014.75z'%20clip-path='url(%23ao)'%20filter='url(%23ap)'%20opacity='.467'%20transform='matrix(-.5779564%200%200%20.5779564%20206.32516%2053.99746)'/%3e%3cpath%20fill='none'%20stroke='url(%23aq)'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-width='.578'%20d='m89.577956%20142.13581c0%20.96057.773304%201.73387%201.733874%201.73387h23.10019c.75158.01652%201.85064.02618%202.25764-.03612l2.87172-.36122c.88399%200%201.36761-.47719%201.31847-1.08367'/%3e%3cpath%20fill='none'%20stroke='url(%23ar)'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-width='.578'%20d='m236.37889%20142.13581c0%20.96057-.77331%201.73387-1.73387%201.73387h-23.10019c-.75159.01652-1.85064.02618-2.25765-.03612l-2.87172-.36122c-.88399%200-1.3676-.47719-1.31846-1.08367'/%3e%3cpath%20fill='url(%23as)'%20fill-rule='evenodd'%20d='m107.76552%20105.50782c-1.27637.03613-2.3678.43402-2.98008%201.40877-.0078.01742-.01385.03557-.01807.05419-2.4798%205.86558-3.89887%2015.06435-4.11794%2024.92437.01932%201.13317.59368%202.16531%201.67969%202.45631.0232.00911.04748.01519.07224.01806h11.23403c.14527%200%20.28736-.01588.43347-.03612h.05418l2.5105.09031c.50098.04339.9568-.06727%201.3004-.36122.34361-.29396.54184-.76008.54184-1.31847.33189-8.48947%201.39028-13.0572%203.61223-19.50603.01019-.01765.00886-.03637.01806-.05418.2027-.39264.17756-.81883.0903-1.15591-.0456-.17619-.10217-.32771-.16255-.45153-.06037-.12383-.10534-.19707-.19867-.28898-.01095-.01309-.02304-.02518-.03612-.03612-1.41438-1.0049-4.931-3.10962-8.45261-4.47917-1.76081-.68477-3.50973-1.19004-5.021-1.26428-.18891-.00928-.37756-.00516-.5599%200z'%20opacity='.5'/%3e%3cpath%20fill='%23d39f41'%20fill-rule='evenodd'%20stroke='%23a6926e'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-width='1.014'%20d='m135.27045%2014.062569c-11.23424.110709-14.41813%207.230436-9.28507%2019.653468-.93441.210336-1.61748.269906-1.98955.288113-.27625.013522-.10287%201.239763.12214%201.231921%201.4033-.048902%203.90677-.151495%205.42413-.142111.21822.001349.31324-1.580771-.4937-3.716475-.70873-1.87576-1.73583-4.458034-1.69566-7.777628.04018-3.319597.012-7.163446%205.73075-7.635697.17878%204.991039.11614%2011.916356-.11622%2017.282733-.9427.054215-1.6548.222953-1.98652.342861-.26549.095966-.00837%201.412867.21312%201.386923.35044-.041049%202.49724-.072447%204.07658-.072341%201.57934-.000106%202.90029.019214%203.2491.072341.17035.025944.27132-1.372982.01756-1.438074-.31834-.081654-.99267-.237495-1.93537-.29171-.08682-5.318566-.17967-12.014437.13954-17.282733%205.71875.472251%205.57922%204.52071%205.61939%207.840304.04018%203.319597-.90148%205.690979-1.59334%207.573021-.65349%201.777641-.70479%203.716475-.43351%203.716475%201.36396%200%204.04836.00445%205.41691.046011.26791.008137.39836-1.070298.1712-1.116688-.26196-.053503-1.39055-.160343-2.08254-.256093%205.0512-12.245024%202.09932-19.645727-8.56894-19.704621z'%20filter='url(%23aK)'%20opacity='.35'%20transform='matrix(.562%200%200%20.5779564%2087.107152%2053.99746)'/%3e%3cpath%20fill='%23fbeed5'%20fill-rule='evenodd'%20d='m162.22494%2016.626906c-11.23424.110709-14.41813%207.230436-9.28507%2019.653468-.93441.210336-1.61748.269906-1.98955.288113-.27625.013522-.10287%201.239763.12214%201.231921%201.4033-.048902%203.90677-.151495%205.42413-.142111.21822.001349.31324-1.580771-.4937-3.716475-.70873-1.87576-1.73583-4.458034-1.69566-7.777628.04018-3.319597.012-7.163446%205.73075-7.635697.17878%204.991039.11614%2011.916356-.11622%2017.282733-.9427.054215-1.6548.222953-1.98652.342861-.26549.095966-.00837%201.412867.21312%201.386923.35044-.041049%202.49724-.072447%204.07658-.072341%201.57934-.000106%202.90029.019214%203.2491.072341.17035.025944.27132-1.372982.01756-1.438074-.31834-.081654-.99267-.237495-1.93537-.29171-.08682-5.318566-.17967-12.014437.13954-17.282733%205.71875.472251%205.57922%204.52071%205.61939%207.840304.04018%203.319597-.90148%205.690979-1.59334%207.573021-.65349%201.777641-.70479%203.716475-.43351%203.716475%201.36396%200%204.04836.00445%205.41691.046011.26791.008137.39836-1.070298.1712-1.116688-.26196-.053503-1.39055-.160343-2.08254-.256093%205.0512-12.245024%202.09932-19.645727-8.56894-19.704621z'%20filter='url(%23aL)'%20transform='matrix(.5779564%200%200%20.5779564%2069.349481%2051.68563)'/%3e%3cpath%20fill='%23f8e4c2'%20fill-rule='evenodd'%20d='m163.10843%2061.72873c-6.4929.06398-8.33305%204.17887-5.36637%2011.35885-.54005.12156-.93483.15599-1.14987.16651-.15966.00782-.05945.71653.07059.712.81105-.02826%202.25794-.08756%203.13491-.08214.12612.00078.18104-.91361-.28533-2.14796-.40962-1.0841-1.00324-2.57655-.98002-4.49513s.00693-4.14016%203.31212-4.4131c.10333%202.88461.06713%206.88714-.06717%209.98867-.54484.03133-.9564.12886-1.14812.19816-.15344.05546-.00484.81657.12317.80158.20254-.02372%201.4433-.04187%202.35609-.04181.91279-.00006%201.67624.01111%201.87784.04181.09845.01499.15681-.79352.01015-.83114-.18399-.0472-.57372-.13727-1.11856-.1686-.05018-3.0739-.10384-6.94382.08064-9.98867%203.30519.27294%203.22455%202.61278%203.24777%204.53136s-.52102%203.28914-.92088%204.37687c-.37769%201.0274-.40734%202.14796-.25055%202.14796.78831%200%202.33977.00258%203.13073.0266.15484.0047.23024-.61859.09895-.6454-.1514-.03092-.80368-.09267-1.20362-.14801%202.91938-7.07709%201.21332-11.35437-4.95247-11.38841z'/%3e%3c/g%3e%3c/svg%3e", a = [
|
|
6
|
+
{
|
|
7
|
+
value: "dark",
|
|
8
|
+
label: "Dark (Teal)"
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
value: "amber",
|
|
12
|
+
label: "Dark (Amber)"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
value: "sky",
|
|
16
|
+
label: "Dark (Sky Blue)"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
value: "light",
|
|
20
|
+
label: "Light (Qt)"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
value: "graylight",
|
|
24
|
+
label: "Light (Gray)"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
value: "system",
|
|
28
|
+
label: "System setting"
|
|
29
|
+
}
|
|
30
|
+
], o = {
|
|
31
|
+
appName: "Mudlet Web",
|
|
32
|
+
logoUrl: i,
|
|
33
|
+
tagline: "Mudlet, in your browser.",
|
|
34
|
+
aboutText: "Mudlet Web connects to MUD servers over WebSocket with full telnet, GMCP and MSDP support, renders ANSI output, and runs Mudlet Lua scripting right in the browser — with drop-in support for existing Mudlet packages, maps and profiles, and nothing to install.",
|
|
35
|
+
repoUrl: "https://github.com/Mudlet/mudlet-web"
|
|
36
|
+
}, s = o;
|
|
37
|
+
function c(e) {
|
|
38
|
+
s = {
|
|
39
|
+
...o,
|
|
40
|
+
...e
|
|
41
|
+
}, e && !("logoUrl" in e) && (s.logoUrl = void 0);
|
|
42
|
+
}
|
|
43
|
+
function l() {
|
|
44
|
+
return s;
|
|
45
|
+
}
|
|
46
|
+
function ee() {
|
|
47
|
+
return !!s.mud;
|
|
48
|
+
}
|
|
49
|
+
function te() {
|
|
50
|
+
let e = (s.themes ?? []).map((e) => ({
|
|
51
|
+
value: e.id,
|
|
52
|
+
label: e.label
|
|
53
|
+
})), t = [...e, ...a.filter((t) => !e.some((e) => e.value === t.value))];
|
|
54
|
+
return s.availableThemes ? s.availableThemes.map((e) => t.find((t) => t.value === e)).filter((e) => !!e) : t;
|
|
55
|
+
}
|
|
56
|
+
function ne(e) {
|
|
57
|
+
let t = s.themes?.find((t) => t.id === e);
|
|
58
|
+
return t ? t.colorScheme === "light" : e === "light" || e === "graylight";
|
|
59
|
+
}
|
|
60
|
+
function u() {
|
|
61
|
+
return (s.themes ?? []).map((e) => {
|
|
62
|
+
let t = e.colorScheme ? `color-scheme: ${e.colorScheme};\n ` : "", n = Object.entries(e.variables).map(([e, t]) => `${e}: ${t};`).join("\n ");
|
|
63
|
+
return `:root[data-theme="${e.id}"] {\n ${t}${n}\n}`;
|
|
64
|
+
}).join("\n");
|
|
65
|
+
}
|
|
66
|
+
function re(e, t) {
|
|
67
|
+
let n = e.mud;
|
|
68
|
+
if (!n) return null;
|
|
69
|
+
let r = {
|
|
70
|
+
name: t?.trim() || n.name || e.appName,
|
|
71
|
+
autoReconnect: n.autoConnect || void 0,
|
|
72
|
+
reconnectOnDrop: n.autoReconnect || void 0
|
|
73
|
+
};
|
|
74
|
+
return n.mode === "mud" ? {
|
|
75
|
+
...r,
|
|
76
|
+
mode: "mud",
|
|
77
|
+
host: n.host ?? "",
|
|
78
|
+
port: n.port ?? 23,
|
|
79
|
+
url: void 0
|
|
80
|
+
} : {
|
|
81
|
+
...r,
|
|
82
|
+
mode: "websocket",
|
|
83
|
+
url: n.url ?? "",
|
|
84
|
+
host: void 0,
|
|
85
|
+
port: void 0
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
function d(e, t, n) {
|
|
89
|
+
let r = n.addConnection(t);
|
|
90
|
+
return e.profileDefaults && n.patchConnectionProfile(r, e.profileDefaults), r;
|
|
91
|
+
}
|
|
92
|
+
function ie(e, t, n) {
|
|
93
|
+
let r = n?.trim().toLowerCase();
|
|
94
|
+
return t.profileMode === "perLogin" && r ? e.find((e) => e.name.trim().toLowerCase() === r) : e[0];
|
|
95
|
+
}
|
|
96
|
+
//#endregion
|
|
97
|
+
//#region src/storage/schema.ts
|
|
98
|
+
var f = "wss://web-proxy.mudlet.org", ae = {
|
|
99
|
+
gmcp: !0,
|
|
100
|
+
mtts: !0,
|
|
101
|
+
msdp: !1,
|
|
102
|
+
mssp: !0,
|
|
103
|
+
charset: !0,
|
|
104
|
+
msp: !0,
|
|
105
|
+
mccp: !0,
|
|
106
|
+
mxp: !0,
|
|
107
|
+
mnes: !1,
|
|
108
|
+
newEnviron: !0,
|
|
109
|
+
naws: !0,
|
|
110
|
+
wsSubprotocols: ["binary"]
|
|
111
|
+
}, oe = [
|
|
112
|
+
"binary",
|
|
113
|
+
"telnet",
|
|
114
|
+
"telnet.mudstandards.org"
|
|
115
|
+
], se = {
|
|
116
|
+
strokeColor: "#00e5b2",
|
|
117
|
+
strokeAlpha: 1,
|
|
118
|
+
fillColor: "#00e5b2",
|
|
119
|
+
fillAlpha: 0,
|
|
120
|
+
strokeWidth: .1,
|
|
121
|
+
sizeFactor: 1.7,
|
|
122
|
+
dashLength: .05,
|
|
123
|
+
dashGap: .05,
|
|
124
|
+
dashEnabled: !0,
|
|
125
|
+
matchRoomShape: !1
|
|
126
|
+
};
|
|
127
|
+
function ce(e) {
|
|
128
|
+
if (e !== void 0) return typeof e == "string" ? e.trim() === "" ? void 0 : {
|
|
129
|
+
kind: "system",
|
|
130
|
+
family: e
|
|
131
|
+
} : e.family.trim() === "" ? void 0 : e;
|
|
132
|
+
}
|
|
133
|
+
var le = {
|
|
134
|
+
roomSize: .5,
|
|
135
|
+
roomShape: "rectangle",
|
|
136
|
+
borders: !0,
|
|
137
|
+
lineWidth: .05,
|
|
138
|
+
backgroundColor: "#000000",
|
|
139
|
+
lineColor: "#c0c0c0",
|
|
140
|
+
showDefaultArea: !0,
|
|
141
|
+
gridEnabled: !1,
|
|
142
|
+
gridColor: "rgba(200, 200, 200, 0.15)",
|
|
143
|
+
gridLineWidth: .02,
|
|
144
|
+
symbolFont: "Bitstream Vera Sans Mono",
|
|
145
|
+
lodEnabled: !0,
|
|
146
|
+
lodRoomBudget: 16e3,
|
|
147
|
+
lodExitBudget: 12e3,
|
|
148
|
+
lodHitTestBudget: 1e4,
|
|
149
|
+
playerMarker: se
|
|
150
|
+
}, ue = {
|
|
151
|
+
r: 150,
|
|
152
|
+
g: 150,
|
|
153
|
+
b: 150,
|
|
154
|
+
a: 120
|
|
155
|
+
}, de = {
|
|
156
|
+
Bing: "https://www.bing.com/search?q=",
|
|
157
|
+
DuckDuckGo: "https://duckduckgo.com/?q=",
|
|
158
|
+
Google: "https://www.google.com/search?q="
|
|
159
|
+
}, fe = "Google";
|
|
160
|
+
function pe(e) {
|
|
161
|
+
return e && e in de ? e : fe;
|
|
162
|
+
}
|
|
163
|
+
var p = {
|
|
164
|
+
showTimestamps: !1,
|
|
165
|
+
fontSize: 14,
|
|
166
|
+
outputBackground: "",
|
|
167
|
+
autoClearInput: !1,
|
|
168
|
+
commandSeparator: ";;",
|
|
169
|
+
outputWrapAt: 100
|
|
170
|
+
};
|
|
171
|
+
function me(e) {
|
|
172
|
+
return e === 1 || e === 2 ? e : 0;
|
|
173
|
+
}
|
|
174
|
+
function he(e, t) {
|
|
175
|
+
return !Number.isFinite(e) || t < 2 ? 0 : Math.max(0, Math.min(t - 1, Math.trunc(e)));
|
|
176
|
+
}
|
|
177
|
+
function ge(e) {
|
|
178
|
+
return e.colorize ?? !!e.highlight;
|
|
179
|
+
}
|
|
180
|
+
function _e(e) {
|
|
181
|
+
if (!e.some((e) => e.temporary || m(e.parentId))) return e;
|
|
182
|
+
let t = new Map(e.map((e) => [e.id, e])), n = (e) => {
|
|
183
|
+
let n = e, r = /* @__PURE__ */ new Set();
|
|
184
|
+
for (; n && !r.has(n.id);) {
|
|
185
|
+
if (n.temporary || m(n.parentId)) return !0;
|
|
186
|
+
r.add(n.id), n = n.parentId ? t.get(n.parentId) : void 0;
|
|
187
|
+
}
|
|
188
|
+
return !1;
|
|
189
|
+
};
|
|
190
|
+
return e.filter((e) => !n(e));
|
|
191
|
+
}
|
|
192
|
+
var ve = "temp:";
|
|
193
|
+
function ye(e) {
|
|
194
|
+
return ve + e;
|
|
195
|
+
}
|
|
196
|
+
function m(e) {
|
|
197
|
+
return typeof e == "string" && e.startsWith("temp:");
|
|
198
|
+
}
|
|
199
|
+
function be(e) {
|
|
200
|
+
if (!m(e)) return null;
|
|
201
|
+
let t = Number(e.slice(5));
|
|
202
|
+
return Number.isInteger(t) ? t : null;
|
|
203
|
+
}
|
|
204
|
+
function xe(e, t) {
|
|
205
|
+
let n = e, r = /* @__PURE__ */ new Set();
|
|
206
|
+
for (; n && !r.has(n.id);) {
|
|
207
|
+
if (m(n.parentId)) return be(n.parentId);
|
|
208
|
+
r.add(n.id), n = n.parentId ? t.get(n.parentId) : void 0;
|
|
209
|
+
}
|
|
210
|
+
return null;
|
|
211
|
+
}
|
|
212
|
+
function Se(e) {
|
|
213
|
+
if (!e.some((e) => m(e.parentId))) return e;
|
|
214
|
+
let t = new Map(e.map((e) => [e.id, e]));
|
|
215
|
+
return e.filter((e) => xe(e, t) === null);
|
|
216
|
+
}
|
|
217
|
+
function Ce(e, t) {
|
|
218
|
+
let n = new Map(t.map((e) => [e.id, e])), r = e;
|
|
219
|
+
for (; r;) {
|
|
220
|
+
if (!r.enabled) return !1;
|
|
221
|
+
if (!r.parentId) break;
|
|
222
|
+
r = n.get(r.parentId);
|
|
223
|
+
}
|
|
224
|
+
return !0;
|
|
225
|
+
}
|
|
226
|
+
function we(e) {
|
|
227
|
+
let t = new Set(e.map((e) => e.id)), n = /* @__PURE__ */ new Map();
|
|
228
|
+
for (let r of e) {
|
|
229
|
+
if (!r.parentId || !t.has(r.parentId)) continue;
|
|
230
|
+
let e = n.get(r.parentId);
|
|
231
|
+
e || n.set(r.parentId, e = []), e.push(r);
|
|
232
|
+
}
|
|
233
|
+
let r = [], i = /* @__PURE__ */ new Set(), a = (e) => {
|
|
234
|
+
if (!i.has(e.id)) {
|
|
235
|
+
i.add(e.id), r.push(e);
|
|
236
|
+
for (let t of n.get(e.id) ?? []) a(t);
|
|
237
|
+
}
|
|
238
|
+
};
|
|
239
|
+
for (let n of e) (!n.parentId || !t.has(n.parentId)) && a(n);
|
|
240
|
+
for (let t of e) a(t);
|
|
241
|
+
return r;
|
|
242
|
+
}
|
|
243
|
+
function Te(e, t) {
|
|
244
|
+
let n = new Map(e.map((e) => [e.id, e])), r = /* @__PURE__ */ new Map(), i = (e) => {
|
|
245
|
+
let a = r.get(e.id);
|
|
246
|
+
if (a !== void 0) return a;
|
|
247
|
+
if (r.set(e.id, !0), !e.enabled || t?.has(e.id)) return r.set(e.id, !1), !1;
|
|
248
|
+
if (!e.parentId) return !0;
|
|
249
|
+
let o = n.get(e.parentId), s = !o || i(o);
|
|
250
|
+
return r.set(e.id, s), s;
|
|
251
|
+
}, a = /* @__PURE__ */ new Set();
|
|
252
|
+
for (let t of e) i(t) && a.add(t.id);
|
|
253
|
+
return a;
|
|
254
|
+
}
|
|
255
|
+
var h = {
|
|
256
|
+
connections: [],
|
|
257
|
+
client: { theme: "dark" },
|
|
258
|
+
connectionProfile: {},
|
|
259
|
+
connectionWindowHints: {},
|
|
260
|
+
connectionDockExtents: {},
|
|
261
|
+
connectionScripts: {},
|
|
262
|
+
connectionAliases: {},
|
|
263
|
+
connectionTriggers: {},
|
|
264
|
+
connectionTimers: {},
|
|
265
|
+
connectionKeybindings: {},
|
|
266
|
+
connectionButtons: {},
|
|
267
|
+
connectionScriptEditorBounds: {},
|
|
268
|
+
connectionModalBounds: {},
|
|
269
|
+
connectionPackages: {},
|
|
270
|
+
connectionLayoutSnapshots: {},
|
|
271
|
+
connectionVariables: {}
|
|
272
|
+
};
|
|
273
|
+
function Ee(e, t, n) {
|
|
274
|
+
if (t) {
|
|
275
|
+
let r = e.connectionProfile[t]?.[n];
|
|
276
|
+
if (r !== void 0) return r;
|
|
277
|
+
}
|
|
278
|
+
return p[n];
|
|
279
|
+
}
|
|
280
|
+
function De(e) {
|
|
281
|
+
let t = [["host", e.host ?? ""], ["port", String(e.port ?? 23)]];
|
|
282
|
+
return e.tls && (t.push(["tls", "1"]), e.sslIgnoreExpired && t.push(["tlsIgnoreExpired", "1"]), e.sslIgnoreSelfSigned && t.push(["tlsIgnoreSelfSigned", "1"]), e.sslIgnoreAll && t.push(["tlsIgnoreAll", "1"])), t;
|
|
283
|
+
}
|
|
284
|
+
function Oe(e, t) {
|
|
285
|
+
let n = e.replace(/\/$/, ""), r = n.indexOf("?"), i = r === -1 ? n : n.slice(0, r), a = new URLSearchParams(r === -1 ? "" : n.slice(r + 1));
|
|
286
|
+
for (let [e, n] of t) a.set(e, n);
|
|
287
|
+
return `${i}?${a.toString()}`;
|
|
288
|
+
}
|
|
289
|
+
function ke(e, t) {
|
|
290
|
+
return e.mode === "mud" ? Oe(g(e, t), De(e)) : e.url ?? "";
|
|
291
|
+
}
|
|
292
|
+
function g(e, t) {
|
|
293
|
+
return (e.proxyUrl?.trim() || t || l().proxyUrl || "wss://web-proxy.mudlet.org").replace(/\/$/, "");
|
|
294
|
+
}
|
|
295
|
+
function Ae(e) {
|
|
296
|
+
try {
|
|
297
|
+
let t = new URL(e).hostname.toLowerCase();
|
|
298
|
+
return !(t === new URL("wss://web-proxy.mudlet.org").hostname.toLowerCase() || t === "workers.dev" || t.endsWith(".workers.dev"));
|
|
299
|
+
} catch {
|
|
300
|
+
return !0;
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
function je(e) {
|
|
304
|
+
return e.mode === "mud" ? `${e.host ?? ""}:${e.port ?? 23}` : e.url ?? "";
|
|
305
|
+
}
|
|
306
|
+
function _(e, t, n) {
|
|
307
|
+
let r = e.trim().toLowerCase();
|
|
308
|
+
return r ? t.some((e) => e.id !== n && e.name.trim().toLowerCase() === r) : !1;
|
|
309
|
+
}
|
|
310
|
+
function Me(e) {
|
|
311
|
+
let t = e.trim();
|
|
312
|
+
if (t === "") return {
|
|
313
|
+
ok: !0,
|
|
314
|
+
port: 23
|
|
315
|
+
};
|
|
316
|
+
if (!/^\d+$/.test(t)) return {
|
|
317
|
+
ok: !1,
|
|
318
|
+
reason: "notANumber",
|
|
319
|
+
message: "You have to enter a number. Other characters are not permitted."
|
|
320
|
+
};
|
|
321
|
+
let n = Number(t);
|
|
322
|
+
return n < 1 || n > 65535 ? {
|
|
323
|
+
ok: !1,
|
|
324
|
+
reason: "outOfRange",
|
|
325
|
+
message: "Port number must be above zero and below 65535."
|
|
326
|
+
} : {
|
|
327
|
+
ok: !0,
|
|
328
|
+
port: n
|
|
329
|
+
};
|
|
330
|
+
}
|
|
331
|
+
var v = 253, y = 63;
|
|
332
|
+
function Ne(e) {
|
|
333
|
+
return !e.startsWith("[") && (e.match(/:/g)?.length ?? 0) >= 2;
|
|
334
|
+
}
|
|
335
|
+
function Pe(e) {
|
|
336
|
+
if (/\s/.test(e)) return null;
|
|
337
|
+
let t = Ne(e) ? `[${e}]` : e, n;
|
|
338
|
+
try {
|
|
339
|
+
n = new URL(`http://${t}`);
|
|
340
|
+
} catch {
|
|
341
|
+
return null;
|
|
342
|
+
}
|
|
343
|
+
return n.pathname !== "/" || n.search || n.hash || n.username || n.password || n.port || !n.hostname || n.hostname.includes("%") ? null : n.hostname;
|
|
344
|
+
}
|
|
345
|
+
function Fe(e) {
|
|
346
|
+
return e.startsWith("[") ? !0 : /^\d{1,3}(\.\d{1,3}){3}$/.test(e);
|
|
347
|
+
}
|
|
348
|
+
function Ie(e, t = !1) {
|
|
349
|
+
let n = e.trim();
|
|
350
|
+
if (n === "") return {
|
|
351
|
+
ok: !1,
|
|
352
|
+
reason: "empty",
|
|
353
|
+
message: "Please enter the URL or IP address of the Game server."
|
|
354
|
+
};
|
|
355
|
+
if (n.length > v) return {
|
|
356
|
+
ok: !1,
|
|
357
|
+
reason: "tooLong",
|
|
358
|
+
message: `A host name cannot be longer than ${v} characters.`
|
|
359
|
+
};
|
|
360
|
+
let r = Pe(n);
|
|
361
|
+
return r === null ? {
|
|
362
|
+
ok: !1,
|
|
363
|
+
reason: "malformed",
|
|
364
|
+
message: "Please enter the URL or IP address of the Game server."
|
|
365
|
+
} : !r.startsWith("[") && r.split(".").some((e) => e.length > y) ? {
|
|
366
|
+
ok: !1,
|
|
367
|
+
reason: "tooLong",
|
|
368
|
+
message: `Each part of a host name cannot be longer than ${y} characters.`
|
|
369
|
+
} : t && Fe(r) ? {
|
|
370
|
+
ok: !1,
|
|
371
|
+
reason: "rawIpWithTls",
|
|
372
|
+
message: "Secure connections need a host name — a certificate cannot identify a game server by IP address."
|
|
373
|
+
} : {
|
|
374
|
+
ok: !0,
|
|
375
|
+
host: n
|
|
376
|
+
};
|
|
377
|
+
}
|
|
378
|
+
function Le(e, t = typeof location > "u" ? "https:" : location.protocol) {
|
|
379
|
+
let n = e.trim();
|
|
380
|
+
if (n === "") return {
|
|
381
|
+
ok: !1,
|
|
382
|
+
reason: "empty",
|
|
383
|
+
message: "Please enter the WebSocket URL of the game server."
|
|
384
|
+
};
|
|
385
|
+
let r;
|
|
386
|
+
try {
|
|
387
|
+
r = new URL(n);
|
|
388
|
+
} catch {
|
|
389
|
+
return {
|
|
390
|
+
ok: !1,
|
|
391
|
+
reason: "malformed",
|
|
392
|
+
message: "That is not a URL. A WebSocket address looks like wss://mud.example.com:4000."
|
|
393
|
+
};
|
|
394
|
+
}
|
|
395
|
+
return r.protocol !== "ws:" && r.protocol !== "wss:" ? {
|
|
396
|
+
ok: !1,
|
|
397
|
+
reason: "wrongScheme",
|
|
398
|
+
message: `A WebSocket URL has to start with wss:// or ws://, not ${r.protocol}`
|
|
399
|
+
} : {
|
|
400
|
+
ok: !0,
|
|
401
|
+
url: n,
|
|
402
|
+
insecure: r.protocol === "ws:" && t === "https:"
|
|
403
|
+
};
|
|
404
|
+
}
|
|
405
|
+
function Re(e, t = typeof location > "u" ? "https:" : location.protocol) {
|
|
406
|
+
let n = e.trim();
|
|
407
|
+
if (n === "") return {
|
|
408
|
+
ok: !0,
|
|
409
|
+
url: "",
|
|
410
|
+
insecure: !1
|
|
411
|
+
};
|
|
412
|
+
if (!/^[a-z][a-z0-9+.-]*:\/\//i.test(n)) return {
|
|
413
|
+
ok: !1,
|
|
414
|
+
reason: "relative",
|
|
415
|
+
message: "Include the scheme — a proxy address has to start with wss:// or ws://."
|
|
416
|
+
};
|
|
417
|
+
let r;
|
|
418
|
+
try {
|
|
419
|
+
r = new URL(n);
|
|
420
|
+
} catch {
|
|
421
|
+
return {
|
|
422
|
+
ok: !1,
|
|
423
|
+
reason: "malformed",
|
|
424
|
+
message: "That is not a URL."
|
|
425
|
+
};
|
|
426
|
+
}
|
|
427
|
+
return r.protocol !== "ws:" && r.protocol !== "wss:" ? {
|
|
428
|
+
ok: !1,
|
|
429
|
+
reason: "wrongScheme",
|
|
430
|
+
message: `A proxy address has to start with wss:// or ws://, not ${r.protocol}`
|
|
431
|
+
} : {
|
|
432
|
+
ok: !0,
|
|
433
|
+
url: n,
|
|
434
|
+
insecure: r.protocol === "ws:" && t === "https:"
|
|
435
|
+
};
|
|
436
|
+
}
|
|
437
|
+
function b(e, t, n) {
|
|
438
|
+
let r = e.trim();
|
|
439
|
+
if (!_(r, t, n)) return r;
|
|
440
|
+
for (let e = 2;; e++) {
|
|
441
|
+
let i = `${r} (${e})`;
|
|
442
|
+
if (!_(i, t, n)) return i;
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
//#endregion
|
|
446
|
+
//#region src/storage/debouncedStorage.ts
|
|
447
|
+
function ze(e) {
|
|
448
|
+
let t = /* @__PURE__ */ new Map(), n = null, r = () => {
|
|
449
|
+
n !== null && (clearTimeout(n), n = null);
|
|
450
|
+
for (let [e, n] of t) try {
|
|
451
|
+
localStorage.setItem(e, JSON.stringify(n));
|
|
452
|
+
} catch (t) {
|
|
453
|
+
console.warn("[persist] write failed for", e, t);
|
|
454
|
+
}
|
|
455
|
+
t.clear();
|
|
456
|
+
};
|
|
457
|
+
return typeof window < "u" && (window.addEventListener("pagehide", r), window.addEventListener("beforeunload", r), document.addEventListener("visibilitychange", () => {
|
|
458
|
+
document.visibilityState === "hidden" && r();
|
|
459
|
+
})), {
|
|
460
|
+
getItem: (e) => {
|
|
461
|
+
let n = t.get(e);
|
|
462
|
+
if (n !== void 0) return n;
|
|
463
|
+
let r = localStorage.getItem(e);
|
|
464
|
+
if (r === null) return null;
|
|
465
|
+
try {
|
|
466
|
+
return JSON.parse(r);
|
|
467
|
+
} catch {
|
|
468
|
+
return null;
|
|
469
|
+
}
|
|
470
|
+
},
|
|
471
|
+
setItem: (i, a) => {
|
|
472
|
+
t.set(i, a), n === null && (n = setTimeout(() => {
|
|
473
|
+
n = null, r();
|
|
474
|
+
}, e));
|
|
475
|
+
},
|
|
476
|
+
removeItem: (e) => {
|
|
477
|
+
t.delete(e), localStorage.removeItem(e);
|
|
478
|
+
}
|
|
479
|
+
};
|
|
480
|
+
}
|
|
481
|
+
//#endregion
|
|
482
|
+
//#region src/storage/storageMigration.ts
|
|
483
|
+
var x = "mudlet_names_migrated", S = "mudlet_idb_names_migrated", Be = [
|
|
484
|
+
["mudix_v1", "mudlet_v1"],
|
|
485
|
+
["mudix_vault_v1", "mudlet_vault_v1"],
|
|
486
|
+
["mudix_analytics_opt_out", "mudlet_analytics_opt_out"],
|
|
487
|
+
["mudix_profile_migration_v21", "mudlet_profile_migration_v21"],
|
|
488
|
+
["cmd.history", "mudlet_history"]
|
|
489
|
+
], Ve = [
|
|
490
|
+
["mudix_stopwatches_", "mudlet_stopwatches_"],
|
|
491
|
+
["cmd.history.", "mudlet_history_"],
|
|
492
|
+
["mudix.debug", "mudlet.debug"]
|
|
493
|
+
], C = [
|
|
494
|
+
["mudix_maps", "mudlet_maps"],
|
|
495
|
+
["mudix_logs", "mudlet_logs"],
|
|
496
|
+
["mudix_folder_handles", "mudlet_folder_handles"]
|
|
497
|
+
], w = "mudix_vfs_", He = "mudlet_vfs_", T = 250, E = !1;
|
|
498
|
+
function Ue() {
|
|
499
|
+
if (!E && (E = !0, !(typeof localStorage > "u"))) try {
|
|
500
|
+
if (localStorage.getItem(x)) return;
|
|
501
|
+
for (let [e, t] of Be) D(e, t);
|
|
502
|
+
let e = [];
|
|
503
|
+
for (let t = 0; t < localStorage.length; t++) {
|
|
504
|
+
let n = localStorage.key(t);
|
|
505
|
+
n && e.push(n);
|
|
506
|
+
}
|
|
507
|
+
for (let t of e) for (let [e, n] of Ve) if (t.startsWith(e)) {
|
|
508
|
+
D(t, n + t.slice(e.length));
|
|
509
|
+
break;
|
|
510
|
+
}
|
|
511
|
+
localStorage.setItem(x, "1");
|
|
512
|
+
} catch {}
|
|
513
|
+
}
|
|
514
|
+
function D(e, t) {
|
|
515
|
+
let n = localStorage.getItem(e);
|
|
516
|
+
n !== null && (localStorage.getItem(t) === null && localStorage.setItem(t, n), localStorage.removeItem(e));
|
|
517
|
+
}
|
|
518
|
+
var O = null;
|
|
519
|
+
function k() {
|
|
520
|
+
return O ||= We().catch((e) => {
|
|
521
|
+
console.warn("[storage] database rename did not complete:", e);
|
|
522
|
+
}), O;
|
|
523
|
+
}
|
|
524
|
+
async function We() {
|
|
525
|
+
if (typeof indexedDB > "u" || typeof localStorage < "u" && localStorage.getItem(S)) return;
|
|
526
|
+
let e = await Ge(), t = !0;
|
|
527
|
+
for (let n of e) {
|
|
528
|
+
let e = n.startsWith(w) ? He + n.slice(10) : C.find(([e]) => e === n)?.[1];
|
|
529
|
+
if (e) try {
|
|
530
|
+
await qe(n, e);
|
|
531
|
+
} catch (e) {
|
|
532
|
+
console.warn(`[storage] could not rename ${n}:`, e), t = !1;
|
|
533
|
+
}
|
|
534
|
+
}
|
|
535
|
+
if (t && typeof localStorage < "u") try {
|
|
536
|
+
localStorage.setItem(S, "1");
|
|
537
|
+
} catch {}
|
|
538
|
+
}
|
|
539
|
+
async function Ge() {
|
|
540
|
+
let e = (e) => e.startsWith(w) || C.some(([t]) => t === e);
|
|
541
|
+
if (typeof indexedDB.databases == "function") try {
|
|
542
|
+
return (await indexedDB.databases()).map((e) => e.name).filter((t) => !!t && e(t));
|
|
543
|
+
} catch {}
|
|
544
|
+
let t = C.map(([e]) => e);
|
|
545
|
+
try {
|
|
546
|
+
let e = localStorage.getItem("mudlet_v1") ?? localStorage.getItem("mudix_v1"), n = e ? JSON.parse(e) : null;
|
|
547
|
+
for (let e of n?.state?.connections ?? []) e?.id && t.push(w + e.id);
|
|
548
|
+
} catch {}
|
|
549
|
+
let n = [];
|
|
550
|
+
for (let e of t) {
|
|
551
|
+
let t = await j(e);
|
|
552
|
+
t && (t.close(), n.push(e));
|
|
553
|
+
}
|
|
554
|
+
return n;
|
|
555
|
+
}
|
|
556
|
+
var A = 1e4;
|
|
557
|
+
function Ke(e, t, n) {
|
|
558
|
+
return new Promise((r) => {
|
|
559
|
+
let i = !1, a = (e) => {
|
|
560
|
+
i || (i = !0, r(e));
|
|
561
|
+
}, o = setTimeout(() => {
|
|
562
|
+
console.warn(`[storage] ${n} did not answer in ${A}ms`), a(t);
|
|
563
|
+
}, A);
|
|
564
|
+
e.then((e) => {
|
|
565
|
+
clearTimeout(o), a(e);
|
|
566
|
+
}, () => {
|
|
567
|
+
clearTimeout(o), a(t);
|
|
568
|
+
});
|
|
569
|
+
});
|
|
570
|
+
}
|
|
571
|
+
function j(e) {
|
|
572
|
+
return Ke(new Promise((t) => {
|
|
573
|
+
let n = !1, r;
|
|
574
|
+
try {
|
|
575
|
+
r = indexedDB.open(e);
|
|
576
|
+
} catch {
|
|
577
|
+
t(null);
|
|
578
|
+
return;
|
|
579
|
+
}
|
|
580
|
+
r.onupgradeneeded = () => {
|
|
581
|
+
n = !0;
|
|
582
|
+
}, r.onerror = () => t(null), r.onblocked = () => t(null), r.onsuccess = () => {
|
|
583
|
+
try {
|
|
584
|
+
let i = r.result;
|
|
585
|
+
if (n) {
|
|
586
|
+
i.close(), indexedDB.deleteDatabase(e), t(null);
|
|
587
|
+
return;
|
|
588
|
+
}
|
|
589
|
+
t(i);
|
|
590
|
+
} catch {
|
|
591
|
+
t(null);
|
|
592
|
+
}
|
|
593
|
+
};
|
|
594
|
+
}), null, `opening ${e}`);
|
|
595
|
+
}
|
|
596
|
+
async function qe(e, t) {
|
|
597
|
+
let n = await j(e);
|
|
598
|
+
if (!n) return;
|
|
599
|
+
let r, i;
|
|
600
|
+
try {
|
|
601
|
+
i = n.version, r = Je(n);
|
|
602
|
+
} finally {
|
|
603
|
+
n.close();
|
|
604
|
+
}
|
|
605
|
+
let a = r.map((n) => ({
|
|
606
|
+
...n,
|
|
607
|
+
target: n.name === e ? t : n.name
|
|
608
|
+
}));
|
|
609
|
+
await tt(t);
|
|
610
|
+
let o = await Ye(t, i, a.map((e) => ({
|
|
611
|
+
...e,
|
|
612
|
+
name: e.target
|
|
613
|
+
})));
|
|
614
|
+
try {
|
|
615
|
+
for (let t of a) await Xe(e, t.name, t.target, o);
|
|
616
|
+
} finally {
|
|
617
|
+
o.close();
|
|
618
|
+
}
|
|
619
|
+
await $e(e, t, a), await tt(e);
|
|
620
|
+
}
|
|
621
|
+
function Je(e) {
|
|
622
|
+
let t = Array.from(e.objectStoreNames);
|
|
623
|
+
if (!t.length) return [];
|
|
624
|
+
let n = e.transaction(t, "readonly");
|
|
625
|
+
return t.map((e) => {
|
|
626
|
+
let t = n.objectStore(e);
|
|
627
|
+
return {
|
|
628
|
+
name: e,
|
|
629
|
+
keyPath: t.keyPath,
|
|
630
|
+
autoIncrement: t.autoIncrement,
|
|
631
|
+
indexes: Array.from(t.indexNames).map((e) => {
|
|
632
|
+
let n = t.index(e);
|
|
633
|
+
return {
|
|
634
|
+
name: n.name,
|
|
635
|
+
keyPath: n.keyPath,
|
|
636
|
+
unique: n.unique,
|
|
637
|
+
multiEntry: n.multiEntry
|
|
638
|
+
};
|
|
639
|
+
})
|
|
640
|
+
};
|
|
641
|
+
});
|
|
642
|
+
}
|
|
643
|
+
function Ye(e, t, n) {
|
|
644
|
+
return new Promise((r, i) => {
|
|
645
|
+
let a = indexedDB.open(e, t);
|
|
646
|
+
a.onupgradeneeded = () => {
|
|
647
|
+
let e = a.result;
|
|
648
|
+
for (let t of n) {
|
|
649
|
+
let n = e.createObjectStore(t.name, {
|
|
650
|
+
keyPath: t.keyPath,
|
|
651
|
+
autoIncrement: t.autoIncrement
|
|
652
|
+
});
|
|
653
|
+
for (let e of t.indexes) n.createIndex(e.name, e.keyPath, {
|
|
654
|
+
unique: e.unique,
|
|
655
|
+
multiEntry: e.multiEntry
|
|
656
|
+
});
|
|
657
|
+
}
|
|
658
|
+
}, a.onsuccess = () => r(a.result), a.onerror = () => i(a.error), a.onblocked = () => i(/* @__PURE__ */ Error(`another tab is holding ${e} open`));
|
|
659
|
+
});
|
|
660
|
+
}
|
|
661
|
+
async function Xe(e, t, n, r) {
|
|
662
|
+
let i = await j(e);
|
|
663
|
+
if (!i) return;
|
|
664
|
+
let a;
|
|
665
|
+
try {
|
|
666
|
+
a = await M(i.transaction(t, "readonly").objectStore(t).getAllKeys());
|
|
667
|
+
} finally {
|
|
668
|
+
i.close();
|
|
669
|
+
}
|
|
670
|
+
for (let i = 0; i < a.length; i += T) {
|
|
671
|
+
let o = a.slice(i, i + T);
|
|
672
|
+
await Qe(r, n, o, await Ze(e, t, o));
|
|
673
|
+
}
|
|
674
|
+
}
|
|
675
|
+
async function Ze(e, t, n) {
|
|
676
|
+
let r = await j(e);
|
|
677
|
+
if (!r) return [];
|
|
678
|
+
try {
|
|
679
|
+
let e = r.transaction(t, "readonly").objectStore(t);
|
|
680
|
+
return await Promise.all(n.map((t) => M(e.get(t))));
|
|
681
|
+
} finally {
|
|
682
|
+
r.close();
|
|
683
|
+
}
|
|
684
|
+
}
|
|
685
|
+
function Qe(e, t, n, r) {
|
|
686
|
+
return new Promise((i, a) => {
|
|
687
|
+
let o = e.transaction(t, "readwrite"), s = o.objectStore(t);
|
|
688
|
+
for (let e = 0; e < r.length; e++) r[e] !== void 0 && (s.keyPath === null ? s.put(r[e], n[e]) : s.put(r[e]));
|
|
689
|
+
o.oncomplete = () => i(), o.onerror = () => a(o.error), o.onabort = () => a(o.error ?? /* @__PURE__ */ Error("write aborted"));
|
|
690
|
+
});
|
|
691
|
+
}
|
|
692
|
+
async function $e(e, t, n) {
|
|
693
|
+
let r = await et(e, n.map((e) => e.name)), i = await et(t, n.map((e) => e.target));
|
|
694
|
+
for (let a of n) if ((i[a.target] ?? -1) < (r[a.name] ?? 0)) throw Error(`${t}/${a.target} has ${i[a.target]} of ${r[a.name]} records; keeping ${e}`);
|
|
695
|
+
}
|
|
696
|
+
async function et(e, t) {
|
|
697
|
+
let n = await j(e);
|
|
698
|
+
if (!n) return {};
|
|
699
|
+
try {
|
|
700
|
+
let e = {};
|
|
701
|
+
for (let r of t) {
|
|
702
|
+
if (!n.objectStoreNames.contains(r)) {
|
|
703
|
+
e[r] = 0;
|
|
704
|
+
continue;
|
|
705
|
+
}
|
|
706
|
+
e[r] = await M(n.transaction(r, "readonly").objectStore(r).count());
|
|
707
|
+
}
|
|
708
|
+
return e;
|
|
709
|
+
} finally {
|
|
710
|
+
n.close();
|
|
711
|
+
}
|
|
712
|
+
}
|
|
713
|
+
function tt(e) {
|
|
714
|
+
return Ke(new Promise((t) => {
|
|
715
|
+
let n;
|
|
716
|
+
try {
|
|
717
|
+
n = indexedDB.deleteDatabase(e);
|
|
718
|
+
} catch {
|
|
719
|
+
t();
|
|
720
|
+
return;
|
|
721
|
+
}
|
|
722
|
+
n.onsuccess = () => t(), n.onerror = () => t(), n.onblocked = () => t();
|
|
723
|
+
}), void 0, `deleting ${e}`);
|
|
724
|
+
}
|
|
725
|
+
function M(e) {
|
|
726
|
+
return new Promise((t, n) => {
|
|
727
|
+
e.onsuccess = () => t(e.result), e.onerror = () => n(e.error);
|
|
728
|
+
});
|
|
729
|
+
}
|
|
730
|
+
//#endregion
|
|
731
|
+
//#region src/storage/logStorage.ts
|
|
732
|
+
var nt = "mudlet_logs", N = "sessions", P = "entries", rt = 1;
|
|
733
|
+
async function F() {
|
|
734
|
+
return await k(), new Promise((e, t) => {
|
|
735
|
+
let n = indexedDB.open(nt, rt);
|
|
736
|
+
n.onupgradeneeded = () => {
|
|
737
|
+
let e = n.result;
|
|
738
|
+
e.objectStoreNames.contains(N) || e.createObjectStore(N, { keyPath: "id" }).createIndex("connectionId", "connectionId", { unique: !1 }), e.objectStoreNames.contains(P) || e.createObjectStore(P, {
|
|
739
|
+
keyPath: "id",
|
|
740
|
+
autoIncrement: !0
|
|
741
|
+
}).createIndex("sessionId", "sessionId", { unique: !1 });
|
|
742
|
+
}, n.onsuccess = () => e(n.result), n.onerror = () => t(n.error);
|
|
743
|
+
});
|
|
744
|
+
}
|
|
745
|
+
async function it(e) {
|
|
746
|
+
let t = await F();
|
|
747
|
+
return new Promise((n, r) => {
|
|
748
|
+
let i = t.transaction(N, "readwrite");
|
|
749
|
+
i.objectStore(N).put(e), i.oncomplete = () => n(), i.onerror = () => r(i.error);
|
|
750
|
+
});
|
|
751
|
+
}
|
|
752
|
+
async function at(e, t) {
|
|
753
|
+
let n = await F();
|
|
754
|
+
return new Promise((r, i) => {
|
|
755
|
+
let a = n.transaction(N, "readwrite"), o = a.objectStore(N), s = o.get(e);
|
|
756
|
+
s.onsuccess = () => {
|
|
757
|
+
let n = s.result;
|
|
758
|
+
n && o.put({
|
|
759
|
+
...n,
|
|
760
|
+
...t,
|
|
761
|
+
id: e
|
|
762
|
+
});
|
|
763
|
+
}, a.oncomplete = () => r(), a.onerror = () => i(a.error);
|
|
764
|
+
});
|
|
765
|
+
}
|
|
766
|
+
async function ot(e) {
|
|
767
|
+
if (e.length === 0) return;
|
|
768
|
+
let t = await F();
|
|
769
|
+
return new Promise((n, r) => {
|
|
770
|
+
let i = t.transaction(P, "readwrite"), a = i.objectStore(P);
|
|
771
|
+
for (let t of e) a.add(t);
|
|
772
|
+
i.oncomplete = () => n(), i.onerror = () => r(i.error);
|
|
773
|
+
});
|
|
774
|
+
}
|
|
775
|
+
async function st(e) {
|
|
776
|
+
let t = await F();
|
|
777
|
+
return new Promise((n, r) => {
|
|
778
|
+
let i = t.transaction(N, "readonly").objectStore(N), a = e ? i.index("connectionId").getAll(IDBKeyRange.only(e)) : i.getAll();
|
|
779
|
+
a.onsuccess = () => {
|
|
780
|
+
let e = a.result ?? [];
|
|
781
|
+
e.sort((e, t) => t.startedAt - e.startedAt), n(e);
|
|
782
|
+
}, a.onerror = () => r(a.error);
|
|
783
|
+
});
|
|
784
|
+
}
|
|
785
|
+
async function ct(e) {
|
|
786
|
+
let t = await F();
|
|
787
|
+
return new Promise((n, r) => {
|
|
788
|
+
let i = t.transaction(P, "readonly").objectStore(P).index("sessionId").getAll(IDBKeyRange.only(e));
|
|
789
|
+
i.onsuccess = () => {
|
|
790
|
+
let e = i.result ?? [];
|
|
791
|
+
e.sort((e, t) => e.seq - t.seq), n(e);
|
|
792
|
+
}, i.onerror = () => r(i.error);
|
|
793
|
+
});
|
|
794
|
+
}
|
|
795
|
+
async function lt(e) {
|
|
796
|
+
let t = await F();
|
|
797
|
+
return new Promise((n, r) => {
|
|
798
|
+
let i = t.transaction([N, P], "readwrite");
|
|
799
|
+
i.objectStore(N).delete(e);
|
|
800
|
+
let a = i.objectStore(P).index("sessionId").openKeyCursor(IDBKeyRange.only(e));
|
|
801
|
+
a.onsuccess = () => {
|
|
802
|
+
let e = a.result;
|
|
803
|
+
e && (i.objectStore(P).delete(e.primaryKey), e.continue());
|
|
804
|
+
}, i.oncomplete = () => n(), i.onerror = () => r(i.error);
|
|
805
|
+
});
|
|
806
|
+
}
|
|
807
|
+
async function ut(e) {
|
|
808
|
+
for (let t of e) await lt(t);
|
|
809
|
+
}
|
|
810
|
+
async function dt(e) {
|
|
811
|
+
await ut((await st(e)).map((e) => e.id));
|
|
812
|
+
}
|
|
813
|
+
async function ft() {
|
|
814
|
+
let e = await F();
|
|
815
|
+
return new Promise((t, n) => {
|
|
816
|
+
let r = e.transaction([N, P], "readwrite");
|
|
817
|
+
r.objectStore(N).clear(), r.objectStore(P).clear(), r.oncomplete = () => t(), r.onerror = () => n(r.error);
|
|
818
|
+
});
|
|
819
|
+
}
|
|
820
|
+
//#endregion
|
|
821
|
+
//#region src/storage/mapStorage.ts
|
|
822
|
+
var pt = "mudlet_maps", I = "maps";
|
|
823
|
+
async function L() {
|
|
824
|
+
return await k(), new Promise((e, t) => {
|
|
825
|
+
let n = indexedDB.open(pt, 1);
|
|
826
|
+
n.onupgradeneeded = () => n.result.createObjectStore(I), n.onsuccess = () => e(n.result), n.onerror = () => t(n.error);
|
|
827
|
+
});
|
|
828
|
+
}
|
|
829
|
+
async function mt(e, t) {
|
|
830
|
+
let n = await L();
|
|
831
|
+
return new Promise((r, i) => {
|
|
832
|
+
let a = n.transaction(I, "readwrite");
|
|
833
|
+
a.objectStore(I).put(t, e), a.oncomplete = () => r(), a.onerror = () => i(a.error);
|
|
834
|
+
});
|
|
835
|
+
}
|
|
836
|
+
async function ht(e) {
|
|
837
|
+
let t = await L();
|
|
838
|
+
return new Promise((n, r) => {
|
|
839
|
+
let i = t.transaction(I, "readwrite");
|
|
840
|
+
i.objectStore(I).delete(e), i.oncomplete = () => n(), i.onerror = () => r(i.error);
|
|
841
|
+
});
|
|
842
|
+
}
|
|
843
|
+
async function gt(e) {
|
|
844
|
+
let t = await L();
|
|
845
|
+
return new Promise((n, r) => {
|
|
846
|
+
let i = t.transaction(I, "readonly").objectStore(I).get(e);
|
|
847
|
+
i.onsuccess = () => n(i.result ?? null), i.onerror = () => r(i.error);
|
|
848
|
+
});
|
|
849
|
+
}
|
|
850
|
+
//#endregion
|
|
851
|
+
//#region src/scripting/vfs/folderHandleStore.ts
|
|
852
|
+
var _t = "mudlet_folder_handles", R = "handles";
|
|
853
|
+
async function z() {
|
|
854
|
+
return await k(), new Promise((e, t) => {
|
|
855
|
+
let n = indexedDB.open(_t, 1);
|
|
856
|
+
n.onupgradeneeded = () => n.result.createObjectStore(R), n.onsuccess = () => e(n.result), n.onerror = () => t(n.error);
|
|
857
|
+
});
|
|
858
|
+
}
|
|
859
|
+
function vt() {
|
|
860
|
+
return typeof window < "u" && typeof window.showDirectoryPicker == "function";
|
|
861
|
+
}
|
|
862
|
+
async function yt(e, t) {
|
|
863
|
+
let n = await z();
|
|
864
|
+
return new Promise((r, i) => {
|
|
865
|
+
let a = n.transaction(R, "readwrite");
|
|
866
|
+
a.objectStore(R).put(t, e), a.oncomplete = () => r(), a.onerror = () => i(a.error);
|
|
867
|
+
});
|
|
868
|
+
}
|
|
869
|
+
async function bt(e) {
|
|
870
|
+
let t = await z();
|
|
871
|
+
return new Promise((n, r) => {
|
|
872
|
+
let i = t.transaction(R, "readonly").objectStore(R).get(e);
|
|
873
|
+
i.onsuccess = () => n(i.result ?? null), i.onerror = () => r(i.error);
|
|
874
|
+
});
|
|
875
|
+
}
|
|
876
|
+
async function xt(e) {
|
|
877
|
+
let t = await z();
|
|
878
|
+
return new Promise((n, r) => {
|
|
879
|
+
let i = t.transaction(R, "readwrite");
|
|
880
|
+
i.objectStore(R).delete(e), i.oncomplete = () => n(), i.onerror = () => r(i.error);
|
|
881
|
+
});
|
|
882
|
+
}
|
|
883
|
+
async function St(e) {
|
|
884
|
+
let t = e;
|
|
885
|
+
if (typeof t.queryPermission != "function") return "unsupported";
|
|
886
|
+
try {
|
|
887
|
+
return await t.queryPermission({ mode: "readwrite" });
|
|
888
|
+
} catch {
|
|
889
|
+
return "denied";
|
|
890
|
+
}
|
|
891
|
+
}
|
|
892
|
+
async function Ct(e) {
|
|
893
|
+
let t = e;
|
|
894
|
+
if (typeof t.requestPermission != "function") return "unsupported";
|
|
895
|
+
try {
|
|
896
|
+
return await t.requestPermission({ mode: "readwrite" });
|
|
897
|
+
} catch {
|
|
898
|
+
return "denied";
|
|
899
|
+
}
|
|
900
|
+
}
|
|
901
|
+
//#endregion
|
|
902
|
+
//#region src/ui/commandHistory.ts
|
|
903
|
+
var wt = "mudlet_history";
|
|
904
|
+
function Tt(e) {
|
|
905
|
+
return e ? `${wt}_${e}` : wt;
|
|
906
|
+
}
|
|
907
|
+
function Et(e) {
|
|
908
|
+
try {
|
|
909
|
+
let t = localStorage.getItem(e);
|
|
910
|
+
if (!t) return [];
|
|
911
|
+
let n = JSON.parse(t);
|
|
912
|
+
return Array.isArray(n) ? n.filter((e) => typeof e == "string").slice(0, 500) : [];
|
|
913
|
+
} catch {
|
|
914
|
+
return [];
|
|
915
|
+
}
|
|
916
|
+
}
|
|
917
|
+
function Dt(e, t, n = 500) {
|
|
918
|
+
try {
|
|
919
|
+
let r = n >= 0 && e.length > n ? e.slice(0, n) : e;
|
|
920
|
+
localStorage.setItem(t, JSON.stringify(r));
|
|
921
|
+
} catch {}
|
|
922
|
+
}
|
|
923
|
+
function Ot(e, t) {
|
|
924
|
+
if (!t) return e;
|
|
925
|
+
let n = t.toLowerCase(), r = e.filter((e) => e.toLowerCase() !== n);
|
|
926
|
+
return r.unshift(t), r.length > 500 && (r.length = 500), r;
|
|
927
|
+
}
|
|
928
|
+
var kt = {
|
|
929
|
+
"prefix-start": 0,
|
|
930
|
+
"prefix-mid": 1,
|
|
931
|
+
subseq: 2
|
|
932
|
+
};
|
|
933
|
+
function At(e, t, n = 10) {
|
|
934
|
+
if (!e) return [];
|
|
935
|
+
let r = e.toLowerCase(), i = [];
|
|
936
|
+
for (let n = 0; n < t.length; n++) {
|
|
937
|
+
let a = t[n], o = a.toLowerCase();
|
|
938
|
+
if (o === r) continue;
|
|
939
|
+
if (o.startsWith(r)) {
|
|
940
|
+
i.push({
|
|
941
|
+
item: a,
|
|
942
|
+
mruIndex: n,
|
|
943
|
+
kind: "prefix-start",
|
|
944
|
+
anchor: 0,
|
|
945
|
+
ranges: [[0, e.length]]
|
|
946
|
+
});
|
|
947
|
+
continue;
|
|
948
|
+
}
|
|
949
|
+
let s = o.indexOf(r);
|
|
950
|
+
if (s > 0) {
|
|
951
|
+
i.push({
|
|
952
|
+
item: a,
|
|
953
|
+
mruIndex: n,
|
|
954
|
+
kind: "prefix-mid",
|
|
955
|
+
anchor: s,
|
|
956
|
+
ranges: [[s, s + e.length]]
|
|
957
|
+
});
|
|
958
|
+
continue;
|
|
959
|
+
}
|
|
960
|
+
let c = jt(o, r);
|
|
961
|
+
c && i.push({
|
|
962
|
+
item: a,
|
|
963
|
+
mruIndex: n,
|
|
964
|
+
kind: "subseq",
|
|
965
|
+
anchor: c[0][0],
|
|
966
|
+
ranges: c
|
|
967
|
+
});
|
|
968
|
+
}
|
|
969
|
+
return i.sort((e, t) => {
|
|
970
|
+
let n = kt[e.kind] - kt[t.kind];
|
|
971
|
+
return n === 0 ? e.mruIndex - t.mruIndex : n;
|
|
972
|
+
}), i.length > n && (i.length = n), i;
|
|
973
|
+
}
|
|
974
|
+
function jt(e, t) {
|
|
975
|
+
if (t.length === 0) return [];
|
|
976
|
+
let n = [], r = 0;
|
|
977
|
+
for (let i = 0; i < e.length && r < t.length; i++) if (e[i] === t[r]) {
|
|
978
|
+
let e = n[n.length - 1];
|
|
979
|
+
e && e[1] === i ? e[1] = i + 1 : n.push([i, i + 1]), r++;
|
|
980
|
+
}
|
|
981
|
+
return r === t.length ? n : null;
|
|
982
|
+
}
|
|
983
|
+
//#endregion
|
|
984
|
+
//#region src/scripting/StopwatchManager.ts
|
|
985
|
+
function B(e) {
|
|
986
|
+
return `mudlet_stopwatches_${e}`;
|
|
987
|
+
}
|
|
988
|
+
function Mt(e) {
|
|
989
|
+
if (typeof localStorage > "u") return;
|
|
990
|
+
let t = B(e);
|
|
991
|
+
return {
|
|
992
|
+
load: () => localStorage.getItem(t),
|
|
993
|
+
save: (e) => localStorage.setItem(t, e)
|
|
994
|
+
};
|
|
995
|
+
}
|
|
996
|
+
var V = (e) => ({ refused: e }), H = (e) => typeof e == "object" && !!e && typeof e.refused == "string", Nt = 864e5, Pt = 36e5, Ft = 6e4, U = 1e3, W = 0x38d7ea4c68000, G = (e) => Math.min(W, Math.max(-0x38d7ea4c68000, e));
|
|
997
|
+
function It(e) {
|
|
998
|
+
let t = e / 1e3, n = Math.abs(Math.round(e)), r = Math.floor(n / Nt);
|
|
999
|
+
n -= r * Nt;
|
|
1000
|
+
let i = Math.floor(n / Pt);
|
|
1001
|
+
n -= i * Pt;
|
|
1002
|
+
let a = Math.floor(n / Ft);
|
|
1003
|
+
n -= a * Ft;
|
|
1004
|
+
let o = Math.floor(n / U);
|
|
1005
|
+
return n -= o * U, {
|
|
1006
|
+
negative: e < 0,
|
|
1007
|
+
days: r,
|
|
1008
|
+
hours: i,
|
|
1009
|
+
minutes: a,
|
|
1010
|
+
seconds: o,
|
|
1011
|
+
milliSeconds: n,
|
|
1012
|
+
decimalSeconds: t
|
|
1013
|
+
};
|
|
1014
|
+
}
|
|
1015
|
+
var Lt = class {
|
|
1016
|
+
storage;
|
|
1017
|
+
watches = /* @__PURE__ */ new Map();
|
|
1018
|
+
constructor(e) {
|
|
1019
|
+
this.storage = e, this.restore();
|
|
1020
|
+
}
|
|
1021
|
+
now() {
|
|
1022
|
+
return Date.now();
|
|
1023
|
+
}
|
|
1024
|
+
elapsedMs(e) {
|
|
1025
|
+
return e.initialised ? G(e.accumulatedMs + (e.running ? this.now() - e.startEpochMs : 0)) : 0;
|
|
1026
|
+
}
|
|
1027
|
+
ordered() {
|
|
1028
|
+
return [...this.watches.values()].sort((e, t) => e.id - t.id);
|
|
1029
|
+
}
|
|
1030
|
+
findByName(e) {
|
|
1031
|
+
return this.ordered().find((t) => t.name === e);
|
|
1032
|
+
}
|
|
1033
|
+
lookup(e, t) {
|
|
1034
|
+
return typeof e == "number" ? this.watches.get(e) ?? V(`stopwatch with ${t} ${e} not found`) : this.findByName(e) ?? V(e === "" ? "no unnamed stopwatches found" : `stopwatch with name '${e}' not found`);
|
|
1035
|
+
}
|
|
1036
|
+
missing(e) {
|
|
1037
|
+
let t = this.lookup(e, "ID");
|
|
1038
|
+
return H(t) ? t : null;
|
|
1039
|
+
}
|
|
1040
|
+
describe(e, t) {
|
|
1041
|
+
return typeof e == "number" ? `stopwatch with id ${t.id}` : `stopwatch with name '${e}' (id:${t.id})`;
|
|
1042
|
+
}
|
|
1043
|
+
restore() {
|
|
1044
|
+
if (!this.storage) return;
|
|
1045
|
+
let e;
|
|
1046
|
+
try {
|
|
1047
|
+
e = this.storage.load();
|
|
1048
|
+
} catch {
|
|
1049
|
+
return;
|
|
1050
|
+
}
|
|
1051
|
+
if (!e) return;
|
|
1052
|
+
let t;
|
|
1053
|
+
try {
|
|
1054
|
+
t = JSON.parse(e);
|
|
1055
|
+
} catch {
|
|
1056
|
+
return;
|
|
1057
|
+
}
|
|
1058
|
+
if (Array.isArray(t)) for (let e of t) {
|
|
1059
|
+
if (!e || typeof e.id != "number") continue;
|
|
1060
|
+
let t = !!e.running, n = Number(e.accumulatedMs) || 0;
|
|
1061
|
+
this.watches.set(e.id, {
|
|
1062
|
+
id: e.id,
|
|
1063
|
+
name: typeof e.name == "string" ? e.name : "",
|
|
1064
|
+
initialised: typeof e.initialised == "boolean" ? e.initialised : t || n !== 0,
|
|
1065
|
+
running: t,
|
|
1066
|
+
accumulatedMs: n,
|
|
1067
|
+
startEpochMs: Number(e.startEpochMs) || 0,
|
|
1068
|
+
persistent: !0
|
|
1069
|
+
});
|
|
1070
|
+
}
|
|
1071
|
+
}
|
|
1072
|
+
savedForProfile(e = Date.now()) {
|
|
1073
|
+
let t = [];
|
|
1074
|
+
for (let n of [...this.watches.values()].sort((e, t) => e.id - t.id)) {
|
|
1075
|
+
if (!n.persistent) continue;
|
|
1076
|
+
let r = this.elapsedMs(n);
|
|
1077
|
+
t.push(n.running ? {
|
|
1078
|
+
id: n.id,
|
|
1079
|
+
name: n.name,
|
|
1080
|
+
running: !0,
|
|
1081
|
+
effectiveStartEpochMs: e - r
|
|
1082
|
+
} : {
|
|
1083
|
+
id: n.id,
|
|
1084
|
+
name: n.name,
|
|
1085
|
+
running: !1,
|
|
1086
|
+
elapsedMs: r
|
|
1087
|
+
});
|
|
1088
|
+
}
|
|
1089
|
+
return t;
|
|
1090
|
+
}
|
|
1091
|
+
persist() {
|
|
1092
|
+
if (!this.storage) return;
|
|
1093
|
+
let e = [];
|
|
1094
|
+
for (let t of this.watches.values()) t.persistent && e.push({
|
|
1095
|
+
id: t.id,
|
|
1096
|
+
name: t.name,
|
|
1097
|
+
initialised: t.initialised,
|
|
1098
|
+
running: t.running,
|
|
1099
|
+
accumulatedMs: t.accumulatedMs,
|
|
1100
|
+
startEpochMs: t.startEpochMs
|
|
1101
|
+
});
|
|
1102
|
+
try {
|
|
1103
|
+
this.storage.save(JSON.stringify(e));
|
|
1104
|
+
} catch {}
|
|
1105
|
+
}
|
|
1106
|
+
touched(e) {
|
|
1107
|
+
e.persistent && this.persist();
|
|
1108
|
+
}
|
|
1109
|
+
startWatch(e) {
|
|
1110
|
+
return e.initialised ? e.running ? !1 : (e.startEpochMs = this.now(), e.running = !0, !0) : (e.initialised = !0, e.accumulatedMs = 0, e.startEpochMs = this.now(), e.running = !0, !0);
|
|
1111
|
+
}
|
|
1112
|
+
stopWatch(e) {
|
|
1113
|
+
return !e.initialised || !e.running ? !1 : (e.accumulatedMs = this.elapsedMs(e), e.running = !1, !0);
|
|
1114
|
+
}
|
|
1115
|
+
resetWatch(e) {
|
|
1116
|
+
return e.initialised ? (e.accumulatedMs = 0, e.running ? e.startEpochMs = this.now() : e.initialised = !1, !0) : !1;
|
|
1117
|
+
}
|
|
1118
|
+
create(e, t) {
|
|
1119
|
+
if (e) {
|
|
1120
|
+
let t = this.findByName(e);
|
|
1121
|
+
if (t) return V(`stopwatch with id ${t.id} called '${e}' already exists`);
|
|
1122
|
+
}
|
|
1123
|
+
let n = 1;
|
|
1124
|
+
for (; this.watches.has(n);) n++;
|
|
1125
|
+
let r = {
|
|
1126
|
+
id: n,
|
|
1127
|
+
name: e || "",
|
|
1128
|
+
initialised: !1,
|
|
1129
|
+
running: !1,
|
|
1130
|
+
accumulatedMs: 0,
|
|
1131
|
+
startEpochMs: 0,
|
|
1132
|
+
persistent: !1
|
|
1133
|
+
};
|
|
1134
|
+
return this.watches.set(n, r), t && this.startWatch(r), n;
|
|
1135
|
+
}
|
|
1136
|
+
start(e, t) {
|
|
1137
|
+
let n = this.lookup(e, "id");
|
|
1138
|
+
if (H(n)) return n;
|
|
1139
|
+
if (t) this.stopWatch(n), this.resetWatch(n), this.startWatch(n);
|
|
1140
|
+
else if (!this.startWatch(n)) return V(`${this.describe(e, n)} was already running`);
|
|
1141
|
+
return this.touched(n), !0;
|
|
1142
|
+
}
|
|
1143
|
+
stop(e) {
|
|
1144
|
+
let t = this.lookup(e, "id");
|
|
1145
|
+
return H(t) ? t : this.stopWatch(t) ? (this.touched(t), this.elapsedMs(t) / 1e3) : V(`${this.describe(e, t)} was already stopped`);
|
|
1146
|
+
}
|
|
1147
|
+
getTime(e) {
|
|
1148
|
+
let t = this.lookup(e, "ID");
|
|
1149
|
+
return H(t) ? t : this.elapsedMs(t) / 1e3;
|
|
1150
|
+
}
|
|
1151
|
+
getBrokenDownTime(e) {
|
|
1152
|
+
let t = this.lookup(e, "id");
|
|
1153
|
+
if (H(t)) return t;
|
|
1154
|
+
let { negative: n, days: r, hours: i, minutes: a, seconds: o, milliSeconds: s } = It(this.elapsedMs(t));
|
|
1155
|
+
return {
|
|
1156
|
+
negative: n,
|
|
1157
|
+
days: r,
|
|
1158
|
+
hours: i,
|
|
1159
|
+
minutes: a,
|
|
1160
|
+
seconds: o,
|
|
1161
|
+
milliSeconds: s
|
|
1162
|
+
};
|
|
1163
|
+
}
|
|
1164
|
+
setName(e, t) {
|
|
1165
|
+
if (typeof e == "number" && t) {
|
|
1166
|
+
let n = this.findByName(t);
|
|
1167
|
+
if (n) return n.id === e || V(`the name '${t}' is already in use for another stopwatch (id:${n.id})`);
|
|
1168
|
+
}
|
|
1169
|
+
let n = this.lookup(e, "id");
|
|
1170
|
+
if (H(n)) return n;
|
|
1171
|
+
if (t) {
|
|
1172
|
+
let e = this.ordered().find((e) => e !== n && e.name === t);
|
|
1173
|
+
if (e) return V(`the name '${t}' is already in use for another stopwatch (id:${e.id})`);
|
|
1174
|
+
}
|
|
1175
|
+
return n.name === t ? !0 : (n.name = t, this.touched(n), !0);
|
|
1176
|
+
}
|
|
1177
|
+
reset(e) {
|
|
1178
|
+
let t = this.lookup(e, "id");
|
|
1179
|
+
return H(t) ? t : this.resetWatch(t) ? (this.touched(t), !0) : V(e === "" ? `the first unnamed stopwatch (id:${t.id}) was already reset` : `${this.describe(e, t)} was already reset`);
|
|
1180
|
+
}
|
|
1181
|
+
adjust(e, t) {
|
|
1182
|
+
let n = this.lookup(e, "ID");
|
|
1183
|
+
if (H(n)) return n;
|
|
1184
|
+
let r = Math.round(t * 1e3);
|
|
1185
|
+
if (!(r >= -0x38d7ea4c68000 && r <= W)) return V(`modification in seconds must be a finite number from -1000000000000 to ${W / U}, got ${t}`);
|
|
1186
|
+
if (n.initialised = !0, n.running) {
|
|
1187
|
+
let e = this.now();
|
|
1188
|
+
n.accumulatedMs = G(this.elapsedMs(n) + r), n.startEpochMs = e;
|
|
1189
|
+
} else n.accumulatedMs = G(n.accumulatedMs + r);
|
|
1190
|
+
return this.touched(n), !0;
|
|
1191
|
+
}
|
|
1192
|
+
delete(e) {
|
|
1193
|
+
let t = this.lookup(e, "ID");
|
|
1194
|
+
return H(t) ? t : (this.watches.delete(t.id), t.persistent && this.persist(), !0);
|
|
1195
|
+
}
|
|
1196
|
+
removeNonPersistent() {
|
|
1197
|
+
for (let e of [...this.watches.values()]) e.persistent || this.watches.delete(e.id);
|
|
1198
|
+
}
|
|
1199
|
+
setPersistence(e, t) {
|
|
1200
|
+
let n = this.lookup(e, "ID");
|
|
1201
|
+
return H(n) ? n : (n.persistent = t, this.persist(), !0);
|
|
1202
|
+
}
|
|
1203
|
+
getAll() {
|
|
1204
|
+
let e = {};
|
|
1205
|
+
for (let t of this.watches.values()) e[String(t.id)] = {
|
|
1206
|
+
name: t.name,
|
|
1207
|
+
isRunning: t.running,
|
|
1208
|
+
isPersistent: t.persistent,
|
|
1209
|
+
elapsedTime: It(this.elapsedMs(t))
|
|
1210
|
+
};
|
|
1211
|
+
return e;
|
|
1212
|
+
}
|
|
1213
|
+
}, K = "mudlet_profile_migration_v21";
|
|
1214
|
+
function Rt(e) {
|
|
1215
|
+
return `mudlet_vfs_${e}`;
|
|
1216
|
+
}
|
|
1217
|
+
function zt(e) {
|
|
1218
|
+
return typeof indexedDB > "u" ? Promise.resolve() : new Promise((t) => {
|
|
1219
|
+
let n = indexedDB.deleteDatabase(Rt(e));
|
|
1220
|
+
n.onsuccess = () => t(), n.onerror = () => t(), n.onblocked = () => t();
|
|
1221
|
+
});
|
|
1222
|
+
}
|
|
1223
|
+
function Bt(e) {
|
|
1224
|
+
try {
|
|
1225
|
+
let t = localStorage.getItem(K);
|
|
1226
|
+
if (!t) return;
|
|
1227
|
+
let n = JSON.parse(t);
|
|
1228
|
+
if (!(e in n)) return;
|
|
1229
|
+
delete n[e], Object.keys(n).length === 0 ? localStorage.removeItem(K) : localStorage.setItem(K, JSON.stringify(n));
|
|
1230
|
+
} catch {}
|
|
1231
|
+
}
|
|
1232
|
+
async function Vt(e) {
|
|
1233
|
+
Bt(e);
|
|
1234
|
+
try {
|
|
1235
|
+
localStorage.removeItem(Tt(e));
|
|
1236
|
+
} catch {}
|
|
1237
|
+
try {
|
|
1238
|
+
localStorage.removeItem(B(e));
|
|
1239
|
+
} catch {}
|
|
1240
|
+
await Promise.allSettled([
|
|
1241
|
+
zt(e),
|
|
1242
|
+
ht(e),
|
|
1243
|
+
xt(e),
|
|
1244
|
+
dt(e)
|
|
1245
|
+
]);
|
|
1246
|
+
}
|
|
1247
|
+
//#endregion
|
|
1248
|
+
//#region src/vault/vaultAccess.ts
|
|
1249
|
+
var Ht = Object.freeze({
|
|
1250
|
+
exists: !1,
|
|
1251
|
+
locked: !1,
|
|
1252
|
+
entryIds: Object.freeze([]),
|
|
1253
|
+
signInIds: Object.freeze([]),
|
|
1254
|
+
unlockers: Object.freeze([]),
|
|
1255
|
+
rememberedUntil: null
|
|
1256
|
+
}), q = null, Ut = null, Wt = /* @__PURE__ */ new Set();
|
|
1257
|
+
function Gt() {
|
|
1258
|
+
return q;
|
|
1259
|
+
}
|
|
1260
|
+
function Kt() {
|
|
1261
|
+
return Ut;
|
|
1262
|
+
}
|
|
1263
|
+
function qt(e) {
|
|
1264
|
+
return Wt.add(e), () => {
|
|
1265
|
+
Wt.delete(e);
|
|
1266
|
+
};
|
|
1267
|
+
}
|
|
1268
|
+
function Jt() {
|
|
1269
|
+
return Ht;
|
|
1270
|
+
}
|
|
1271
|
+
function Yt(e) {
|
|
1272
|
+
return q?.getPassword(e);
|
|
1273
|
+
}
|
|
1274
|
+
function Xt(e) {
|
|
1275
|
+
return !!q?.locked && (q.hasEntry(e) || q.hasSignIn(e));
|
|
1276
|
+
}
|
|
1277
|
+
function Zt(e) {
|
|
1278
|
+
return q?.getSignIn(e);
|
|
1279
|
+
}
|
|
1280
|
+
function Qt() {
|
|
1281
|
+
return !1;
|
|
1282
|
+
}
|
|
1283
|
+
function $t() {
|
|
1284
|
+
return !!q?.locked;
|
|
1285
|
+
}
|
|
1286
|
+
function en(e) {
|
|
1287
|
+
return !!q?.hasSignIn(e);
|
|
1288
|
+
}
|
|
1289
|
+
function tn() {
|
|
1290
|
+
return !!q?.canStore;
|
|
1291
|
+
}
|
|
1292
|
+
async function nn(e, t) {
|
|
1293
|
+
return t === null;
|
|
1294
|
+
}
|
|
1295
|
+
//#endregion
|
|
1296
|
+
//#region src/storage/appStore.ts
|
|
1297
|
+
function J(e, t) {
|
|
1298
|
+
let n = [], r = [e];
|
|
1299
|
+
for (; r.length > 0;) {
|
|
1300
|
+
let e = r.shift();
|
|
1301
|
+
for (let i of t) i.parentId === e && (n.push(i.id), r.push(i.id));
|
|
1302
|
+
}
|
|
1303
|
+
return n;
|
|
1304
|
+
}
|
|
1305
|
+
function Y(e, t) {
|
|
1306
|
+
let n = new Set(e.map((e) => e.id)), r = t.filter((e) => !n.has(e.node.id));
|
|
1307
|
+
if (r.length === 0) return e;
|
|
1308
|
+
let i = [...e];
|
|
1309
|
+
for (let { index: e, node: t } of [...r].sort((e, t) => e.index - t.index)) i.splice(Math.max(0, Math.min(e, i.length)), 0, t);
|
|
1310
|
+
return i;
|
|
1311
|
+
}
|
|
1312
|
+
function X(e, t, n, r) {
|
|
1313
|
+
let i = /* @__PURE__ */ new Set([t, ...J(t, e)]), a = e.filter((e) => i.has(e.id)), o = e.filter((e) => !i.has(e.id)), s = a.map((e) => e.id === t ? {
|
|
1314
|
+
...e,
|
|
1315
|
+
parentId: n
|
|
1316
|
+
} : e);
|
|
1317
|
+
if (r === null) return [...o, ...s];
|
|
1318
|
+
let c = o.findIndex((e) => e.id === r);
|
|
1319
|
+
return c === -1 ? [...o, ...s] : [
|
|
1320
|
+
...o.slice(0, c),
|
|
1321
|
+
...s,
|
|
1322
|
+
...o.slice(c)
|
|
1323
|
+
];
|
|
1324
|
+
}
|
|
1325
|
+
Ue();
|
|
1326
|
+
var Z = "mudlet_v1", rn = [
|
|
1327
|
+
"createdAt",
|
|
1328
|
+
"mudletLinked",
|
|
1329
|
+
"mudletImported",
|
|
1330
|
+
"lastConnectedAt"
|
|
1331
|
+
];
|
|
1332
|
+
function an(e, t) {
|
|
1333
|
+
let n = {};
|
|
1334
|
+
for (let r of rn) {
|
|
1335
|
+
let i = t[r] ?? e[r];
|
|
1336
|
+
i !== void 0 && Object.assign(n, { [r]: i });
|
|
1337
|
+
}
|
|
1338
|
+
return n;
|
|
1339
|
+
}
|
|
1340
|
+
var Q = n()(r((e) => ({
|
|
1341
|
+
...h,
|
|
1342
|
+
addConnection: (t) => {
|
|
1343
|
+
let n = crypto.randomUUID(), r = t.createdAt ?? (/* @__PURE__ */ new Date()).toISOString();
|
|
1344
|
+
return e((e) => ({ connections: [...e.connections, {
|
|
1345
|
+
...t,
|
|
1346
|
+
name: b(t.name, e.connections),
|
|
1347
|
+
createdAt: r,
|
|
1348
|
+
id: n
|
|
1349
|
+
}] })), n;
|
|
1350
|
+
},
|
|
1351
|
+
updateConnection: (t, n) => e((e) => ({ connections: e.connections.map((r) => r.id === t ? {
|
|
1352
|
+
...n,
|
|
1353
|
+
...an(r, n),
|
|
1354
|
+
name: b(n.name, e.connections, t),
|
|
1355
|
+
id: t
|
|
1356
|
+
} : r) })),
|
|
1357
|
+
reorderConnections: (t) => e((e) => {
|
|
1358
|
+
let n = new Map(e.connections.map((e) => [e.id, e])), r = /* @__PURE__ */ new Set(), i = [];
|
|
1359
|
+
for (let e of t) {
|
|
1360
|
+
let t = n.get(e);
|
|
1361
|
+
t && !r.has(e) && (i.push(t), r.add(e));
|
|
1362
|
+
}
|
|
1363
|
+
for (let t of e.connections) r.has(t.id) || i.push(t);
|
|
1364
|
+
return { connections: i };
|
|
1365
|
+
}),
|
|
1366
|
+
patchConnection: (t, n) => e((e) => ({ connections: e.connections.map((r) => {
|
|
1367
|
+
if (r.id !== t) return r;
|
|
1368
|
+
let i = {
|
|
1369
|
+
...r,
|
|
1370
|
+
...n
|
|
1371
|
+
};
|
|
1372
|
+
n.name !== void 0 && (i.name = b(n.name, e.connections, t));
|
|
1373
|
+
for (let e of Object.keys(n)) n[e] === void 0 && delete i[e];
|
|
1374
|
+
return i;
|
|
1375
|
+
}) })),
|
|
1376
|
+
removeConnection: (t) => e((e) => {
|
|
1377
|
+
Vt(t).catch(() => {}), Gt()?.forgetConnection(t).catch(() => {});
|
|
1378
|
+
let { [t]: n, ...r } = e.connectionWindowHints, { [t]: i, ...a } = e.connectionDockExtents, { [t]: o, ...s } = e.connectionScripts, { [t]: c, ...l } = e.connectionAliases, { [t]: ee, ...te } = e.connectionTriggers, { [t]: ne, ...u } = e.connectionTimers, { [t]: re, ...d } = e.connectionKeybindings, { [t]: ie, ...f } = e.connectionButtons, { [t]: ae, ...oe } = e.connectionScriptEditorBounds, { [t]: se, ...ce } = e.connectionModalBounds, { [t]: le, ...ue } = e.connectionProfile, { [t]: de, ...fe } = e.connectionLayoutSnapshots, { [t]: pe, ...p } = e.connectionVariables;
|
|
1379
|
+
return {
|
|
1380
|
+
connections: e.connections.filter((e) => e.id !== t),
|
|
1381
|
+
connectionProfile: ue,
|
|
1382
|
+
connectionWindowHints: r,
|
|
1383
|
+
connectionDockExtents: a,
|
|
1384
|
+
connectionScripts: s,
|
|
1385
|
+
connectionAliases: l,
|
|
1386
|
+
connectionTriggers: te,
|
|
1387
|
+
connectionTimers: u,
|
|
1388
|
+
connectionKeybindings: d,
|
|
1389
|
+
connectionButtons: f,
|
|
1390
|
+
connectionScriptEditorBounds: oe,
|
|
1391
|
+
connectionModalBounds: ce,
|
|
1392
|
+
connectionPackages: (() => {
|
|
1393
|
+
let { [t]: n, ...r } = e.connectionPackages;
|
|
1394
|
+
return r;
|
|
1395
|
+
})(),
|
|
1396
|
+
connectionLayoutSnapshots: fe,
|
|
1397
|
+
connectionVariables: p
|
|
1398
|
+
};
|
|
1399
|
+
}),
|
|
1400
|
+
patchClient: (t) => e((e) => ({ client: {
|
|
1401
|
+
...e.client,
|
|
1402
|
+
...t
|
|
1403
|
+
} })),
|
|
1404
|
+
patchConnectionProfile: (t, n) => e((e) => {
|
|
1405
|
+
let r = {
|
|
1406
|
+
...e.connectionProfile[t] ?? {},
|
|
1407
|
+
...n
|
|
1408
|
+
};
|
|
1409
|
+
for (let e of Object.keys(n)) n[e] === void 0 && delete r[e];
|
|
1410
|
+
return { connectionProfile: {
|
|
1411
|
+
...e.connectionProfile,
|
|
1412
|
+
[t]: r
|
|
1413
|
+
} };
|
|
1414
|
+
}),
|
|
1415
|
+
saveWindowHint: (t, n, r) => e((e) => ({ connectionWindowHints: {
|
|
1416
|
+
...e.connectionWindowHints,
|
|
1417
|
+
[t]: {
|
|
1418
|
+
...e.connectionWindowHints[t] ?? {},
|
|
1419
|
+
[n]: r
|
|
1420
|
+
}
|
|
1421
|
+
} })),
|
|
1422
|
+
clearWindowHints: (t) => e((e) => {
|
|
1423
|
+
let { [t]: n, ...r } = e.connectionWindowHints;
|
|
1424
|
+
return { connectionWindowHints: r };
|
|
1425
|
+
}),
|
|
1426
|
+
saveDockExtents: (t, n) => e((e) => ({ connectionDockExtents: {
|
|
1427
|
+
...e.connectionDockExtents,
|
|
1428
|
+
[t]: n
|
|
1429
|
+
} })),
|
|
1430
|
+
saveLayoutSnapshot: (t, n) => e((e) => ({ connectionLayoutSnapshots: {
|
|
1431
|
+
...e.connectionLayoutSnapshots,
|
|
1432
|
+
[t]: n
|
|
1433
|
+
} })),
|
|
1434
|
+
addScript: (t, n) => {
|
|
1435
|
+
let r = crypto.randomUUID();
|
|
1436
|
+
return e((e) => ({ connectionScripts: {
|
|
1437
|
+
...e.connectionScripts,
|
|
1438
|
+
[t]: [...e.connectionScripts[t] ?? [], {
|
|
1439
|
+
...n,
|
|
1440
|
+
id: r
|
|
1441
|
+
}]
|
|
1442
|
+
} })), r;
|
|
1443
|
+
},
|
|
1444
|
+
updateScript: (t, n, r) => e((e) => ({ connectionScripts: {
|
|
1445
|
+
...e.connectionScripts,
|
|
1446
|
+
[t]: (e.connectionScripts[t] ?? []).map((e) => e.id === n ? {
|
|
1447
|
+
...e,
|
|
1448
|
+
...r
|
|
1449
|
+
} : e)
|
|
1450
|
+
} })),
|
|
1451
|
+
removeScript: (t, n) => e((e) => {
|
|
1452
|
+
let r = e.connectionScripts[t] ?? [], i = /* @__PURE__ */ new Set([n, ...J(n, r)]);
|
|
1453
|
+
return { connectionScripts: {
|
|
1454
|
+
...e.connectionScripts,
|
|
1455
|
+
[t]: r.filter((e) => !i.has(e.id))
|
|
1456
|
+
} };
|
|
1457
|
+
}),
|
|
1458
|
+
addAlias: (t, n) => {
|
|
1459
|
+
let r = crypto.randomUUID();
|
|
1460
|
+
return e((e) => ({ connectionAliases: {
|
|
1461
|
+
...e.connectionAliases,
|
|
1462
|
+
[t]: [...e.connectionAliases[t] ?? [], {
|
|
1463
|
+
...n,
|
|
1464
|
+
id: r
|
|
1465
|
+
}]
|
|
1466
|
+
} })), r;
|
|
1467
|
+
},
|
|
1468
|
+
updateAlias: (t, n, r) => e((e) => ({ connectionAliases: {
|
|
1469
|
+
...e.connectionAliases,
|
|
1470
|
+
[t]: (e.connectionAliases[t] ?? []).map((e) => e.id === n ? {
|
|
1471
|
+
...e,
|
|
1472
|
+
...r
|
|
1473
|
+
} : e)
|
|
1474
|
+
} })),
|
|
1475
|
+
updateAliases: (t, n) => e((e) => {
|
|
1476
|
+
if (n.length === 0) return {};
|
|
1477
|
+
let r = new Map(n.map((e) => [e.id, e.patch]));
|
|
1478
|
+
return { connectionAliases: {
|
|
1479
|
+
...e.connectionAliases,
|
|
1480
|
+
[t]: (e.connectionAliases[t] ?? []).map((e) => r.has(e.id) ? {
|
|
1481
|
+
...e,
|
|
1482
|
+
...r.get(e.id)
|
|
1483
|
+
} : e)
|
|
1484
|
+
} };
|
|
1485
|
+
}),
|
|
1486
|
+
removeAlias: (t, n) => e((e) => {
|
|
1487
|
+
let r = e.connectionAliases[t] ?? [], i = /* @__PURE__ */ new Set([n, ...J(n, r)]);
|
|
1488
|
+
return { connectionAliases: {
|
|
1489
|
+
...e.connectionAliases,
|
|
1490
|
+
[t]: r.filter((e) => !i.has(e.id))
|
|
1491
|
+
} };
|
|
1492
|
+
}),
|
|
1493
|
+
removeAliases: (t, n) => e((e) => {
|
|
1494
|
+
if (n.length === 0) return {};
|
|
1495
|
+
let r = e.connectionAliases[t] ?? [], i = /* @__PURE__ */ new Set();
|
|
1496
|
+
for (let e of n) {
|
|
1497
|
+
i.add(e);
|
|
1498
|
+
for (let t of J(e, r)) i.add(t);
|
|
1499
|
+
}
|
|
1500
|
+
return { connectionAliases: {
|
|
1501
|
+
...e.connectionAliases,
|
|
1502
|
+
[t]: r.filter((e) => !i.has(e.id))
|
|
1503
|
+
} };
|
|
1504
|
+
}),
|
|
1505
|
+
addTrigger: (t, n) => {
|
|
1506
|
+
let r = crypto.randomUUID();
|
|
1507
|
+
return e((e) => ({ connectionTriggers: {
|
|
1508
|
+
...e.connectionTriggers,
|
|
1509
|
+
[t]: [...e.connectionTriggers[t] ?? [], {
|
|
1510
|
+
...n,
|
|
1511
|
+
id: r
|
|
1512
|
+
}]
|
|
1513
|
+
} })), r;
|
|
1514
|
+
},
|
|
1515
|
+
updateTrigger: (t, n, r) => e((e) => ({ connectionTriggers: {
|
|
1516
|
+
...e.connectionTriggers,
|
|
1517
|
+
[t]: (e.connectionTriggers[t] ?? []).map((e) => e.id === n ? {
|
|
1518
|
+
...e,
|
|
1519
|
+
...r
|
|
1520
|
+
} : e)
|
|
1521
|
+
} })),
|
|
1522
|
+
updateTriggers: (t, n) => e((e) => {
|
|
1523
|
+
if (n.length === 0) return {};
|
|
1524
|
+
let r = new Map(n.map((e) => [e.id, e.patch]));
|
|
1525
|
+
return { connectionTriggers: {
|
|
1526
|
+
...e.connectionTriggers,
|
|
1527
|
+
[t]: (e.connectionTriggers[t] ?? []).map((e) => r.has(e.id) ? {
|
|
1528
|
+
...e,
|
|
1529
|
+
...r.get(e.id)
|
|
1530
|
+
} : e)
|
|
1531
|
+
} };
|
|
1532
|
+
}),
|
|
1533
|
+
removeTrigger: (t, n) => e((e) => {
|
|
1534
|
+
let r = e.connectionTriggers[t] ?? [], i = /* @__PURE__ */ new Set([n, ...J(n, r)]);
|
|
1535
|
+
return { connectionTriggers: {
|
|
1536
|
+
...e.connectionTriggers,
|
|
1537
|
+
[t]: r.filter((e) => !i.has(e.id))
|
|
1538
|
+
} };
|
|
1539
|
+
}),
|
|
1540
|
+
removeTriggers: (t, n) => e((e) => {
|
|
1541
|
+
if (n.length === 0) return {};
|
|
1542
|
+
let r = e.connectionTriggers[t] ?? [], i = /* @__PURE__ */ new Set();
|
|
1543
|
+
for (let e of n) {
|
|
1544
|
+
i.add(e);
|
|
1545
|
+
for (let t of J(e, r)) i.add(t);
|
|
1546
|
+
}
|
|
1547
|
+
return { connectionTriggers: {
|
|
1548
|
+
...e.connectionTriggers,
|
|
1549
|
+
[t]: r.filter((e) => !i.has(e.id))
|
|
1550
|
+
} };
|
|
1551
|
+
}),
|
|
1552
|
+
addTimer: (t, n) => {
|
|
1553
|
+
let r = crypto.randomUUID();
|
|
1554
|
+
return e((e) => ({ connectionTimers: {
|
|
1555
|
+
...e.connectionTimers,
|
|
1556
|
+
[t]: [...e.connectionTimers[t] ?? [], {
|
|
1557
|
+
...n,
|
|
1558
|
+
id: r
|
|
1559
|
+
}]
|
|
1560
|
+
} })), r;
|
|
1561
|
+
},
|
|
1562
|
+
updateTimer: (t, n, r) => e((e) => ({ connectionTimers: {
|
|
1563
|
+
...e.connectionTimers,
|
|
1564
|
+
[t]: (e.connectionTimers[t] ?? []).map((e) => e.id === n ? {
|
|
1565
|
+
...e,
|
|
1566
|
+
...r
|
|
1567
|
+
} : e)
|
|
1568
|
+
} })),
|
|
1569
|
+
updateTimers: (t, n) => e((e) => {
|
|
1570
|
+
if (n.length === 0) return {};
|
|
1571
|
+
let r = new Map(n.map((e) => [e.id, e.patch]));
|
|
1572
|
+
return { connectionTimers: {
|
|
1573
|
+
...e.connectionTimers,
|
|
1574
|
+
[t]: (e.connectionTimers[t] ?? []).map((e) => r.has(e.id) ? {
|
|
1575
|
+
...e,
|
|
1576
|
+
...r.get(e.id)
|
|
1577
|
+
} : e)
|
|
1578
|
+
} };
|
|
1579
|
+
}),
|
|
1580
|
+
removeTimer: (t, n) => e((e) => {
|
|
1581
|
+
let r = e.connectionTimers[t] ?? [], i = /* @__PURE__ */ new Set([n, ...J(n, r)]);
|
|
1582
|
+
return { connectionTimers: {
|
|
1583
|
+
...e.connectionTimers,
|
|
1584
|
+
[t]: r.filter((e) => !i.has(e.id))
|
|
1585
|
+
} };
|
|
1586
|
+
}),
|
|
1587
|
+
removeTimers: (t, n) => e((e) => {
|
|
1588
|
+
if (n.length === 0) return {};
|
|
1589
|
+
let r = e.connectionTimers[t] ?? [], i = /* @__PURE__ */ new Set();
|
|
1590
|
+
for (let e of n) {
|
|
1591
|
+
i.add(e);
|
|
1592
|
+
for (let t of J(e, r)) i.add(t);
|
|
1593
|
+
}
|
|
1594
|
+
return { connectionTimers: {
|
|
1595
|
+
...e.connectionTimers,
|
|
1596
|
+
[t]: r.filter((e) => !i.has(e.id))
|
|
1597
|
+
} };
|
|
1598
|
+
}),
|
|
1599
|
+
addKeybinding: (t, n) => {
|
|
1600
|
+
let r = crypto.randomUUID();
|
|
1601
|
+
return e((e) => ({ connectionKeybindings: {
|
|
1602
|
+
...e.connectionKeybindings,
|
|
1603
|
+
[t]: [...e.connectionKeybindings[t] ?? [], {
|
|
1604
|
+
...n,
|
|
1605
|
+
id: r
|
|
1606
|
+
}]
|
|
1607
|
+
} })), r;
|
|
1608
|
+
},
|
|
1609
|
+
updateKeybinding: (t, n, r) => e((e) => ({ connectionKeybindings: {
|
|
1610
|
+
...e.connectionKeybindings,
|
|
1611
|
+
[t]: (e.connectionKeybindings[t] ?? []).map((e) => e.id === n ? {
|
|
1612
|
+
...e,
|
|
1613
|
+
...r
|
|
1614
|
+
} : e)
|
|
1615
|
+
} })),
|
|
1616
|
+
removeKeybinding: (t, n) => e((e) => {
|
|
1617
|
+
let r = e.connectionKeybindings[t] ?? [], i = /* @__PURE__ */ new Set([n, ...J(n, r)]);
|
|
1618
|
+
return { connectionKeybindings: {
|
|
1619
|
+
...e.connectionKeybindings,
|
|
1620
|
+
[t]: r.filter((e) => !i.has(e.id))
|
|
1621
|
+
} };
|
|
1622
|
+
}),
|
|
1623
|
+
removeKeybindings: (t, n) => e((e) => {
|
|
1624
|
+
if (n.length === 0) return {};
|
|
1625
|
+
let r = e.connectionKeybindings[t] ?? [], i = /* @__PURE__ */ new Set();
|
|
1626
|
+
for (let e of n) {
|
|
1627
|
+
i.add(e);
|
|
1628
|
+
for (let t of J(e, r)) i.add(t);
|
|
1629
|
+
}
|
|
1630
|
+
return { connectionKeybindings: {
|
|
1631
|
+
...e.connectionKeybindings,
|
|
1632
|
+
[t]: r.filter((e) => !i.has(e.id))
|
|
1633
|
+
} };
|
|
1634
|
+
}),
|
|
1635
|
+
addButton: (t, n) => {
|
|
1636
|
+
let r = crypto.randomUUID();
|
|
1637
|
+
return e((e) => ({ connectionButtons: {
|
|
1638
|
+
...e.connectionButtons,
|
|
1639
|
+
[t]: [...e.connectionButtons[t] ?? [], {
|
|
1640
|
+
...n,
|
|
1641
|
+
id: r
|
|
1642
|
+
}]
|
|
1643
|
+
} })), r;
|
|
1644
|
+
},
|
|
1645
|
+
updateButton: (t, n, r) => e((e) => ({ connectionButtons: {
|
|
1646
|
+
...e.connectionButtons,
|
|
1647
|
+
[t]: (e.connectionButtons[t] ?? []).map((e) => e.id === n ? {
|
|
1648
|
+
...e,
|
|
1649
|
+
...r
|
|
1650
|
+
} : e)
|
|
1651
|
+
} })),
|
|
1652
|
+
removeButton: (t, n) => e((e) => {
|
|
1653
|
+
let r = e.connectionButtons[t] ?? [], i = /* @__PURE__ */ new Set([n, ...J(n, r)]);
|
|
1654
|
+
return { connectionButtons: {
|
|
1655
|
+
...e.connectionButtons,
|
|
1656
|
+
[t]: r.filter((e) => !i.has(e.id))
|
|
1657
|
+
} };
|
|
1658
|
+
}),
|
|
1659
|
+
restoreScripts: (t, n) => e((e) => ({ connectionScripts: {
|
|
1660
|
+
...e.connectionScripts,
|
|
1661
|
+
[t]: Y(e.connectionScripts[t] ?? [], n)
|
|
1662
|
+
} })),
|
|
1663
|
+
restoreAliases: (t, n) => e((e) => ({ connectionAliases: {
|
|
1664
|
+
...e.connectionAliases,
|
|
1665
|
+
[t]: Y(e.connectionAliases[t] ?? [], n)
|
|
1666
|
+
} })),
|
|
1667
|
+
restoreTriggers: (t, n) => e((e) => ({ connectionTriggers: {
|
|
1668
|
+
...e.connectionTriggers,
|
|
1669
|
+
[t]: Y(e.connectionTriggers[t] ?? [], n)
|
|
1670
|
+
} })),
|
|
1671
|
+
restoreTimers: (t, n) => e((e) => ({ connectionTimers: {
|
|
1672
|
+
...e.connectionTimers,
|
|
1673
|
+
[t]: Y(e.connectionTimers[t] ?? [], n)
|
|
1674
|
+
} })),
|
|
1675
|
+
restoreKeybindings: (t, n) => e((e) => ({ connectionKeybindings: {
|
|
1676
|
+
...e.connectionKeybindings,
|
|
1677
|
+
[t]: Y(e.connectionKeybindings[t] ?? [], n)
|
|
1678
|
+
} })),
|
|
1679
|
+
restoreButtons: (t, n) => e((e) => ({ connectionButtons: {
|
|
1680
|
+
...e.connectionButtons,
|
|
1681
|
+
[t]: Y(e.connectionButtons[t] ?? [], n)
|
|
1682
|
+
} })),
|
|
1683
|
+
moveScript: (t, n, r, i) => e((e) => ({ connectionScripts: {
|
|
1684
|
+
...e.connectionScripts,
|
|
1685
|
+
[t]: X(e.connectionScripts[t] ?? [], n, r, i)
|
|
1686
|
+
} })),
|
|
1687
|
+
moveAlias: (t, n, r, i) => e((e) => ({ connectionAliases: {
|
|
1688
|
+
...e.connectionAliases,
|
|
1689
|
+
[t]: X(e.connectionAliases[t] ?? [], n, r, i)
|
|
1690
|
+
} })),
|
|
1691
|
+
moveTrigger: (t, n, r, i) => e((e) => ({ connectionTriggers: {
|
|
1692
|
+
...e.connectionTriggers,
|
|
1693
|
+
[t]: X(e.connectionTriggers[t] ?? [], n, r, i)
|
|
1694
|
+
} })),
|
|
1695
|
+
moveTimer: (t, n, r, i) => e((e) => ({ connectionTimers: {
|
|
1696
|
+
...e.connectionTimers,
|
|
1697
|
+
[t]: X(e.connectionTimers[t] ?? [], n, r, i)
|
|
1698
|
+
} })),
|
|
1699
|
+
moveKeybinding: (t, n, r, i) => e((e) => ({ connectionKeybindings: {
|
|
1700
|
+
...e.connectionKeybindings,
|
|
1701
|
+
[t]: X(e.connectionKeybindings[t] ?? [], n, r, i)
|
|
1702
|
+
} })),
|
|
1703
|
+
moveButton: (t, n, r, i) => e((e) => ({ connectionButtons: {
|
|
1704
|
+
...e.connectionButtons,
|
|
1705
|
+
[t]: X(e.connectionButtons[t] ?? [], n, r, i)
|
|
1706
|
+
} })),
|
|
1707
|
+
saveScriptEditorBounds: (t, n) => e((e) => ({ connectionScriptEditorBounds: {
|
|
1708
|
+
...e.connectionScriptEditorBounds,
|
|
1709
|
+
[t]: n
|
|
1710
|
+
} })),
|
|
1711
|
+
saveModalBounds: (t, n, r) => e((e) => ({ connectionModalBounds: {
|
|
1712
|
+
...e.connectionModalBounds,
|
|
1713
|
+
[t]: {
|
|
1714
|
+
...e.connectionModalBounds[t] ?? {},
|
|
1715
|
+
[n]: r
|
|
1716
|
+
}
|
|
1717
|
+
} })),
|
|
1718
|
+
installPackage: (t, n, r) => e((e) => {
|
|
1719
|
+
let i = (e.connectionPackages[t] ?? []).filter((e) => e.name !== n.name), a = (e) => e.filter((e) => e.packageName !== n.name), o = e.connectionProfile[t] ?? {}, s = o.uninstalledPackages ?? [];
|
|
1720
|
+
return {
|
|
1721
|
+
connectionProfile: s.includes(n.name) ? {
|
|
1722
|
+
...e.connectionProfile,
|
|
1723
|
+
[t]: {
|
|
1724
|
+
...o,
|
|
1725
|
+
uninstalledPackages: s.filter((e) => e !== n.name)
|
|
1726
|
+
}
|
|
1727
|
+
} : e.connectionProfile,
|
|
1728
|
+
connectionScripts: {
|
|
1729
|
+
...e.connectionScripts,
|
|
1730
|
+
[t]: [...a(e.connectionScripts[t] ?? []), ...r.scripts]
|
|
1731
|
+
},
|
|
1732
|
+
connectionAliases: {
|
|
1733
|
+
...e.connectionAliases,
|
|
1734
|
+
[t]: [...a(e.connectionAliases[t] ?? []), ...r.aliases]
|
|
1735
|
+
},
|
|
1736
|
+
connectionTriggers: {
|
|
1737
|
+
...e.connectionTriggers,
|
|
1738
|
+
[t]: [...a(e.connectionTriggers[t] ?? []), ...r.triggers]
|
|
1739
|
+
},
|
|
1740
|
+
connectionTimers: {
|
|
1741
|
+
...e.connectionTimers,
|
|
1742
|
+
[t]: [...a(e.connectionTimers[t] ?? []), ...r.timers]
|
|
1743
|
+
},
|
|
1744
|
+
connectionKeybindings: {
|
|
1745
|
+
...e.connectionKeybindings,
|
|
1746
|
+
[t]: [...a(e.connectionKeybindings[t] ?? []), ...r.keys]
|
|
1747
|
+
},
|
|
1748
|
+
connectionButtons: {
|
|
1749
|
+
...e.connectionButtons,
|
|
1750
|
+
[t]: [...a(e.connectionButtons[t] ?? []), ...r.buttons]
|
|
1751
|
+
},
|
|
1752
|
+
connectionPackages: {
|
|
1753
|
+
...e.connectionPackages,
|
|
1754
|
+
[t]: [...i, n]
|
|
1755
|
+
}
|
|
1756
|
+
};
|
|
1757
|
+
}),
|
|
1758
|
+
updatePackageManifest: (t, n, r) => e((e) => ({ connectionPackages: {
|
|
1759
|
+
...e.connectionPackages,
|
|
1760
|
+
[t]: (e.connectionPackages[t] ?? []).map((e) => e.name === n ? {
|
|
1761
|
+
...e,
|
|
1762
|
+
...r,
|
|
1763
|
+
name: e.name
|
|
1764
|
+
} : e)
|
|
1765
|
+
} })),
|
|
1766
|
+
uninstallPackage: (t, n) => e((e) => {
|
|
1767
|
+
let r = (e) => e.filter((e) => e.packageName !== n), i = e.connectionProfile[t] ?? {}, a = i.uninstalledPackages ?? [];
|
|
1768
|
+
return {
|
|
1769
|
+
connectionProfile: a.includes(n) ? e.connectionProfile : {
|
|
1770
|
+
...e.connectionProfile,
|
|
1771
|
+
[t]: {
|
|
1772
|
+
...i,
|
|
1773
|
+
uninstalledPackages: [...a, n]
|
|
1774
|
+
}
|
|
1775
|
+
},
|
|
1776
|
+
connectionScripts: {
|
|
1777
|
+
...e.connectionScripts,
|
|
1778
|
+
[t]: r(e.connectionScripts[t] ?? [])
|
|
1779
|
+
},
|
|
1780
|
+
connectionAliases: {
|
|
1781
|
+
...e.connectionAliases,
|
|
1782
|
+
[t]: r(e.connectionAliases[t] ?? [])
|
|
1783
|
+
},
|
|
1784
|
+
connectionTriggers: {
|
|
1785
|
+
...e.connectionTriggers,
|
|
1786
|
+
[t]: r(e.connectionTriggers[t] ?? [])
|
|
1787
|
+
},
|
|
1788
|
+
connectionTimers: {
|
|
1789
|
+
...e.connectionTimers,
|
|
1790
|
+
[t]: r(e.connectionTimers[t] ?? [])
|
|
1791
|
+
},
|
|
1792
|
+
connectionKeybindings: {
|
|
1793
|
+
...e.connectionKeybindings,
|
|
1794
|
+
[t]: r(e.connectionKeybindings[t] ?? [])
|
|
1795
|
+
},
|
|
1796
|
+
connectionButtons: {
|
|
1797
|
+
...e.connectionButtons,
|
|
1798
|
+
[t]: r(e.connectionButtons[t] ?? [])
|
|
1799
|
+
},
|
|
1800
|
+
connectionPackages: {
|
|
1801
|
+
...e.connectionPackages,
|
|
1802
|
+
[t]: (e.connectionPackages[t] ?? []).filter((e) => e.name !== n)
|
|
1803
|
+
}
|
|
1804
|
+
};
|
|
1805
|
+
}),
|
|
1806
|
+
setVariableSaveList: (t, n) => e((e) => ({ connectionVariables: {
|
|
1807
|
+
...e.connectionVariables,
|
|
1808
|
+
[t]: {
|
|
1809
|
+
...e.connectionVariables[t],
|
|
1810
|
+
saveList: n,
|
|
1811
|
+
values: e.connectionVariables[t]?.values ?? []
|
|
1812
|
+
}
|
|
1813
|
+
} })),
|
|
1814
|
+
setVariableHidden: (t, n) => e((e) => ({ connectionVariables: {
|
|
1815
|
+
...e.connectionVariables,
|
|
1816
|
+
[t]: {
|
|
1817
|
+
saveList: e.connectionVariables[t]?.saveList ?? [],
|
|
1818
|
+
values: e.connectionVariables[t]?.values ?? [],
|
|
1819
|
+
hidden: n
|
|
1820
|
+
}
|
|
1821
|
+
} })),
|
|
1822
|
+
setVariableValues: (t, n) => e((e) => ({ connectionVariables: {
|
|
1823
|
+
...e.connectionVariables,
|
|
1824
|
+
[t]: {
|
|
1825
|
+
...e.connectionVariables[t],
|
|
1826
|
+
saveList: e.connectionVariables[t]?.saveList ?? [],
|
|
1827
|
+
values: n
|
|
1828
|
+
}
|
|
1829
|
+
} })),
|
|
1830
|
+
hydrateConnectionData: (t, n) => e((e) => {
|
|
1831
|
+
let r = {
|
|
1832
|
+
connectionScripts: {
|
|
1833
|
+
...e.connectionScripts,
|
|
1834
|
+
[t]: n.scripts ?? []
|
|
1835
|
+
},
|
|
1836
|
+
connectionAliases: {
|
|
1837
|
+
...e.connectionAliases,
|
|
1838
|
+
[t]: n.aliases ?? []
|
|
1839
|
+
},
|
|
1840
|
+
connectionTriggers: {
|
|
1841
|
+
...e.connectionTriggers,
|
|
1842
|
+
[t]: n.triggers ?? []
|
|
1843
|
+
},
|
|
1844
|
+
connectionTimers: {
|
|
1845
|
+
...e.connectionTimers,
|
|
1846
|
+
[t]: n.timers ?? []
|
|
1847
|
+
},
|
|
1848
|
+
connectionKeybindings: {
|
|
1849
|
+
...e.connectionKeybindings,
|
|
1850
|
+
[t]: n.keybindings ?? []
|
|
1851
|
+
},
|
|
1852
|
+
connectionButtons: {
|
|
1853
|
+
...e.connectionButtons,
|
|
1854
|
+
[t]: n.buttons ?? []
|
|
1855
|
+
},
|
|
1856
|
+
connectionPackages: {
|
|
1857
|
+
...e.connectionPackages,
|
|
1858
|
+
[t]: n.packages ?? []
|
|
1859
|
+
},
|
|
1860
|
+
connectionVariables: {
|
|
1861
|
+
...e.connectionVariables,
|
|
1862
|
+
[t]: n.variables ?? {
|
|
1863
|
+
saveList: [],
|
|
1864
|
+
values: []
|
|
1865
|
+
}
|
|
1866
|
+
}
|
|
1867
|
+
};
|
|
1868
|
+
return n.profile !== void 0 && (r.connectionProfile = {
|
|
1869
|
+
...e.connectionProfile,
|
|
1870
|
+
[t]: n.profile
|
|
1871
|
+
}), n.windowHints !== void 0 && (r.connectionWindowHints = {
|
|
1872
|
+
...e.connectionWindowHints,
|
|
1873
|
+
[t]: n.windowHints
|
|
1874
|
+
}), n.dockExtents !== void 0 && (r.connectionDockExtents = {
|
|
1875
|
+
...e.connectionDockExtents,
|
|
1876
|
+
[t]: n.dockExtents
|
|
1877
|
+
}), n.scriptEditorBounds !== void 0 && (r.connectionScriptEditorBounds = {
|
|
1878
|
+
...e.connectionScriptEditorBounds,
|
|
1879
|
+
[t]: n.scriptEditorBounds
|
|
1880
|
+
}), n.modalBounds !== void 0 && (r.connectionModalBounds = {
|
|
1881
|
+
...e.connectionModalBounds,
|
|
1882
|
+
[t]: n.modalBounds
|
|
1883
|
+
}), n.layoutSnapshot !== void 0 && (r.connectionLayoutSnapshots = {
|
|
1884
|
+
...e.connectionLayoutSnapshots,
|
|
1885
|
+
[t]: n.layoutSnapshot
|
|
1886
|
+
}), r;
|
|
1887
|
+
})
|
|
1888
|
+
}), {
|
|
1889
|
+
name: Z,
|
|
1890
|
+
version: 21,
|
|
1891
|
+
storage: ze(5e3),
|
|
1892
|
+
partialize: ({ connections: e, client: t }) => ({
|
|
1893
|
+
connections: e,
|
|
1894
|
+
client: t
|
|
1895
|
+
}),
|
|
1896
|
+
migrate: (e, t) => {
|
|
1897
|
+
let n = e, r = (n.connections ?? []).map((e) => {
|
|
1898
|
+
if (t < 2 && !("url" in e)) {
|
|
1899
|
+
let t = e;
|
|
1900
|
+
return {
|
|
1901
|
+
id: t.id,
|
|
1902
|
+
name: t.name,
|
|
1903
|
+
url: `${t.ssl ? "wss" : "ws"}://${t.host}:${t.port}`
|
|
1904
|
+
};
|
|
1905
|
+
}
|
|
1906
|
+
return e;
|
|
1907
|
+
}), i = n.ui ?? {}, a = n.client ?? {}, o = {
|
|
1908
|
+
theme: a.theme ?? i.theme ?? h.client.theme,
|
|
1909
|
+
...a.userProxyUrl === void 0 ? {} : { userProxyUrl: a.userProxyUrl },
|
|
1910
|
+
...a.notificationsEnabled === void 0 ? {} : { notificationsEnabled: a.notificationsEnabled }
|
|
1911
|
+
}, s = n.connectionProfile, c;
|
|
1912
|
+
if (s) c = s;
|
|
1913
|
+
else {
|
|
1914
|
+
let e = {};
|
|
1915
|
+
for (let t of [
|
|
1916
|
+
"showTimestamps",
|
|
1917
|
+
"fontSize",
|
|
1918
|
+
"outputBackground",
|
|
1919
|
+
"outputFont",
|
|
1920
|
+
"outputWrapAt",
|
|
1921
|
+
"outputBackgroundColor",
|
|
1922
|
+
"outputBorders",
|
|
1923
|
+
"outputBorderColor",
|
|
1924
|
+
"promptTimeoutMs"
|
|
1925
|
+
]) i[t] !== void 0 && (e[t] = i[t]);
|
|
1926
|
+
c = Object.fromEntries(r.map((t) => [t.id, { ...e }]));
|
|
1927
|
+
}
|
|
1928
|
+
if (t < 19) for (let e of Object.values(c)) {
|
|
1929
|
+
let t = e?.mapViewState;
|
|
1930
|
+
t && (e.mapViewStates = {
|
|
1931
|
+
...e.mapViewStates ?? {},
|
|
1932
|
+
[t.areaId]: { level: t.level }
|
|
1933
|
+
}, e.mapLastAreaId = t.areaId, delete e.mapViewState);
|
|
1934
|
+
}
|
|
1935
|
+
if (t < 21) {
|
|
1936
|
+
for (let e of r) {
|
|
1937
|
+
let t = c[e.id];
|
|
1938
|
+
t && (t.icon !== void 0 && (e.icon = t.icon, delete t.icon), t.charLoginAccount !== void 0 && (e.charLoginAccount = t.charLoginAccount, delete t.charLoginAccount), t.charLoginPassword !== void 0 && (e.charLoginPassword = t.charLoginPassword, delete t.charLoginPassword));
|
|
1939
|
+
}
|
|
1940
|
+
if (a.allowMudPackageInstall === !1) for (let e of r) c[e.id] = {
|
|
1941
|
+
...c[e.id] ?? {},
|
|
1942
|
+
allowMudPackageInstall: !1
|
|
1943
|
+
};
|
|
1944
|
+
try {
|
|
1945
|
+
let e = {};
|
|
1946
|
+
for (let t of r) e[t.id] = {
|
|
1947
|
+
profile: c[t.id],
|
|
1948
|
+
windowHints: n.connectionWindowHints?.[t.id],
|
|
1949
|
+
dockExtents: n.connectionDockExtents?.[t.id],
|
|
1950
|
+
scriptEditorBounds: n.connectionScriptEditorBounds?.[t.id],
|
|
1951
|
+
modalBounds: n.connectionModalBounds?.[t.id],
|
|
1952
|
+
layoutSnapshot: n.connectionLayoutSnapshots?.[t.id]
|
|
1953
|
+
};
|
|
1954
|
+
localStorage.setItem(K, JSON.stringify(e));
|
|
1955
|
+
} catch {}
|
|
1956
|
+
}
|
|
1957
|
+
return {
|
|
1958
|
+
...h,
|
|
1959
|
+
connections: r,
|
|
1960
|
+
client: o,
|
|
1961
|
+
connectionProfile: c,
|
|
1962
|
+
connectionWindowHints: n.connectionWindowHints ?? {},
|
|
1963
|
+
connectionDockExtents: n.connectionDockExtents ?? {},
|
|
1964
|
+
...t >= 10 ? {
|
|
1965
|
+
connectionScriptEditorBounds: n.connectionScriptEditorBounds ?? {},
|
|
1966
|
+
connectionModalBounds: n.connectionModalBounds ?? {}
|
|
1967
|
+
} : {}
|
|
1968
|
+
};
|
|
1969
|
+
}
|
|
1970
|
+
})), on = null;
|
|
1971
|
+
function sn(e) {
|
|
1972
|
+
let t = null;
|
|
1973
|
+
try {
|
|
1974
|
+
t = JSON.parse(e);
|
|
1975
|
+
} catch {
|
|
1976
|
+
return;
|
|
1977
|
+
}
|
|
1978
|
+
if (!t || typeof t != "object" || !t.state || t.version !== 21) return;
|
|
1979
|
+
let n = t.state, r = {};
|
|
1980
|
+
"connections" in n && (r.connections = n.connections), "client" in n && (r.client = n.client), Object.keys(r).length > 0 && Q.setState(r);
|
|
1981
|
+
}
|
|
1982
|
+
var cn = !1;
|
|
1983
|
+
function ln() {
|
|
1984
|
+
cn || typeof window > "u" || (cn = !0, window.addEventListener("storage", (e) => {
|
|
1985
|
+
e.key !== "mudlet_v1" || e.newValue == null || e.newValue !== on && (on = e.newValue, sn(e.newValue));
|
|
1986
|
+
}));
|
|
1987
|
+
}
|
|
1988
|
+
ln();
|
|
1989
|
+
var un = "dark", dn = "light", fn = "(prefers-color-scheme: dark)";
|
|
1990
|
+
function pn() {
|
|
1991
|
+
if (typeof window > "u" || !window.matchMedia) return null;
|
|
1992
|
+
try {
|
|
1993
|
+
return window.matchMedia(fn);
|
|
1994
|
+
} catch {
|
|
1995
|
+
return null;
|
|
1996
|
+
}
|
|
1997
|
+
}
|
|
1998
|
+
function mn() {
|
|
1999
|
+
return pn()?.matches ?? !0;
|
|
2000
|
+
}
|
|
2001
|
+
function hn(e) {
|
|
2002
|
+
return e === "system" ? mn() ? un : dn : e ?? un;
|
|
2003
|
+
}
|
|
2004
|
+
function gn(e) {
|
|
2005
|
+
let t = pn();
|
|
2006
|
+
if (!t) return () => {};
|
|
2007
|
+
let n = () => e();
|
|
2008
|
+
return t.addEventListener ? (t.addEventListener("change", n), () => t.removeEventListener("change", n)) : (t.addListener(n), () => t.removeListener(n));
|
|
2009
|
+
}
|
|
2010
|
+
//#endregion
|
|
2011
|
+
//#region src/storage/hooks.ts
|
|
2012
|
+
var _n = e(null);
|
|
2013
|
+
function $() {
|
|
2014
|
+
return t(_n);
|
|
2015
|
+
}
|
|
2016
|
+
function vn(e) {
|
|
2017
|
+
let t = $();
|
|
2018
|
+
return Q((n) => Ee(n, t, e));
|
|
2019
|
+
}
|
|
2020
|
+
function yn(e) {
|
|
2021
|
+
return Q((t) => t.client[e]);
|
|
2022
|
+
}
|
|
2023
|
+
function bn() {
|
|
2024
|
+
let e = $();
|
|
2025
|
+
return hn(Q((t) => (e ? t.connectionProfile[e]?.theme : void 0) ?? t.client.theme));
|
|
2026
|
+
}
|
|
2027
|
+
function xn() {
|
|
2028
|
+
let e = vn("editor");
|
|
2029
|
+
return {
|
|
2030
|
+
autocomplete: e?.autocomplete ?? !0,
|
|
2031
|
+
showWhitespace: e?.showWhitespace ?? !1,
|
|
2032
|
+
showLineParagraphs: e?.showLineParagraphs ?? !1,
|
|
2033
|
+
showControlChars: e?.showControlChars ?? !1,
|
|
2034
|
+
showItemIds: e?.showItemIds ?? !1,
|
|
2035
|
+
theme: e?.theme ?? "app"
|
|
2036
|
+
};
|
|
2037
|
+
}
|
|
2038
|
+
//#endregion
|
|
2039
|
+
export { le as $, Tt as A, Se as At, ht as B, ie as Bt, K as C, be as Ct, Mt as D, Me as Dt, H as E, Ie as Et, xt as F, u as Ft, it as G, mt as H, vt as I, l as It, ct as J, lt as K, bt as L, te as Lt, At as M, a as Mt, Dt as N, d as Nt, B as O, Re as Ot, St as P, re as Pt, f as Q, Ct as R, ee as Rt, Jt as S, ye as St, Lt as T, b as Tt, ot as U, gt as V, c as Vt, ft as W, at as X, st as Y, k as Z, $t as _, _e as _t, bn as a, oe as at, Yt as b, Ee as bt, hn as c, he as ct, Gt as d, ke as dt, ue as et, Kt as f, g as ft, en as g, m as gt, tn as h, Ce as ht, xn as i, de as it, Et as j, o as jt, Ot as k, Le as kt, Z as l, je as lt, qt as m, ge as mt, yn as n, p as nt, vn as o, me as ot, nn as p, we as pt, ut as q, $ as r, ae as rt, gn as s, Te as st, _n as t, se as tt, Q as u, _ as ut, Qt as v, Ae as vt, Rt as w, xe as wt, Zt as x, ce as xt, Xt as y, pe as yt, yt as z, ne as zt };
|