{"version":3,"file":"js/addon-settings~addons~editor~fullscreen~player.js","sources":["webpack://GUI/./src/addons/addons/2d-color-picker/_manifest_entry.js","webpack://GUI/./src/addons/addons/better-img-uploads/_manifest_entry.js","webpack://GUI/./src/addons/addons/bitmap-copy/_manifest_entry.js","webpack://GUI/./src/addons/addons/block-cherry-picking/_manifest_entry.js","webpack://GUI/./src/addons/addons/block-count/_manifest_entry.js","webpack://GUI/./src/addons/addons/block-duplicate/_manifest_entry.js","webpack://GUI/./src/addons/addons/block-palette-icons/_manifest_entry.js","webpack://GUI/./src/addons/addons/block-switching/_manifest_entry.js","webpack://GUI/./src/addons/addons/blocks2image/_manifest_entry.js","webpack://GUI/./src/addons/addons/cat-blocks/_manifest_entry.js","webpack://GUI/./src/addons/addons/clones/_manifest_entry.js","webpack://GUI/./src/addons/addons/color-picker/_manifest_entry.js","webpack://GUI/./src/addons/addons/columns/_manifest_entry.js","webpack://GUI/./src/addons/addons/custom-block-shape/_manifest_entry.js","webpack://GUI/./src/addons/addons/custom-block-text/_manifest_entry.js","webpack://GUI/./src/addons/addons/custom-zoom/_manifest_entry.js","webpack://GUI/./src/addons/addons/data-category-tweaks-v2/_manifest_entry.js","webpack://GUI/./src/addons/addons/debugger/_manifest_entry.js","webpack://GUI/./src/addons/addons/default-costume-editor-color/_manifest_entry.js","webpack://GUI/./src/addons/addons/disable-paste-offset/_manifest_entry.js","webpack://GUI/./src/addons/addons/disable-stage-drag-select/_manifest_entry.js","webpack://GUI/./src/addons/addons/drag-drop/_manifest_entry.js","webpack://GUI/./src/addons/addons/editor-buttons-reverse-order/_manifest_entry.js","webpack://GUI/./src/addons/addons/editor-colored-context-menus/_manifest_entry.js","webpack://GUI/./src/addons/addons/editor-comment-previews/_manifest_entry.js","webpack://GUI/./src/addons/addons/editor-devtools/_manifest_entry.js","webpack://GUI/./src/addons/addons/editor-extra-keys/_manifest_entry.js","webpack://GUI/./src/addons/addons/editor-searchable-dropdowns/_manifest_entry.js","webpack://GUI/./src/addons/addons/editor-sounds/_manifest_entry.js","webpack://GUI/./src/addons/addons/editor-stage-left/_manifest_entry.js","webpack://GUI/./src/addons/addons/editor-stepping/_manifest_entry.js","webpack://GUI/./src/addons/addons/editor-theme3/_manifest_entry.js","webpack://GUI/./src/addons/addons/find-bar/_manifest_entry.js","webpack://GUI/./src/addons/addons/folders/_manifest_entry.js","webpack://GUI/./src/addons/addons/fullscreen/_manifest_entry.js","webpack://GUI/./src/addons/addons/gamepad/_manifest_entry.js","webpack://GUI/./src/addons/addons/hide-delete-button/_manifest_entry.js","webpack://GUI/./src/addons/addons/hide-flyout/_manifest_entry.js","webpack://GUI/./src/addons/addons/hide-new-variables/_manifest_entry.js","webpack://GUI/./src/addons/addons/hide-stage/_manifest_entry.js","webpack://GUI/./src/addons/addons/initialise-sprite-position/_manifest_entry.js","webpack://GUI/./src/addons/addons/jump-to-def/_manifest_entry.js","webpack://GUI/./src/addons/addons/load-extensions/_manifest_entry.js","webpack://GUI/./src/addons/addons/mediarecorder/_manifest_entry.js","webpack://GUI/./src/addons/addons/middle-click-popup/_manifest_entry.js","webpack://GUI/./src/addons/addons/mouse-pos/_manifest_entry.js","webpack://GUI/./src/addons/addons/move-to-top-bottom/_manifest_entry.js","webpack://GUI/./src/addons/addons/mute-project/_manifest_entry.js","webpack://GUI/./src/addons/addons/no-script-bumping/_manifest_entry.js","webpack://GUI/./src/addons/addons/number-pad/_manifest_entry.js","webpack://GUI/./src/addons/addons/onion-skinning/_manifest_entry.js","webpack://GUI/./src/addons/addons/paint-by-default/_manifest_entry.js","webpack://GUI/./src/addons/addons/paint-snap/_manifest_entry.js","webpack://GUI/./src/addons/addons/pause/_manifest_entry.js","webpack://GUI/./src/addons/addons/pick-colors-from-stage/_manifest_entry.js","webpack://GUI/./src/addons/addons/remove-curved-stage-border/_manifest_entry.js","webpack://GUI/./src/addons/addons/remove-sprite-confirm/_manifest_entry.js","webpack://GUI/./src/addons/addons/rename-broadcasts/_manifest_entry.js","webpack://GUI/./src/addons/addons/script-snap/_manifest_entry.js","webpack://GUI/./src/addons/addons/search-sprites/_manifest_entry.js","webpack://GUI/./src/addons/addons/sprite-properties/_manifest_entry.js","webpack://GUI/./src/addons/addons/swap-local-global/_manifest_entry.js","webpack://GUI/./src/addons/addons/transparent-orphans/_manifest_entry.js","webpack://GUI/./src/addons/addons/tw-disable-cloud-variables/_manifest_entry.js","webpack://GUI/./src/addons/addons/tw-disable-compiler/_manifest_entry.js","webpack://GUI/./src/addons/addons/tw-remove-backpack/_manifest_entry.js","webpack://GUI/./src/addons/addons/tw-remove-feedback/_manifest_entry.js","webpack://GUI/./src/addons/addons/tw-straighten-comments/_manifest_entry.js","webpack://GUI/./src/addons/addons/variable-manager/_manifest_entry.js","webpack://GUI/./src/addons/addons/vol-slider/_manifest_entry.js","webpack://GUI/./src/addons/addons/zebra-striping/_manifest_entry.js","webpack://GUI/./src/addons/environment.js","webpack://GUI/./src/addons/event-target.js","webpack://GUI/./src/addons/generated/addon-manifests.js","webpack://GUI/./src/addons/settings-store-singleton.js","webpack://GUI/./src/addons/settings-store.js"],"sourcesContent":["/* generated by pull.js */\nconst manifest = {\n \"editorOnly\": true,\n \"name\": \"2D color picker\",\n \"description\": \"Replaces saturation and brightness sliders in the costume editor with a 2D color picker. Hold Shift while dragging the cursor to change the values on a single axis.\",\n \"tags\": [],\n \"credits\": [\n {\n \"name\": \"Ucrash\"\n }\n ],\n \"userscripts\": [\n {\n \"url\": \"userscript.js\"\n }\n ],\n \"userstyles\": [\n {\n \"url\": \"style.css\"\n }\n ],\n \"enabledByDefault\": false\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"editorOnly\": true,\n \"name\": \"HD image uploads\",\n \"description\": \"Adds a new button above the \\\"upload costume\\\" button that automatically converts uploaded bitmap images into SVG (vector) images to avoid losing quality.\",\n \"tags\": [\n \"beta\"\n ],\n \"info\": [\n {\n \"type\": \"notice\",\n \"text\": \"Avoid using the HD upload button if you plan to edit the image after uploading.\",\n \"id\": \"notSuitableEdit\"\n }\n ],\n \"credits\": [\n {\n \"name\": \"ErrorGamer2000\",\n \"link\": \"https://scratch.mit.edu/users/ErrorGamer2000/\"\n },\n {\n \"name\": \"GarboMuffin\"\n },\n {\n \"name\": \"World_Languages\"\n },\n {\n \"name\": \"SheepTester\",\n \"link\": \"https://scratch.mit.edu/users/Sheep_maker/\"\n }\n ],\n \"dynamicDisable\": true,\n \"userscripts\": [\n {\n \"url\": \"userscript.js\"\n }\n ],\n \"userstyles\": [\n {\n \"url\": \"style.css\"\n }\n ],\n \"settings\": [\n {\n \"dynamic\": true,\n \"name\": \"Image sizing\",\n \"id\": \"fitting\",\n \"type\": \"select\",\n \"potentialValues\": [\n {\n \"id\": \"full\",\n \"name\": \"Original size\"\n },\n {\n \"id\": \"fill\",\n \"name\": \"Stretch to fill stage\"\n },\n {\n \"id\": \"fit\",\n \"name\": \"Shrink to fit stage\"\n }\n ],\n \"default\": \"fit\"\n }\n ]\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"editorOnly\": true,\n \"noTranslations\": true,\n \"name\": \"Bitmap images copying\",\n \"description\": \"Allows you to copy a bitmap image from the costume editor into the system clipboard, so that you can paste it in other websites or software.\",\n \"info\": [\n {\n \"type\": \"notice\",\n \"text\": \"\\\"Right click → copy\\\" is not supported. You must press Ctrl+C while a bitmap image is selected.\",\n \"id\": \"norightclick\"\n }\n ],\n \"userscripts\": [\n {\n \"url\": \"userscript.js\"\n }\n ],\n \"dynamicDisable\": true,\n \"tags\": [],\n \"enabledByDefault\": true\n};\nimport {clipboardSupported} from \"../../environment\";\nif (!clipboardSupported) manifest.unsupported = true;\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"editorOnly\": true,\n \"noTranslations\": true,\n \"name\": \"Grab single block with Ctrl key\",\n \"description\": \"Adds the ability to drag a single block out of the middle of a script (instead of the entire stack attached below it) while holding the Ctrl key.\",\n \"info\": [\n {\n \"text\": \"On macOS, use the Cmd key instead of the Ctrl key.\",\n \"id\": \"macContextDisabled\"\n },\n {\n \"text\": \"If \\\"flip controls\\\" is enabled, grabbing blocks individually will be the default behavior. Hold Ctrl to drag the entire stack.\",\n \"id\": \"flipControls\"\n }\n ],\n \"credits\": [\n {\n \"name\": \"lisa_wolfgang\",\n \"link\": \"https://scratch.mit.edu/users/lisa_wolfgang/\"\n },\n {\n \"name\": \"GarboMuffin\"\n }\n ],\n \"userscripts\": [\n {\n \"url\": \"userscript.js\"\n }\n ],\n \"settings\": [\n {\n \"dynamic\": true,\n \"name\": \"Flip controls\",\n \"id\": \"invertDrag\",\n \"type\": \"boolean\",\n \"default\": false\n }\n ],\n \"tags\": [],\n \"dynamicDisable\": true,\n \"enabledByDefault\": true\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"editorOnly\": true,\n \"name\": \"Block count\",\n \"description\": \"Shows the total number of blocks in a project in the editor menu bar. Previously part of \\\"sprite and script count\\\".\",\n \"tags\": [],\n \"credits\": [\n {\n \"name\": \"TheColaber\",\n \"link\": \"https://scratch.mit.edu/users/TheColaber/\"\n }\n ],\n \"dynamicDisable\": true,\n \"userscripts\": [\n {\n \"url\": \"blockcount.js\"\n }\n ]\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"editorOnly\": true,\n \"noTranslations\": true,\n \"name\": \"Duplicate script with Alt key\",\n \"description\": \"Quickly duplicate a script by dragging it while holding the Alt key. Hold Ctrl as well to only duplicate a single block instead of the entire stack attached below it.\",\n \"credits\": [\n {\n \"name\": \"GarboMuffin\"\n }\n ],\n \"info\": [\n {\n \"text\": \"On macOS, use the Option key instead of the Alt key and Command key instead of the Control key.\",\n \"id\": \"mac\"\n }\n ],\n \"userscripts\": [\n {\n \"url\": \"userscript.js\"\n }\n ],\n \"dynamicDisable\": true,\n \"tags\": [],\n \"enabledByDefault\": true\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"editorOnly\": true,\n \"name\": \"Block palette category icons\",\n \"description\": \"Adds icons inside the colored circles that identify block categories.\",\n \"tags\": [\n \"theme\"\n ],\n \"enabledByDefault\": false,\n \"dynamicDisable\": true,\n \"userstyles\": [\n {\n \"url\": \"userstyle.css\"\n }\n ],\n \"credits\": [\n {\n \"name\": \"--Explosion--\",\n \"link\": \"https://scratch.mit.edu/users/--Explosion--/\"\n },\n {\n \"name\": \"RedGuy7\",\n \"link\": \"https://scratch.mit.edu/users/RedGuy7/\"\n }\n ]\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"editorOnly\": true,\n \"name\": \"Block switching\",\n \"description\": \"Right click on a block to switch it to a related block.\",\n \"credits\": [\n {\n \"name\": \"GarboMuffin\"\n },\n {\n \"name\": \"pufferfish101007\",\n \"link\": \"https://scratch.mit.edu/users/pufferfish101007/\"\n }\n ],\n \"dynamicDisable\": true,\n \"userscripts\": [\n {\n \"url\": \"userscript.js\"\n }\n ],\n \"tags\": [\n \"recommended\"\n ],\n \"settings\": [\n {\n \"dynamic\": true,\n \"name\": \"Motion blocks\",\n \"id\": \"motion\",\n \"type\": \"boolean\",\n \"default\": true\n },\n {\n \"dynamic\": true,\n \"name\": \"Looks blocks\",\n \"id\": \"looks\",\n \"type\": \"boolean\",\n \"default\": true\n },\n {\n \"dynamic\": true,\n \"name\": \"Sound blocks\",\n \"id\": \"sound\",\n \"type\": \"boolean\",\n \"default\": true\n },\n {\n \"dynamic\": true,\n \"name\": \"Event blocks\",\n \"id\": \"event\",\n \"type\": \"boolean\",\n \"default\": true\n },\n {\n \"dynamic\": true,\n \"name\": \"Control blocks\",\n \"id\": \"control\",\n \"type\": \"boolean\",\n \"default\": true\n },\n {\n \"dynamic\": true,\n \"name\": \"Operator blocks\",\n \"id\": \"operator\",\n \"type\": \"boolean\",\n \"default\": true\n },\n {\n \"dynamic\": true,\n \"name\": \"Sensing blocks\",\n \"id\": \"sensing\",\n \"type\": \"boolean\",\n \"default\": true\n },\n {\n \"dynamic\": true,\n \"name\": \"Data blocks\",\n \"id\": \"data\",\n \"type\": \"boolean\",\n \"default\": true\n },\n {\n \"dynamic\": true,\n \"name\": \"Extension blocks\",\n \"id\": \"extension\",\n \"type\": \"boolean\",\n \"default\": true\n },\n {\n \"dynamic\": true,\n \"name\": \"Addon blocks\",\n \"id\": \"sa\",\n \"type\": \"boolean\",\n \"default\": true,\n \"if\": {\n \"addonEnabled\": [\n \"debugger\"\n ]\n }\n },\n {\n \"dynamic\": true,\n \"name\": \"Custom block arguments\",\n \"id\": \"customargs\",\n \"type\": \"boolean\",\n \"default\": true\n },\n {\n \"dynamic\": true,\n \"name\": \"Shown custom block arguments options\",\n \"id\": \"customargsmode\",\n \"type\": \"select\",\n \"default\": \"defOnly\",\n \"potentialValues\": [\n {\n \"id\": \"defOnly\",\n \"name\": \"Arguments in own custom block\"\n },\n {\n \"id\": \"all\",\n \"name\": \"Arguments in all custom blocks in sprite\"\n }\n ],\n \"if\": {\n \"settings\": {\n \"customargs\": true\n }\n }\n },\n {\n \"dynamic\": true,\n \"name\": \"Show option to change block to self\",\n \"id\": \"noop\",\n \"type\": \"boolean\",\n \"default\": true\n }\n ],\n \"enabledByDefault\": true\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"editorOnly\": true,\n \"name\": \"Save blocks as image\",\n \"description\": \"Right click the code area to export blocks as SVG/PNG images.\",\n \"tags\": [],\n \"credits\": [\n {\n \"name\": \"summerscar\"\n }\n ],\n \"dynamicDisable\": true,\n \"userscripts\": [\n {\n \"url\": \"userscript.js\"\n }\n ],\n \"enabledByDefault\": false\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"editorOnly\": true,\n \"noTranslations\": true,\n \"name\": \"Cat blocks\",\n \"description\": \"Brings back editor cat hat blocks from April Fools 2020.\",\n \"credits\": [\n {\n \"name\": \"TheColaber\",\n \"link\": \"https://scratch.mit.edu/users/TheColaber/\"\n },\n {\n \"name\": \"GarboMuffin\"\n }\n ],\n \"userscripts\": [\n {\n \"url\": \"userscript.js\"\n }\n ],\n \"info\": [\n {\n \"type\": \"notice\",\n \"text\": \"The \\\"watch mouse cursor\\\" setting may impact performance when the editor is open.\",\n \"id\": \"watch\"\n }\n ],\n \"settings\": [\n {\n \"id\": \"watch\",\n \"name\": \"Watch mouse cursor\",\n \"default\": false,\n \"type\": \"boolean\"\n }\n ],\n \"tags\": [\n \"theme\"\n ],\n \"enabledByDefault\": false\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"editorOnly\": true,\n \"name\": \"Clone counter\",\n \"description\": \"Adds a counter above the stage in the editor which shows the total amount of clones.\",\n \"credits\": [\n {\n \"name\": \"Jeffalo\"\n },\n {\n \"name\": \"OregSam\",\n \"link\": \"https://scratch.mit.edu/users/simiagain/\"\n }\n ],\n \"dynamicDisable\": true,\n \"userscripts\": [\n {\n \"url\": \"userscript.js\"\n }\n ],\n \"userstyles\": [\n {\n \"url\": \"style.css\"\n }\n ],\n \"settings\": [\n {\n \"dynamic\": true,\n \"id\": \"showicononly\",\n \"name\": \"Show icon only\",\n \"default\": false,\n \"type\": \"boolean\"\n }\n ],\n \"tags\": [\n \"recommended\"\n ],\n \"enabledByDefault\": false\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"editorOnly\": true,\n \"name\": \"Hex color picker\",\n \"description\": \"Adds hex code inputs to color pickers.\",\n \"tags\": [\n \"recommended\"\n ],\n \"credits\": [\n {\n \"name\": \"Richie Bendall\"\n },\n {\n \"name\": \"apple502j\"\n }\n ],\n \"userscripts\": [\n {\n \"url\": \"userscript.js\"\n }\n ],\n \"userstyles\": [\n {\n \"url\": \"style.css\"\n }\n ],\n \"dynamicDisable\": true,\n \"enabledByDefault\": true\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"editorOnly\": true,\n \"noTranslations\": true,\n \"name\": \"Two-column category menu\",\n \"description\": \"Splits the block category menu into two columns and moves it to the top of the block palette, like in Scratch 2.0.\",\n \"credits\": [\n {\n \"name\": \"TheColaber\",\n \"link\": \"https://scratch.mit.edu/TheColaber\"\n }\n ],\n \"tags\": [],\n \"dynamicDisable\": true,\n \"userscripts\": [\n {\n \"url\": \"userscript.js\"\n }\n ],\n \"userstyles\": [\n {\n \"url\": \"style.css\"\n }\n ]\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"editorOnly\": true,\n \"noTranslations\": true,\n \"name\": \"Customizable block shape\",\n \"description\": \"Adjust the padding, corner radius, and notch height of blocks.\",\n \"tags\": [\n \"theme\"\n ],\n \"credits\": [\n {\n \"name\": \"SheepTester\",\n \"link\": \"https://scratch.mit.edu/users/Sheep_maker/\"\n },\n {\n \"name\": \"lisa_wolfgang\",\n \"link\": \"https://scratch.mit.edu/users/lisa_wolfgang/\"\n },\n {\n \"name\": \"GarboMuffin\",\n \"link\": \"https://scratch.mit.edu/users/GarboMuffin/\"\n }\n ],\n \"enabledByDefault\": false,\n \"dynamicDisable\": true,\n \"userscripts\": [\n {\n \"url\": \"userscript.js\"\n }\n ],\n \"info\": [\n {\n \"type\": \"notice\",\n \"text\": \"Decreasing the padding size is only visible to you, so when your projects are viewed by other users, your scripts may overlap.\",\n \"id\": \"paddingWarning\"\n }\n ],\n \"settings\": [\n {\n \"dynamic\": true,\n \"name\": \"Padding size (50-200%)\",\n \"id\": \"paddingSize\",\n \"type\": \"integer\",\n \"min\": 50,\n \"default\": 100,\n \"max\": 200\n },\n {\n \"dynamic\": true,\n \"name\": \"Corner size (0-300%)\",\n \"id\": \"cornerSize\",\n \"type\": \"integer\",\n \"min\": 0,\n \"default\": 100,\n \"max\": 300\n },\n {\n \"dynamic\": true,\n \"name\": \"Notch height (0-150%)\",\n \"id\": \"notchSize\",\n \"type\": \"integer\",\n \"min\": 0,\n \"default\": 100,\n \"max\": 150\n }\n ],\n \"presets\": [\n {\n \"name\": \"3.0 Blocks\",\n \"id\": \"default3\",\n \"description\": \"The regular appearance of Scratch 3.0 blocks\",\n \"values\": {\n \"paddingSize\": 100,\n \"cornerSize\": 100,\n \"notchSize\": 100\n }\n },\n {\n \"name\": \"2.0 Blocks\",\n \"id\": \"default2\",\n \"description\": \"An appearance similar to Scratch 2.0 blocks\",\n \"values\": {\n \"paddingSize\": 70,\n \"cornerSize\": 150,\n \"notchSize\": 75\n }\n },\n {\n \"name\": \"3.0 Flat\",\n \"id\": \"flat3\",\n \"description\": \"Scratch 3.0 blocks with notches and corners removed\",\n \"values\": {\n \"paddingSize\": 100,\n \"cornerSize\": 0,\n \"notchSize\": 0\n }\n },\n {\n \"name\": \"2.0 Flat\",\n \"id\": \"flat2\",\n \"description\": \"Scratch 2.0 blocks with notches and corners removed\",\n \"values\": {\n \"paddingSize\": 70,\n \"cornerSize\": 0,\n \"notchSize\": 0\n }\n }\n ]\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"name\": \"Customizable block text style\",\n \"description\": \"Changes the thickness of the text on blocks and optionally adds a text shadow.\",\n \"tags\": [],\n \"credits\": [\n {\n \"name\": \"Secret-chest\"\n },\n {\n \"name\": \"_nix\",\n \"link\": \"https://scratch.mit.edu/users/_nix\"\n }\n ],\n \"userstyles\": [\n {\n \"url\": \"text-bold.css\",\n \"if\": {\n \"settings\": {\n \"bold\": true\n }\n }\n },\n {\n \"url\": \"text-shadow.css\",\n \"if\": {\n \"settings\": {\n \"shadow\": true\n }\n }\n }\n ],\n \"settings\": [\n {\n \"dynamic\": true,\n \"name\": \"Bold text\",\n \"id\": \"bold\",\n \"type\": \"boolean\",\n \"default\": false\n },\n {\n \"dynamic\": true,\n \"name\": \"Shadow under text\",\n \"id\": \"shadow\",\n \"type\": \"boolean\",\n \"default\": false\n }\n ],\n \"dynamicDisable\": true,\n \"enabledByDefault\": false\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"editorOnly\": true,\n \"noTranslations\": true,\n \"name\": \"Customizable code area zoom\",\n \"description\": \"Choose custom settings for the minimum, maximum, speed, and start size of the zoom of scripts in the code area, and autohide the controls.\",\n \"tags\": [],\n \"credits\": [\n {\n \"name\": \"ErrorGamer2000\",\n \"link\": \"https://scratch.mit.edu/users/ErrorGamer2000/\"\n }\n ],\n \"enabledByDefault\": false,\n \"userscripts\": [\n {\n \"url\": \"userscript.js\"\n }\n ],\n \"userstyles\": [\n {\n \"url\": \"style.css\"\n }\n ],\n \"settings\": [\n {\n \"dynamic\": true,\n \"name\": \"Maximum Zoom (100-500%)\",\n \"id\": \"maxZoom\",\n \"type\": \"integer\",\n \"min\": 100,\n \"default\": 300,\n \"max\": 500\n },\n {\n \"dynamic\": true,\n \"name\": \"Minimum Zoom (1-100%)\",\n \"id\": \"minZoom\",\n \"type\": \"integer\",\n \"min\": 1,\n \"default\": 30,\n \"max\": 100\n },\n {\n \"dynamic\": true,\n \"name\": \"Start Zoom (50-500%)\",\n \"id\": \"startZoom\",\n \"type\": \"integer\",\n \"min\": 50,\n \"default\": 68,\n \"max\": 500\n },\n {\n \"dynamic\": true,\n \"name\": \"Zoom Speed (50-200%)\",\n \"id\": \"zoomSpeed\",\n \"type\": \"integer\",\n \"min\": 50,\n \"default\": 100,\n \"max\": 200\n },\n {\n \"name\": \"Autohide Zoom Controls\",\n \"id\": \"autohide\",\n \"type\": \"boolean\",\n \"default\": false\n },\n {\n \"dynamic\": true,\n \"name\": \"Autohide Animation Speed\",\n \"id\": \"speed\",\n \"type\": \"select\",\n \"potentialValues\": [\n {\n \"id\": \"none\",\n \"name\": \"Instant\"\n },\n {\n \"id\": \"short\",\n \"name\": \"Quick\"\n },\n {\n \"id\": \"default\",\n \"name\": \"Default\"\n },\n {\n \"id\": \"long\",\n \"name\": \"Slow\"\n }\n ],\n \"default\": \"default\",\n \"if\": {\n \"settings\": {\n \"autohide\": true\n }\n }\n }\n ]\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"editorOnly\": true,\n \"name\": \"Data category tweaks\",\n \"description\": \"Provides tweaks for the Data (\\\"Variables\\\") block category.\",\n \"credits\": [\n {\n \"name\": \"GarboMuffin\"\n }\n ],\n \"dynamicDisable\": true,\n \"userscripts\": [\n {\n \"url\": \"userscript.js\"\n }\n ],\n \"settings\": [\n {\n \"dynamic\": true,\n \"name\": \"Separate List Category\",\n \"id\": \"separateListCategory\",\n \"type\": \"boolean\",\n \"default\": true\n },\n {\n \"dynamic\": true,\n \"name\": \"Separate Sprite-only Variables\",\n \"id\": \"separateLocalVariables\",\n \"type\": \"boolean\",\n \"default\": false\n },\n {\n \"dynamic\": true,\n \"name\": \"Move data blocks above variables list\",\n \"id\": \"moveReportersDown\",\n \"type\": \"boolean\",\n \"default\": false\n }\n ],\n \"tags\": [\n \"recommended\"\n ],\n \"enabledByDefault\": false\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"editorOnly\": true,\n \"name\": \"Debugger\",\n \"description\": \"Adds a new \\\"debugger\\\" window to the editor. Allows for logging into the \\\"Logs\\\" tab of the debugger window using the \\\"log\\\", \\\"warn\\\" and \\\"error\\\" blocks.\",\n \"credits\": [\n {\n \"name\": \"Tacodiva\",\n \"link\": \"https://scratch.mit.edu/users/Tacodude7729/\"\n },\n {\n \"name\": \"GarboMuffin\"\n },\n {\n \"name\": \"GrahamSH\"\n },\n {\n \"name\": \"TheColaber\"\n },\n {\n \"name\": \"retronbv\"\n }\n ],\n \"userscripts\": [\n {\n \"url\": \"userscript.js\"\n }\n ],\n \"userstyles\": [\n {\n \"url\": \"style.css\"\n }\n ],\n \"settings\": [\n {\n \"dynamic\": true,\n \"name\": \"Clear logs on green flag\",\n \"id\": \"log_clear_greenflag\",\n \"type\": \"boolean\",\n \"default\": false\n },\n {\n \"dynamic\": true,\n \"name\": \"Log green flag clicks\",\n \"id\": \"log_greenflag\",\n \"type\": \"boolean\",\n \"default\": false\n },\n {\n \"dynamic\": true,\n \"name\": \"Log clone creation\",\n \"id\": \"log_clone_create\",\n \"type\": \"boolean\",\n \"default\": false\n },\n {\n \"dynamic\": true,\n \"name\": \"Log when max clones exceeded\",\n \"id\": \"log_failed_clone_creation\",\n \"type\": \"boolean\",\n \"default\": true\n },\n {\n \"dynamic\": true,\n \"name\": \"Log broadcasts\",\n \"id\": \"log_broadcasts\",\n \"type\": \"boolean\",\n \"default\": false\n }\n ],\n \"tags\": [\n \"beta\"\n ],\n \"enabledByDefault\": false\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"editorOnly\": true,\n \"noTranslations\": true,\n \"name\": \"Customizable default costume editor colors\",\n \"description\": \"Changes the default colors and outline size used by the costume editor.\",\n \"credits\": [\n {\n \"name\": \"GarboMuffin\"\n }\n ],\n \"userscripts\": [\n {\n \"url\": \"userscript.js\"\n }\n ],\n \"settings\": [\n {\n \"dynamic\": true,\n \"name\": \"Default fill color\",\n \"id\": \"fill\",\n \"type\": \"color\",\n \"default\": \"#9966FF\"\n },\n {\n \"dynamic\": true,\n \"name\": \"Default outline color\",\n \"id\": \"stroke\",\n \"type\": \"color\",\n \"default\": \"#000000\"\n },\n {\n \"dynamic\": true,\n \"name\": \"Default outline size\",\n \"id\": \"strokeSize\",\n \"type\": \"integer\",\n \"min\": 0,\n \"max\": 100,\n \"default\": 4\n },\n {\n \"dynamic\": true,\n \"name\": \"Use previous color instead of resetting after switching tools\",\n \"id\": \"persistence\",\n \"type\": \"boolean\",\n \"default\": true\n }\n ],\n \"tags\": [],\n \"dynamicDisable\": true,\n \"enabledByDefault\": false\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"editorOnly\": true,\n \"noTranslations\": true,\n \"name\": \"Do not shift pasted items\",\n \"description\": \"Paste copied items at their original position instead of shifted slightly in the costume editor.\",\n \"info\": [\n {\n \"text\": \"This behavior can also be achieved without this addon by Alt+Clicking the item.\",\n \"id\": \"vanilla\"\n }\n ],\n \"credits\": [\n {\n \"name\": \"GarboMuffin\"\n }\n ],\n \"dynamicDisable\": true,\n \"userscripts\": [\n {\n \"url\": \"userscript.js\"\n }\n ],\n \"tags\": [],\n \"enabledByDefault\": false\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"editorOnly\": true,\n \"noTranslations\": true,\n \"name\": \"Non-draggable sprites in editor\",\n \"description\": \"Removes the ability to drag sprites around on the stage in the editor, except those explicitly set as draggable. Hold Shift while dragging a sprite to move it normally.\",\n \"credits\": [\n {\n \"name\": \"Chrome_Cat\",\n \"link\": \"https://scratch.mit.edu/users/Chrome_Cat/\"\n },\n {\n \"name\": \"GarboMuffin\"\n }\n ],\n \"userscripts\": [\n {\n \"url\": \"userscript.js\"\n }\n ],\n \"tags\": [],\n \"enabledByDefault\": false,\n \"dynamicDisable\": true\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"noTranslations\": true,\n \"name\": \"File drag and drop\",\n \"description\": \"Lets you drag images and sounds from your file manager into the sprite pane or costume/sound list. You can also drag text files into lists or \\\"ask and wait\\\" question inputs.\",\n \"credits\": [\n {\n \"name\": \"Sheep_maker\"\n }\n ],\n \"userscripts\": [\n {\n \"url\": \"userscript.js\"\n }\n ],\n \"settings\": [\n {\n \"dynamic\": true,\n \"id\": \"use-hd-upload\",\n \"name\": \"Use HD uploads\",\n \"type\": \"boolean\",\n \"default\": false,\n \"if\": {\n \"addonEnabled\": \"better-img-uploads\"\n }\n }\n ],\n \"dynamicDisable\": true,\n \"tags\": [\n \"recommended\"\n ],\n \"enabledByDefault\": true\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"name\": \"Reverse order of project controls\",\n \"description\": \"Moves the green flag and stop buttons to the right and the full screen button to the left, like in Scratch 2.0.\",\n \"tags\": [\n \"theme\"\n ],\n \"dynamicDisable\": true,\n \"userstyles\": [\n {\n \"url\": \"userstyle.css\"\n }\n ]\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"editorOnly\": true,\n \"noTranslations\": true,\n \"name\": \"Colored context menus\",\n \"description\": \"Makes block right click context menus colorful.\",\n \"credits\": [\n {\n \"name\": \"GarboMuffin\"\n }\n ],\n \"dynamicDisable\": true,\n \"userscripts\": [\n {\n \"url\": \"userscript.js\"\n }\n ],\n \"userstyles\": [\n {\n \"url\": \"userscript.css\"\n }\n ],\n \"tags\": [\n \"theme\"\n ],\n \"enabledByDefault\": false\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"editorOnly\": true,\n \"noTranslations\": true,\n \"name\": \"Editor comment previews\",\n \"description\": \"Allows you to preview the contents of comments by hovering over collapsed comments and blocks. You can use this to view comments that are off-screen, identify a loop block from the bottom by its preview, fit many long comments in a small space, and more.\",\n \"tags\": [],\n \"credits\": [\n {\n \"name\": \"lisa_wolfgang\",\n \"link\": \"https://scratch.mit.edu/users/lisa_wolfgang/\"\n },\n {\n \"name\": \"GarboMuffin\"\n }\n ],\n \"userstyles\": [\n {\n \"url\": \"userstyle.css\"\n }\n ],\n \"userscripts\": [\n {\n \"url\": \"userscript.js\"\n }\n ],\n \"settings\": [\n {\n \"dynamic\": true,\n \"name\": \"Hover collapsed comments to preview\",\n \"id\": \"hover-view\",\n \"type\": \"boolean\",\n \"default\": true\n },\n {\n \"dynamic\": true,\n \"name\": \"Hover blocks to preview attached comments\",\n \"id\": \"hover-view-block\",\n \"type\": \"boolean\",\n \"default\": true\n },\n {\n \"dynamic\": true,\n \"name\": \"Hover custom blocks to preview definition comments\",\n \"id\": \"hover-view-procedure\",\n \"type\": \"boolean\",\n \"default\": true\n },\n {\n \"dynamic\": true,\n \"name\": \"Delay duration\",\n \"id\": \"delay\",\n \"type\": \"select\",\n \"potentialValues\": [\n {\n \"name\": \"None\",\n \"id\": \"none\"\n },\n {\n \"name\": \"Short\",\n \"id\": \"short\"\n },\n {\n \"name\": \"Long\",\n \"id\": \"long\"\n }\n ],\n \"default\": \"short\"\n },\n {\n \"dynamic\": true,\n \"name\": \"Follow mouse\",\n \"id\": \"follow-mouse\",\n \"type\": \"boolean\",\n \"default\": true\n },\n {\n \"dynamic\": true,\n \"name\": \"Reduce transparency\",\n \"id\": \"reduce-transparency\",\n \"type\": \"boolean\",\n \"default\": false\n },\n {\n \"dynamic\": true,\n \"name\": \"Reduce animation\",\n \"id\": \"reduce-animation\",\n \"type\": \"boolean\",\n \"default\": false\n }\n ],\n \"dynamicDisable\": true,\n \"enabledByDefault\": true\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"editorOnly\": true,\n \"name\": \"Developer tools\",\n \"description\": \"Adds new menu options to the editor: copy/paste blocks, better clean up, and more!\",\n \"credits\": [\n {\n \"name\": \"griffpatch\"\n }\n ],\n \"settings\": [\n {\n \"dynamic\": true,\n \"name\": \"Enhance \\\"Clean up Blocks\\\"\",\n \"id\": \"enableCleanUpPlus\",\n \"type\": \"boolean\",\n \"default\": true\n },\n {\n \"dynamic\": true,\n \"name\": \"Paste blocks at mouse cursor\",\n \"id\": \"enablePasteBlocksAtMouse\",\n \"type\": \"boolean\",\n \"default\": true\n }\n ],\n \"userscripts\": [\n {\n \"url\": \"userscript.js\"\n }\n ],\n \"tags\": [\n \"recommended\"\n ],\n \"enabledByDefault\": true\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"editorOnly\": true,\n \"name\": \"Extra key options\",\n \"description\": \"Adds more keys to the \\\"key () pressed?\\\" and \\\"when () key pressed\\\" block dropdowns, such as enter, dot, comma, and more. These keys will work even for users who do not have this addon.\",\n \"tags\": [\n \"beta\"\n ],\n \"credits\": [\n {\n \"name\": \"Tacodiva\",\n \"link\": \"https://scratch.mit.edu/users/Tacodude7729/\"\n }\n ],\n \"info\": [\n {\n \"type\": \"notice\",\n \"text\": \"The \\\"experimental keys\\\" include equals, slash, semicolon and more. They may not work on all operating systems or keyboard layouts.\",\n \"id\": \"experimentalKeysWarn\"\n },\n {\n \"type\": \"notice\",\n \"text\": \"The \\\"Shift keys\\\" include keys which typically require the Shift key and a number key, like hashtag, exclamation mark and more. These keys only work with the \\\"when () key pressed\\\" block and do not work on all operating systems or keyboard layouts.\",\n \"id\": \"shiftKeysWarn\"\n },\n {\n \"type\": \"warning\",\n \"text\": \"The \\\"TurboWarp keys\\\" will only work in TurboWarp, not in Scratch.\",\n \"id\": \"twKeysWarn\"\n }\n ],\n \"settings\": [\n {\n \"dynamic\": true,\n \"name\": \"Show experimental keys\",\n \"id\": \"experimentalKeys\",\n \"type\": \"boolean\",\n \"default\": false\n },\n {\n \"dynamic\": true,\n \"name\": \"Show Shift keys\",\n \"id\": \"shiftKeys\",\n \"type\": \"boolean\",\n \"default\": false\n },\n {\n \"dynamic\": true,\n \"name\": \"Show TurboWarp keys\",\n \"id\": \"twKeys\",\n \"type\": \"boolean\",\n \"default\": false\n }\n ],\n \"userscripts\": [\n {\n \"url\": \"userscript.js\"\n }\n ],\n \"dynamicDisable\": true\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"editorOnly\": true,\n \"name\": \"Searchable dropdowns\",\n \"description\": \"Allows you to search block dropdowns.\",\n \"credits\": [\n {\n \"name\": \"GarboMuffin\"\n }\n ],\n \"dynamicDisable\": true,\n \"userscripts\": [\n {\n \"url\": \"userscript.js\"\n }\n ],\n \"userstyles\": [\n {\n \"url\": \"userscript.css\"\n }\n ],\n \"tags\": [\n \"recommended\"\n ],\n \"enabledByDefault\": true\n};\nimport {isMobile} from \"../../environment\";\nif (isMobile) manifest.enabledByDefault = false;\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"editorOnly\": true,\n \"noTranslations\": true,\n \"name\": \"Editor sound effects\",\n \"description\": \"Plays sound effects when you connect or delete blocks.\",\n \"credits\": [\n {\n \"name\": \"GarboMuffin\"\n }\n ],\n \"dynamicDisable\": true,\n \"userscripts\": [\n {\n \"url\": \"userscript.js\"\n }\n ],\n \"tags\": [],\n \"enabledByDefault\": false\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"noTranslations\": true,\n \"name\": \"Display stage on left side\",\n \"description\": \"Moves the stage to the left side of the editor, like in Scratch 2.0.\",\n \"info\": [\n {\n \"id\": \"reverseOrder\",\n \"text\": \"To change the position of buttons above the stage, use the \\\"reverse order of project controls\\\" addon.\"\n }\n ],\n \"credits\": [\n {\n \"name\": \"NitroCipher/ZenithRogue\"\n }\n ],\n \"userscripts\": [\n {\n \"url\": \"fix-share-the-love.js\"\n }\n ],\n \"dynamicDisable\": true,\n \"userstyles\": [\n {\n \"url\": \"stageleft.css\"\n }\n ],\n \"tags\": [\n \"theme\"\n ],\n \"enabledByDefault\": false\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"editorOnly\": true,\n \"noTranslations\": true,\n \"noCompiler\": true,\n \"name\": \"Running block border\",\n \"description\": \"Adds a colored highlight to the blocks that are currently being executed in a project.\",\n \"dynamicDisable\": true,\n \"userscripts\": [\n {\n \"url\": \"userscript.js\"\n }\n ],\n \"settings\": [\n {\n \"dynamic\": true,\n \"name\": \"Highlight color\",\n \"id\": \"highlight-color\",\n \"type\": \"color\",\n \"default\": \"#0000ff\"\n }\n ],\n \"tags\": [],\n \"enabledByDefault\": false\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"editorOnly\": true,\n \"noTranslations\": true,\n \"name\": \"Customizable block colors\",\n \"description\": \"Edit block colors for each category in the editor.\",\n \"credits\": [\n {\n \"name\": \"NitroCipher/ZenithRogue\"\n },\n {\n \"name\": \"TheColaber\",\n \"link\": \"https://scratch.mit.edu/users/TheColaber/\"\n }\n ],\n \"customCssVariables\": [\n {\n \"name\": \"inputColor-text\",\n \"value\": {\n \"type\": \"alphaThreshold\",\n \"source\": {\n \"type\": \"settingValue\",\n \"settingId\": \"input-color\"\n },\n \"opaque\": {\n \"type\": \"textColor\",\n \"source\": {\n \"type\": \"settingValue\",\n \"settingId\": \"input-color\"\n }\n },\n \"transparent\": {\n \"type\": \"map\",\n \"source\": {\n \"type\": \"settingValue\",\n \"settingId\": \"text\"\n },\n \"options\": {\n \"white\": \"#ffffff\",\n \"black\": \"#575e75\",\n \"colorOnWhite\": \"#575e75\",\n \"colorOnBlack\": \"#ffffff\"\n }\n }\n }\n },\n {\n \"name\": \"inputColor-blackText\",\n \"value\": {\n \"type\": \"alphaThreshold\",\n \"source\": {\n \"type\": \"settingValue\",\n \"settingId\": \"input-color\"\n },\n \"opaque\": {\n \"type\": \"textColor\",\n \"black\": \"#000000\",\n \"source\": {\n \"type\": \"settingValue\",\n \"settingId\": \"input-color\"\n }\n },\n \"transparent\": {\n \"type\": \"map\",\n \"source\": {\n \"type\": \"settingValue\",\n \"settingId\": \"text\"\n },\n \"options\": {\n \"white\": \"#ffffff\",\n \"black\": \"#000000\",\n \"colorOnWhite\": \"#000000\",\n \"colorOnBlack\": \"#ffffff\"\n }\n }\n }\n },\n {\n \"name\": \"commentText\",\n \"value\": {\n \"type\": \"textColor\",\n \"source\": {\n \"type\": \"settingValue\",\n \"settingId\": \"comment-color\"\n }\n }\n },\n {\n \"name\": \"commentTextTransparent\",\n \"value\": {\n \"type\": \"textColor\",\n \"black\": \"rgba(0, 0, 0, 0.50)\",\n \"white\": \"rgba(255, 255, 255, 0.50)\",\n \"source\": {\n \"type\": \"settingValue\",\n \"settingId\": \"comment-color\"\n }\n }\n },\n {\n \"name\": \"commentBorder\",\n \"value\": {\n \"type\": \"multiply\",\n \"source\": {\n \"type\": \"settingValue\",\n \"settingId\": \"comment-color\"\n },\n \"r\": 0.7,\n \"g\": 0.7,\n \"b\": 0.7\n }\n }\n ],\n \"dynamicDisable\": true,\n \"userscripts\": [\n {\n \"url\": \"theme3.js\"\n }\n ],\n \"userstyles\": [\n {\n \"url\": \"theme3.css\"\n },\n {\n \"url\": \"black_text.css\",\n \"if\": {\n \"settings\": {\n \"text\": \"black\"\n }\n }\n },\n {\n \"url\": \"color_on_white.css\",\n \"if\": {\n \"settings\": {\n \"text\": \"colorOnWhite\"\n }\n }\n },\n {\n \"url\": \"color_on_black.css\",\n \"if\": {\n \"settings\": {\n \"text\": \"colorOnBlack\"\n }\n }\n }\n ],\n \"settings\": [\n {\n \"dynamic\": true,\n \"name\": \"motion\",\n \"id\": \"motion-color\",\n \"type\": \"color\",\n \"default\": \"#4C97FF\",\n \"allowTransparency\": true\n },\n {\n \"dynamic\": true,\n \"name\": \"looks\",\n \"id\": \"looks-color\",\n \"type\": \"color\",\n \"default\": \"#9966FF\",\n \"allowTransparency\": true\n },\n {\n \"dynamic\": true,\n \"name\": \"sounds\",\n \"id\": \"sounds-color\",\n \"type\": \"color\",\n \"default\": \"#CF63CF\",\n \"allowTransparency\": true\n },\n {\n \"dynamic\": true,\n \"name\": \"events\",\n \"id\": \"events-color\",\n \"type\": \"color\",\n \"default\": \"#FFBF00\",\n \"allowTransparency\": true\n },\n {\n \"dynamic\": true,\n \"name\": \"control\",\n \"id\": \"control-color\",\n \"type\": \"color\",\n \"default\": \"#FFAB19\",\n \"allowTransparency\": true\n },\n {\n \"dynamic\": true,\n \"name\": \"sensing\",\n \"id\": \"sensing-color\",\n \"type\": \"color\",\n \"default\": \"#5CB1D6\",\n \"allowTransparency\": true\n },\n {\n \"dynamic\": true,\n \"name\": \"operators\",\n \"id\": \"operators-color\",\n \"type\": \"color\",\n \"default\": \"#59C059\",\n \"allowTransparency\": true\n },\n {\n \"dynamic\": true,\n \"name\": \"variables\",\n \"id\": \"data-color\",\n \"type\": \"color\",\n \"default\": \"#FF8C1A\",\n \"allowTransparency\": true\n },\n {\n \"dynamic\": true,\n \"name\": \"lists\",\n \"id\": \"data-lists-color\",\n \"type\": \"color\",\n \"default\": \"#FF661A\",\n \"allowTransparency\": true\n },\n {\n \"dynamic\": true,\n \"name\": \"custom\",\n \"id\": \"custom-color\",\n \"type\": \"color\",\n \"default\": \"#FF6680\",\n \"allowTransparency\": true\n },\n {\n \"dynamic\": true,\n \"name\": \"extensions\",\n \"id\": \"Pen-color\",\n \"type\": \"color\",\n \"default\": \"#0FBD8C\",\n \"allowTransparency\": true\n },\n {\n \"dynamic\": true,\n \"name\": \"TurboWarp\",\n \"id\": \"tw-color\",\n \"type\": \"color\",\n \"default\": \"#ff4c4c\",\n \"allowTransparency\": true\n },\n {\n \"dynamic\": true,\n \"name\": \"Addon blocks\",\n \"id\": \"sa-color\",\n \"type\": \"color\",\n \"default\": \"#29BEB8\",\n \"allowTransparency\": true,\n \"if\": {\n \"addonEnabled\": [\n \"debugger\"\n ]\n }\n },\n {\n \"dynamic\": true,\n \"name\": \"Block inputs\",\n \"id\": \"input-color\",\n \"type\": \"color\",\n \"default\": \"#FFFFFF\",\n \"allowTransparency\": true\n },\n {\n \"dynamic\": true,\n \"name\": \"Comments\",\n \"id\": \"comment-color\",\n \"type\": \"color\",\n \"default\": \"#FEF49C\"\n },\n {\n \"dynamic\": true,\n \"name\": \"Text color\",\n \"id\": \"text\",\n \"type\": \"select\",\n \"default\": \"white\",\n \"potentialValues\": [\n {\n \"id\": \"white\",\n \"name\": \"White\"\n },\n {\n \"id\": \"black\",\n \"name\": \"Black\"\n },\n {\n \"id\": \"colorOnWhite\",\n \"name\": \"Colored on white background\"\n },\n {\n \"id\": \"colorOnBlack\",\n \"name\": \"Colored on black background\"\n }\n ]\n }\n ],\n \"tags\": [\n \"theme\"\n ],\n \"enabledByDefault\": false,\n \"presets\": [\n {\n \"name\": \"3.0 Tweaks\",\n \"id\": \"tweaks\",\n \"description\": \"Events, Control, and Custom blocks with 2.0 inspired colors\",\n \"values\": {\n \"motion-color\": \"#4C97FF\",\n \"looks-color\": \"#9966FF\",\n \"sounds-color\": \"#CF63CF\",\n \"events-color\": \"#DE9E2E\",\n \"control-color\": \"#FFBF00\",\n \"sensing-color\": \"#5CB1D6\",\n \"operators-color\": \"#59C059\",\n \"data-color\": \"#FF8C1A\",\n \"data-lists-color\": \"#FF661A\",\n \"custom-color\": \"#5f49d8\",\n \"Pen-color\": \"#0FBD8C\",\n \"sa-color\": \"#29BEB8\",\n \"comment-color\": \"#FEF49C\",\n \"input-color\": \"#FFFFFF\",\n \"text\": \"white\"\n }\n },\n {\n \"name\": \"2.0 Colors\",\n \"id\": \"original\",\n \"description\": \"The original block colors from Scratch 2.0\",\n \"values\": {\n \"motion-color\": \"#4a6cd4\",\n \"looks-color\": \"#8a55d7\",\n \"sounds-color\": \"#bb42c3\",\n \"events-color\": \"#c88330\",\n \"control-color\": \"#e1a91a\",\n \"sensing-color\": \"#2ca5e2\",\n \"operators-color\": \"#5cb712\",\n \"data-color\": \"#ee7d16\",\n \"data-lists-color\": \"#cc5b22\",\n \"custom-color\": \"#632d99\",\n \"Pen-color\": \"#0e9a6c\",\n \"sa-color\": \"#29beb8\",\n \"comment-color\": \"#FFFFD2\",\n \"input-color\": \"#ffffff\",\n \"text\": \"white\"\n }\n },\n {\n \"name\": \"Dark\",\n \"id\": \"dark\",\n \"description\": \"Dark versions of the default colors\",\n \"values\": {\n \"motion-color\": \"#004099\",\n \"looks-color\": \"#220066\",\n \"sounds-color\": \"#752475\",\n \"events-color\": \"#997300\",\n \"control-color\": \"#664100\",\n \"sensing-color\": \"#1f5f7a\",\n \"operators-color\": \"#235c23\",\n \"data-color\": \"#b35900\",\n \"data-lists-color\": \"#993300\",\n \"custom-color\": \"#99004d\",\n \"Pen-color\": \"#064734\",\n \"tw-color\": \"#660000\",\n \"sa-color\": \"#166966\",\n \"comment-color\": \"#423f24\",\n \"input-color\": \"#202020\",\n \"text\": \"white\"\n }\n },\n {\n \"name\": \"Black\",\n \"id\": \"black\",\n \"description\": \"Makes block backgrounds black\",\n \"values\": {\n \"motion-color\": \"#4C97FF\",\n \"looks-color\": \"#9966FF\",\n \"sounds-color\": \"#CF63CF\",\n \"events-color\": \"#FFBF00\",\n \"control-color\": \"#FFAB19\",\n \"sensing-color\": \"#5CB1D6\",\n \"operators-color\": \"#59C059\",\n \"data-color\": \"#FF8C1A\",\n \"data-lists-color\": \"#FF661A\",\n \"custom-color\": \"#FF6680\",\n \"Pen-color\": \"#0FBD8C\",\n \"sa-color\": \"#29BEB8\",\n \"comment-color\": \"#FEF49C\",\n \"input-color\": \"#202020\",\n \"text\": \"colorOnBlack\"\n }\n }\n ]\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"editorOnly\": true,\n \"name\": \"Editor find bar\",\n \"description\": \"Adds a find bar to find and jump to scripts, costumes and sounds next to the sounds tab. Use Ctrl+Left and Ctrl+Right in the code area to navigate to previous or next visited position after using the find bar.\",\n \"info\": [\n {\n \"text\": \"This addon was previously part of the \\\"developer tools\\\" addon but has moved here.\",\n \"id\": \"developer-tools\"\n }\n ],\n \"credits\": [\n {\n \"name\": \"griffpatch\"\n },\n {\n \"name\": \"TheColaber\",\n \"link\": \"https://scratch.mit.edu/users/thecolaber/\"\n }\n ],\n \"dynamicDisable\": true,\n \"userscripts\": [\n {\n \"url\": \"userscript.js\"\n }\n ],\n \"userstyles\": [\n {\n \"url\": \"userstyle.css\"\n }\n ],\n \"tags\": [\n \"recommended\"\n ],\n \"enabledByDefault\": true\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"editorOnly\": true,\n \"name\": \"Sprite folders\",\n \"description\": \"Adds folders to the sprite pane, as well as costume and sound lists. To create a folder, right click any sprite and click \\\"create folder\\\". Click a folder to open or close it. Right click a sprite to see what folders you can move it to, or alternatively drag and drop it into an open folder. This feature works by adding \\\"[folderName]//\\\" at the beginning of the names for your sprites.\",\n \"info\": [\n {\n \"type\": \"notice\",\n \"text\": \"Users with this feature enabled will be able to see the folders in your project. Anyone else will see sprite lists normally (no folders).\",\n \"id\": \"notice-folders-are-public\"\n }\n ],\n \"credits\": [\n {\n \"name\": \"GarboMuffin\"\n }\n ],\n \"userscripts\": [\n {\n \"url\": \"userscript.js\"\n }\n ],\n \"userstyles\": [\n {\n \"url\": \"style.css\"\n }\n ],\n \"tags\": [\n \"recommended\"\n ],\n \"enabledByDefault\": true\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"name\": \"Enhanced full screen\",\n \"description\": \"Fixes some undesired effects in the project player's full screen mode, opens it in your browser's full screen mode, and hides the green flag toolbar.\",\n \"credits\": [\n {\n \"name\": \"lisa_wolfgang\",\n \"link\": \"https://scratch.mit.edu/users/lisa_wolfgang/\"\n }\n ],\n \"info\": [\n {\n \"type\": \"notice\",\n \"text\": \"If you choose to hide the toolbar, remember that you can use the Esc key to exit the project player's full screen mode.\",\n \"id\": \"hideToolbarNotice\"\n }\n ],\n \"settings\": [\n {\n \"dynamic\": true,\n \"name\": \"Open full screen project player in full screen browser mode\",\n \"id\": \"browserFullscreen\",\n \"type\": \"boolean\",\n \"default\": true\n },\n {\n \"dynamic\": true,\n \"name\": \"Hide toolbar in full screen\",\n \"id\": \"hideToolbar\",\n \"type\": \"boolean\",\n \"default\": false\n }\n ],\n \"dynamicDisable\": true,\n \"userstyles\": [\n {\n \"url\": \"hideOverflow.css\"\n },\n {\n \"url\": \"removeBorder.css\"\n },\n {\n \"url\": \"resizeWindow.css\",\n \"if\": {\n \"settings\": {\n \"hideToolbar\": false\n }\n }\n },\n {\n \"url\": \"resizeWindow_noToolbar.css\",\n \"if\": {\n \"settings\": {\n \"hideToolbar\": true\n }\n }\n },\n {\n \"url\": \"hideToolbar.css\",\n \"if\": {\n \"settings\": {\n \"hideToolbar\": true\n }\n }\n }\n ],\n \"userscripts\": [\n {\n \"url\": \"userscript.js\"\n }\n ],\n \"tags\": [\n \"beta\"\n ],\n \"enabledByDefault\": false\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"name\": \"Gamepad support\",\n \"description\": \"Interact with projects using a USB or Bluetooth controller/gamepad.\",\n \"credits\": [\n {\n \"name\": \"GarboMuffin\"\n }\n ],\n \"userscripts\": [\n {\n \"url\": \"userscript.js\"\n }\n ],\n \"userstyles\": [\n {\n \"url\": \"style.css\"\n },\n {\n \"url\": \"gamepadlib.css\"\n }\n ],\n \"settings\": [\n {\n \"dynamic\": true,\n \"name\": \"Hide settings button when no controllers detected\",\n \"type\": \"boolean\",\n \"default\": false,\n \"id\": \"hide\"\n }\n ],\n \"tags\": [],\n \"enabledByDefault\": false,\n \"dynamicDisable\": true\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"name\": \"Hide delete button\",\n \"description\": \"Hides delete button (trash can icon) from sprites, costumes and sounds. They can still be deleted using the right click context menu.\",\n \"tags\": [],\n \"dynamicDisable\": true,\n \"settings\": [\n {\n \"dynamic\": true,\n \"name\": \"Sprites\",\n \"id\": \"sprites\",\n \"type\": \"boolean\",\n \"default\": true\n },\n {\n \"dynamic\": true,\n \"name\": \"Costumes and backdrops\",\n \"id\": \"costumes\",\n \"type\": \"boolean\",\n \"default\": true\n },\n {\n \"dynamic\": true,\n \"name\": \"Sounds\",\n \"id\": \"sounds\",\n \"type\": \"boolean\",\n \"default\": true\n }\n ],\n \"userstyles\": [\n {\n \"url\": \"sprites.css\",\n \"if\": {\n \"settings\": {\n \"sprites\": true\n }\n }\n },\n {\n \"url\": \"costumes.css\",\n \"if\": {\n \"settings\": {\n \"costumes\": true\n }\n }\n },\n {\n \"url\": \"sounds.css\",\n \"if\": {\n \"settings\": {\n \"sounds\": true\n }\n }\n }\n ]\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"editorOnly\": true,\n \"noTranslations\": true,\n \"name\": \"Auto-hiding block palette\",\n \"description\": \"Hides the block palette if not hovered. Click the lock icon to lock it in place temporarily. Alternatively, use \\\"category click\\\" mode.\",\n \"credits\": [\n {\n \"name\": \"TheColaber\",\n \"link\": \"https://scratch.mit.edu/users/TheColaber/\"\n },\n {\n \"name\": \"Maximouse\",\n \"link\": \"https://scratch.mit.edu/users/Maximouse/\"\n }\n ],\n \"info\": [\n {\n \"text\": \"\\\"Palette area hover\\\" mode only extends the viewing area. If you want to be able to drag blocks into that area without them getting trashed, use one of the other modes.\",\n \"id\": \"hoverExplanation\"\n }\n ],\n \"dynamicDisable\": true,\n \"customCssVariables\": [\n {\n \"name\": \"lockDisplay\",\n \"value\": {\n \"type\": \"map\",\n \"source\": {\n \"type\": \"settingValue\",\n \"settingId\": \"toggle\"\n },\n \"options\": {\n \"hover\": \"flex\",\n \"cathover\": \"flex\",\n \"category\": \"none\"\n }\n }\n },\n {\n \"name\": \"placeholderDisplay\",\n \"value\": {\n \"type\": \"map\",\n \"source\": {\n \"type\": \"settingValue\",\n \"settingId\": \"toggle\"\n },\n \"options\": {\n \"hover\": \"block\",\n \"cathover\": \"none\",\n \"category\": \"none\"\n }\n }\n }\n ],\n \"userscripts\": [\n {\n \"url\": \"userscript.js\"\n }\n ],\n \"userstyles\": [\n {\n \"url\": \"style.css\"\n }\n ],\n \"settings\": [\n {\n \"dynamic\": true,\n \"name\": \"Toggle on...\",\n \"id\": \"toggle\",\n \"type\": \"select\",\n \"potentialValues\": [\n {\n \"id\": \"hover\",\n \"name\": \"Palette area hover\"\n },\n {\n \"id\": \"cathover\",\n \"name\": \"Category hover\"\n },\n {\n \"id\": \"category\",\n \"name\": \"Category click\"\n }\n ],\n \"default\": \"cathover\"\n },\n {\n \"dynamic\": true,\n \"name\": \"Animation speed\",\n \"id\": \"speed\",\n \"type\": \"select\",\n \"potentialValues\": [\n {\n \"id\": \"none\",\n \"name\": \"Instant\"\n },\n {\n \"id\": \"short\",\n \"name\": \"Quick\"\n },\n {\n \"id\": \"default\",\n \"name\": \"Default\"\n },\n {\n \"id\": \"long\",\n \"name\": \"Slow\"\n }\n ],\n \"default\": \"default\"\n }\n ],\n \"tags\": [\n \"recommended\"\n ]\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"editorOnly\": true,\n \"noTranslations\": true,\n \"name\": \"Hide new variables\",\n \"description\": \"Do not automatically create monitors for newly created variables or lists.\",\n \"credits\": [\n {\n \"name\": \"GarboMuffin\"\n }\n ],\n \"userscripts\": [\n {\n \"url\": \"userscript.js\"\n }\n ],\n \"tags\": [],\n \"dynamicDisable\": true\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"editorOnly\": true,\n \"name\": \"Hide stage and sprite pane\",\n \"description\": \"Adds a button next to the \\\"small stage\\\" and \\\"large stage\\\" buttons that hides the stage and the sprite pane, making the code area much larger.\",\n \"credits\": [\n {\n \"name\": \"Maximouse\",\n \"link\": \"https://scratch.mit.edu/users/Maximouse/\"\n }\n ],\n \"dynamicDisable\": true,\n \"userscripts\": [\n {\n \"url\": \"userscript.js\"\n }\n ],\n \"userstyles\": [\n {\n \"url\": \"style.css\"\n }\n ],\n \"tags\": []\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"editorOnly\": true,\n \"noTranslations\": true,\n \"name\": \"Customizable new sprite position\",\n \"description\": \"Change the default x/y position of new sprites.\",\n \"credits\": [\n {\n \"name\": \"pufferfish101007\",\n \"link\": \"https://scratch.mit.edu/users/pufferfish101007/\"\n }\n ],\n \"dynamicDisable\": true,\n \"userscripts\": [\n {\n \"url\": \"userscript.js\"\n }\n ],\n \"settings\": [\n {\n \"dynamic\": true,\n \"id\": \"x\",\n \"name\": \"X position\",\n \"type\": \"integer\",\n \"default\": 0,\n \"min\": -240,\n \"max\": 240\n },\n {\n \"dynamic\": true,\n \"id\": \"y\",\n \"name\": \"Y position\",\n \"type\": \"integer\",\n \"default\": 0,\n \"min\": -180,\n \"max\": 180\n },\n {\n \"dynamic\": true,\n \"id\": \"library\",\n \"name\": \"Randomize the position of library sprites\",\n \"type\": \"boolean\",\n \"default\": false\n },\n {\n \"dynamic\": true,\n \"id\": \"duplicate\",\n \"name\": \"Behavior when duplicating sprites\",\n \"type\": \"select\",\n \"default\": \"randomize\",\n \"potentialValues\": [\n {\n \"id\": \"custom\",\n \"name\": \"Send to specified x/y values\"\n },\n {\n \"id\": \"keep\",\n \"name\": \"Keep the same as the original sprite\"\n },\n {\n \"id\": \"randomize\",\n \"name\": \"Randomize\"\n }\n ]\n }\n ],\n \"tags\": [],\n \"enabledByDefault\": false\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"name\": \"Jump to custom block definition\",\n \"description\": \"Allows you to jump to a custom block's definition using the middle mouse button or Shift+Click on the block.\",\n \"info\": [\n {\n \"text\": \"This addon was previously part of the \\\"developer tools\\\" addon but has moved here.\",\n \"id\": \"developer-tools\"\n }\n ],\n \"credits\": [\n {\n \"name\": \"griffpatch\"\n }\n ],\n \"userscripts\": [\n {\n \"url\": \"userscript.js\"\n }\n ],\n \"tags\": [\n \"recommended\"\n ],\n \"enabledByDefault\": true,\n \"dynamicDisable\": true\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"editorOnly\": true,\n \"noTranslations\": true,\n \"name\": \"Automatically add extensions\",\n \"description\": \"Auto-shows music, pen, and other extensions in the block category menu in the editor.\",\n \"userscripts\": [\n {\n \"url\": \"userscript.js\"\n }\n ],\n \"settings\": [\n {\n \"name\": \"Music\",\n \"id\": \"music\",\n \"type\": \"boolean\",\n \"default\": true\n },\n {\n \"name\": \"Pen\",\n \"id\": \"pen\",\n \"type\": \"boolean\",\n \"default\": true\n },\n {\n \"name\": \"Text to Speech\",\n \"id\": \"text2speech\",\n \"type\": \"boolean\",\n \"default\": false\n },\n {\n \"name\": \"Translate\",\n \"id\": \"translate\",\n \"type\": \"boolean\",\n \"default\": false\n }\n ],\n \"dynamicDisable\": true,\n \"tags\": []\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"name\": \"Project video recorder\",\n \"description\": \"Adds a \\\"start recording\\\" button to the editor menu bar that allows you to record the project's stage.\",\n \"tags\": [\n \"recommended\"\n ],\n \"userscripts\": [\n {\n \"url\": \"userscript.js\"\n }\n ],\n \"userstyles\": [\n {\n \"url\": \"style.css\"\n }\n ],\n \"enabledByDefault\": false\n};\nimport {mediaRecorderSupported} from \"../../environment\";\nif (!mediaRecorderSupported) manifest.unsupported = true;\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"editorOnly\": true,\n \"name\": \"Insert blocks by name\",\n \"description\": \"Middle click on the code area, use Ctrl+Space or Shift+Click to bring up a floating input box where you can type the name of a block (or parts of it) and drag the block into the code area. Hold Shift while dragging to avoid closing the box when adding multiple blocks at once.\",\n \"credits\": [\n {\n \"name\": \"griffpatch\"\n },\n {\n \"name\": \"TheColaber\",\n \"link\": \"https://scratch.mit.edu/users/TheColaber/\"\n }\n ],\n \"tags\": [\n \"recommended\"\n ],\n \"enabledByDefault\": true,\n \"userscripts\": [\n {\n \"url\": \"userscript.js\"\n }\n ],\n \"userstyles\": [\n {\n \"url\": \"userstyle.css\"\n }\n ],\n \"info\": [\n {\n \"text\": \"This addon was previously part of the \\\"developer tools\\\" addon but has moved here.\",\n \"id\": \"developer-tools\"\n }\n ]\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"editorOnly\": true,\n \"noTranslations\": true,\n \"name\": \"Mouse position\",\n \"description\": \"Displays your mouse x/y position above the stage in the editor.\",\n \"credits\": [\n {\n \"name\": \"Jeffalo\"\n }\n ],\n \"dynamicDisable\": true,\n \"userscripts\": [\n {\n \"url\": \"userscript.js\"\n }\n ],\n \"userstyles\": [\n {\n \"url\": \"style.css\"\n }\n ],\n \"tags\": [\n \"recommended\"\n ],\n \"enabledByDefault\": false\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"enabledByDefault\": true,\n \"editorOnly\": true,\n \"name\": \"Move costume to top or bottom\",\n \"description\": \"Adds options to the right click context menu for costumes and sounds to move them to the top or the bottom of the list.\",\n \"info\": [\n {\n \"text\": \"This addon was previously part of the \\\"developer tools\\\" addon but has moved here.\",\n \"id\": \"developer-tools\"\n }\n ],\n \"tags\": [],\n \"userscripts\": [\n {\n \"url\": \"userscript.js\"\n }\n ],\n \"dynamicDisable\": true\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"noTranslations\": true,\n \"name\": \"Muted project player mode\",\n \"description\": \"Ctrl+Click the green flag to mute/unmute the project.\",\n \"info\": [\n {\n \"text\": \"On macOS, use the Cmd key instead of the Ctrl key.\",\n \"id\": \"macOS\"\n }\n ],\n \"credits\": [\n {\n \"name\": \"TheColaber\",\n \"link\": \"https://scratch.mit.edu/users/TheColaber/\"\n }\n ],\n \"userscripts\": [\n {\n \"url\": \"userscript.js\"\n }\n ],\n \"dynamicDisable\": true,\n \"enabledByDefault\": true,\n \"tags\": [\n \"recommended\"\n ]\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"editorOnly\": true,\n \"noTranslations\": true,\n \"name\": \"Do not automatically space overlapping scripts\",\n \"description\": \"Allows scripts to be moved and modified without causing overlapping scripts to move around.\",\n \"credits\": [\n {\n \"name\": \"GarboMuffin\"\n }\n ],\n \"userscripts\": [\n {\n \"url\": \"userscript.js\"\n }\n ],\n \"dynamicDisable\": true,\n \"tags\": [],\n \"enabledByDefault\": false\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"editorOnly\": true,\n \"noTranslations\": true,\n \"name\": \"Always show number pad\",\n \"description\": \"Show Scratch's number pad input when editing number fields on all devices, instead of only touchscreen devices.\",\n \"credits\": [\n {\n \"name\": \"GarboMuffin\"\n }\n ],\n \"info\": [\n {\n \"text\": \"A number pad will show when editing number inputs from certain blocks, such as \\\"set x to\\\".\",\n \"id\": \"explanation\"\n }\n ],\n \"tags\": [\n \"new\"\n ],\n \"userscripts\": [\n {\n \"url\": \"userscript.js\"\n }\n ],\n \"dynamicDisable\": true\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"editorOnly\": true,\n \"name\": \"Onion skinning\",\n \"description\": \"Shows transparent overlays of previous or next costumes when editing a costume. Controlled by buttons under the costume editor by the zoom buttons.\",\n \"credits\": [\n {\n \"name\": \"GarboMuffin\"\n }\n ],\n \"userscripts\": [\n {\n \"url\": \"userscript.js\"\n }\n ],\n \"userstyles\": [\n {\n \"url\": \"style.css\"\n }\n ],\n \"settings\": [\n {\n \"id\": \"default\",\n \"name\": \"Enable by default\",\n \"type\": \"boolean\",\n \"default\": false\n },\n {\n \"id\": \"previous\",\n \"name\": \"Default previous costumes\",\n \"type\": \"integer\",\n \"default\": 1,\n \"min\": 0,\n \"max\": 100\n },\n {\n \"id\": \"next\",\n \"name\": \"Default next costumes\",\n \"type\": \"integer\",\n \"default\": 0,\n \"min\": 0,\n \"max\": 100\n },\n {\n \"id\": \"opacity\",\n \"name\": \"Opacity (%)\",\n \"type\": \"integer\",\n \"min\": 0,\n \"max\": 100,\n \"default\": 25\n },\n {\n \"id\": \"opacityStep\",\n \"name\": \"Opacity Step (%)\",\n \"type\": \"integer\",\n \"min\": 0,\n \"max\": 100,\n \"default\": 10\n },\n {\n \"id\": \"layering\",\n \"name\": \"Default layering\",\n \"type\": \"select\",\n \"default\": \"front\",\n \"potentialValues\": [\n {\n \"id\": \"front\",\n \"name\": \"Front\"\n },\n {\n \"id\": \"behind\",\n \"name\": \"Behind\"\n }\n ]\n },\n {\n \"id\": \"mode\",\n \"name\": \"Default mode\",\n \"type\": \"select\",\n \"default\": \"merge\",\n \"potentialValues\": [\n {\n \"id\": \"merge\",\n \"name\": \"Merge images\"\n },\n {\n \"id\": \"tint\",\n \"name\": \"Color tint\"\n }\n ]\n },\n {\n \"name\": \"Previous costume tint\",\n \"id\": \"beforeTint\",\n \"type\": \"color\",\n \"default\": \"#FF0000\"\n },\n {\n \"name\": \"Next costume tint\",\n \"id\": \"afterTint\",\n \"type\": \"color\",\n \"default\": \"#0000FF\"\n }\n ],\n \"tags\": [\n \"recommended\"\n ],\n \"dynamicDisable\": true,\n \"enabledByDefault\": true\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"editorOnly\": true,\n \"noTranslations\": true,\n \"name\": \"Paint costume by default\",\n \"description\": \"Changes the default action of \\\"Choose a Sprite/Costume/Backdrop/Sound\\\" buttons, which open the library by default.\",\n \"credits\": [\n {\n \"name\": \"GarboMuffin\"\n }\n ],\n \"userscripts\": [\n {\n \"url\": \"userscript.js\"\n }\n ],\n \"settings\": [\n {\n \"dynamic\": true,\n \"id\": \"sprite\",\n \"name\": \"Add sprite\",\n \"type\": \"select\",\n \"potentialValues\": [\n {\n \"id\": \"library\",\n \"name\": \"Library\"\n },\n {\n \"id\": \"paint\",\n \"name\": \"Paint\"\n },\n {\n \"id\": \"surprise\",\n \"name\": \"Surprise\"\n },\n {\n \"id\": \"upload\",\n \"name\": \"Upload\"\n }\n ],\n \"default\": \"paint\"\n },\n {\n \"dynamic\": true,\n \"id\": \"costume\",\n \"name\": \"Add costume\",\n \"type\": \"select\",\n \"potentialValues\": [\n {\n \"id\": \"library\",\n \"name\": \"Library\"\n },\n {\n \"id\": \"paint\",\n \"name\": \"Paint\"\n },\n {\n \"id\": \"surprise\",\n \"name\": \"Surprise\"\n },\n {\n \"id\": \"upload\",\n \"name\": \"Upload\"\n }\n ],\n \"default\": \"paint\"\n },\n {\n \"dynamic\": true,\n \"id\": \"backdrop\",\n \"name\": \"Add backdrop\",\n \"type\": \"select\",\n \"potentialValues\": [\n {\n \"id\": \"library\",\n \"name\": \"Library\"\n },\n {\n \"id\": \"paint\",\n \"name\": \"Paint\"\n },\n {\n \"id\": \"surprise\",\n \"name\": \"Surprise\"\n },\n {\n \"id\": \"upload\",\n \"name\": \"Upload\"\n }\n ],\n \"default\": \"paint\"\n },\n {\n \"dynamic\": true,\n \"id\": \"sound\",\n \"name\": \"Add sound\",\n \"type\": \"select\",\n \"potentialValues\": [\n {\n \"id\": \"library\",\n \"name\": \"Library\"\n },\n {\n \"id\": \"record\",\n \"name\": \"Record\"\n },\n {\n \"id\": \"surprise\",\n \"name\": \"Surprise\"\n },\n {\n \"id\": \"upload\",\n \"name\": \"Upload\"\n }\n ],\n \"default\": \"library\"\n }\n ],\n \"dynamicDisable\": true,\n \"tags\": [\n \"recommended\"\n ],\n \"enabledByDefault\": false\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"name\": \"Costume editor snapping\",\n \"description\": \"Snap objects in the costume editor to bounding boxes and vector nodes.\",\n \"tags\": [\n \"new\"\n ],\n \"userscripts\": [\n {\n \"url\": \"userscript.js\"\n }\n ],\n \"userstyles\": [\n {\n \"url\": \"userstyle.css\"\n }\n ],\n \"settings\": [\n {\n \"type\": \"boolean\",\n \"id\": \"enable-default\",\n \"name\": \"Enable by default\",\n \"default\": true\n },\n {\n \"dynamic\": true,\n \"type\": \"color\",\n \"id\": \"guide-color\",\n \"name\": \"Snapping guide color\",\n \"default\": \"#ff0000\",\n \"allowTransparency\": true\n },\n {\n \"type\": \"boolean\",\n \"id\": \"pageCenter\",\n \"name\": \"Snap to page center\",\n \"default\": true\n },\n {\n \"type\": \"boolean\",\n \"id\": \"pageAxes\",\n \"name\": \"Snap to page x and y axes\",\n \"default\": true\n },\n {\n \"type\": \"boolean\",\n \"id\": \"pageEdges\",\n \"name\": \"Snap to page edges\",\n \"default\": true\n },\n {\n \"type\": \"boolean\",\n \"id\": \"pageCorners\",\n \"name\": \"Snap to page corners\",\n \"default\": false\n },\n {\n \"type\": \"boolean\",\n \"id\": \"objectEdges\",\n \"name\": \"Snap to object edges\",\n \"default\": true\n },\n {\n \"type\": \"boolean\",\n \"id\": \"objectCenters\",\n \"name\": \"Snap to object centers\",\n \"default\": true\n },\n {\n \"type\": \"boolean\",\n \"id\": \"objectMidlines\",\n \"name\": \"Snap to object midlines\",\n \"default\": true\n },\n {\n \"type\": \"boolean\",\n \"id\": \"objectCorners\",\n \"name\": \"Snap to object corners\",\n \"default\": false\n },\n {\n \"type\": \"boolean\",\n \"id\": \"boxCenter\",\n \"name\": \"Snap from selection box center\",\n \"default\": true\n },\n {\n \"type\": \"boolean\",\n \"id\": \"boxCorners\",\n \"name\": \"Snap from selection box corners\",\n \"default\": false\n },\n {\n \"type\": \"boolean\",\n \"id\": \"boxEdgeMids\",\n \"name\": \"Snap from selection box edge midpoints\",\n \"default\": false\n },\n {\n \"type\": \"positive_integer\",\n \"id\": \"threshold\",\n \"name\": \"Snapping distance\",\n \"default\": 10,\n \"min\": 4,\n \"max\": 100\n }\n ],\n \"dynamicDisable\": true\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"name\": \"Pause button\",\n \"description\": \"Adds a pause button next to the green flag.\",\n \"credits\": [\n {\n \"name\": \"Jeffalo\"\n },\n {\n \"name\": \"GarboMuffin\"\n }\n ],\n \"dynamicDisable\": true,\n \"userscripts\": [\n {\n \"url\": \"userscript.js\"\n }\n ],\n \"userstyles\": [\n {\n \"url\": \"style.css\"\n }\n ],\n \"tags\": [\n \"recommended\"\n ],\n \"enabledByDefault\": true\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"editorOnly\": true,\n \"noTranslations\": true,\n \"enabledByDefault\": true,\n \"name\": \"Select stage colors in the costume editor\",\n \"description\": \"Allows the costume editor's eye dropper to also pick colors from the stage.\",\n \"credits\": [\n {\n \"name\": \"GarboMuffin\"\n }\n ],\n \"tags\": [],\n \"userscripts\": [\n {\n \"url\": \"userscript.js\"\n }\n ],\n \"userstyles\": [\n {\n \"url\": \"style.css\"\n }\n ],\n \"dynamicDisable\": true\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"noTranslations\": true,\n \"name\": \"Remove curved stage border\",\n \"description\": \"Removes the curved border around the stage, allowing you to see the corners.\",\n \"tags\": [\n \"theme\"\n ],\n \"credits\": [\n {\n \"name\": \"Tacodiva\",\n \"link\": \"https://scratch.mit.edu/users/Tacodude7729/\"\n }\n ],\n \"enabledByDefault\": false,\n \"dynamicDisable\": true,\n \"userstyles\": [\n {\n \"url\": \"remove-borders.css\"\n }\n ]\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"editorOnly\": true,\n \"name\": \"Sprite deletion confirmation\",\n \"description\": \"Asks if you're sure when deleting a sprite inside a project.\",\n \"userscripts\": [\n {\n \"url\": \"userscript.js\"\n }\n ],\n \"dynamicDisable\": true,\n \"tags\": [\n \"recommended\"\n ],\n \"enabledByDefault\": false\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"editorOnly\": true,\n \"enabledByDefault\": true,\n \"name\": \"Rename broadcasts\",\n \"description\": \"Adds an option to rename broadcast messages in the broadcast blocks' dropdowns.\",\n \"credits\": [\n {\n \"name\": \"TheColaber\",\n \"link\": \"https://scratch.mit.edu/users/TheColaber\"\n },\n {\n \"name\": \"GarboMuffin\"\n }\n ],\n \"tags\": [\n \"new\"\n ],\n \"userscripts\": [\n {\n \"url\": \"userscript.js\"\n }\n ],\n \"dynamicDisable\": true\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"editorOnly\": true,\n \"noTranslations\": true,\n \"name\": \"Snap scripts to grid\",\n \"description\": \"Drag a script to automatically align its position to the code area dots.\",\n \"tags\": [],\n \"credits\": [\n {\n \"name\": \"CST1229\",\n \"link\": \"https://scratch.mit.edu/users/CST1229/\"\n },\n {\n \"name\": \"TheColaber\",\n \"link\": \"https://scratch.mit.edu/users/TheColaber/\"\n },\n {\n \"name\": \"lisa_wolfgang\",\n \"link\": \"https://scratch.mit.edu/users/lisa_wolfgang/\"\n }\n ],\n \"userscripts\": [\n {\n \"url\": \"userscript.js\"\n }\n ],\n \"settings\": [\n {\n \"dynamic\": true,\n \"name\": \"Grid size (px)\",\n \"id\": \"grid\",\n \"type\": \"integer\",\n \"min\": 1,\n \"default\": 40\n }\n ],\n \"presets\": [\n {\n \"name\": \"Whole-block\",\n \"id\": \"whole-block\",\n \"values\": {\n \"grid\": 48\n }\n },\n {\n \"name\": \"Half-block\",\n \"id\": \"half-block\",\n \"values\": {\n \"grid\": 24\n }\n },\n {\n \"name\": \"Default\",\n \"id\": \"default\",\n \"values\": {\n \"grid\": 40\n }\n }\n ],\n \"dynamicDisable\": true,\n \"enabledByDefault\": false\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"editorOnly\": true,\n \"name\": \"Search sprites by name\",\n \"description\": \"Adds a search box to the sprite pane to search for sprites by name.\",\n \"credits\": [\n {\n \"name\": \"BarelySmooth\",\n \"link\": \"https://scratch.mit.edu/users/BarelySmooth/\"\n },\n {\n \"name\": \"GarboMuffin\"\n }\n ],\n \"userstyles\": [\n {\n \"url\": \"search-bar.css\"\n }\n ],\n \"userscripts\": [\n {\n \"url\": \"userscript.js\"\n }\n ],\n \"dynamicDisable\": true,\n \"tags\": [],\n \"enabledByDefault\": false\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"editorOnly\": true,\n \"name\": \"Collapsing sprite properties\",\n \"description\": \"Hides the sprite properties panel by default, like in Scratch 2.0. Use the info button on the currently selected sprite or double-click a sprite to show the properties panel again. To re-hide it, use the collapse button in the properties panel or double-click a sprite.\",\n \"tags\": [\n \"recommended\",\n \"new\"\n ],\n \"credits\": [\n {\n \"name\": \"lisa_wolfgang\",\n \"link\": \"https://scratch.mit.edu/users/lisa_wolfgang/\"\n }\n ],\n \"userstyles\": [\n {\n \"url\": \"userstyle.css\"\n }\n ],\n \"userscripts\": [\n {\n \"url\": \"userscript.js\"\n }\n ],\n \"customCssVariables\": [\n {\n \"name\": \"transitionDuration\",\n \"value\": {\n \"type\": \"map\",\n \"source\": {\n \"type\": \"settingValue\",\n \"settingId\": \"transitionDuration\"\n },\n \"options\": {\n \"none\": \"0s\",\n \"short\": \"0.15s\",\n \"default\": \"0.25s\",\n \"long\": \"0.5s\"\n }\n }\n }\n ],\n \"settings\": [\n {\n \"dynamic\": true,\n \"name\": \"Automatically collapse when mouse leaves sprite panel\",\n \"id\": \"autoCollapse\",\n \"type\": \"boolean\",\n \"default\": false\n },\n {\n \"dynamic\": true,\n \"name\": \"Collapse panel by default\",\n \"id\": \"hideByDefault\",\n \"type\": \"boolean\",\n \"default\": true,\n \"if\": {\n \"settings\": {\n \"autoCollapse\": false\n }\n }\n },\n {\n \"dynamic\": true,\n \"name\": \"Animation speed\",\n \"id\": \"transitionDuration\",\n \"type\": \"select\",\n \"potentialValues\": [\n {\n \"id\": \"none\",\n \"name\": \"Instant\"\n },\n {\n \"id\": \"short\",\n \"name\": \"Quick\"\n },\n {\n \"id\": \"default\",\n \"name\": \"Default\"\n },\n {\n \"id\": \"long\",\n \"name\": \"Slow\"\n }\n ],\n \"default\": \"default\"\n }\n ],\n \"dynamicDisable\": true,\n \"enabledByDefault\": false\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"editorOnly\": true,\n \"name\": \"Switch variables between \\\"For all sprites\\\" and \\\"For this sprite only\\\"\",\n \"description\": \"Adds more options when renaming an existing variable or list: allows changing between \\\"For all sprites\\\" and \\\"For this sprite only\\\" and whether variables are stored in the cloud. Also adds a new option when right clicking a variable/list to quickly change its scope.\",\n \"credits\": [\n {\n \"name\": \"GarboMuffin\"\n }\n ],\n \"userscripts\": [\n {\n \"url\": \"userscript.js\"\n }\n ],\n \"userstyles\": [\n {\n \"url\": \"style.css\"\n }\n ],\n \"tags\": [],\n \"dynamicDisable\": true,\n \"enabledByDefault\": false\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"editorOnly\": true,\n \"noTranslations\": true,\n \"name\": \"Block transparency\",\n \"description\": \"Adjust the transparency for blocks in the editor, with separate options for orphaned blocks (those without a hat block at the top) and blocks that are being dragged.\",\n \"tags\": [],\n \"dynamicDisable\": true,\n \"credits\": [\n {\n \"name\": \"ErrorGamer2000\",\n \"link\": \"https://scratch.mit.edu/users/ErrorGamer2000/\"\n },\n {\n \"name\": \"GarboMuffin\"\n }\n ],\n \"settings\": [\n {\n \"dynamic\": true,\n \"name\": \"Block transparency (%)\",\n \"id\": \"block\",\n \"type\": \"integer\",\n \"min\": 0,\n \"max\": 100,\n \"default\": 0\n },\n {\n \"dynamic\": true,\n \"name\": \"Orphaned transparency (%)\",\n \"id\": \"orphan\",\n \"type\": \"integer\",\n \"min\": 0,\n \"max\": 100,\n \"default\": 25\n },\n {\n \"dynamic\": true,\n \"name\": \"Dragged transparency (%)\",\n \"id\": \"dragged\",\n \"type\": \"integer\",\n \"min\": 0,\n \"max\": 100,\n \"default\": 25\n }\n ],\n \"userstyles\": [\n {\n \"url\": \"userstyle.css\"\n }\n ]\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"noTranslations\": true,\n \"name\": \"Disable cloud variables\",\n \"description\": \"Disable cloud variables by default. You can still re-enable them using the Edit > Enable cloud variables menu.\",\n \"userscripts\": [\n {\n \"url\": \"userscript.js\"\n }\n ],\n \"tags\": [\n \"danger\"\n ],\n \"enabledByDefault\": false\n};\nimport {isScratchDesktop} from \"../../../lib/isScratchDesktop\";\nif (isScratchDesktop()) manifest.unsupported = true;\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"editorOnly\": true,\n \"noTranslations\": true,\n \"name\": \"Disable compiler in editor\",\n \"description\": \"Turns off the compiler by default in the script editor. It can still be manually enabled through the \\\"Advanced\\\" menu bar button.\",\n \"userscripts\": [\n {\n \"url\": \"userscript.js\"\n }\n ],\n \"tags\": [\n \"danger\"\n ],\n \"enabledByDefault\": false\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"noTranslations\": true,\n \"name\": \"Hide backpack\",\n \"description\": \"Removes the backpack feature from the editor.\",\n \"userscripts\": [\n {\n \"url\": \"remove-backpack.js\"\n }\n ],\n \"userstyles\": [\n {\n \"url\": \"remove-backpack.css\"\n }\n ],\n \"tags\": [\n \"danger\"\n ],\n \"dynamicDisable\": true,\n \"enabledByDefault\": false\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"noTranslations\": true,\n \"name\": \"Remove feedback button\",\n \"description\": \"Removes the feedback button from the menu bar.\",\n \"userstyles\": [\n {\n \"url\": \"remove-feedback.css\"\n }\n ],\n \"tags\": [\n \"danger\"\n ],\n \"dynamicDisable\": true,\n \"enabledByDefault\": false\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"editorOnly\": true,\n \"noTranslations\": true,\n \"name\": \"Keep block comment connections straight\",\n \"description\": \"Forces block comments to always be connected to their source block by a horizontal straight line, not at an angle.\",\n \"tags\": [],\n \"credits\": [\n {\n \"name\": \"lisa_wolfgang\",\n \"link\": \"https://scratch.mit.edu/users/lisa_wolfgang/\"\n }\n ],\n \"userscripts\": [\n {\n \"url\": \"userscript.js\"\n }\n ],\n \"dynamicDisable\": true,\n \"enabledByDefault\": false\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"editorOnly\": true,\n \"name\": \"Variable manager\",\n \"description\": \"Adds a tab next to \\\"sounds\\\" in the editor for easily updating variables and lists.\",\n \"credits\": [\n {\n \"name\": \"Jeffalo\"\n },\n {\n \"name\": \"GarboMuffin\"\n }\n ],\n \"userscripts\": [\n {\n \"url\": \"userscript.js\"\n }\n ],\n \"userstyles\": [\n {\n \"url\": \"style.css\"\n }\n ],\n \"dynamicDisable\": true,\n \"tags\": [],\n \"enabledByDefault\": false\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"noTranslations\": true,\n \"name\": \"Project volume slider\",\n \"description\": \"Adds a volume slider next to the green flag controls.\",\n \"credits\": [\n {\n \"name\": \"samq64\",\n \"link\": \"https://scratch.mit.edu/users/samq64/\"\n },\n {\n \"name\": \"GarboMuffin\"\n }\n ],\n \"userscripts\": [\n {\n \"url\": \"userscript.js\"\n }\n ],\n \"userstyles\": [\n {\n \"url\": \"userstyle.css\"\n }\n ],\n \"settings\": [\n {\n \"name\": \"Default volume\",\n \"id\": \"defVol\",\n \"type\": \"integer\",\n \"min\": 0,\n \"max\": 100,\n \"default\": 100\n }\n ],\n \"dynamicDisable\": true,\n \"tags\": [\n \"recommended\",\n \"new\"\n ]\n};\nexport default manifest;\n","/* generated by pull.js */\nconst manifest = {\n \"editorOnly\": true,\n \"noTranslations\": true,\n \"name\": \"Alternating nested block colors\",\n \"description\": \"Makes blocks of the same category alternate between lighter and darker shades when nested inside each other. This is also known as zebra striping.\",\n \"credits\": [\n {\n \"name\": \"CST1229\",\n \"link\": \"https://scratch.mit.edu/users/CST1229/\"\n },\n {\n \"name\": \"GarboMuffin\"\n },\n {\n \"name\": \"TheColaber\",\n \"link\": \"https://scratch.mit.edu/users/thecolaber\"\n }\n ],\n \"tags\": [],\n \"userscripts\": [\n {\n \"url\": \"userscript.js\"\n }\n ],\n \"userstyles\": [\n {\n \"url\": \"userstyle.css\"\n }\n ],\n \"settings\": [\n {\n \"dynamic\": true,\n \"name\": \"Shade\",\n \"id\": \"shade\",\n \"type\": \"select\",\n \"potentialValues\": [\n {\n \"name\": \"Lighter\",\n \"id\": \"lighter\"\n },\n {\n \"name\": \"Darker\",\n \"id\": \"darker\"\n }\n ],\n \"default\": \"lighter\"\n },\n {\n \"dynamic\": true,\n \"name\": \"Intensity (0-100%)\",\n \"id\": \"intensity\",\n \"type\": \"integer\",\n \"min\": 0,\n \"default\": 20,\n \"max\": 100\n }\n ],\n \"customCssVariables\": [\n {\n \"name\": \"shadeNumber\",\n \"value\": {\n \"type\": \"map\",\n \"source\": {\n \"type\": \"settingValue\",\n \"settingId\": \"shade\"\n },\n \"options\": {\n \"lighter\": \"1\",\n \"darker\": \"-1\"\n }\n }\n }\n ],\n \"dynamicDisable\": true\n};\nexport default manifest;\n","export const isMobile = typeof window !== 'undefined' && 'ontouchstart' in window;\nexport const clipboardSupported = typeof navigator !== 'undefined' && navigator.clipboard && navigator.clipboard.write;\nexport const mediaRecorderSupported = typeof MediaRecorder !== 'undefined' && MediaRecorder.isTypeSupported('video/webm');\n","// Some browsers have a non-functional EventTarget, so we write our own version that works everywhere.\n\nclass EventTargetShim {\n constructor () {\n this._events = {};\n }\n\n addEventListener (event, handler) {\n if (!this._events[event]) {\n this._events[event] = [];\n }\n this._events[event].push(handler);\n }\n\n removeEventListener (event, handler) {\n const handlers = this._events[event];\n if (handlers) {\n this._events[event] = handlers.filter(i => i !== handler);\n }\n }\n\n dispatchEvent (event) {\n const handlers = this._events[event.type];\n if (handlers) {\n for (const fn of handlers) {\n fn(event);\n }\n }\n }\n}\n\nexport default EventTargetShim;\n","/* generated by pull.js */\nimport _cat_blocks from \"../addons/cat-blocks/_manifest_entry.js\";\nimport _editor_devtools from \"../addons/editor-devtools/_manifest_entry.js\";\nimport _find_bar from \"../addons/find-bar/_manifest_entry.js\";\nimport _middle_click_popup from \"../addons/middle-click-popup/_manifest_entry.js\";\nimport _jump_to_def from \"../addons/jump-to-def/_manifest_entry.js\";\nimport _editor_searchable_dropdowns from \"../addons/editor-searchable-dropdowns/_manifest_entry.js\";\nimport _data_category_tweaks_v2 from \"../addons/data-category-tweaks-v2/_manifest_entry.js\";\nimport _block_palette_icons from \"../addons/block-palette-icons/_manifest_entry.js\";\nimport _hide_flyout from \"../addons/hide-flyout/_manifest_entry.js\";\nimport _mediarecorder from \"../addons/mediarecorder/_manifest_entry.js\";\nimport _drag_drop from \"../addons/drag-drop/_manifest_entry.js\";\nimport _debugger from \"../addons/debugger/_manifest_entry.js\";\nimport _pause from \"../addons/pause/_manifest_entry.js\";\nimport _mute_project from \"../addons/mute-project/_manifest_entry.js\";\nimport _vol_slider from \"../addons/vol-slider/_manifest_entry.js\";\nimport _clones from \"../addons/clones/_manifest_entry.js\";\nimport _mouse_pos from \"../addons/mouse-pos/_manifest_entry.js\";\nimport _color_picker from \"../addons/color-picker/_manifest_entry.js\";\nimport _remove_sprite_confirm from \"../addons/remove-sprite-confirm/_manifest_entry.js\";\nimport _block_count from \"../addons/block-count/_manifest_entry.js\";\nimport _onion_skinning from \"../addons/onion-skinning/_manifest_entry.js\";\nimport _paint_snap from \"../addons/paint-snap/_manifest_entry.js\";\nimport _default_costume_editor_color from \"../addons/default-costume-editor-color/_manifest_entry.js\";\nimport _bitmap_copy from \"../addons/bitmap-copy/_manifest_entry.js\";\nimport _2d_color_picker from \"../addons/2d-color-picker/_manifest_entry.js\";\nimport _better_img_uploads from \"../addons/better-img-uploads/_manifest_entry.js\";\nimport _pick_colors_from_stage from \"../addons/pick-colors-from-stage/_manifest_entry.js\";\nimport _custom_block_shape from \"../addons/custom-block-shape/_manifest_entry.js\";\nimport _zebra_striping from \"../addons/zebra-striping/_manifest_entry.js\";\nimport _editor_theme3 from \"../addons/editor-theme3/_manifest_entry.js\";\nimport _custom_block_text from \"../addons/custom-block-text/_manifest_entry.js\";\nimport _editor_colored_context_menus from \"../addons/editor-colored-context-menus/_manifest_entry.js\";\nimport _editor_stage_left from \"../addons/editor-stage-left/_manifest_entry.js\";\nimport _editor_buttons_reverse_order from \"../addons/editor-buttons-reverse-order/_manifest_entry.js\";\nimport _variable_manager from \"../addons/variable-manager/_manifest_entry.js\";\nimport _search_sprites from \"../addons/search-sprites/_manifest_entry.js\";\nimport _sprite_properties from \"../addons/sprite-properties/_manifest_entry.js\";\nimport _gamepad from \"../addons/gamepad/_manifest_entry.js\";\nimport _editor_sounds from \"../addons/editor-sounds/_manifest_entry.js\";\nimport _folders from \"../addons/folders/_manifest_entry.js\";\nimport _block_switching from \"../addons/block-switching/_manifest_entry.js\";\nimport _load_extensions from \"../addons/load-extensions/_manifest_entry.js\";\nimport _custom_zoom from \"../addons/custom-zoom/_manifest_entry.js\";\nimport _initialise_sprite_position from \"../addons/initialise-sprite-position/_manifest_entry.js\";\nimport _blocks2image from \"../addons/blocks2image/_manifest_entry.js\";\nimport _remove_curved_stage_border from \"../addons/remove-curved-stage-border/_manifest_entry.js\";\nimport _transparent_orphans from \"../addons/transparent-orphans/_manifest_entry.js\";\nimport _paint_by_default from \"../addons/paint-by-default/_manifest_entry.js\";\nimport _block_cherry_picking from \"../addons/block-cherry-picking/_manifest_entry.js\";\nimport _hide_new_variables from \"../addons/hide-new-variables/_manifest_entry.js\";\nimport _editor_extra_keys from \"../addons/editor-extra-keys/_manifest_entry.js\";\nimport _hide_delete_button from \"../addons/hide-delete-button/_manifest_entry.js\";\nimport _no_script_bumping from \"../addons/no-script-bumping/_manifest_entry.js\";\nimport _disable_stage_drag_select from \"../addons/disable-stage-drag-select/_manifest_entry.js\";\nimport _move_to_top_bottom from \"../addons/move-to-top-bottom/_manifest_entry.js\";\nimport _disable_paste_offset from \"../addons/disable-paste-offset/_manifest_entry.js\";\nimport _block_duplicate from \"../addons/block-duplicate/_manifest_entry.js\";\nimport _rename_broadcasts from \"../addons/rename-broadcasts/_manifest_entry.js\";\nimport _swap_local_global from \"../addons/swap-local-global/_manifest_entry.js\";\nimport _editor_comment_previews from \"../addons/editor-comment-previews/_manifest_entry.js\";\nimport _columns from \"../addons/columns/_manifest_entry.js\";\nimport _number_pad from \"../addons/number-pad/_manifest_entry.js\";\nimport _script_snap from \"../addons/script-snap/_manifest_entry.js\";\nimport _fullscreen from \"../addons/fullscreen/_manifest_entry.js\";\nimport _hide_stage from \"../addons/hide-stage/_manifest_entry.js\";\nimport _tw_straighten_comments from \"../addons/tw-straighten-comments/_manifest_entry.js\";\nimport _tw_remove_backpack from \"../addons/tw-remove-backpack/_manifest_entry.js\";\nimport _tw_remove_feedback from \"../addons/tw-remove-feedback/_manifest_entry.js\";\nimport _tw_disable_cloud_variables from \"../addons/tw-disable-cloud-variables/_manifest_entry.js\";\nimport _tw_disable_compiler from \"../addons/tw-disable-compiler/_manifest_entry.js\";\nimport _editor_stepping from \"../addons/editor-stepping/_manifest_entry.js\";\nexport default {\n \"cat-blocks\": _cat_blocks,\n \"editor-devtools\": _editor_devtools,\n \"find-bar\": _find_bar,\n \"middle-click-popup\": _middle_click_popup,\n \"jump-to-def\": _jump_to_def,\n \"editor-searchable-dropdowns\": _editor_searchable_dropdowns,\n \"data-category-tweaks-v2\": _data_category_tweaks_v2,\n \"block-palette-icons\": _block_palette_icons,\n \"hide-flyout\": _hide_flyout,\n \"mediarecorder\": _mediarecorder,\n \"drag-drop\": _drag_drop,\n \"debugger\": _debugger,\n \"pause\": _pause,\n \"mute-project\": _mute_project,\n \"vol-slider\": _vol_slider,\n \"clones\": _clones,\n \"mouse-pos\": _mouse_pos,\n \"color-picker\": _color_picker,\n \"remove-sprite-confirm\": _remove_sprite_confirm,\n \"block-count\": _block_count,\n \"onion-skinning\": _onion_skinning,\n \"paint-snap\": _paint_snap,\n \"default-costume-editor-color\": _default_costume_editor_color,\n \"bitmap-copy\": _bitmap_copy,\n \"2d-color-picker\": _2d_color_picker,\n \"better-img-uploads\": _better_img_uploads,\n \"pick-colors-from-stage\": _pick_colors_from_stage,\n \"custom-block-shape\": _custom_block_shape,\n \"zebra-striping\": _zebra_striping,\n \"editor-theme3\": _editor_theme3,\n \"custom-block-text\": _custom_block_text,\n \"editor-colored-context-menus\": _editor_colored_context_menus,\n \"editor-stage-left\": _editor_stage_left,\n \"editor-buttons-reverse-order\": _editor_buttons_reverse_order,\n \"variable-manager\": _variable_manager,\n \"search-sprites\": _search_sprites,\n \"sprite-properties\": _sprite_properties,\n \"gamepad\": _gamepad,\n \"editor-sounds\": _editor_sounds,\n \"folders\": _folders,\n \"block-switching\": _block_switching,\n \"load-extensions\": _load_extensions,\n \"custom-zoom\": _custom_zoom,\n \"initialise-sprite-position\": _initialise_sprite_position,\n \"blocks2image\": _blocks2image,\n \"remove-curved-stage-border\": _remove_curved_stage_border,\n \"transparent-orphans\": _transparent_orphans,\n \"paint-by-default\": _paint_by_default,\n \"block-cherry-picking\": _block_cherry_picking,\n \"hide-new-variables\": _hide_new_variables,\n \"editor-extra-keys\": _editor_extra_keys,\n \"hide-delete-button\": _hide_delete_button,\n \"no-script-bumping\": _no_script_bumping,\n \"disable-stage-drag-select\": _disable_stage_drag_select,\n \"move-to-top-bottom\": _move_to_top_bottom,\n \"disable-paste-offset\": _disable_paste_offset,\n \"block-duplicate\": _block_duplicate,\n \"rename-broadcasts\": _rename_broadcasts,\n \"swap-local-global\": _swap_local_global,\n \"editor-comment-previews\": _editor_comment_previews,\n \"columns\": _columns,\n \"number-pad\": _number_pad,\n \"script-snap\": _script_snap,\n \"fullscreen\": _fullscreen,\n \"hide-stage\": _hide_stage,\n \"tw-straighten-comments\": _tw_straighten_comments,\n \"tw-remove-backpack\": _tw_remove_backpack,\n \"tw-remove-feedback\": _tw_remove_feedback,\n \"tw-disable-cloud-variables\": _tw_disable_cloud_variables,\n \"tw-disable-compiler\": _tw_disable_compiler,\n \"editor-stepping\": _editor_stepping,\n};\n","import SettingsStore from './settings-store';\n\nconst settingStore = new SettingsStore();\nconst urlParameters = new URLSearchParams(location.search);\nif (urlParameters.has('addons')) {\n settingStore.parseUrlParameter(urlParameters.get('addons'));\n} else {\n settingStore.readLocalStorage();\n}\n\nexport default settingStore;\n","/**\n * Copyright (C) 2021 Thomas Weber\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License version 3 as\n * published by the Free Software Foundation.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nimport addons from './generated/addon-manifests';\nimport upstreamMeta from './generated/upstream-meta.json';\nimport EventTargetShim from './event-target';\n\nconst SETTINGS_KEY = 'tw:addons';\nconst VERSION = 4;\n\nconst migrateSettings = settings => {\n const oldVersion = settings._;\n if (oldVersion === VERSION || !oldVersion) {\n return settings;\n }\n\n // Migrate 1 -> 2\n // tw-project-info is now block-count\n // tw-interface-customization split into tw-remove-backpack and tw-remove-feedback\n if (oldVersion < 2) {\n const projectInfo = settings['tw-project-info'];\n if (projectInfo && projectInfo.enabled) {\n settings['block-count'] = {\n enabled: true\n };\n }\n const interfaceCustomization = settings['tw-interface-customization'];\n if (interfaceCustomization && interfaceCustomization.enabled) {\n if (interfaceCustomization.removeBackpack) {\n settings['tw-remove-backpack'] = {\n enabled: true\n };\n }\n if (interfaceCustomization.removeFeedback) {\n settings['tw-remove-feedback'] = {\n enabled: true\n };\n }\n }\n }\n\n // Migrate 2 -> 3\n // The default value of hide-flyout's toggle setting changed from \"hover\" to \"cathover\"\n // We want to keep the old default value for existing users.\n if (oldVersion < 3) {\n const hideFlyout = settings['hide-flyout'];\n if (hideFlyout && hideFlyout.enabled && typeof hideFlyout.toggled === 'undefined') {\n hideFlyout.toggle = 'hover';\n }\n }\n\n // Migrate 3 -> 4\n // editor-devtools was broken up into find-bar and middle-click-popup.\n // If someone disabled editor-devtools, we want to keep these disabled.\n if (oldVersion < 4) {\n const editorDevtools = settings['editor-devtools'];\n if (editorDevtools && editorDevtools.enabled === false) {\n settings['find-bar'] = {\n enabled: false\n };\n settings['middle-click-popup'] = {\n enabled: false\n };\n }\n }\n\n return settings;\n};\n\n/**\n * @template T\n * @param {T|T[]} v A value\n * @returns {T[]} The value if it is a list, otherwise a 1 item list\n */\nconst asArray = v => {\n if (Array.isArray(v)) {\n return v;\n }\n return [v];\n};\n\nclass SettingsStore extends EventTargetShim {\n constructor () {\n super();\n this.store = this.createEmptyStore();\n this.remote = false;\n }\n\n /**\n * @private\n */\n createEmptyStore () {\n const result = {};\n for (const addonId of Object.keys(addons)) {\n result[addonId] = {};\n }\n return result;\n }\n\n readLocalStorage () {\n const base = this.store;\n try {\n const local = localStorage.getItem(SETTINGS_KEY);\n if (local) {\n let result = JSON.parse(local);\n if (result && typeof result === 'object') {\n result = migrateSettings(result);\n for (const key of Object.keys(result)) {\n if (base.hasOwnProperty(key)) {\n const value = result[key];\n if (value && typeof value === 'object') {\n base[key] = value;\n }\n }\n }\n }\n }\n } catch (e) {\n // ignore\n }\n this.store = base;\n }\n\n /**\n * @private\n */\n saveToLocalStorage () {\n if (this.remote) {\n return;\n }\n try {\n const result = {\n _: VERSION\n };\n for (const addonId of Object.keys(addons)) {\n const data = this.getAddonStorage(addonId);\n if (Object.keys(data).length > 0) {\n result[addonId] = data;\n }\n }\n localStorage.setItem(SETTINGS_KEY, JSON.stringify(result));\n } catch (e) {\n // ignore\n }\n }\n\n /**\n * @private\n */\n getAddonStorage (addonId) {\n if (this.store[addonId]) {\n return this.store[addonId];\n }\n throw new Error(`Unknown addon store: ${addonId}`);\n }\n\n /**\n * @private\n */\n getAddonManifest (addonId) {\n if (addons[addonId]) {\n return addons[addonId];\n }\n throw new Error(`Unknown addon: ${addonId}`);\n }\n\n /**\n * @private\n */\n getAddonSettingObject (manifest, settingId) {\n if (!manifest.settings) {\n return null;\n }\n for (const setting of manifest.settings) {\n if (setting.id === settingId) {\n return setting;\n }\n }\n return null;\n }\n\n getAddonEnabled (addonId) {\n const manifest = this.getAddonManifest(addonId);\n if (manifest.unsupported) {\n return false;\n }\n const storage = this.getAddonStorage(addonId);\n if (storage.hasOwnProperty('enabled')) {\n return storage.enabled;\n }\n return !!manifest.enabledByDefault;\n }\n\n getAddonSetting (addonId, settingId) {\n const storage = this.getAddonStorage(addonId);\n const manifest = this.getAddonManifest(addonId);\n const settingObject = this.getAddonSettingObject(manifest, settingId);\n if (!settingObject) {\n throw new Error(`Unknown setting: ${settingId}`);\n }\n if (storage.hasOwnProperty(settingId)) {\n return storage[settingId];\n }\n return settingObject.default;\n }\n\n /**\n * @private\n */\n getDefaultSettings (addonId) {\n const manifest = this.getAddonManifest(addonId);\n const result = {};\n for (const {id, default: value} of manifest.settings) {\n result[id] = value;\n }\n return result;\n }\n\n setAddonEnabled (addonId, enabled) {\n const storage = this.getAddonStorage(addonId);\n const manifest = this.getAddonManifest(addonId);\n const oldValue = this.getAddonEnabled(addonId);\n if (enabled === null) {\n enabled = !!manifest.enabledByDefault;\n delete storage.enabled;\n } else if (typeof enabled === 'boolean') {\n storage.enabled = enabled;\n } else {\n throw new Error('Enabled value is invalid.');\n }\n this.saveToLocalStorage();\n if (enabled !== oldValue) {\n // Dynamic enable is always supported.\n // Dynamic disable requires addon support.\n const supportsDynamic = enabled ? true : !!manifest.dynamicDisable;\n this.dispatchEvent(new CustomEvent('setting-changed', {\n detail: {\n addonId,\n settingId: 'enabled',\n reloadRequired: !supportsDynamic,\n value: enabled\n }\n }));\n }\n }\n\n setAddonSetting (addonId, settingId, value) {\n const storage = this.getAddonStorage(addonId);\n const manifest = this.getAddonManifest(addonId);\n const settingObject = this.getAddonSettingObject(manifest, settingId);\n const oldValue = this.getAddonSetting(addonId, settingId);\n if (value === null) {\n value = settingObject.default;\n delete storage[settingId];\n } else {\n if (settingObject.type === 'boolean') {\n if (typeof value !== 'boolean') {\n throw new Error('Setting value is invalid.');\n }\n } else if (settingObject.type === 'integer') {\n if (typeof value !== 'number') {\n throw new Error('Setting value is invalid.');\n }\n } else if (settingObject.type === 'color') {\n if (typeof value !== 'string') {\n throw new Error('Color value is not a string.');\n }\n // Remove alpha channel from colors like #012345ff\n // We don't support transparency yet, but settings imported from Scratch Addons\n // might contain transparency.\n if (value.length === 9) {\n value = value.substring(0, 7);\n }\n if (!/^#[0-9a-f]{6}$/i.test(value)) {\n throw new Error('Color value is invalid format.');\n }\n } else if (settingObject.type === 'select') {\n if (!settingObject.potentialValues.some(potentialValue => potentialValue.id === value)) {\n throw new Error('Setting value is invalid.');\n }\n } else {\n throw new Error('Setting object is of unknown type');\n }\n storage[settingId] = value;\n }\n this.saveToLocalStorage();\n if (value !== oldValue) {\n this.dispatchEvent(new CustomEvent('setting-changed', {\n detail: {\n addonId,\n settingId,\n reloadRequired: !settingObject.dynamic,\n value\n }\n }));\n }\n }\n\n applyAddonPreset (addonId, presetId) {\n const manifest = this.getAddonManifest(addonId);\n for (const {id, values} of manifest.presets) {\n if (id !== presetId) {\n continue;\n }\n const settings = {\n ...this.getDefaultSettings(addonId),\n ...values\n };\n for (const key of Object.keys(settings)) {\n this.setAddonSetting(addonId, key, settings[key]);\n }\n return;\n }\n throw new Error(`Unknown preset: ${presetId}`);\n }\n\n resetAllAddons () {\n for (const addon of Object.keys(addons)) {\n this.resetAddon(addon, true);\n }\n // In case resetAddon missed some properties, do a hard reset on storage.\n this.store = this.createEmptyStore();\n this.saveToLocalStorage();\n }\n\n resetAddon (addonId, resetEverything) {\n const storage = this.getAddonStorage(addonId);\n for (const setting of Object.keys(storage)) {\n if (setting === 'enabled') {\n if (resetEverything) {\n this.setAddonEnabled(addonId, null);\n }\n continue;\n }\n try {\n this.setAddonSetting(addonId, setting, null);\n } catch (e) {\n // ignore\n }\n }\n }\n\n parseUrlParameter (parameter) {\n this.remote = true;\n const enabled = parameter.split(',');\n for (const id of Object.keys(addons)) {\n this.setAddonEnabled(id, enabled.includes(id));\n }\n }\n\n export ({theme}) {\n const result = {\n core: {\n // Upstream property. We don't use this.\n lightTheme: theme === 'light',\n // Doesn't matter what we set this to\n version: `v1.0.0-tw-${upstreamMeta.commit}`\n },\n addons: {}\n };\n for (const [addonId, manifest] of Object.entries(addons)) {\n const enabled = this.getAddonEnabled(addonId);\n const settings = {};\n if (manifest.settings) {\n for (const {id} of manifest.settings) {\n settings[id] = this.getAddonSetting(addonId, id);\n }\n }\n result.addons[addonId] = {\n enabled,\n settings\n };\n }\n return result;\n }\n\n import (data) {\n for (const [addonId, value] of Object.entries(data.addons)) {\n if (!addons.hasOwnProperty(addonId)) {\n continue;\n }\n const {enabled, settings} = value;\n if (typeof enabled === 'boolean') {\n this.setAddonEnabled(addonId, enabled);\n }\n for (const [settingId, settingValue] of Object.entries(settings)) {\n try {\n this.setAddonSetting(addonId, settingId, settingValue);\n } catch (e) {\n // ignore\n }\n }\n }\n }\n\n setStoreWithVersionCheck ({version, store}) {\n if (version !== upstreamMeta.commit) {\n return;\n }\n this.setStore(store);\n }\n\n setStore (newStore) {\n const oldStore = this.store;\n for (const addonId of Object.keys(oldStore)) {\n const oldSettings = oldStore[addonId];\n const newSettings = newStore[addonId];\n if (!newSettings || typeof newSettings !== 'object') {\n continue;\n }\n if (JSON.stringify(oldSettings) !== JSON.stringify(newSettings)) {\n const manifest = this.getAddonManifest(addonId);\n // Dynamic enable is always supported.\n const dynamicEnable = !oldSettings.enabled && newSettings.enabled;\n // Dynamic disable requires addon support.\n const dynamicDisable = !!manifest.dynamicDisable && oldSettings.enabled && !newSettings.enabled;\n // Clone to avoid pass-by-reference issues\n this.store[addonId] = JSON.parse(JSON.stringify(newSettings));\n this.dispatchEvent(new CustomEvent('addon-changed', {\n detail: {\n addonId,\n dynamicEnable,\n dynamicDisable\n }\n }));\n }\n }\n }\n\n /**\n * Evaluate an `if` value from addon.json.\n * @param {string} addonId The ID of the addon.\n * @param {unknown} condition Condition from addon.json\n * @returns {boolean} True if the condition is met.\n */\n evaluateCondition (addonId, condition) {\n if (!condition) {\n // No condition. Default to true.\n return true;\n }\n\n if (condition.addonEnabled) {\n // addonEnabled is an OR\n const addonsToCheck = asArray(condition.addonEnabled);\n if (addonsToCheck.every(id => !this.getAddonEnabled(id))) {\n return false;\n }\n }\n\n if (condition.settings) {\n // settings is an AND\n for (const [settingName, expectedValue] of Object.entries(condition.settings)) {\n if (this.getAddonSetting(addonId, settingName) !== expectedValue) {\n return false;\n }\n }\n }\n\n return true;\n }\n}\n\nexport default SettingsStore;\n"],"mappings":";;;;;;;;;;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AADA;AAIA;AAEA;AADA;AAIA;AAEA;AADA;AAIA;AApBA;AAsBA;;;;;;;;;;;;ACvBA;AAAA;AACA;AACA;AACA;AACA;AACA;AAGA;AAEA;AACA;AACA;AAHA;AAMA;AAEA;AACA;AAFA;AAKA;AADA;AAIA;AADA;AAIA;AACA;AAFA;AAKA;AACA;AAEA;AADA;AAIA;AAEA;AADA;AAIA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAFA;AAKA;AACA;AAFA;AAKA;AACA;AAFA;AAKA;AAnBA;AA1CA;AAiEA;;;;;;;;;;;;AClEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAHA;AAMA;AAEA;AADA;AAIA;AACA;AACA;AAnBA;AAqBA;AACA;AACA;;;;;;;;;;;;ACxBA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAFA;AAKA;AACA;AAFA;AAKA;AAEA;AACA;AAFA;AAKA;AADA;AAIA;AAEA;AADA;AAIA;AAEA;AACA;AACA;AACA;AACA;AALA;AAQA;AACA;AACA;AAxCA;AA0CA;;;;;;;;;;;;AC3CA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAFA;AAKA;AACA;AAEA;AADA;AAbA;AAkBA;;;;;;;;;;;;ACnBA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AADA;AAIA;AAEA;AACA;AAFA;AAKA;AAEA;AADA;AAIA;AACA;AACA;AAvBA;AAyBA;;;;;;;;;;;;AC1BA;AAAA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AAEA;AADA;AAIA;AAEA;AACA;AAFA;AAKA;AACA;AAFA;AAnBA;AAyBA;;;;;;;;;;;;AC1BA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AADA;AAIA;AACA;AAFA;AAKA;AACA;AAEA;AADA;AAIA;AAGA;AAEA;AACA;AACA;AACA;AACA;AALA;AAQA;AACA;AACA;AACA;AACA;AALA;AAQA;AACA;AACA;AACA;AACA;AALA;AAQA;AACA;AACA;AACA;AACA;AALA;AAQA;AACA;AACA;AACA;AACA;AALA;AAQA;AACA;AACA;AACA;AACA;AALA;AAQA;AACA;AACA;AACA;AACA;AALA;AAQA;AACA;AACA;AACA;AACA;AALA;AAQA;AACA;AACA;AACA;AACA;AALA;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AADA;AANA;AAaA;AACA;AACA;AACA;AACA;AALA;AAQA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAFA;AAKA;AACA;AAFA;AAKA;AACA;AACA;AADA;AADA;AAhBA;AAuBA;AACA;AACA;AACA;AACA;AALA;AAQA;AAvIA;AAyIA;;;;;;;;;;;;AC1IA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AADA;AAIA;AACA;AAEA;AADA;AAIA;AAhBA;AAkBA;;;;;;;;;;;;ACnBA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAFA;AAKA;AADA;AAIA;AAEA;AADA;AAIA;AAEA;AACA;AACA;AAHA;AAMA;AAEA;AACA;AACA;AACA;AAJA;AAOA;AAGA;AArCA;AAuCA;;;;;;;;;;;;ACxCA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AADA;AAIA;AACA;AAFA;AAKA;AACA;AAEA;AADA;AAIA;AAEA;AADA;AAIA;AAEA;AACA;AACA;AACA;AACA;AALA;AAQA;AAGA;AApCA;AAsCA;;;;;;;;;;;;ACvCA;AAAA;AACA;AACA;AACA;AACA;AACA;AAGA;AAEA;AADA;AAIA;AADA;AAIA;AAEA;AADA;AAIA;AAEA;AADA;AAIA;AACA;AA1BA;AA4BA;;;;;;;;;;;;AC7BA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAFA;AAKA;AACA;AACA;AAEA;AADA;AAIA;AAEA;AADA;AAnBA;AAwBA;;;;;;;;;;;;ACzBA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AAEA;AACA;AAFA;AAKA;AACA;AAFA;AAKA;AACA;AAFA;AAKA;AACA;AACA;AAEA;AADA;AAIA;AAEA;AACA;AACA;AAHA;AAMA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAPA;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AAPA;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AAPA;AAUA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAJA;AAWA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAJA;AAWA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAJA;AAWA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAJA;AAhGA;AA4GA;;;;;;;;;;;;AC7GA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AADA;AAIA;AACA;AAFA;AAKA;AAEA;AACA;AACA;AACA;AADA;AADA;AAFA;AASA;AACA;AACA;AACA;AADA;AADA;AAFA;AASA;AAEA;AACA;AACA;AACA;AACA;AALA;AAQA;AACA;AACA;AACA;AACA;AALA;AAQA;AACA;AAhDA;AAkDA;;;;;;;;;;;;ACnDA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAFA;AAKA;AACA;AAEA;AADA;AAIA;AAEA;AADA;AAIA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAPA;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AAPA;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AAPA;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AAPA;AAUA;AACA;AACA;AACA;AAJA;AAOA;AACA;AACA;AACA;AACA;AAEA;AACA;AAFA;AAKA;AACA;AAFA;AAKA;AACA;AAFA;AAKA;AACA;AAFA;AAKA;AACA;AACA;AACA;AADA;AADA;AAxBA;AAlEA;AAkGA;;;;;;;;;;;;ACnGA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AADA;AAIA;AACA;AAEA;AADA;AAIA;AAEA;AACA;AACA;AACA;AACA;AALA;AAQA;AACA;AACA;AACA;AACA;AALA;AAQA;AACA;AACA;AACA;AACA;AALA;AAQA;AAGA;AAzCA;AA2CA;;;;;;;;;;;;AC5CA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAFA;AAKA;AADA;AAIA;AADA;AAIA;AADA;AAIA;AADA;AAIA;AAEA;AADA;AAIA;AAEA;AADA;AAIA;AAEA;AACA;AACA;AACA;AACA;AALA;AAQA;AACA;AACA;AACA;AACA;AALA;AAQA;AACA;AACA;AACA;AACA;AALA;AAQA;AACA;AACA;AACA;AACA;AALA;AAQA;AACA;AACA;AACA;AACA;AALA;AAQA;AAGA;AAxEA;AA0EA;;;;;;;;;;;;AC3EA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AADA;AAIA;AAEA;AADA;AAIA;AAEA;AACA;AACA;AACA;AACA;AALA;AAQA;AACA;AACA;AACA;AACA;AALA;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AAPA;AAUA;AACA;AACA;AACA;AACA;AALA;AAQA;AACA;AACA;AAjDA;AAmDA;;;;;;;;;;;;ACpDA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAFA;AAKA;AAEA;AADA;AAIA;AACA;AAEA;AADA;AAIA;AACA;AAvBA;AAyBA;;;;;;;;;;;;AC1BA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAFA;AAKA;AADA;AAIA;AAEA;AADA;AAIA;AACA;AACA;AArBA;AAuBA;;;;;;;;;;;;ACxBA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AADA;AAIA;AAEA;AADA;AAIA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AADA;AANA;AAWA;AACA;AAGA;AA9BA;AAgCA;;;;;;;;;;;;ACjCA;AAAA;AACA;AACA;AACA;AACA;AAGA;AACA;AAEA;AADA;AARA;AAaA;;;;;;;;;;;;ACdA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AADA;AAIA;AACA;AAEA;AADA;AAIA;AAEA;AADA;AAIA;AAGA;AAxBA;AA0BA;;;;;;;;;;;;AC3BA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAFA;AAKA;AADA;AAIA;AAEA;AADA;AAIA;AAEA;AADA;AAIA;AAEA;AACA;AACA;AACA;AACA;AALA;AAQA;AACA;AACA;AACA;AACA;AALA;AAQA;AACA;AACA;AACA;AACA;AALA;AAQA;AACA;AACA;AACA;AACA;AAEA;AACA;AAFA;AAKA;AACA;AAFA;AAKA;AACA;AAFA;AAKA;AAnBA;AAsBA;AACA;AACA;AACA;AACA;AALA;AAQA;AACA;AACA;AACA;AACA;AALA;AAQA;AACA;AACA;AACA;AACA;AALA;AAQA;AACA;AA3FA;AA6FA;;;;;;;;;;;;AC9FA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AADA;AAIA;AAEA;AACA;AACA;AACA;AACA;AALA;AAQA;AACA;AACA;AACA;AACA;AALA;AAQA;AAEA;AADA;AAIA;AAGA;AAjCA;AAmCA;;;;;;;;;;;;ACpCA;AAAA;AACA;AACA;AACA;AACA;AACA;AAGA;AAEA;AACA;AAFA;AAKA;AAEA;AACA;AACA;AAHA;AAMA;AACA;AACA;AAHA;AAMA;AACA;AACA;AAHA;AAMA;AAEA;AACA;AACA;AACA;AACA;AALA;AAQA;AACA;AACA;AACA;AACA;AALA;AAQA;AACA;AACA;AACA;AACA;AALA;AAQA;AAEA;AADA;AAIA;AA1DA;AA4DA;;;;;;;;;;;;AC7DA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AADA;AAIA;AACA;AAEA;AADA;AAIA;AAEA;AADA;AAIA;AAGA;AAvBA;AAyBA;AACA;AACA;;;;;;;;;;;;AC5BA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AADA;AAIA;AACA;AAEA;AADA;AAIA;AACA;AAjBA;AAmBA;;;;;;;;;;;;ACpBA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAFA;AAKA;AAEA;AADA;AAIA;AAEA;AADA;AAIA;AACA;AAEA;AADA;AAIA;AAGA;AA7BA;AA+BA;;;;;;;;;;;;AChCA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AADA;AAIA;AAEA;AACA;AACA;AACA;AACA;AALA;AAQA;AACA;AAtBA;AAwBA;;;;;;;;;;;;ACzBA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AADA;AAIA;AACA;AAFA;AAKA;AAEA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AACA;AAFA;AAFA;AAOA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AACA;AAJA;AANA;AAbA;AAFA;AA+BA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AACA;AACA;AAFA;AAHA;AAQA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AACA;AAJA;AANA;AAdA;AAFA;AAgCA;AACA;AACA;AACA;AACA;AACA;AAFA;AAFA;AAFA;AAWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAJA;AAFA;AAaA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AARA;AAFA;AAcA;AACA;AAEA;AADA;AAIA;AAEA;AADA;AAIA;AACA;AACA;AACA;AADA;AADA;AAFA;AASA;AACA;AACA;AACA;AADA;AADA;AAFA;AASA;AACA;AACA;AACA;AADA;AADA;AAFA;AASA;AAEA;AACA;AACA;AACA;AACA;AACA;AANA;AASA;AACA;AACA;AACA;AACA;AACA;AANA;AASA;AACA;AACA;AACA;AACA;AACA;AANA;AASA;AACA;AACA;AACA;AACA;AACA;AANA;AASA;AACA;AACA;AACA;AACA;AACA;AANA;AASA;AACA;AACA;AACA;AACA;AACA;AANA;AASA;AACA;AACA;AACA;AACA;AACA;AANA;AASA;AACA;AACA;AACA;AACA;AACA;AANA;AASA;AACA;AACA;AACA;AACA;AACA;AANA;AASA;AACA;AACA;AACA;AACA;AACA;AANA;AASA;AACA;AACA;AACA;AACA;AACA;AANA;AASA;AACA;AACA;AACA;AACA;AACA;AANA;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AADA;AAPA;AAcA;AACA;AACA;AACA;AACA;AACA;AANA;AASA;AACA;AACA;AACA;AACA;AALA;AAQA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAFA;AAKA;AACA;AAFA;AAKA;AACA;AAFA;AAKA;AACA;AAFA;AAnBA;AA0BA;AAGA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAfA;AAJA;AAuBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAfA;AAJA;AAuBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAhBA;AAJA;AAwBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAfA;AAJA;AAlXA;AA0YA;;;;;;;;;;;;AC3YA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAFA;AAKA;AAEA;AADA;AAIA;AACA;AAFA;AAKA;AACA;AAEA;AADA;AAIA;AAEA;AADA;AAIA;AAGA;AAjCA;AAmCA;;;;;;;;;;;;ACpCA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAHA;AAMA;AAEA;AADA;AAIA;AAEA;AADA;AAIA;AAEA;AADA;AAIA;AAGA;AA7BA;AA+BA;;;;;;;;;;;;AChCA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AAFA;AAKA;AAEA;AACA;AACA;AAHA;AAMA;AAEA;AACA;AACA;AACA;AACA;AALA;AAQA;AACA;AACA;AACA;AACA;AALA;AAQA;AACA;AAEA;AADA;AAIA;AADA;AAIA;AACA;AACA;AACA;AADA;AADA;AAFA;AASA;AACA;AACA;AACA;AADA;AADA;AAFA;AASA;AACA;AACA;AACA;AADA;AADA;AAFA;AASA;AAEA;AADA;AAIA;AAGA;AAzEA;AA2EA;;;;;;;;;;;;AC5EA;AAAA;AACA;AACA;AACA;AACA;AAEA;AADA;AAIA;AAEA;AADA;AAIA;AAEA;AADA;AAIA;AADA;AAIA;AAEA;AACA;AACA;AACA;AACA;AALA;AAQA;AACA;AACA;AAhCA;AAkCA;;;;;;;;;;;;ACnCA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AALA;AAQA;AACA;AACA;AACA;AACA;AALA;AAQA;AACA;AACA;AACA;AACA;AALA;AAQA;AAEA;AACA;AACA;AACA;AADA;AADA;AAFA;AASA;AACA;AACA;AACA;AADA;AADA;AAFA;AASA;AACA;AACA;AACA;AADA;AADA;AAFA;AA7CA;AAuDA;;;;;;;;;;;;ACxDA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAFA;AAKA;AACA;AAFA;AAKA;AAEA;AACA;AAFA;AAKA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AAHA;AANA;AAFA;AAgBA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AAHA;AANA;AAFA;AAgBA;AAEA;AADA;AAIA;AAEA;AADA;AAIA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAFA;AAKA;AACA;AAFA;AAKA;AACA;AAFA;AAKA;AAnBA;AAsBA;AACA;AACA;AACA;AACA;AAEA;AACA;AAFA;AAKA;AACA;AAFA;AAKA;AACA;AAFA;AAKA;AACA;AAFA;AAKA;AAvBA;AA0BA;AAhHA;AAoHA;;;;;;;;;;;;ACrHA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AADA;AAIA;AAEA;AADA;AAIA;AACA;AAhBA;AAkBA;;;;;;;;;;;;ACnBA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAFA;AAKA;AACA;AAEA;AADA;AAIA;AAEA;AADA;AAIA;AArBA;AAuBA;;;;;;;;;;;;ACxBA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAFA;AAKA;AACA;AAEA;AADA;AAIA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAPA;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AAPA;AAUA;AACA;AACA;AACA;AACA;AALA;AAQA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAFA;AAKA;AACA;AAFA;AAKA;AACA;AAFA;AAfA;AAsBA;AACA;AAlEA;AAoEA;;;;;;;;;;;;ACrEA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AAFA;AAKA;AAEA;AADA;AAIA;AAEA;AADA;AAIA;AAGA;AACA;AAvBA;AAyBA;;;;;;;;;;;;AC1BA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AADA;AAIA;AAEA;AACA;AACA;AACA;AAJA;AAOA;AACA;AACA;AACA;AAJA;AAOA;AACA;AACA;AACA;AAJA;AAOA;AACA;AACA;AACA;AAJA;AAOA;AACA;AArCA;AAuCA;;;;;;;;;;;;ACxCA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAGA;AAEA;AADA;AAIA;AAEA;AADA;AAIA;AAhBA;AAkBA;AACA;AACA;;;;;;;;;;;;ACrBA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AADA;AAIA;AACA;AAFA;AAKA;AAGA;AACA;AAEA;AADA;AAIA;AAEA;AADA;AAIA;AAEA;AACA;AAFA;AA5BA;AAkCA;;;;;;;;;;;;ACnCA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AADA;AAIA;AACA;AAEA;AADA;AAIA;AAEA;AADA;AAIA;AAGA;AAxBA;AA0BA;;;;;;;;;;;;AC3BA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAFA;AAKA;AACA;AAEA;AADA;AAIA;AAjBA;AAmBA;;;;;;;;;;;;ACpBA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAFA;AAKA;AAEA;AACA;AAFA;AAKA;AAEA;AADA;AAIA;AACA;AACA;AAvBA;AA2BA;;;;;;;;;;;;AC5BA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AADA;AAIA;AAEA;AADA;AAIA;AACA;AACA;AAjBA;AAmBA;;;;;;;;;;;;ACpBA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AADA;AAIA;AAEA;AACA;AAFA;AAKA;AAGA;AAEA;AADA;AAIA;AAxBA;AA0BA;;;;;;;;;;;;AC3BA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AADA;AAIA;AAEA;AADA;AAIA;AAEA;AADA;AAIA;AAEA;AACA;AACA;AACA;AAJA;AAOA;AACA;AACA;AACA;AACA;AACA;AANA;AASA;AACA;AACA;AACA;AACA;AACA;AANA;AASA;AACA;AACA;AACA;AACA;AACA;AANA;AASA;AACA;AACA;AACA;AACA;AACA;AANA;AASA;AACA;AACA;AACA;AACA;AAEA;AACA;AAFA;AAKA;AACA;AAFA;AAVA;AAiBA;AACA;AACA;AACA;AACA;AAEA;AACA;AAFA;AAKA;AACA;AAFA;AAVA;AAiBA;AACA;AACA;AACA;AAJA;AAOA;AACA;AACA;AACA;AAJA;AAOA;AAGA;AACA;AA3GA;AA6GA;;;;;;;;;;;;AC9GA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AADA;AAIA;AAEA;AADA;AAIA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAFA;AAKA;AACA;AAFA;AAKA;AACA;AAFA;AAKA;AACA;AAFA;AAKA;AAvBA;AA0BA;AACA;AACA;AACA;AACA;AAEA;AACA;AAFA;AAKA;AACA;AAFA;AAKA;AACA;AAFA;AAKA;AACA;AAFA;AAKA;AAvBA;AA0BA;AACA;AACA;AACA;AACA;AAEA;AACA;AAFA;AAKA;AACA;AAFA;AAKA;AACA;AAFA;AAKA;AACA;AAFA;AAKA;AAvBA;AA0BA;AACA;AACA;AACA;AACA;AAEA;AACA;AAFA;AAKA;AACA;AAFA;AAKA;AACA;AAFA;AAKA;AACA;AAFA;AAKA;AAvBA;AA0BA;AACA;AAGA;AAzHA;AA2HA;;;;;;;;;;;;AC5HA;AAAA;AACA;AACA;AACA;AACA;AAGA;AAEA;AADA;AAIA;AAEA;AADA;AAIA;AAEA;AACA;AACA;AACA;AAJA;AAOA;AACA;AACA;AACA;AACA;AACA;AANA;AASA;AACA;AACA;AACA;AAJA;AAOA;AACA;AACA;AACA;AAJA;AAOA;AACA;AACA;AACA;AAJA;AAOA;AACA;AACA;AACA;AAJA;AAOA;AACA;AACA;AACA;AAJA;AAOA;AACA;AACA;AACA;AAJA;AAOA;AACA;AACA;AACA;AAJA;AAOA;AACA;AACA;AACA;AAJA;AAOA;AACA;AACA;AACA;AAJA;AAOA;AACA;AACA;AACA;AAJA;AAOA;AACA;AACA;AACA;AAJA;AAOA;AACA;AACA;AACA;AACA;AACA;AANA;AASA;AA1GA;AA4GA;;;;;;;;;;;;AC7GA;AAAA;AACA;AACA;AACA;AACA;AAEA;AADA;AAIA;AADA;AAIA;AACA;AAEA;AADA;AAIA;AAEA;AADA;AAIA;AAGA;AAzBA;AA2BA;;;;;;;;;;;;AC5BA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AADA;AAIA;AACA;AAEA;AADA;AAIA;AAEA;AADA;AAIA;AAtBA;AAwBA;;;;;;;;;;;;ACzBA;AAAA;AACA;AACA;AACA;AACA;AACA;AAGA;AAEA;AACA;AAFA;AAKA;AACA;AACA;AAEA;AADA;AAhBA;AAqBA;;;;;;;;;;;;ACtBA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AADA;AAIA;AACA;AAGA;AAbA;AAeA;;;;;;;;;;;;AChBA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAFA;AAKA;AADA;AAIA;AAGA;AAEA;AADA;AAIA;AAtBA;AAwBA;;;;;;;;;;;;ACzBA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAFA;AAKA;AACA;AAFA;AAKA;AACA;AAFA;AAKA;AAEA;AADA;AAIA;AAEA;AACA;AACA;AACA;AACA;AACA;AANA;AASA;AAEA;AACA;AACA;AACA;AADA;AAHA;AAQA;AACA;AACA;AACA;AADA;AAHA;AAQA;AACA;AACA;AACA;AADA;AAHA;AAQA;AACA;AA3DA;AA6DA;;;;;;;;;;;;AC9DA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAFA;AAKA;AADA;AAIA;AAEA;AADA;AAIA;AAEA;AADA;AAIA;AACA;AACA;AAzBA;AA2BA;;;;;;;;;;;;AC5BA;AAAA;AACA;AACA;AACA;AACA;AACA;AAIA;AAEA;AACA;AAFA;AAKA;AAEA;AADA;AAIA;AAEA;AADA;AAIA;AAEA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AACA;AAJA;AANA;AAFA;AAiBA;AAEA;AACA;AACA;AACA;AACA;AALA;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AADA;AADA;AANA;AAaA;AACA;AACA;AACA;AACA;AAEA;AACA;AAFA;AAKA;AACA;AAFA;AAKA;AACA;AAFA;AAKA;AACA;AAFA;AAKA;AAvBA;AA0BA;AACA;AAzFA;AA2FA;;;;;;;;;;;;AC5FA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AADA;AAIA;AAEA;AADA;AAIA;AAEA;AADA;AAIA;AACA;AACA;AArBA;AAuBA;;;;;;;;;;;;ACxBA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAFA;AAKA;AADA;AAIA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAPA;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AAPA;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AAPA;AAUA;AAEA;AADA;AA9CA;AAmDA;;;;;;;;;;;;ACpDA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AADA;AAIA;AAGA;AAZA;AAcA;AACA;AACA;;;;;;;;;;;;ACjBA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AADA;AAIA;AAGA;AAbA;AAeA;;;;;;;;;;;;AChBA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AADA;AAIA;AAEA;AADA;AAIA;AAGA;AACA;AAlBA;AAoBA;;;;;;;;;;;;ACrBA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AADA;AAIA;AAGA;AACA;AAbA;AAeA;;;;;;;;;;;;AChBA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAFA;AAKA;AAEA;AADA;AAIA;AACA;AAlBA;AAoBA;;;;;;;;;;;;ACrBA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AADA;AAIA;AADA;AAIA;AAEA;AADA;AAIA;AAEA;AADA;AAIA;AACA;AACA;AAxBA;AA0BA;;;;;;;;;;;;AC3BA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAFA;AAKA;AADA;AAIA;AAEA;AADA;AAIA;AAEA;AADA;AAIA;AAEA;AACA;AACA;AACA;AACA;AACA;AANA;AASA;AACA;AAlCA;AAuCA;;;;;;;;;;;;ACxCA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAFA;AAKA;AADA;AAIA;AACA;AAFA;AAKA;AACA;AAEA;AADA;AAIA;AAEA;AADA;AAIA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAFA;AAKA;AACA;AAFA;AAKA;AAfA;AAkBA;AACA;AACA;AACA;AACA;AACA;AACA;AAPA;AAUA;AAEA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AAFA;AANA;AAFA;AAeA;AAzEA;AA2EA;;;;;;;;;;;;AC5EA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;;;;;;;;;;;;ACFA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AA3BA;AACA;AA4BA;;;;;;;;;;;;AC/BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAvEA;;;;;;;;;;;;;;;;;;;;;;;ACxEA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAGA;AACA;AACA;AACA;AADA;AACA;AACA;AAAA;AACA;AACA;AADA;AAGA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AADA;AAGA;AACA;AAAA;AACA;AACA;AADA;AAGA;AACA;AACA;AAGA;AACA;AACA;AACA;AADA;AACA;AACA;AAAA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AADA;AACA;AACA;AAAA;AACA;AACA;AADA;AAGA;AACA;AADA;AAGA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AADA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AADA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AADA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AADA;AACA;AAEA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AADA;AACA;AACA;AACA;AACA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AADA;AACA;AACA;AACA;AACA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AADA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AADA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAJA;AADA;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AADA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAJA;AADA;AAQA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AAGA;AACA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAJA;AAMA;AAPA;AACA;AAQA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAFA;AAIA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AADA;AAOA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AADA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA3XA;AACA;AA4XA;;;;A","sourceRoot":""}