{
    "id": "microbit",
    "nickname": "microbit",
    "name": "makecode.microbit.org",
    "title": "Microsoft MakeCode for micro:bit",
    "description": "A Blocks / JavaScript code editor for the micro:bit powered by Microsoft MakeCode.",
    "corepkg": "core",
    "bundleddirs": [
        "libs/core",
        "libs/audio-samples",
        "libs/radio",
        "libs/devices",
        "libs/bluetooth",
        "libs/servo",
        "libs/radio-broadcast",
        "libs/microphone",
        "libs/settings",
        "libs/flashlog",
        "libs/datalogger",
        "libs/bitmap",
        "libs/fonts",
        "libs/color",
        "libs/audio-recording"
    ],
    "cloud": {
        "workspace": false,
        "packages": true,
        "sharing": true,
        "thumbnails": true,
        "publishing": true,
        "importing": true,
        "showBadges": false,
        "preferredPackages": [
            "Microsoft/pxt-neopixel"
        ],
        "githubPackages": true,
        "cloudProviders": {
            "github": {
                "id": "github",
                "name": "GitHub",
                "icon": "/static/providers/github-mark.png",
                "identity": false,
                "order": 3
            },
            "microsoft": {
                "id": "microsoft",
                "name": "Microsoft",
                "icon": "/static/providers/microsoft-logo.svg",
                "identity": true,
                "redirect": true,
                "order": 1
            },
            "google": {
                "id": "google",
                "name": "Google",
                "icon": "/static/providers/google-logo.svg",
                "identity": true,
                "redirect": true,
                "order": 2
            },
            "clever": {
                "id": "clever",
                "name": "Clever",
                "icon": "/static/providers/clever-logo.png",
                "identity": true,
                "redirect": true,
                "order": 3
            }
        }
    },
    "compile": {
        "isNative": false,
        "hasHex": true,
        "deployDrives": "(MICROBIT|MBED)",
        "driveName": "MICROBIT",
        "hexMimeType": "application/x-microbit-hex",
        "openocdScript": "source [find interface/cmsis-dap.cfg]; source [find target/nrf51.cfg]",
        "flashUsableEnd": 242688,
        "flashEnd": 242688,
        "flashCodeAlign": 1024,
        "floatingPoint": true,
        "taggedInts": true,
        "utf8": false,
        "gc": true,
        "imageRefTag": 9,
        "shimRenames": {
            "sendBufferAsm": "light::sendWS2812Buffer"
        },
        "patches": {
            "0.0.0 - 1.0.0": [
                {
                    "type": "package",
                    "map": {
                        "microbit": "core",
                        "microbit-bluetooth": "bluetooth",
                        "microbit-radio": "radio",
                        "microbit-devices": "devices",
                        "microbit-led": "",
                        "microbit-music": "",
                        "microbit-game": "",
                        "microbit-pins": "",
                        "microbit-serial": ""
                    }
                },
                {
                    "type": "missingPackage",
                    "map": {
                        "radio\\s*\\.": "radio",
                        "bluetooth\\s*\\.": "bluetooth",
                        "devices\\s*\\.": "devices"
                    }
                },
                {
                    "type": "api",
                    "map": {
                        "bluetooth\\s*\\.\\s*uartRead\\s*\\((.*?)\\)": "bluetooth.uartReadUntil($1)",
                        "bluetooth\\s*\\.\\s*uartWrite\\s*\\((.*?)\\)": "bluetooth.uartWriteUntil($1)",
                        "input\\s*\\.\\s*calibrate\\s*\\(": "input.calibrateCompass(",
                        "radio\\s*\\.\\s*onDataPacketReceived\\(\\s*\\(\\{\\s*receivedNumber\\s*\\}\\)\\s*=>\\s*\\{": "radio.onReceivedNumber(function (receivedNumber) {",
                        "radio\\s*\\.\\s*onDataPacketReceived\\(\\s*\\(\\{\\s*receivedString: name, receivedNumber: value\\s*\\}\\)\\s*=>\\s*\\{": "radio.onReceivedValue(function (name, value) {",
                        "radio\\s*\\.\\s*onDataPacketReceived\\(\\s*\\(\\{\\s*receivedString\\s*\\}\\)\\s*=>\\s*\\{": "radio.onReceivedString(function (receivedString) {",
                        "Math\\s*\\.\\s*random\\s*\\(": "Math.randomRange(0, "
                    }
                },
                {
                    "type": "blockId",
                    "map": {
                        "device_get_acceleration": "device_acceleration"
                    }
                },
                {
                    "type": "blockValue",
                    "map": {
                        "device_print_message.message": "text"
                    }
                }
            ],
            "0.0.0 - 1.4.12": [
                {
                    "type": "api",
                    "map": {
                        "DisplayMode\\s*\\.\\s*BackAndWhite": "DisplayMode.BlackAndWhite"
                    }
                }
            ],
            "0.0.0 - 3.1.10": [
                {
                    "type": "package",
                    "map": {
                        "pxt-microbit-v2-extension": "microphone"
                    }
                }
            ],
            "0.0.0 - 3.0.18": [
                {
                    "type": "missingPackage",
                    "map": {
                        ".*": "microphone"
                    }
                }
            ]
        },
        "hidSelectors": [
            {
                "usagePage": "0xFF00",
                "usageId": "0x0001",
                "vid": "0x0d28",
                "pid": "0x0204"
            }
        ],
        "webUSB": true,
        "useNewFunctions": true
    },
    "compileService": {
        "yottaTarget": "bbc-microbit-classic-gcc@https://github.com/lancaster-university/yotta-target-bbc-microbit-classic-gcc",
        "yottaCorePackage": "microbit",
        "githubCorePackage": "lancaster-university/microbit",
        "gittag": "v2.2.0-rc6",
        "serviceId": "microbit",
        "dockerImage": "pext/yotta:gcc5"
    },
    "multiVariants": [
        "mbdal",
        "mbcodal"
    ],
    "alwaysMultiVariant" : true,
    "variants": {
        "mbdal": {
            "compile": {},
            "compileService": {}
        },
        "mbcodal": {
            "compile": {
                "flashCodeAlign": 4096,
                "flashUsableEnd": 471040,
                "flashEnd": 524288
            },
            "compileService": {
                "buildEngine": "codal",
                "codalTarget": {
                    "name": "codal-microbit-v2",
                    "url": "https://github.com/lancaster-university/codal-microbit-v2",
                    "branch": "v0.3.5",
                    "type": "git"
                },
                "codalBinary": "MICROBIT",
                "githubCorePackage": "lancaster-university/microbit-v2-samples",
                "gittag": "v0.2.13",
                "serviceId": "mbcodal2",
                "dockerImage": "pext/yotta:latest",
                "yottaConfigCompatibility": true
            }
        }
    },
    "runtime": {
        "mathBlocks": true,
        "loopsBlocks": true,
        "pauseUntilBlock": {
            "category": "loops",
            "weight": 25
        },
        "logicBlocks": true,
        "variablesBlocks": true,
        "textBlocks": true,
        "listsBlocks": true,
        "functionBlocks": true,
        "breakBlock": true,
        "continueBlock": true,
        "functionsOptions": {
            "useNewFunctions": true,
            "extraFunctionEditorTypes": [
                {
                    "typeName": "game.LedSprite",
                    "label": "LedSprite",
                    "icon": "send",
                    "defaultName": "sprite"
                },
                {
                    "typeName": "Image",
                    "label": "Image",
                    "icon": "image outline",
                    "defaultName": "image"
                }
            ]
        },
        "onStartColor": "#1E90FF",
        "onStartNamespace": "basic",
        "onStartWeight": 54
    },
    "simulator": {
        "autoRun": true,
        "streams": false,
        "aspectRatio": 1.22,
        "parts": true,
        "partsAspectRatio": 0.69,
        "messageSimulators": {
            "robot": {
                "url": "https://microsoft.github.io/microbit-robot/?parentOrigin=$PARENT_ORIGIN$",
                "localHostUrl": "http://localhost:3000/microbit-robot/?parentOrigin=$PARENT_ORIGIN$",
                "aspectRatio": 1.22,
                "permanent": true
            }
        },
        "testSimulatorExtensions": {},
        "boardDefinition": {
            "visual": "microbit",
            "gpioPinBlocks": [
                [
                    "P0"
                ],
                [
                    "P1"
                ],
                [
                    "P2"
                ],
                [
                    "P3"
                ],
                [
                    "P4",
                    "P5",
                    "P6",
                    "P7"
                ],
                [
                    "P8",
                    "P9",
                    "P10",
                    "P11",
                    "P12"
                ],
                [
                    "P16"
                ]
            ],
            "gpioPinMap": {
                "P0": "P0",
                "P1": "P1",
                "P2": "P2",
                "P3": "P3",
                "P4": "P4",
                "P5": "P5",
                "P6": "P6",
                "P7": "P7",
                "P8": "P8",
                "P9": "P9",
                "P10": "P10",
                "P11": "P11",
                "P12": "P12",
                "P13": "P13",
                "P14": "P14",
                "P15": "P15",
                "P16": "P16",
                "P19": "P19",
                "P20": "P20"
            },
            "spiPins": {
                "MOSI": "P15",
                "MISO": "P14",
                "SCK": "P13"
            },
            "i2cPins": {
                "SDA": "P20",
                "SCL": "P19"
            },
            "analogInPins": [
                "P0",
                "P1",
                "P2",
                "P3",
                "P10"
            ],
            "groundPins": [
                "GND"
            ],
            "threeVoltPins": [
                "+3v3"
            ],
            "attachPowerOnRight": true,
            "onboardComponents": [
                "accelerometer",
                "buttonpair",
                "ledmatrix",
                "speaker",
                "bluetooth",
                "thermometer",
                "compass",

                "builtinspeaker",
                "microphone",
                "logotouch",
                "flashlog",

                "v2"
            ],
            "pinStyles": {
                "P0": "croc",
                "P1": "croc",
                "P2": "croc",
                "GND": "croc",
                "+3v3": "croc"
            },
            "marginWhenBreadboarding": [
                0,
                0,
                80,
                0
            ]
        }
    },
    "serial": {
        "nameFilter": "^(mbed Serial Port|DAPLink CMSIS-DAP)",
        "log": true,
        "useEditor": true,
        "editorTheme": {
            "graphBackground": "#d9d9d9",
            "lineColors": [
                "#6633cc",
                "#2C7485",
                "#3454D1",
                "#EF767A",
                "#F46197",
                "#107C10"
            ]
        },
        "vendorId": "0x0d28",
        "productId": "0x0204",
        "rawHID": true
    },
    "appTheme": {
        "accentColor": "#5C005C",
        "logoUrl": "https://microbit.org/",
        "logo": "./static/logo.portrait.white.svg",
        "docsLogo": "./static/logo.square.white.svg",
        "portraitLogo": "./static/logo.square.white.svg",
        "footerLogo": "./static/logo.portrait.black.svg",
        "cardLogo": "./static/icons/apple-touch-icon.png",
        "appLogo": "./static/icons/apple-touch-icon.png",
        "organization": "Microsoft MakeCode",
        "organizationUrl": "https://makecode.com/",
        "organizationLogo": "./static/Microsoft_logo_rgb_W-white_D-square.png",
        "organizationWideLogo": "./static/Microsoft_logo_rgb_W-white_D.png",
        "homeScreenHero": {
            "imageUrl": "/static/herogallery/hero-banner.png",
            "name": "Flashing Heart",
            "url": "/projects/flashing-heart",
            "description": "New? Start here!",
            "cardType": "tutorial"
        },
        "homeScreenHeroGallery": "/hero-banner",
        "homeUrl": "https://makecode.microbit.org/",
        "embedUrl": "https://makecode.microbit.org/",
        "shareUrl": "https://makecode.microbit.org/",
        "privacyUrl": "https://makecode.com/privacy",
        "termsOfUseUrl": "https://makecode.com/termsofuse",
        "githubUrl": "https://github.com/Microsoft/pxt-microbit",
        "boardName": "micro:bit",
        "boardNickname": "micro:bit",
        "driveDisplayName": "MICROBIT",
        "appStoreID": "1092687276",
        "mobileSafariDownloadProtocol": "microbithex://?data",
        "crowdinProject": "makecode",
        "extendEditor": true,
        "extendFieldEditors": true,
        "enableTrace": true,
        "ignoreDocsErrors": false,
        "errorList": true,
        "workspaceSearch": true,
        "allowPackageExtensions": true,
        "addNewTypeScriptFile": true,
        "enabledFeatures": {
            "blocksErrorList": {},
            "aiErrorHelp": {}
        },
        "experiments": [
            "debugExtensionCode",
            "bluetoothUartConsole",
            "bluetoothPartialFlashing",
            "forceEnableAiErrorHelp"
        ],
        "supportedExperiences": [
            "code-eval"
        ],
        "bluetoothUartFilters": [
            {
                "namePrefix": "BBC micro:bit"
            }
        ],
        "docMenu": [
            {
                "name": "Support",
                "path": "https://support.microbit.org/"
            },
            {
                "name": "Reference",
                "path": "/reference"
            },
            {
                "name": "Hardware",
                "path": "/device"
            },
            {
                "name": "Buy",
                "path": "https://microbit.org/buy/"
            }
        ],
        "hasReferenceDocs": true,
        "usbDocs": "/device/usb",
        "hideHomeDetailsVideo": true,
        "invertedMenu": true,
        "coloredToolbox": true,
        "monacoToolbox": true,
        "hasAudio": true,
        "socialOptions": {
            "orgTwitterHandle": "MSMakeCode",
            "hashtags": "MakeCode",
            "discourse": "https://forum.makecode.com/",
            "discourseCategory": "micro:bit"
        },
        "blocklyOptions": {
            "grid": {
                "spacing": 45,
                "length": 7,
                "colour": "rgba(189, 195, 199, 0.30)",
                "snap": false
            }
        },
        "blockColors": {
            "logic": "#00A4A6",
            "loops": "#00AA00",
            "math": "#9400D3",
            "variables": "#DC143C",
            "text": "#B8860B",
            "advanced": "#00272B",
            "functions": "#3455DB",
            "arrays": "#E65722"
        },
        "defaultColorTheme": "microbit-light",
        "highContrastColorTheme": "pxt-high-contrast",
        "blocksCollapsing": true,
        "highContrast": true,
        "greenScreen": true,
        "print": true,
        "selectLanguage": true,
        "availableLocales": [
            "en",
            "ar",
            "bg",
            "ca",
            "cs",
            "cy",
            "da",
            "de",
            "el",
            "es-ES",
            "fi",
            "fr",
            "gn",
            "he",
            "hu",
            "is",
            "it",
            "ja",
            "ko",
            "lo",
            "nl",
            "nb",
            "nn-NO",
            "pl",
            "pt-BR",
            "pt-PT",
            "ru",
            "si-LK",
            "sk",
            "sr",
            "sv-SE",
            "tr",
            "uk",
            "vi",
            "zh-CN",
            "zh-TW"
        ],
        "monacoColors": {
            "editor.background": "#ecf0f1"
        },
        "monacoFieldEditors": [
            "soundeffect-editor",
            "image-editor"
        ],
        "browserDbPrefixes": {
            "1": "v1",
            "2": "v2",
            "3": "v3",
            "4": "v4",
            "5": "v5",
            "6": "v6",
            "7": "v7",
            "8": "v8",
            "9": "v9"
        },
        "editorVersionPaths": {
            "0": "v0"
        },
        "showProjectSettings": true,
        "scriptManager": true,
        "debugger": true,
        "simGifTransparent": "rgba(0,0,0,0)",
        "simGifMaxFrames": 44,
        "simScreenshot": true,
        "simScreenshotMaxUriLength": 300000,
        "simGif": true,
        "simGifWidth": 240,
        "qrCode": true,
        "importExtensionFiles": true,
        "nameProjectFirst": true,
        "githubEditor": true,
        "chooseLanguageRestrictionOnNewProject": true,
        "openProjectNewTab": true,
        "python": true,
        "appFlashingTroubleshoot": "/device/windows-app/troubleshoot",
        "immersiveReader": true,
        "tutorialCodeValidation": true,
        "downloadDialogTheme": {
            "webUSBDeviceNames": ["BBC micro:bit CMSIS-DAP", "DAPLink CMSIS-DAP"],
            "minimumFirmwareVersion": "0249",
            "deviceIcon": "xicon microbit",
            "deviceSuccessIcon": "xicon microbit-check",

            "downloadMenuHelpURL" : "/device/usb",
            "downloadHelpURL" : "/device/usb",
            "troubleshootWebUSBHelpURL": "/device/usb/webusb/troubleshoot",
            "incompatibleHardwareHelpURL": "/device/v2",

            "dragFileImage": "/static/download/transfer.png",
            "connectDeviceImage": "/static/download/connect-microbit.gif",
            "disconnectDeviceImage": "/static/download/full-reset.gif",
            "selectDeviceImage": "/static/download/selecting-microbit.gif",
            "connectionSuccessImage": "/static/download/successfully-paired.png",
            "incompatibleHardwareImage": "/static/download/incompatible.png",
            "usbDeviceForgottenImage": "/static/download/device-forgotten.gif",
            "browserUnpairImage": "/static/download/browser-unpair-image.gif"
        },
        "winAppDeprImage": "/static/winapp.PNG",
        "showWinAppDeprBanner": false,
        "tours": {
            "editor": "/tours/editor-tour"
        },
        "tutorialSimSidebarLangs": [
            "blocks",
            "javascript",
            "python"
        ],
        "preferWebUSBDownload": true,
        "hideReplaceMyCode": true,
        "matchWebUSBDeviceInSim": true,
        "condenseProfile": true,
        "cloudProfileIcon": "/static/profile/microbit-cloud.png",
        "timeMachine": true,
        "timeMachineDiffInterval": 600000,
        "timeMachineSnapshotInterval": 1800000,
        "shareHomepageContent": true,
        "songEditor": true,
        "blocklyKeyboardControlsByDefault": true
    },
    "queryVariants": {
        "hidemenu": {
            "appTheme": {
                "hideMenuBar": true
            }
        },
        "hidelanguage": {
            "appTheme": {
                "selectLanguage": false
            }
        },
        "androidapp": {
            "compile": {
                "webUSB": false
            },
            "appTheme": {
                "disableBlobObjectDownload": true
            }
        },
        "skillsMap=1": {
            "appTheme": {
                "hideReplaceMyCode": false
            }
        },
        "teachertool=1": {
            "appTheme": {
                "hideMenuBar": true,
                "workspaceSearch": true,
                "noReloadOnUpdate": true
            }
        }
    },
    "uploadDocs": true
}
