commit 4f9a269f8582412e1606aecef90f31f0de06826b Author: khodowany Date: Fri Sep 4 19:30:11 2026 -0500 Initial public khodo snapshot diff --git a/.clang-format b/.clang-format new file mode 100644 index 0000000..e384528 --- /dev/null +++ b/.clang-format @@ -0,0 +1 @@ +DisableFormat: true diff --git a/.clangd b/.clangd new file mode 100644 index 0000000..2c1b13d --- /dev/null +++ b/.clangd @@ -0,0 +1,15 @@ +CompileFlags: + CompilationDatabase: build/build_x86_debug + Add: + - -Wall + - -Wextra + +Diagnostics: + ClangTidy: + Remove: ['*'] +--- +If: + PathMatch: (include/vamp_pico/.*|src/vamp_pico/.*) + +CompileFlags: + CompilationDatabase: build/build_pico_debug diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..ded3e22 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,5 @@ +.git +build +dist +node_modules +*.log diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml new file mode 100644 index 0000000..502ec61 --- /dev/null +++ b/.gitea/workflows/ci.yml @@ -0,0 +1,126 @@ +name: ci + +on: + push: + branches: + - master + pull_request: + workflow_dispatch: + +permissions: + contents: read + packages: write + actions: write + +env: + CONAN_HOME: build/build_common/conan_cache + MODULUS_DIRECT: "1" + +jobs: + checks: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: docker/setup-qemu-action@v3 + - uses: docker/setup-buildx-action@v3 + - name: Install build dependencies + run: | + if [ -r /etc/os-release ]; then + . /etc/os-release + fi + if [ "${ID:-}" = "ubuntu" ] && [ -n "${VERSION_CODENAME:-}" ]; then + if [ -f /etc/apt/sources.list.d/ubuntu.sources ]; then + sed -i '/^Types: deb$/a Architectures: amd64' /etc/apt/sources.list.d/ubuntu.sources + printf '%s\n' \ + 'Types: deb' \ + 'URIs: http://ports.ubuntu.com/ubuntu-ports/' \ + "Suites: ${VERSION_CODENAME} ${VERSION_CODENAME}-updates ${VERSION_CODENAME}-backports" \ + 'Components: main universe restricted multiverse' \ + 'Architectures: arm64' \ + 'Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg' \ + '' \ + 'Types: deb' \ + 'URIs: http://ports.ubuntu.com/ubuntu-ports/' \ + "Suites: ${VERSION_CODENAME}-security" \ + 'Components: main universe restricted multiverse' \ + 'Architectures: arm64' \ + 'Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg' \ + > /etc/apt/sources.list.d/ubuntu-arm64.sources + elif [ -f /etc/apt/sources.list ]; then + sed -i 's|^deb http://archive.ubuntu.com/ubuntu|deb [arch=amd64] http://archive.ubuntu.com/ubuntu|' /etc/apt/sources.list + sed -i 's|^deb http://security.ubuntu.com/ubuntu|deb [arch=amd64] http://security.ubuntu.com/ubuntu|' /etc/apt/sources.list + printf '%s\n' \ + "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports ${VERSION_CODENAME} main universe restricted multiverse" \ + "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports ${VERSION_CODENAME}-updates main universe restricted multiverse" \ + "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports ${VERSION_CODENAME}-backports main universe restricted multiverse" \ + "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports ${VERSION_CODENAME}-security main universe restricted multiverse" \ + > /etc/apt/sources.list.d/ubuntu-arm64.list + fi + fi + dpkg --add-architecture arm64 + apt-get update + apt-get install -y --no-install-recommends \ + build-essential \ + ca-certificates \ + cmake \ + curl \ + g++-12 \ + g++-12-aarch64-linux-gnu \ + gcc-12 \ + gcc-12-aarch64-linux-gnu \ + gcc-arm-none-eabi \ + git \ + libdrm-dev \ + libdrm-dev:arm64 \ + libegl-dev \ + libegl-dev:arm64 \ + libgbm-dev \ + libgbm-dev:arm64 \ + libgles-dev \ + libgles-dev:arm64 \ + libglvnd-dev \ + libglvnd-dev:arm64 \ + libnewlib-arm-none-eabi \ + libstdc++-arm-none-eabi-newlib \ + ninja-build \ + pkg-config \ + python3 \ + python3-venv + python3 -m venv build/build_common/ci_python + build/build_common/ci_python/bin/python -m pip install --no-cache-dir conan==2.26.2 + echo "$PWD/build/build_common/ci_python/bin" >> "$GITHUB_PATH" + - name: Restore Conan cache + uses: actions/cache@v4 + with: + path: build/build_common/conan_cache + key: product-vamp-conan-${{ runner.os }}-${{ hashFiles('conanfile.py', 'modulus.json', 'conan/profiles/*') }} + restore-keys: product-vamp-conan-${{ runner.os }}- + - name: Configure native release + run: python3 modulus.py configure --target x86_64_gcc12_release + - name: Build native release + run: python3 modulus.py build --target x86_64_gcc12_release + - name: Fetch Pico SDK + if: ${{ gitea.event_name == 'workflow_dispatch' || (gitea.event_name == 'push' && gitea.ref == 'refs/heads/master') }} + env: + VAMP_PICO_SDK_VERSION: "2.3.0" + run: | + mkdir -p build/build_common + git clone \ + --depth 1 \ + --branch "$VAMP_PICO_SDK_VERSION" \ + --recurse-submodules \ + --shallow-submodules \ + https://github.com/raspberrypi/pico-sdk.git \ + build/build_common/pico-sdk + - name: Configure Pico LSP database + if: ${{ gitea.event_name == 'workflow_dispatch' || (gitea.event_name == 'push' && gitea.ref == 'refs/heads/master') }} + run: PICO_SDK_PATH="$PWD/build/build_common/pico-sdk" python3 modulus.py lsp --no-build-targets --database pico + - name: Create package + if: ${{ gitea.event_name == 'workflow_dispatch' || (gitea.event_name == 'push' && gitea.ref == 'refs/heads/master') }} + run: PICO_SDK_PATH="$PWD/build/build_common/pico-sdk" python3 modulus.py package --version latest --update + - name: Upload latest package + if: ${{ gitea.event_name == 'workflow_dispatch' || (gitea.event_name == 'push' && gitea.ref == 'refs/heads/master') }} + env: + PACKAGE_REGISTRY_USER: ${{ secrets.CONAN_USER }} + PACKAGE_REGISTRY_TOKEN: ${{ secrets.CONAN_TOKEN }} + run: python3 package/scripts/publish_latest_generic_package.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..bfba7e9 --- /dev/null +++ b/.gitignore @@ -0,0 +1,17 @@ +build/ + +**/__pycache__/ +*.pyc +*.pyo +*.pyd +*.log + +package/CMakeCache.txt +package/CMakeFiles/ +package/metadata/ +package/.ninja_* +package/*.json +package/*.cmake +package/*.ninja +package/*.sh +package/*-smoke diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..56566a2 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,14 @@ +cmake_minimum_required(VERSION 3.25) + +set(VAMP_PROJECT_VERSION 0.1.0) + +include(cmake/vamp_options.cmake) + +if(VAMP_PICO_FIRMWARE_PROJECT) + include(cmake/pico.cmake) + return() +endif() + +project(product-vamp VERSION ${VAMP_PROJECT_VERSION} LANGUAGES CXX) + +include(cmake/zero.cmake) diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..6f93603 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 Khodo + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..bac2e39 --- /dev/null +++ b/README.md @@ -0,0 +1,88 @@ +# Product Vamp + +Product Vamp is a two-device sheet-music appliance. + +- Raspberry Pi Zero 2 W hosts the control Wi-Fi AP, runs the display/control service in Docker, and drives a Waveshare Zero-DISP-7A 1024x600 touch display. +- Raspberry Pi Pico 2 W runs UF2 firmware for a Waveshare 2-inch capacitive touch LCD and sends menu/page commands over the Zero-hosted AP. + +The Zero imports generated score assets into SQLite through Noto at startup. Runtime navigation and rendering use Ligo for the HTTP API, Luma for touch UI rendering, and Modulus for shared build/runtime utilities. + +Pico controls: + +- Tap: next menu item or next score page. +- Double tap: previous menu item or previous score page. +- Tap and hold: select the highlighted mode/song/part/practice row/key, or return from score view to the previous menu. + +## Build + +Configure and build the native development target: + +```sh +python3 modulus.py configure +python3 modulus.py build +``` + +Release verification: + +```sh +python3 modulus.py configure --target x86_64_gcc12_release +python3 modulus.py build --target x86_64_gcc12_release +``` + +Configure/build can read public packages anonymously from the khodo Conan registry. + +Refresh clangd compile databases, including the Pico firmware database, with: + +```sh +python3 modulus.py lsp +``` + +When running directly outside the generated Modulus Docker image, set `PICO_SDK_PATH` before refreshing the Pico database. + +## Package + +Product packaging targets Raspberry Pi OS/Debian trixie on ARM64 and optionally builds Pico firmware. Set `PICO_SDK_PATH` when building the firmware artifact: + +```sh +PICO_SDK_PATH=/path/to/pico-sdk python3 modulus.py package --version latest --update +``` + +The package command creates: + +```text +build/packages/product-vamp-latest-arm_64_gcc12_release.tar.gz +build/packages/product-vamp-latest-arm_64_gcc12_release.tar.gz.sha256 +``` + +The tarball contains the Zero Docker archive, Pi install scripts, generated score assets, and Pico UF2 firmware. + +Publishing the rolling generic package requires credentials only for upload: + +```sh +PACKAGE_REGISTRY_USER= \ +PACKAGE_REGISTRY_TOKEN= \ +python3 package/scripts/publish_latest_generic_package.py +``` + +Artifacts are published to the khodo generic package registry. + +## Score Assets + +Source score JSON lives in `data/`. Generated score JSON is not committed. To inspect generated assets without building the full package, run: + +```sh +python3 -m generator --data-dir data --output-dir /tmp/product-vamp-generated --static-assets-dir package/assets --clean --check +``` + +The `--check` path compares generation invariants against `data/expected/performance_summary.json`. + +Bundled third-party font assets live in `package/assets/fonts/petaluma`. Petaluma is from Steinberg and is distributed under the SIL Open Font License; the package keeps `OFL.txt` next to the font files. If the Pico bitmap font needs to be refreshed after changing the bundled UI font, run: + +```sh +python3 tools/generate_pico_font.py +python3 tools/generate_pico_font.py --check +``` + +## License + +Product Vamp is released under the MIT License. Bundled third-party fonts keep their own licenses next to the font files. diff --git a/SETUP.md b/SETUP.md new file mode 100644 index 0000000..6c7d25a --- /dev/null +++ b/SETUP.md @@ -0,0 +1,54 @@ +# Product Vamp Device Setup + +## Raspberry Pi Zero 2 W + +Flash Raspberry Pi OS Lite 64-bit, enable SSH, and boot the device. + +Install the package tarball from Gitea or build one locally: + +```sh +python3 modulus.py package +``` + +Copy the tarball to the Zero, verify its `.sha256`, unpack it anywhere, and run: + +```sh +sudo zero/install-zero.sh +``` + +The installer loads `zero/product-vamp-zero-linux-arm64.docker.tar`, installs `/etc/product-vamp/vamp.json` if missing, configures NetworkManager AP mode, and enables the systemd units. + +On reinstalls, the installer skips apt entirely when the required OS packages are already present. If packages are missing, the Zero needs upstream internet before the installer can finish provisioning Docker, NetworkManager, and SQLite. + +Product Vamp owns `tty1` while the display service is running so the DISP-7A shows the appliance UI instead of the Raspberry Pi OS Lite login console. Use SSH for normal administration. `tty2` is enabled as the local fallback console. + +Defaults: + +- SSID: `Vamp Control` +- Passphrase: `vamp-control` +- Zero IP: `192.168.42.1` +- API: `http://192.168.42.1:8080` + +For API-only quick checks, set `runtime.headless` to `true` or run `vamp-zero --once` from a development build. + +Score inputs are tracked under `data/`. The build/package step runs the Python generator and packages the generated songs and practice variants into the Zero image automatically; generated JSON under the build directory does not need to be copied by hand. + +## Raspberry Pi Pico 2 W + +Hold BOOTSEL while plugging the Pico into USB, then copy: + +```text +pico/product-vamp-pico2w.uf2 +``` + +to the mounted `RPI-RP2` drive. + +The default firmware connects to SSID `Vamp Control` with passphrase `vamp-control`, then talks to `192.168.42.1:8080`. + +The Pico screen is landscape. Its top bar is blue while connecting, yellow while retrying or when the Zero API is unavailable, and green when the Zero responds. The area below the bar stays blank until a performance or practice score is active, then it shows the title, selected part or active practice key, and page count. + +Controls: + +- Tap: next menu item or next page. +- Double tap: previous menu item or previous page. +- Tap and hold: select the highlighted menu row, or return from score view to the previous menu. diff --git a/TECHNICAL_GUIDE.md b/TECHNICAL_GUIDE.md new file mode 100644 index 0000000..3ac70ed --- /dev/null +++ b/TECHNICAL_GUIDE.md @@ -0,0 +1,94 @@ +# Product Vamp Technical Guide + +## Repository Shape + +Product Vamp follows the Modulus product layout used by the khodo repos: + +- `include/vamp_zero` and `src/vamp_zero`: Pi Zero C++23 application. +- `include/vamp_pico` and `src/vamp_pico`: Pi Pico 2 W C++17 firmware. +- `include/vamp_protocol` and `src/vamp_protocol`: shared route and page-command contracts used by both devices. +- `cmake/pico.cmake` and `cmake/zero.cmake`: device-specific build definitions selected by the root `CMakeLists.txt`. +- `include/vamp_style.hpp`, `include/vamp_style/font.hpp`, and `src/vamp_style`: shared color palette, Petaluma font paths, and Pico bitmap font data. +- `data`: authored source score JSON for performance songs and practice exercises. +- `generator`: build-time Python preprocessing for performance arrangements and practice variants. +- `package`: generic bundle inputs, scripts, config, migrations, static font assets, and device install files. + +## Zero Runtime + +The Zero process can run headless for local/API quick checks or with Luma for the Waveshare Zero-DISP-7A display. The API is plain HTTP on the private AP: + +- `GET /api/status` +- `GET /api/remote/display` +- `POST /api/remote/heartbeat` +- `POST /api/remote/next` +- `POST /api/remote/previous` +- `POST /api/remote/select` + +Legacy `/api/page/next` and `/api/page/previous` routes are still accepted for simple manual checks. + +The AP setup pins NetworkManager to 2.4 GHz channel 6 with WPA2/RSN and CCMP ciphers so the Pico W can join using `CYW43_AUTH_WPA2_AES_PSK`. + +On Raspberry Pi OS Lite, the installed display service owns `tty1`, conflicts with `getty@tty1.service`, and starts the Zero container through `product-vamp-start-zero`. The wrapper switches to the display VT when `chvt` is available and runs `vamp-zero` inside the container through `setsid --wait --ctty` with `/dev/tty1` as stdin, giving raylib's DRM backend a real virtual terminal while keeping Docker attached to the long-running display process. SSH remains the normal admin path and `tty2` is enabled as the fallback local console. + +At startup the Zero scans `share/product-vamp/songs/*.json` and `share/product-vamp/practice////.json`, parses generated score JSON, imports both catalogs into SQLite with Noto, then reloads runtime menu state from the database. Runtime navigation and rendering use that loaded Noto-backed state instead of rescanning asset folders. The UI supports a top-level mode menu, Performance song/part/score menus, and Practice type/lesson/exercise/key/score menus. Melody practice offers key selection by choosing a pre-generated score variant; chord practice skips key selection and renders the authored score key directly. The score renderer is intentionally local and compact for now: it draws title/composer/part metadata, systems, measures, enlarged chord symbols and section labels, Petaluma SMuFL noteheads/rests/flags/dots/accidentals, simple vector stems/ties, and lyrics. Slash notation is represented explicitly with `notehead: "slash"` in generated JSON. +Petaluma music symbols are placed from SMuFL bounding boxes and stem/flag anchors instead of rough font-size offsets, which keeps noteheads, rests, dots, accidentals, and eighth-note flags aligned to staff-space coordinates. + +## Score Generation + +The build runs `python3 -m generator` against `data/` and writes build-only assets under the CMake binary tree. Performance source songs become acoustic, electric, and vocal arrangements. Melody practice sources are emitted in all 12 keys at build time. Chord practice sources are emitted once in their authored key. Generated JSON is sanitized so packaged scores do not contain tab positions or fingering fields; guitar playability logic is used only inside the arrangement generator. + +Generator checks compare the generated performance summary against `data/expected/performance_summary.json`. The summary stores compatibility invariants such as section layout, chord-label placement, slash-section placement, and vocal timing without committing the generated score files themselves. Refresh that file only when an intentional arrangement-logic change should become the new baseline. + +## Pico Runtime + +The Pico firmware uses the Pico SDK C++ stack and the `pico2_w` board definition. It initializes the ST7789T3 display over SPI, reads the CST816D touch controller over I2C, joins the Zero AP, polls `/api/remote/display`, and sends HTTP POST commands for gestures. + +The display is rotated 90 degrees clockwise into a 320x240 landscape UI. The top status bar uses the shared palette: + +- Blue: connecting. +- Yellow: retrying or remote request failed. +- Green: connected to the Zero API. + +The body stays blank until a performance or practice score is active, then it shows the active title, selected part or active practice key, and page count. Touch controls are tap for next, double tap for previous, and tap-and-hold for select. +The Pico text renderer uses an antialiased bitmap atlas generated from `package/assets/fonts/petaluma/PetalumaScript.otf`; regenerate it with `python3 tools/generate_pico_font.py` after font or atlas-size changes. The generated atlas includes ASCII kerning pairs so display text such as `VAMP` uses the same spacing as the source font. + +The root `CMakeLists.txt` is also the Pico firmware entrypoint when configured with `-DVAMP_PICO_FIRMWARE_PROJECT=ON`. That mode returns before the Zero/Linux targets are declared, so the Pico build can use the embedded ARM toolchain cleanly. + +Build defaults can be overridden at package time with CMake cache variables: + +- `VAMP_PICO_WIFI_SSID` +- `VAMP_PICO_WIFI_PASSPHRASE` +- `VAMP_ZERO_HOST` +- `VAMP_ZERO_PORT` + +## Packaging + +Modulus packages the CMake install stage. Product Vamp uses `install_prefix` `.` so the registry artifact is a top-level multi-device bundle rather than a root filesystem overlay. + +The ARM64 package target builds: + +- `zero/product-vamp-zero-linux-arm64.docker.tar` +- `pico/product-vamp-pico2w.uf2` +- `manifest.json` + +Building the full package requires Docker/buildx, the ARM embedded GCC toolchain, and the Pico SDK. CI passes `PICO_SDK_PATH` directly. The generated Modulus Docker image also carries the pinned Pico SDK at `/opt/pico-sdk` for local package builds. The Zero Docker runtime targets Debian trixie to match current Raspberry Pi OS and the ARM64 dependency binaries, and includes `util-linux` for the `setsid --wait --ctty` launch path. + +Generated score assets are created during CMake build/package and copied into the Zero image context. Static font assets remain tracked under `package/assets/fonts`. + +CI builds the generic artifact with `python3 modulus.py package --version latest`, then `package/scripts/publish_latest_generic_package.py` replaces the Gitea generic package version `latest` and deletes older Product Vamp generic package versions. + +## Shared Protocol + +The Pico firmware does not link Zero-side Linux application libraries such as Ligo, Luma, or Noto. Those remain Zero-side dependencies: Ligo serves the HTTP API, Luma renders the Zero display, and Noto owns SQLite persistence. Cross-device code should stay in `vamp_protocol` and `vamp_style`: plain C++17 with no OS, allocator-heavy, or Zero-only dependencies. + +Luma owns the application shell and UI control tree. The score renderer uses Luma primitives for layout, staff lines, and simple vector strokes, and uses a small score-local Raylib font cache for Petaluma SMuFL glyphs until Luma grows first-class codepoint loading. + +## LSP + +`.clangd` points native Zero and shared protocol code at `build/build_x86_debug`, and Pico code at `build/build_pico_debug`. Refresh both compile databases with: + +```sh +python3 modulus.py lsp +``` + +The `tooling.lsp` section in `modulus.json` owns the Pico CMake configure. It unsets host compiler variables before configuring the Pico SDK project so clangd sees the embedded ARM toolchain. When running directly outside the generated Modulus Docker image, set `PICO_SDK_PATH` before refreshing the Pico database. diff --git a/cmake/pico.cmake b/cmake/pico.cmake new file mode 100644 index 0000000..6021806 --- /dev/null +++ b/cmake/pico.cmake @@ -0,0 +1,68 @@ +set(PICO_BOARD pico2_w CACHE STRING "Pico board") + +if(DEFINED ENV{PICO_SDK_PATH} AND NOT PICO_SDK_PATH) + set(PICO_SDK_PATH $ENV{PICO_SDK_PATH}) +endif() + +set(PICO_SDK_FETCH_FROM_GIT OFF CACHE BOOL "Fetch Raspberry Pi Pico SDK from git") +set(PICO_SDK_FETCH_FROM_GIT_TAG "${VAMP_PICO_SDK_VERSION}" CACHE STRING "Pico SDK git tag to fetch") + +if(NOT PICO_SDK_PATH AND PICO_SDK_FETCH_FROM_GIT) + include(FetchContent) + FetchContent_Declare( + pico_sdk + GIT_REPOSITORY https://github.com/raspberrypi/pico-sdk.git + GIT_TAG ${PICO_SDK_FETCH_FROM_GIT_TAG} + ) + FetchContent_Populate(pico_sdk) + set(PICO_SDK_PATH ${pico_sdk_SOURCE_DIR}) +endif() + +if(NOT PICO_SDK_PATH) + message(FATAL_ERROR "PICO_SDK_PATH is not set and PICO_SDK_FETCH_FROM_GIT is OFF") +endif() + +get_filename_component(PICO_SDK_PATH "${PICO_SDK_PATH}" REALPATH BASE_DIR "${CMAKE_BINARY_DIR}") +if(NOT EXISTS ${PICO_SDK_PATH}/pico_sdk_init.cmake) + message(FATAL_ERROR "PICO_SDK_PATH does not contain pico_sdk_init.cmake: ${PICO_SDK_PATH}") +endif() + +include(${PICO_SDK_PATH}/pico_sdk_init.cmake) + +project(product-vamp-pico VERSION ${VAMP_PROJECT_VERSION} LANGUAGES C CXX ASM) + +set(CMAKE_C_STANDARD 11) +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +pico_sdk_init() + +add_executable(product-vamp-pico2w + src/vamp_style.cpp + src/vamp_style/font.cpp + src/vamp_pico/display.cpp + src/vamp_pico/http_client.cpp + src/vamp_pico/main.cpp + src/vamp_pico/touch.cpp + src/vamp_protocol/page_control.cpp +) +target_include_directories(product-vamp-pico2w PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR}/include + ${CMAKE_CURRENT_SOURCE_DIR}/include/vamp_pico/capi +) +target_compile_definitions(product-vamp-pico2w PRIVATE + VAMP_PICO_WIFI_SSID="${VAMP_PICO_WIFI_SSID}" + VAMP_PICO_WIFI_PASSPHRASE="${VAMP_PICO_WIFI_PASSPHRASE}" + VAMP_ZERO_HOST="${VAMP_ZERO_HOST}" + VAMP_ZERO_PORT=${VAMP_ZERO_PORT} +) +target_link_libraries(product-vamp-pico2w PRIVATE + pico_stdlib + hardware_i2c + hardware_spi + pico_cyw43_arch_lwip_threadsafe_background +) + +pico_enable_stdio_usb(product-vamp-pico2w 1) +pico_enable_stdio_uart(product-vamp-pico2w 0) +pico_add_extra_outputs(product-vamp-pico2w) diff --git a/cmake/vamp_options.cmake b/cmake/vamp_options.cmake new file mode 100644 index 0000000..78eb585 --- /dev/null +++ b/cmake/vamp_options.cmake @@ -0,0 +1,11 @@ +option(VAMP_PICO_FIRMWARE_PROJECT "Configure this CMake invocation as the Pi Pico 2 W firmware project" OFF) +option(VAMP_BUILD_PICO_FIRMWARE "Build the Pi Pico 2 W UF2 firmware artifact" OFF) +option(VAMP_BUILD_ZERO_IMAGE "Build the Pi Zero 2 W Docker image archive artifact" OFF) +option(BUILD_TESTING "Compatibility option accepted by Modulus; Product Vamp does not currently define tests" OFF) + +set(VAMP_PICO_SDK_VERSION "2.3.0" CACHE STRING "Raspberry Pi Pico SDK git tag used when fetching the SDK") +set(VAMP_PICO_WIFI_SSID "Vamp Control" CACHE STRING "Default Pico Wi-Fi SSID") +set(VAMP_PICO_WIFI_PASSPHRASE "vamp-control" CACHE STRING "Default Pico Wi-Fi passphrase") +set(VAMP_ZERO_HOST "192.168.42.1" CACHE STRING "Default Zero control host for Pico firmware") +set(VAMP_ZERO_PORT "8080" CACHE STRING "Default Zero control port for Pico firmware") +set(VAMP_ZERO_IMAGE_TAG "product-vamp-zero:dev" CACHE STRING "Docker image tag embedded in package metadata") diff --git a/cmake/zero.cmake b/cmake/zero.cmake new file mode 100644 index 0000000..797742d --- /dev/null +++ b/cmake/zero.cmake @@ -0,0 +1,211 @@ +include(GNUInstallDirs) + +set(CMAKE_CXX_STANDARD 23) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_CXX_EXTENSIONS OFF) + +find_package(modulus CONFIG REQUIRED) +find_package(Threads REQUIRED) +find_package(ligo CONFIG REQUIRED) +find_package(noto CONFIG REQUIRED) +find_package(luma CONFIG REQUIRED) +find_package(Python3 COMPONENTS Interpreter REQUIRED) + +execute_process( + COMMAND git rev-parse --short=12 HEAD + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + OUTPUT_VARIABLE VAMP_GIT_SHA + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_QUIET +) +if(NOT VAMP_GIT_SHA) + set(VAMP_GIT_SHA dev) +endif() + +set(VAMP_STYLE_SOURCES + src/vamp_style.cpp + src/vamp_style/font.cpp +) + +add_library(vamp-style STATIC ${VAMP_STYLE_SOURCES}) +target_include_directories(vamp-style PUBLIC + ${CMAKE_CURRENT_SOURCE_DIR}/include +) +target_compile_features(vamp-style PUBLIC cxx_std_17) + +set(VAMP_PROTOCOL_SOURCES + src/vamp_protocol/page_control.cpp +) + +add_library(vamp-protocol STATIC ${VAMP_PROTOCOL_SOURCES}) +target_include_directories(vamp-protocol PUBLIC + ${CMAKE_CURRENT_SOURCE_DIR}/include +) +target_compile_features(vamp-protocol PUBLIC cxx_std_17) + +set(VAMP_CORE_SOURCES + src/vamp_zero/app.cpp + src/vamp_zero/color.cpp + src/vamp_zero/config.cpp + src/vamp_zero/database.cpp + src/vamp_zero/errors.cpp + src/vamp_zero/library.cpp + src/vamp_zero/page_control.cpp + src/vamp_zero/portal.cpp + src/vamp_zero/score.cpp + src/vamp_zero/types.cpp + src/vamp_zero/ui.cpp +) + +add_library(vamp-zero-core STATIC ${VAMP_CORE_SOURCES}) +target_include_directories(vamp-zero-core PUBLIC + ${CMAKE_CURRENT_SOURCE_DIR}/include +) +target_compile_features(vamp-zero-core PUBLIC cxx_std_23) +target_compile_definitions(vamp-zero-core PUBLIC + VAMP_VERSION="${PROJECT_VERSION}" + VAMP_GIT_SHA="${VAMP_GIT_SHA}" +) +target_link_libraries(vamp-zero-core PUBLIC + vamp-style + vamp-protocol + modulus::modulus + modulus::boost_json + modulus::openssl + Threads::Threads + ligo::ligo + noto::noto + luma::luma +) + +add_executable(vamp-zero src/vamp_zero/main.cpp) +target_compile_features(vamp-zero PRIVATE cxx_std_23) +target_link_libraries(vamp-zero PRIVATE vamp-zero-core) + +set(VAMP_BUNDLE_DIR ${CMAKE_CURRENT_BINARY_DIR}/bundle) +set(VAMP_MANIFEST ${VAMP_BUNDLE_DIR}/manifest.json) +configure_file(package/manifest.json.in ${VAMP_MANIFEST} @ONLY) + +file(GLOB_RECURSE VAMP_GENERATOR_INPUTS CONFIGURE_DEPENDS + ${CMAKE_CURRENT_SOURCE_DIR}/data/*.json + ${CMAKE_CURRENT_SOURCE_DIR}/data/**/*.json + ${CMAKE_CURRENT_SOURCE_DIR}/generator/*.py + ${CMAKE_CURRENT_SOURCE_DIR}/generator/**/*.py + ${CMAKE_CURRENT_SOURCE_DIR}/package/assets/fonts/* + ${CMAKE_CURRENT_SOURCE_DIR}/package/assets/fonts/**/* +) +set(VAMP_GENERATED_ASSETS_DIR ${CMAKE_CURRENT_BINARY_DIR}/generated-assets) +set(VAMP_GENERATED_ASSETS_STAMP ${CMAKE_CURRENT_BINARY_DIR}/generated-assets.stamp) +add_custom_command( + OUTPUT ${VAMP_GENERATED_ASSETS_STAMP} + COMMAND ${Python3_EXECUTABLE} + -m generator + --data-dir ${CMAKE_CURRENT_SOURCE_DIR}/data + --output-dir ${VAMP_GENERATED_ASSETS_DIR} + --static-assets-dir ${CMAKE_CURRENT_SOURCE_DIR}/package/assets + --clean + --check + COMMAND ${CMAKE_COMMAND} -E touch ${VAMP_GENERATED_ASSETS_STAMP} + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + DEPENDS ${VAMP_GENERATOR_INPUTS} + VERBATIM +) +add_custom_target(vamp-generated-assets ALL DEPENDS ${VAMP_GENERATED_ASSETS_STAMP}) + +install(TARGETS vamp-zero + RUNTIME DESTINATION zero/bin +) +install(FILES package/config/vamp.example.json DESTINATION zero/config) +install(DIRECTORY ${VAMP_GENERATED_ASSETS_DIR}/ DESTINATION zero/share/product-vamp) +install(DIRECTORY package/migrations/ DESTINATION zero/share/product-vamp/migrations) +install(PROGRAMS + package/zero/install-zero.sh + package/zero/start-ap.sh + package/zero/start-zero.sh + DESTINATION zero +) +install(FILES + package/zero/product-vamp-ap.service + package/zero/product-vamp-zero.service + DESTINATION zero/systemd +) +install(FILES package/pico/wiring.md DESTINATION pico) +install(FILES ${VAMP_MANIFEST} DESTINATION .) + +if(VAMP_BUILD_ZERO_IMAGE OR VAMP_BUILD_PICO_FIRMWARE) + find_program(BASH_EXECUTABLE bash REQUIRED) +endif() + +if(VAMP_BUILD_ZERO_IMAGE) + find_program(DOCKER_EXECUTABLE docker REQUIRED) + + set(VAMP_ZERO_IMAGE_CONTEXT ${CMAKE_CURRENT_BINARY_DIR}/zero-image-context) + set(VAMP_ZERO_IMAGE_TAR ${CMAKE_CURRENT_BINARY_DIR}/product-vamp-zero-linux-arm64.docker.tar) + + add_custom_command( + OUTPUT ${VAMP_ZERO_IMAGE_TAR} + COMMAND ${CMAKE_COMMAND} -E rm -rf ${VAMP_ZERO_IMAGE_CONTEXT} + COMMAND ${CMAKE_COMMAND} -E make_directory ${VAMP_ZERO_IMAGE_CONTEXT}/usr/bin + COMMAND ${CMAKE_COMMAND} -E make_directory ${VAMP_ZERO_IMAGE_CONTEXT}/usr/share/product-vamp + COMMAND ${CMAKE_COMMAND} -E copy $ ${VAMP_ZERO_IMAGE_CONTEXT}/usr/bin/vamp-zero + COMMAND ${CMAKE_COMMAND} -E copy package/zero/Dockerfile ${VAMP_ZERO_IMAGE_CONTEXT}/Dockerfile + COMMAND ${CMAKE_COMMAND} -E copy_directory ${VAMP_GENERATED_ASSETS_DIR} ${VAMP_ZERO_IMAGE_CONTEXT}/usr/share/product-vamp + COMMAND ${CMAKE_COMMAND} -E make_directory ${VAMP_ZERO_IMAGE_CONTEXT}/usr/share/product-vamp/config + COMMAND ${CMAKE_COMMAND} -E copy package/config/vamp.example.json ${VAMP_ZERO_IMAGE_CONTEXT}/usr/share/product-vamp/config/vamp.example.json + COMMAND ${CMAKE_COMMAND} -E copy_directory package/migrations ${VAMP_ZERO_IMAGE_CONTEXT}/usr/share/product-vamp/migrations + COMMAND ${BASH_EXECUTABLE} package/scripts/build_zero_image.sh ${VAMP_ZERO_IMAGE_CONTEXT} ${VAMP_ZERO_IMAGE_TAR} ${VAMP_ZERO_IMAGE_TAG} + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + DEPENDS + vamp-zero + package/scripts/build_zero_image.sh + package/zero/Dockerfile + package/config/vamp.example.json + package/migrations/001_foundation.sql + package/migrations/002_song_import_metadata.sql + package/migrations/003_practice_catalog.sql + package/migrations/004_practice_hierarchy.sql + ${VAMP_GENERATED_ASSETS_STAMP} + VERBATIM + ) + add_custom_target(vamp-zero-image ALL DEPENDS ${VAMP_ZERO_IMAGE_TAR}) + install(FILES ${VAMP_ZERO_IMAGE_TAR} DESTINATION zero) +endif() + +if(VAMP_BUILD_PICO_FIRMWARE) + set(VAMP_PICO_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/pico-build) + set(VAMP_PICO_UF2 ${CMAKE_CURRENT_BINARY_DIR}/product-vamp-pico2w.uf2) + file(GLOB VAMP_PICO_SOURCES CONFIGURE_DEPENDS + ${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt + ${CMAKE_CURRENT_SOURCE_DIR}/cmake/pico.cmake + ${CMAKE_CURRENT_SOURCE_DIR}/cmake/vamp_options.cmake + ${CMAKE_CURRENT_SOURCE_DIR}/include/*.hpp + ${CMAKE_CURRENT_SOURCE_DIR}/include/vamp_style/*.hpp + ${CMAKE_CURRENT_SOURCE_DIR}/include/vamp_pico/*.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/vamp_pico/capi/*.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/vamp_pico/*.hpp + ${CMAKE_CURRENT_SOURCE_DIR}/include/vamp_protocol/*.hpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/vamp_style.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/vamp_style/*.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/vamp_pico/*.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/vamp_protocol/*.cpp + ) + add_custom_command( + OUTPUT ${VAMP_PICO_UF2} + COMMAND ${BASH_EXECUTABLE} + package/scripts/build_pico_firmware.sh + ${VAMP_PICO_BUILD_DIR} + ${VAMP_PICO_UF2} + ${VAMP_PICO_SDK_VERSION} + "${VAMP_PICO_WIFI_SSID}" + "${VAMP_PICO_WIFI_PASSPHRASE}" + "${VAMP_ZERO_HOST}" + "${VAMP_ZERO_PORT}" + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + DEPENDS + package/scripts/build_pico_firmware.sh + ${VAMP_PICO_SOURCES} + VERBATIM + ) + add_custom_target(vamp-pico-firmware ALL DEPENDS ${VAMP_PICO_UF2}) + install(FILES ${VAMP_PICO_UF2} DESTINATION pico) +endif() diff --git a/conan/profiles/arm_64_gcc12_release b/conan/profiles/arm_64_gcc12_release new file mode 100644 index 0000000..64388fb --- /dev/null +++ b/conan/profiles/arm_64_gcc12_release @@ -0,0 +1,5 @@ +include(../../build/build_tools/conan/profiles/arm_64_gcc12_release) + +[conf] +tools.build:jobs=2 +tools.build:compiler_executables={"c": "/usr/bin/aarch64-linux-gnu-gcc-12", "cpp": "/usr/bin/aarch64-linux-gnu-g++-12"} diff --git a/conan/profiles/x86_64_gcc12_debug b/conan/profiles/x86_64_gcc12_debug new file mode 100644 index 0000000..ea64e94 --- /dev/null +++ b/conan/profiles/x86_64_gcc12_debug @@ -0,0 +1,4 @@ +include(../../build/build_tools/conan/profiles/x86_64_gcc12_debug) + +[conf] +tools.build:jobs=2 diff --git a/conan/profiles/x86_64_gcc12_release b/conan/profiles/x86_64_gcc12_release new file mode 100644 index 0000000..62d82e6 --- /dev/null +++ b/conan/profiles/x86_64_gcc12_release @@ -0,0 +1,4 @@ +include(../../build/build_tools/conan/profiles/x86_64_gcc12_release) + +[conf] +tools.build:jobs=2 diff --git a/conanfile.py b/conanfile.py new file mode 100644 index 0000000..232f8dd --- /dev/null +++ b/conanfile.py @@ -0,0 +1,90 @@ +import conan +import conan.tools.cmake + +class product_vamp_conan(conan.ConanFile): + name = "product-vamp" + version = "latest" + description = "Two-device sheet-music display and guitar remote" + license = "MIT" + package_type = "application" + settings = "os", "arch", "compiler", "build_type" + options = { + "with_tests": [ + True, + False, + ], + } + default_options = { + "with_tests": False, + } + python_requires = "modulus/latest" + exports = "modulus.json" + exports_sources = ( + "CMakeLists.txt", + "cmake/*.cmake", + "data/*.json", + "data/**/*.json", + "generator/*.py", + "generator/**/*.py", + "include/*.hpp", + "include/vamp_style/*.hpp", + "include/vamp_pico/*.h", + "include/vamp_pico/capi/*.h", + "include/vamp_pico/*.hpp", + "include/vamp_protocol/*.hpp", + "include/vamp_zero/*.hpp", + "package/assets/*", + "package/assets/**/*", + "package/config/*.json", + "package/manifest.json.in", + "package/migrations/*.sql", + "package/pico/*", + "package/scripts/*.py", + "package/scripts/*.sh", + "package/zero/*", + "src/vamp_style.cpp", + "src/vamp_style/*.cpp", + "src/vamp_pico/*.cpp", + "src/vamp_protocol/*.cpp", + "src/vamp_zero/*.cpp", + ) + + def requirements(self): + self.requires( + str(self.python_requires["modulus"].ref), + transitive_headers=True, + transitive_libs=True, + ) + for reference in ( + "ligo/latest", + "noto/latest", + "luma/latest", + ): + self.requires( + reference, + transitive_headers=True, + transitive_libs=True, + ) + + def generate(self): + dependencies = conan.tools.cmake.CMakeDeps(self) + dependencies.generate() + toolchain = conan.tools.cmake.CMakeToolchain(self) + if hasattr(toolchain, "user_presets_path"): + toolchain.user_presets_path = False + toolchain.generate() + + def build(self): + cmake = conan.tools.cmake.CMake(self) + cmake.configure() + cmake.build() + + def package_id(self): + self.info.options.rm_safe("with_tests") + + def package(self): + cmake = conan.tools.cmake.CMake(self) + cmake.install() + + def package_info(self): + self.cpp_info.bindirs = ["zero/bin"] diff --git a/data/expected/performance_summary.json b/data/expected/performance_summary.json new file mode 100644 index 0000000..d75ff00 --- /dev/null +++ b/data/expected/performance_summary.json @@ -0,0 +1,12971 @@ +{ + "autumn-leaves-acoustic.json": { + "title": "Autumn Leaves", + "composer": "Joseph Kosma / Johnny Mercer / Jaques Prevert", + "key_signature": "F", + "part_type": "acoustic", + "measure_count": 176, + "section_labels": [ + { + "measure": 1, + "label": "Rhythm Lead-in" + }, + { + "measure": 9, + "label": "Vocal Melody" + }, + { + "measure": 41, + "label": "Guitar Melody" + }, + { + "measure": 73, + "label": "Guitar Solo" + }, + { + "measure": 105, + "label": "Guitar Solo" + }, + { + "measure": 137, + "label": "Vocal Melody" + }, + { + "measure": 169, + "label": "Ending" + } + ], + "measures": [ + { + "measure": 1, + "section_label": "Rhythm Lead-in", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0 + }, + { + "measure": 2, + "section_label": "", + "chord_symbols": [ + "A7b9" + ], + "slash_count": 0 + }, + { + "measure": 3, + "section_label": "", + "chord_symbols": [ + "D-7", + "G7" + ], + "slash_count": 0 + }, + { + "measure": 4, + "section_label": "", + "chord_symbols": [ + "C-7", + "F7" + ], + "slash_count": 0 + }, + { + "measure": 5, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0 + }, + { + "measure": 6, + "section_label": "", + "chord_symbols": [ + "A7b9" + ], + "slash_count": 0 + }, + { + "measure": 7, + "section_label": "", + "chord_symbols": [ + "D-" + ], + "slash_count": 0 + }, + { + "measure": 8, + "section_label": "", + "chord_symbols": [], + "slash_count": 0 + }, + { + "measure": 9, + "section_label": "Vocal Melody", + "chord_symbols": [ + "G-7" + ], + "slash_count": 0 + }, + { + "measure": 10, + "section_label": "", + "chord_symbols": [ + "C7" + ], + "slash_count": 0 + }, + { + "measure": 11, + "section_label": "", + "chord_symbols": [ + "Fmaj7" + ], + "slash_count": 0 + }, + { + "measure": 12, + "section_label": "", + "chord_symbols": [ + "Bbmaj7" + ], + "slash_count": 0 + }, + { + "measure": 13, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0 + }, + { + "measure": 14, + "section_label": "", + "chord_symbols": [ + "A7" + ], + "slash_count": 0 + }, + { + "measure": 15, + "section_label": "", + "chord_symbols": [ + "D-" + ], + "slash_count": 0 + }, + { + "measure": 16, + "section_label": "", + "chord_symbols": [], + "slash_count": 0 + }, + { + "measure": 17, + "section_label": "", + "chord_symbols": [ + "G-7" + ], + "slash_count": 0 + }, + { + "measure": 18, + "section_label": "", + "chord_symbols": [ + "C7" + ], + "slash_count": 0 + }, + { + "measure": 19, + "section_label": "", + "chord_symbols": [ + "Fmaj7" + ], + "slash_count": 0 + }, + { + "measure": 20, + "section_label": "", + "chord_symbols": [ + "Bbmaj7" + ], + "slash_count": 0 + }, + { + "measure": 21, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0 + }, + { + "measure": 22, + "section_label": "", + "chord_symbols": [ + "A7" + ], + "slash_count": 0 + }, + { + "measure": 23, + "section_label": "", + "chord_symbols": [ + "D-" + ], + "slash_count": 0 + }, + { + "measure": 24, + "section_label": "", + "chord_symbols": [], + "slash_count": 0 + }, + { + "measure": 25, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0 + }, + { + "measure": 26, + "section_label": "", + "chord_symbols": [ + "A7b9" + ], + "slash_count": 0 + }, + { + "measure": 27, + "section_label": "", + "chord_symbols": [ + "D-" + ], + "slash_count": 0 + }, + { + "measure": 28, + "section_label": "", + "chord_symbols": [], + "slash_count": 0 + }, + { + "measure": 29, + "section_label": "", + "chord_symbols": [ + "G-7" + ], + "slash_count": 0 + }, + { + "measure": 30, + "section_label": "", + "chord_symbols": [ + "C7" + ], + "slash_count": 0 + }, + { + "measure": 31, + "section_label": "", + "chord_symbols": [ + "Fmaj7" + ], + "slash_count": 0 + }, + { + "measure": 32, + "section_label": "", + "chord_symbols": [], + "slash_count": 0 + }, + { + "measure": 33, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0 + }, + { + "measure": 34, + "section_label": "", + "chord_symbols": [ + "A7b9" + ], + "slash_count": 0 + }, + { + "measure": 35, + "section_label": "", + "chord_symbols": [ + "D-7", + "G7" + ], + "slash_count": 0 + }, + { + "measure": 36, + "section_label": "", + "chord_symbols": [ + "C-7", + "F7" + ], + "slash_count": 0 + }, + { + "measure": 37, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0 + }, + { + "measure": 38, + "section_label": "", + "chord_symbols": [ + "A7b9" + ], + "slash_count": 0 + }, + { + "measure": 39, + "section_label": "", + "chord_symbols": [ + "D-" + ], + "slash_count": 0 + }, + { + "measure": 40, + "section_label": "", + "chord_symbols": [], + "slash_count": 0 + }, + { + "measure": 41, + "section_label": "Guitar Melody", + "chord_symbols": [ + "G-7" + ], + "slash_count": 0 + }, + { + "measure": 42, + "section_label": "", + "chord_symbols": [ + "C7" + ], + "slash_count": 0 + }, + { + "measure": 43, + "section_label": "", + "chord_symbols": [ + "Fmaj7" + ], + "slash_count": 0 + }, + { + "measure": 44, + "section_label": "", + "chord_symbols": [ + "Bbmaj7" + ], + "slash_count": 0 + }, + { + "measure": 45, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0 + }, + { + "measure": 46, + "section_label": "", + "chord_symbols": [ + "A7" + ], + "slash_count": 0 + }, + { + "measure": 47, + "section_label": "", + "chord_symbols": [ + "D-" + ], + "slash_count": 0 + }, + { + "measure": 48, + "section_label": "", + "chord_symbols": [], + "slash_count": 0 + }, + { + "measure": 49, + "section_label": "", + "chord_symbols": [ + "G-7" + ], + "slash_count": 0 + }, + { + "measure": 50, + "section_label": "", + "chord_symbols": [ + "C7" + ], + "slash_count": 0 + }, + { + "measure": 51, + "section_label": "", + "chord_symbols": [ + "Fmaj7" + ], + "slash_count": 0 + }, + { + "measure": 52, + "section_label": "", + "chord_symbols": [ + "Bbmaj7" + ], + "slash_count": 0 + }, + { + "measure": 53, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0 + }, + { + "measure": 54, + "section_label": "", + "chord_symbols": [ + "A7" + ], + "slash_count": 0 + }, + { + "measure": 55, + "section_label": "", + "chord_symbols": [ + "D-" + ], + "slash_count": 0 + }, + { + "measure": 56, + "section_label": "", + "chord_symbols": [], + "slash_count": 0 + }, + { + "measure": 57, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0 + }, + { + "measure": 58, + "section_label": "", + "chord_symbols": [ + "A7b9" + ], + "slash_count": 0 + }, + { + "measure": 59, + "section_label": "", + "chord_symbols": [ + "D-" + ], + "slash_count": 0 + }, + { + "measure": 60, + "section_label": "", + "chord_symbols": [], + "slash_count": 0 + }, + { + "measure": 61, + "section_label": "", + "chord_symbols": [ + "G-7" + ], + "slash_count": 0 + }, + { + "measure": 62, + "section_label": "", + "chord_symbols": [ + "C7" + ], + "slash_count": 0 + }, + { + "measure": 63, + "section_label": "", + "chord_symbols": [ + "Fmaj7" + ], + "slash_count": 0 + }, + { + "measure": 64, + "section_label": "", + "chord_symbols": [], + "slash_count": 0 + }, + { + "measure": 65, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0 + }, + { + "measure": 66, + "section_label": "", + "chord_symbols": [ + "A7b9" + ], + "slash_count": 0 + }, + { + "measure": 67, + "section_label": "", + "chord_symbols": [ + "D-7", + "G7" + ], + "slash_count": 0 + }, + { + "measure": 68, + "section_label": "", + "chord_symbols": [ + "C-7", + "F7" + ], + "slash_count": 0 + }, + { + "measure": 69, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0 + }, + { + "measure": 70, + "section_label": "", + "chord_symbols": [ + "A7b9" + ], + "slash_count": 0 + }, + { + "measure": 71, + "section_label": "", + "chord_symbols": [ + "D-" + ], + "slash_count": 0 + }, + { + "measure": 72, + "section_label": "", + "chord_symbols": [], + "slash_count": 0 + }, + { + "measure": 73, + "section_label": "Guitar Solo", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 74, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 75, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 76, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 77, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 78, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 79, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 80, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 81, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 82, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 83, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 84, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 85, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 86, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 87, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 88, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 89, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 90, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 91, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 92, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 93, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 94, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 95, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 96, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 97, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 98, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 99, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 100, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 101, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 102, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 103, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 104, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 105, + "section_label": "Guitar Solo", + "chord_symbols": [ + "G-7" + ], + "slash_count": 0 + }, + { + "measure": 106, + "section_label": "", + "chord_symbols": [ + "C7" + ], + "slash_count": 0 + }, + { + "measure": 107, + "section_label": "", + "chord_symbols": [ + "Fmaj7" + ], + "slash_count": 0 + }, + { + "measure": 108, + "section_label": "", + "chord_symbols": [ + "Bbmaj7" + ], + "slash_count": 0 + }, + { + "measure": 109, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0 + }, + { + "measure": 110, + "section_label": "", + "chord_symbols": [ + "A7" + ], + "slash_count": 0 + }, + { + "measure": 111, + "section_label": "", + "chord_symbols": [ + "D-" + ], + "slash_count": 0 + }, + { + "measure": 112, + "section_label": "", + "chord_symbols": [], + "slash_count": 0 + }, + { + "measure": 113, + "section_label": "", + "chord_symbols": [ + "G-7" + ], + "slash_count": 0 + }, + { + "measure": 114, + "section_label": "", + "chord_symbols": [ + "C7" + ], + "slash_count": 0 + }, + { + "measure": 115, + "section_label": "", + "chord_symbols": [ + "Fmaj7" + ], + "slash_count": 0 + }, + { + "measure": 116, + "section_label": "", + "chord_symbols": [ + "Bbmaj7" + ], + "slash_count": 0 + }, + { + "measure": 117, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0 + }, + { + "measure": 118, + "section_label": "", + "chord_symbols": [ + "A7" + ], + "slash_count": 0 + }, + { + "measure": 119, + "section_label": "", + "chord_symbols": [ + "D-" + ], + "slash_count": 0 + }, + { + "measure": 120, + "section_label": "", + "chord_symbols": [], + "slash_count": 0 + }, + { + "measure": 121, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0 + }, + { + "measure": 122, + "section_label": "", + "chord_symbols": [ + "A7b9" + ], + "slash_count": 0 + }, + { + "measure": 123, + "section_label": "", + "chord_symbols": [ + "D-" + ], + "slash_count": 0 + }, + { + "measure": 124, + "section_label": "", + "chord_symbols": [], + "slash_count": 0 + }, + { + "measure": 125, + "section_label": "", + "chord_symbols": [ + "G-7" + ], + "slash_count": 0 + }, + { + "measure": 126, + "section_label": "", + "chord_symbols": [ + "C7" + ], + "slash_count": 0 + }, + { + "measure": 127, + "section_label": "", + "chord_symbols": [ + "Fmaj7" + ], + "slash_count": 0 + }, + { + "measure": 128, + "section_label": "", + "chord_symbols": [], + "slash_count": 0 + }, + { + "measure": 129, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0 + }, + { + "measure": 130, + "section_label": "", + "chord_symbols": [ + "A7b9" + ], + "slash_count": 0 + }, + { + "measure": 131, + "section_label": "", + "chord_symbols": [ + "D-7", + "G7" + ], + "slash_count": 0 + }, + { + "measure": 132, + "section_label": "", + "chord_symbols": [ + "C-7", + "F7" + ], + "slash_count": 0 + }, + { + "measure": 133, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0 + }, + { + "measure": 134, + "section_label": "", + "chord_symbols": [ + "A7b9" + ], + "slash_count": 0 + }, + { + "measure": 135, + "section_label": "", + "chord_symbols": [ + "D-" + ], + "slash_count": 0 + }, + { + "measure": 136, + "section_label": "", + "chord_symbols": [], + "slash_count": 0 + }, + { + "measure": 137, + "section_label": "Vocal Melody", + "chord_symbols": [ + "G-7" + ], + "slash_count": 0 + }, + { + "measure": 138, + "section_label": "", + "chord_symbols": [ + "C7" + ], + "slash_count": 0 + }, + { + "measure": 139, + "section_label": "", + "chord_symbols": [ + "Fmaj7" + ], + "slash_count": 0 + }, + { + "measure": 140, + "section_label": "", + "chord_symbols": [ + "Bbmaj7" + ], + "slash_count": 0 + }, + { + "measure": 141, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0 + }, + { + "measure": 142, + "section_label": "", + "chord_symbols": [ + "A7" + ], + "slash_count": 0 + }, + { + "measure": 143, + "section_label": "", + "chord_symbols": [ + "D-" + ], + "slash_count": 0 + }, + { + "measure": 144, + "section_label": "", + "chord_symbols": [], + "slash_count": 0 + }, + { + "measure": 145, + "section_label": "", + "chord_symbols": [ + "G-7" + ], + "slash_count": 0 + }, + { + "measure": 146, + "section_label": "", + "chord_symbols": [ + "C7" + ], + "slash_count": 0 + }, + { + "measure": 147, + "section_label": "", + "chord_symbols": [ + "Fmaj7" + ], + "slash_count": 0 + }, + { + "measure": 148, + "section_label": "", + "chord_symbols": [ + "Bbmaj7" + ], + "slash_count": 0 + }, + { + "measure": 149, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0 + }, + { + "measure": 150, + "section_label": "", + "chord_symbols": [ + "A7" + ], + "slash_count": 0 + }, + { + "measure": 151, + "section_label": "", + "chord_symbols": [ + "D-" + ], + "slash_count": 0 + }, + { + "measure": 152, + "section_label": "", + "chord_symbols": [], + "slash_count": 0 + }, + { + "measure": 153, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0 + }, + { + "measure": 154, + "section_label": "", + "chord_symbols": [ + "A7b9" + ], + "slash_count": 0 + }, + { + "measure": 155, + "section_label": "", + "chord_symbols": [ + "D-" + ], + "slash_count": 0 + }, + { + "measure": 156, + "section_label": "", + "chord_symbols": [], + "slash_count": 0 + }, + { + "measure": 157, + "section_label": "", + "chord_symbols": [ + "G-7" + ], + "slash_count": 0 + }, + { + "measure": 158, + "section_label": "", + "chord_symbols": [ + "C7" + ], + "slash_count": 0 + }, + { + "measure": 159, + "section_label": "", + "chord_symbols": [ + "Fmaj7" + ], + "slash_count": 0 + }, + { + "measure": 160, + "section_label": "", + "chord_symbols": [], + "slash_count": 0 + }, + { + "measure": 161, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0 + }, + { + "measure": 162, + "section_label": "", + "chord_symbols": [ + "A7b9" + ], + "slash_count": 0 + }, + { + "measure": 163, + "section_label": "", + "chord_symbols": [ + "D-7", + "G7" + ], + "slash_count": 0 + }, + { + "measure": 164, + "section_label": "", + "chord_symbols": [ + "C-7", + "F7" + ], + "slash_count": 0 + }, + { + "measure": 165, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0 + }, + { + "measure": 166, + "section_label": "", + "chord_symbols": [ + "A7b9" + ], + "slash_count": 0 + }, + { + "measure": 167, + "section_label": "", + "chord_symbols": [ + "D-" + ], + "slash_count": 0 + }, + { + "measure": 168, + "section_label": "", + "chord_symbols": [], + "slash_count": 0 + }, + { + "measure": 169, + "section_label": "Ending", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0 + }, + { + "measure": 170, + "section_label": "", + "chord_symbols": [ + "A7b9" + ], + "slash_count": 0 + }, + { + "measure": 171, + "section_label": "", + "chord_symbols": [ + "D-7", + "G7" + ], + "slash_count": 0 + }, + { + "measure": 172, + "section_label": "", + "chord_symbols": [ + "C-7", + "F7" + ], + "slash_count": 0 + }, + { + "measure": 173, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0 + }, + { + "measure": 174, + "section_label": "", + "chord_symbols": [ + "A7b9" + ], + "slash_count": 0 + }, + { + "measure": 175, + "section_label": "", + "chord_symbols": [ + "D-" + ], + "slash_count": 0 + }, + { + "measure": 176, + "section_label": "", + "chord_symbols": [], + "slash_count": 0 + } + ] + }, + "autumn-leaves-electric.json": { + "title": "Autumn Leaves", + "composer": "Joseph Kosma / Johnny Mercer / Jaques Prevert", + "key_signature": "F", + "part_type": "electric", + "measure_count": 176, + "section_labels": [ + { + "measure": 1, + "label": "Rhythm Lead-in" + }, + { + "measure": 9, + "label": "Vocal Melody" + }, + { + "measure": 41, + "label": "Guitar Melody" + }, + { + "measure": 73, + "label": "Guitar Solo" + }, + { + "measure": 105, + "label": "Guitar Solo" + }, + { + "measure": 137, + "label": "Vocal Melody" + }, + { + "measure": 169, + "label": "Ending" + } + ], + "measures": [ + { + "measure": 1, + "section_label": "Rhythm Lead-in", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0 + }, + { + "measure": 2, + "section_label": "", + "chord_symbols": [ + "A7b9" + ], + "slash_count": 0 + }, + { + "measure": 3, + "section_label": "", + "chord_symbols": [ + "D-7", + "G7" + ], + "slash_count": 0 + }, + { + "measure": 4, + "section_label": "", + "chord_symbols": [ + "C-7", + "F7" + ], + "slash_count": 0 + }, + { + "measure": 5, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0 + }, + { + "measure": 6, + "section_label": "", + "chord_symbols": [ + "A7b9" + ], + "slash_count": 0 + }, + { + "measure": 7, + "section_label": "", + "chord_symbols": [ + "D-" + ], + "slash_count": 0 + }, + { + "measure": 8, + "section_label": "", + "chord_symbols": [], + "slash_count": 0 + }, + { + "measure": 9, + "section_label": "Vocal Melody", + "chord_symbols": [ + "G-7" + ], + "slash_count": 0 + }, + { + "measure": 10, + "section_label": "", + "chord_symbols": [ + "C7" + ], + "slash_count": 0 + }, + { + "measure": 11, + "section_label": "", + "chord_symbols": [ + "Fmaj7" + ], + "slash_count": 0 + }, + { + "measure": 12, + "section_label": "", + "chord_symbols": [ + "Bbmaj7" + ], + "slash_count": 0 + }, + { + "measure": 13, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0 + }, + { + "measure": 14, + "section_label": "", + "chord_symbols": [ + "A7" + ], + "slash_count": 0 + }, + { + "measure": 15, + "section_label": "", + "chord_symbols": [ + "D-" + ], + "slash_count": 0 + }, + { + "measure": 16, + "section_label": "", + "chord_symbols": [], + "slash_count": 0 + }, + { + "measure": 17, + "section_label": "", + "chord_symbols": [ + "G-7" + ], + "slash_count": 0 + }, + { + "measure": 18, + "section_label": "", + "chord_symbols": [ + "C7" + ], + "slash_count": 0 + }, + { + "measure": 19, + "section_label": "", + "chord_symbols": [ + "Fmaj7" + ], + "slash_count": 0 + }, + { + "measure": 20, + "section_label": "", + "chord_symbols": [ + "Bbmaj7" + ], + "slash_count": 0 + }, + { + "measure": 21, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0 + }, + { + "measure": 22, + "section_label": "", + "chord_symbols": [ + "A7" + ], + "slash_count": 0 + }, + { + "measure": 23, + "section_label": "", + "chord_symbols": [ + "D-" + ], + "slash_count": 0 + }, + { + "measure": 24, + "section_label": "", + "chord_symbols": [], + "slash_count": 0 + }, + { + "measure": 25, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0 + }, + { + "measure": 26, + "section_label": "", + "chord_symbols": [ + "A7b9" + ], + "slash_count": 0 + }, + { + "measure": 27, + "section_label": "", + "chord_symbols": [ + "D-" + ], + "slash_count": 0 + }, + { + "measure": 28, + "section_label": "", + "chord_symbols": [], + "slash_count": 0 + }, + { + "measure": 29, + "section_label": "", + "chord_symbols": [ + "G-7" + ], + "slash_count": 0 + }, + { + "measure": 30, + "section_label": "", + "chord_symbols": [ + "C7" + ], + "slash_count": 0 + }, + { + "measure": 31, + "section_label": "", + "chord_symbols": [ + "Fmaj7" + ], + "slash_count": 0 + }, + { + "measure": 32, + "section_label": "", + "chord_symbols": [], + "slash_count": 0 + }, + { + "measure": 33, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0 + }, + { + "measure": 34, + "section_label": "", + "chord_symbols": [ + "A7b9" + ], + "slash_count": 0 + }, + { + "measure": 35, + "section_label": "", + "chord_symbols": [ + "D-7", + "G7" + ], + "slash_count": 0 + }, + { + "measure": 36, + "section_label": "", + "chord_symbols": [ + "C-7", + "F7" + ], + "slash_count": 0 + }, + { + "measure": 37, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0 + }, + { + "measure": 38, + "section_label": "", + "chord_symbols": [ + "A7b9" + ], + "slash_count": 0 + }, + { + "measure": 39, + "section_label": "", + "chord_symbols": [ + "D-" + ], + "slash_count": 0 + }, + { + "measure": 40, + "section_label": "", + "chord_symbols": [], + "slash_count": 0 + }, + { + "measure": 41, + "section_label": "Guitar Melody", + "chord_symbols": [ + "G-7" + ], + "slash_count": 0 + }, + { + "measure": 42, + "section_label": "", + "chord_symbols": [ + "C7" + ], + "slash_count": 0 + }, + { + "measure": 43, + "section_label": "", + "chord_symbols": [ + "Fmaj7" + ], + "slash_count": 0 + }, + { + "measure": 44, + "section_label": "", + "chord_symbols": [ + "Bbmaj7" + ], + "slash_count": 0 + }, + { + "measure": 45, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0 + }, + { + "measure": 46, + "section_label": "", + "chord_symbols": [ + "A7" + ], + "slash_count": 0 + }, + { + "measure": 47, + "section_label": "", + "chord_symbols": [ + "D-" + ], + "slash_count": 0 + }, + { + "measure": 48, + "section_label": "", + "chord_symbols": [], + "slash_count": 0 + }, + { + "measure": 49, + "section_label": "", + "chord_symbols": [ + "G-7" + ], + "slash_count": 0 + }, + { + "measure": 50, + "section_label": "", + "chord_symbols": [ + "C7" + ], + "slash_count": 0 + }, + { + "measure": 51, + "section_label": "", + "chord_symbols": [ + "Fmaj7" + ], + "slash_count": 0 + }, + { + "measure": 52, + "section_label": "", + "chord_symbols": [ + "Bbmaj7" + ], + "slash_count": 0 + }, + { + "measure": 53, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0 + }, + { + "measure": 54, + "section_label": "", + "chord_symbols": [ + "A7" + ], + "slash_count": 0 + }, + { + "measure": 55, + "section_label": "", + "chord_symbols": [ + "D-" + ], + "slash_count": 0 + }, + { + "measure": 56, + "section_label": "", + "chord_symbols": [], + "slash_count": 0 + }, + { + "measure": 57, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0 + }, + { + "measure": 58, + "section_label": "", + "chord_symbols": [ + "A7b9" + ], + "slash_count": 0 + }, + { + "measure": 59, + "section_label": "", + "chord_symbols": [ + "D-" + ], + "slash_count": 0 + }, + { + "measure": 60, + "section_label": "", + "chord_symbols": [], + "slash_count": 0 + }, + { + "measure": 61, + "section_label": "", + "chord_symbols": [ + "G-7" + ], + "slash_count": 0 + }, + { + "measure": 62, + "section_label": "", + "chord_symbols": [ + "C7" + ], + "slash_count": 0 + }, + { + "measure": 63, + "section_label": "", + "chord_symbols": [ + "Fmaj7" + ], + "slash_count": 0 + }, + { + "measure": 64, + "section_label": "", + "chord_symbols": [], + "slash_count": 0 + }, + { + "measure": 65, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0 + }, + { + "measure": 66, + "section_label": "", + "chord_symbols": [ + "A7b9" + ], + "slash_count": 0 + }, + { + "measure": 67, + "section_label": "", + "chord_symbols": [ + "D-7", + "G7" + ], + "slash_count": 0 + }, + { + "measure": 68, + "section_label": "", + "chord_symbols": [ + "C-7", + "F7" + ], + "slash_count": 0 + }, + { + "measure": 69, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0 + }, + { + "measure": 70, + "section_label": "", + "chord_symbols": [ + "A7b9" + ], + "slash_count": 0 + }, + { + "measure": 71, + "section_label": "", + "chord_symbols": [ + "D-" + ], + "slash_count": 0 + }, + { + "measure": 72, + "section_label": "", + "chord_symbols": [], + "slash_count": 0 + }, + { + "measure": 73, + "section_label": "Guitar Solo", + "chord_symbols": [ + "G-7" + ], + "slash_count": 0 + }, + { + "measure": 74, + "section_label": "", + "chord_symbols": [ + "C7" + ], + "slash_count": 0 + }, + { + "measure": 75, + "section_label": "", + "chord_symbols": [ + "Fmaj7" + ], + "slash_count": 0 + }, + { + "measure": 76, + "section_label": "", + "chord_symbols": [ + "Bbmaj7" + ], + "slash_count": 0 + }, + { + "measure": 77, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0 + }, + { + "measure": 78, + "section_label": "", + "chord_symbols": [ + "A7" + ], + "slash_count": 0 + }, + { + "measure": 79, + "section_label": "", + "chord_symbols": [ + "D-" + ], + "slash_count": 0 + }, + { + "measure": 80, + "section_label": "", + "chord_symbols": [], + "slash_count": 0 + }, + { + "measure": 81, + "section_label": "", + "chord_symbols": [ + "G-7" + ], + "slash_count": 0 + }, + { + "measure": 82, + "section_label": "", + "chord_symbols": [ + "C7" + ], + "slash_count": 0 + }, + { + "measure": 83, + "section_label": "", + "chord_symbols": [ + "Fmaj7" + ], + "slash_count": 0 + }, + { + "measure": 84, + "section_label": "", + "chord_symbols": [ + "Bbmaj7" + ], + "slash_count": 0 + }, + { + "measure": 85, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0 + }, + { + "measure": 86, + "section_label": "", + "chord_symbols": [ + "A7" + ], + "slash_count": 0 + }, + { + "measure": 87, + "section_label": "", + "chord_symbols": [ + "D-" + ], + "slash_count": 0 + }, + { + "measure": 88, + "section_label": "", + "chord_symbols": [], + "slash_count": 0 + }, + { + "measure": 89, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0 + }, + { + "measure": 90, + "section_label": "", + "chord_symbols": [ + "A7b9" + ], + "slash_count": 0 + }, + { + "measure": 91, + "section_label": "", + "chord_symbols": [ + "D-" + ], + "slash_count": 0 + }, + { + "measure": 92, + "section_label": "", + "chord_symbols": [], + "slash_count": 0 + }, + { + "measure": 93, + "section_label": "", + "chord_symbols": [ + "G-7" + ], + "slash_count": 0 + }, + { + "measure": 94, + "section_label": "", + "chord_symbols": [ + "C7" + ], + "slash_count": 0 + }, + { + "measure": 95, + "section_label": "", + "chord_symbols": [ + "Fmaj7" + ], + "slash_count": 0 + }, + { + "measure": 96, + "section_label": "", + "chord_symbols": [], + "slash_count": 0 + }, + { + "measure": 97, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0 + }, + { + "measure": 98, + "section_label": "", + "chord_symbols": [ + "A7b9" + ], + "slash_count": 0 + }, + { + "measure": 99, + "section_label": "", + "chord_symbols": [ + "D-7", + "G7" + ], + "slash_count": 0 + }, + { + "measure": 100, + "section_label": "", + "chord_symbols": [ + "C-7", + "F7" + ], + "slash_count": 0 + }, + { + "measure": 101, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0 + }, + { + "measure": 102, + "section_label": "", + "chord_symbols": [ + "A7b9" + ], + "slash_count": 0 + }, + { + "measure": 103, + "section_label": "", + "chord_symbols": [ + "D-" + ], + "slash_count": 0 + }, + { + "measure": 104, + "section_label": "", + "chord_symbols": [], + "slash_count": 0 + }, + { + "measure": 105, + "section_label": "Guitar Solo", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 106, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 107, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 108, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 109, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 110, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 111, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 112, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 113, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 114, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 115, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 116, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 117, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 118, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 119, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 120, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 121, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 122, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 123, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 124, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 125, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 126, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 127, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 128, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 129, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 130, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 131, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 132, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 133, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 134, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 135, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 136, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 137, + "section_label": "Vocal Melody", + "chord_symbols": [ + "G-7" + ], + "slash_count": 0 + }, + { + "measure": 138, + "section_label": "", + "chord_symbols": [ + "C7" + ], + "slash_count": 0 + }, + { + "measure": 139, + "section_label": "", + "chord_symbols": [ + "Fmaj7" + ], + "slash_count": 0 + }, + { + "measure": 140, + "section_label": "", + "chord_symbols": [ + "Bbmaj7" + ], + "slash_count": 0 + }, + { + "measure": 141, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0 + }, + { + "measure": 142, + "section_label": "", + "chord_symbols": [ + "A7" + ], + "slash_count": 0 + }, + { + "measure": 143, + "section_label": "", + "chord_symbols": [ + "D-" + ], + "slash_count": 0 + }, + { + "measure": 144, + "section_label": "", + "chord_symbols": [], + "slash_count": 0 + }, + { + "measure": 145, + "section_label": "", + "chord_symbols": [ + "G-7" + ], + "slash_count": 0 + }, + { + "measure": 146, + "section_label": "", + "chord_symbols": [ + "C7" + ], + "slash_count": 0 + }, + { + "measure": 147, + "section_label": "", + "chord_symbols": [ + "Fmaj7" + ], + "slash_count": 0 + }, + { + "measure": 148, + "section_label": "", + "chord_symbols": [ + "Bbmaj7" + ], + "slash_count": 0 + }, + { + "measure": 149, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0 + }, + { + "measure": 150, + "section_label": "", + "chord_symbols": [ + "A7" + ], + "slash_count": 0 + }, + { + "measure": 151, + "section_label": "", + "chord_symbols": [ + "D-" + ], + "slash_count": 0 + }, + { + "measure": 152, + "section_label": "", + "chord_symbols": [], + "slash_count": 0 + }, + { + "measure": 153, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0 + }, + { + "measure": 154, + "section_label": "", + "chord_symbols": [ + "A7b9" + ], + "slash_count": 0 + }, + { + "measure": 155, + "section_label": "", + "chord_symbols": [ + "D-" + ], + "slash_count": 0 + }, + { + "measure": 156, + "section_label": "", + "chord_symbols": [], + "slash_count": 0 + }, + { + "measure": 157, + "section_label": "", + "chord_symbols": [ + "G-7" + ], + "slash_count": 0 + }, + { + "measure": 158, + "section_label": "", + "chord_symbols": [ + "C7" + ], + "slash_count": 0 + }, + { + "measure": 159, + "section_label": "", + "chord_symbols": [ + "Fmaj7" + ], + "slash_count": 0 + }, + { + "measure": 160, + "section_label": "", + "chord_symbols": [], + "slash_count": 0 + }, + { + "measure": 161, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0 + }, + { + "measure": 162, + "section_label": "", + "chord_symbols": [ + "A7b9" + ], + "slash_count": 0 + }, + { + "measure": 163, + "section_label": "", + "chord_symbols": [ + "D-7", + "G7" + ], + "slash_count": 0 + }, + { + "measure": 164, + "section_label": "", + "chord_symbols": [ + "C-7", + "F7" + ], + "slash_count": 0 + }, + { + "measure": 165, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0 + }, + { + "measure": 166, + "section_label": "", + "chord_symbols": [ + "A7b9" + ], + "slash_count": 0 + }, + { + "measure": 167, + "section_label": "", + "chord_symbols": [ + "D-" + ], + "slash_count": 0 + }, + { + "measure": 168, + "section_label": "", + "chord_symbols": [], + "slash_count": 0 + }, + { + "measure": 169, + "section_label": "Ending", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0 + }, + { + "measure": 170, + "section_label": "", + "chord_symbols": [ + "A7b9" + ], + "slash_count": 0 + }, + { + "measure": 171, + "section_label": "", + "chord_symbols": [ + "D-7", + "G7" + ], + "slash_count": 0 + }, + { + "measure": 172, + "section_label": "", + "chord_symbols": [ + "C-7", + "F7" + ], + "slash_count": 0 + }, + { + "measure": 173, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0 + }, + { + "measure": 174, + "section_label": "", + "chord_symbols": [ + "A7b9" + ], + "slash_count": 0 + }, + { + "measure": 175, + "section_label": "", + "chord_symbols": [ + "D-" + ], + "slash_count": 0 + }, + { + "measure": 176, + "section_label": "", + "chord_symbols": [], + "slash_count": 0 + } + ] + }, + "autumn-leaves-vocal.json": { + "title": "Autumn Leaves", + "composer": "Joseph Kosma / Johnny Mercer / Jaques Prevert", + "key_signature": "F", + "part_type": "vocal", + "measure_count": 176, + "section_labels": [ + { + "measure": 1, + "label": "Rhythm Lead-in" + }, + { + "measure": 9, + "label": "Vocal Melody" + }, + { + "measure": 41, + "label": "Guitar Melody" + }, + { + "measure": 73, + "label": "Guitar Solo" + }, + { + "measure": 105, + "label": "Guitar Solo" + }, + { + "measure": 137, + "label": "Vocal Melody" + }, + { + "measure": 169, + "label": "Ending" + } + ], + "measures": [ + { + "measure": 1, + "section_label": "Rhythm Lead-in", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 2, + "section_label": "", + "chord_symbols": [ + "A7b9" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 3, + "section_label": "", + "chord_symbols": [ + "D-7", + "G7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 4, + "section_label": "", + "chord_symbols": [ + "C-7", + "F7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 5, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 6, + "section_label": "", + "chord_symbols": [ + "A7b9" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 7, + "section_label": "", + "chord_symbols": [ + "D-" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 8, + "section_label": "", + "chord_symbols": [], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 9, + "section_label": "Vocal Melody", + "chord_symbols": [ + "G-7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 10, + "section_label": "", + "chord_symbols": [ + "C7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 11, + "section_label": "", + "chord_symbols": [ + "Fmaj7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 12, + "section_label": "", + "chord_symbols": [ + "Bbmaj7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 13, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 14, + "section_label": "", + "chord_symbols": [ + "A7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 15, + "section_label": "", + "chord_symbols": [ + "D-" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 16, + "section_label": "", + "chord_symbols": [], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 17, + "section_label": "", + "chord_symbols": [ + "G-7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 18, + "section_label": "", + "chord_symbols": [ + "C7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 19, + "section_label": "", + "chord_symbols": [ + "Fmaj7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 20, + "section_label": "", + "chord_symbols": [ + "Bbmaj7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 21, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 22, + "section_label": "", + "chord_symbols": [ + "A7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 23, + "section_label": "", + "chord_symbols": [ + "D-" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 24, + "section_label": "", + "chord_symbols": [], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 25, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 26, + "section_label": "", + "chord_symbols": [ + "A7b9" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 27, + "section_label": "", + "chord_symbols": [ + "D-" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 28, + "section_label": "", + "chord_symbols": [], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 29, + "section_label": "", + "chord_symbols": [ + "G-7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 30, + "section_label": "", + "chord_symbols": [ + "C7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 31, + "section_label": "", + "chord_symbols": [ + "Fmaj7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 32, + "section_label": "", + "chord_symbols": [], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 33, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 34, + "section_label": "", + "chord_symbols": [ + "A7b9" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 12288, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 35, + "section_label": "", + "chord_symbols": [ + "D-7", + "G7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 36, + "section_label": "", + "chord_symbols": [ + "C-7", + "F7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 37, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 12288, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 38, + "section_label": "", + "chord_symbols": [ + "A7b9" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 39, + "section_label": "", + "chord_symbols": [ + "D-" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 40, + "section_label": "", + "chord_symbols": [], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 41, + "section_label": "Guitar Melody", + "chord_symbols": [ + "G-7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 42, + "section_label": "", + "chord_symbols": [ + "C7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 43, + "section_label": "", + "chord_symbols": [ + "Fmaj7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 44, + "section_label": "", + "chord_symbols": [ + "Bbmaj7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 45, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 46, + "section_label": "", + "chord_symbols": [ + "A7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 47, + "section_label": "", + "chord_symbols": [ + "D-" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 48, + "section_label": "", + "chord_symbols": [], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 49, + "section_label": "", + "chord_symbols": [ + "G-7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 50, + "section_label": "", + "chord_symbols": [ + "C7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 51, + "section_label": "", + "chord_symbols": [ + "Fmaj7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 52, + "section_label": "", + "chord_symbols": [ + "Bbmaj7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 53, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 54, + "section_label": "", + "chord_symbols": [ + "A7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 55, + "section_label": "", + "chord_symbols": [ + "D-" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 56, + "section_label": "", + "chord_symbols": [], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 57, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 58, + "section_label": "", + "chord_symbols": [ + "A7b9" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 59, + "section_label": "", + "chord_symbols": [ + "D-" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 60, + "section_label": "", + "chord_symbols": [], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 61, + "section_label": "", + "chord_symbols": [ + "G-7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 62, + "section_label": "", + "chord_symbols": [ + "C7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 63, + "section_label": "", + "chord_symbols": [ + "Fmaj7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 64, + "section_label": "", + "chord_symbols": [], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 65, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 66, + "section_label": "", + "chord_symbols": [ + "A7b9" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 67, + "section_label": "", + "chord_symbols": [ + "D-7", + "G7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 68, + "section_label": "", + "chord_symbols": [ + "C-7", + "F7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 69, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 70, + "section_label": "", + "chord_symbols": [ + "A7b9" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 71, + "section_label": "", + "chord_symbols": [ + "D-" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 72, + "section_label": "", + "chord_symbols": [], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 73, + "section_label": "Guitar Solo", + "chord_symbols": [ + "G-7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 74, + "section_label": "", + "chord_symbols": [ + "C7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 75, + "section_label": "", + "chord_symbols": [ + "Fmaj7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 76, + "section_label": "", + "chord_symbols": [ + "Bbmaj7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 77, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 78, + "section_label": "", + "chord_symbols": [ + "A7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 79, + "section_label": "", + "chord_symbols": [ + "D-" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 80, + "section_label": "", + "chord_symbols": [], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 81, + "section_label": "", + "chord_symbols": [ + "G-7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 82, + "section_label": "", + "chord_symbols": [ + "C7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 83, + "section_label": "", + "chord_symbols": [ + "Fmaj7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 84, + "section_label": "", + "chord_symbols": [ + "Bbmaj7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 85, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 86, + "section_label": "", + "chord_symbols": [ + "A7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 87, + "section_label": "", + "chord_symbols": [ + "D-" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 88, + "section_label": "", + "chord_symbols": [], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 89, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 90, + "section_label": "", + "chord_symbols": [ + "A7b9" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 91, + "section_label": "", + "chord_symbols": [ + "D-" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 92, + "section_label": "", + "chord_symbols": [], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 93, + "section_label": "", + "chord_symbols": [ + "G-7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 94, + "section_label": "", + "chord_symbols": [ + "C7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 95, + "section_label": "", + "chord_symbols": [ + "Fmaj7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 96, + "section_label": "", + "chord_symbols": [], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 97, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 98, + "section_label": "", + "chord_symbols": [ + "A7b9" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 99, + "section_label": "", + "chord_symbols": [ + "D-7", + "G7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 100, + "section_label": "", + "chord_symbols": [ + "C-7", + "F7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 101, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 102, + "section_label": "", + "chord_symbols": [ + "A7b9" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 103, + "section_label": "", + "chord_symbols": [ + "D-" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 104, + "section_label": "", + "chord_symbols": [], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 105, + "section_label": "Guitar Solo", + "chord_symbols": [ + "G-7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 106, + "section_label": "", + "chord_symbols": [ + "C7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 107, + "section_label": "", + "chord_symbols": [ + "Fmaj7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 108, + "section_label": "", + "chord_symbols": [ + "Bbmaj7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 109, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 110, + "section_label": "", + "chord_symbols": [ + "A7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 111, + "section_label": "", + "chord_symbols": [ + "D-" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 112, + "section_label": "", + "chord_symbols": [], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 113, + "section_label": "", + "chord_symbols": [ + "G-7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 114, + "section_label": "", + "chord_symbols": [ + "C7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 115, + "section_label": "", + "chord_symbols": [ + "Fmaj7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 116, + "section_label": "", + "chord_symbols": [ + "Bbmaj7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 117, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 118, + "section_label": "", + "chord_symbols": [ + "A7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 119, + "section_label": "", + "chord_symbols": [ + "D-" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 120, + "section_label": "", + "chord_symbols": [], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 121, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 122, + "section_label": "", + "chord_symbols": [ + "A7b9" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 123, + "section_label": "", + "chord_symbols": [ + "D-" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 124, + "section_label": "", + "chord_symbols": [], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 125, + "section_label": "", + "chord_symbols": [ + "G-7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 126, + "section_label": "", + "chord_symbols": [ + "C7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 127, + "section_label": "", + "chord_symbols": [ + "Fmaj7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 128, + "section_label": "", + "chord_symbols": [], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 129, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 130, + "section_label": "", + "chord_symbols": [ + "A7b9" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 131, + "section_label": "", + "chord_symbols": [ + "D-7", + "G7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 132, + "section_label": "", + "chord_symbols": [ + "C-7", + "F7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 133, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 134, + "section_label": "", + "chord_symbols": [ + "A7b9" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 135, + "section_label": "", + "chord_symbols": [ + "D-" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 136, + "section_label": "", + "chord_symbols": [], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 137, + "section_label": "Vocal Melody", + "chord_symbols": [ + "G-7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 138, + "section_label": "", + "chord_symbols": [ + "C7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 139, + "section_label": "", + "chord_symbols": [ + "Fmaj7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 140, + "section_label": "", + "chord_symbols": [ + "Bbmaj7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 141, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 142, + "section_label": "", + "chord_symbols": [ + "A7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 143, + "section_label": "", + "chord_symbols": [ + "D-" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 144, + "section_label": "", + "chord_symbols": [], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 145, + "section_label": "", + "chord_symbols": [ + "G-7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 146, + "section_label": "", + "chord_symbols": [ + "C7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 147, + "section_label": "", + "chord_symbols": [ + "Fmaj7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 148, + "section_label": "", + "chord_symbols": [ + "Bbmaj7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 149, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 150, + "section_label": "", + "chord_symbols": [ + "A7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 151, + "section_label": "", + "chord_symbols": [ + "D-" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 152, + "section_label": "", + "chord_symbols": [], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 153, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 154, + "section_label": "", + "chord_symbols": [ + "A7b9" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 155, + "section_label": "", + "chord_symbols": [ + "D-" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 156, + "section_label": "", + "chord_symbols": [], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 157, + "section_label": "", + "chord_symbols": [ + "G-7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 158, + "section_label": "", + "chord_symbols": [ + "C7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 159, + "section_label": "", + "chord_symbols": [ + "Fmaj7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 160, + "section_label": "", + "chord_symbols": [], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 161, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 162, + "section_label": "", + "chord_symbols": [ + "A7b9" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 12288, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 163, + "section_label": "", + "chord_symbols": [ + "D-7", + "G7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 164, + "section_label": "", + "chord_symbols": [ + "C-7", + "F7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 165, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 12288, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 166, + "section_label": "", + "chord_symbols": [ + "A7b9" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 167, + "section_label": "", + "chord_symbols": [ + "D-" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 168, + "section_label": "", + "chord_symbols": [], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 169, + "section_label": "Ending", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 170, + "section_label": "", + "chord_symbols": [ + "A7b9" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 12288, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 171, + "section_label": "", + "chord_symbols": [ + "D-7", + "G7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 172, + "section_label": "", + "chord_symbols": [ + "C-7", + "F7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 173, + "section_label": "", + "chord_symbols": [ + "E-7b5" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 12288, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 174, + "section_label": "", + "chord_symbols": [ + "A7b9" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 175, + "section_label": "", + "chord_symbols": [ + "D-" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 176, + "section_label": "", + "chord_symbols": [], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + } + ] + } + ] + }, + "it-could-happen-to-you-acoustic.json": { + "title": "It Could Happen to You", + "composer": "James Van Heusen / Johnny Burke", + "key_signature": "Eb", + "part_type": "acoustic", + "measure_count": 176, + "section_labels": [ + { + "measure": 1, + "label": "Rhythm Lead-in" + }, + { + "measure": 9, + "label": "Vocal Melody" + }, + { + "measure": 41, + "label": "Guitar Melody" + }, + { + "measure": 73, + "label": "Guitar Solo" + }, + { + "measure": 105, + "label": "Guitar Solo" + }, + { + "measure": 137, + "label": "Vocal Melody" + }, + { + "measure": 169, + "label": "Ending" + } + ], + "measures": [ + { + "measure": 1, + "section_label": "Rhythm Lead-in", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0 + }, + { + "measure": 2, + "section_label": "", + "chord_symbols": [ + "Db7" + ], + "slash_count": 0 + }, + { + "measure": 3, + "section_label": "", + "chord_symbols": [ + "Ebmaj7", + "Ab7" + ], + "slash_count": 0 + }, + { + "measure": 4, + "section_label": "", + "chord_symbols": [ + "G-7b5" + ], + "slash_count": 0 + }, + { + "measure": 5, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0 + }, + { + "measure": 6, + "section_label": "", + "chord_symbols": [ + "Bb7" + ], + "slash_count": 0 + }, + { + "measure": 7, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0 + }, + { + "measure": 8, + "section_label": "", + "chord_symbols": [ + "F-7", + "Bb7" + ], + "slash_count": 0 + }, + { + "measure": 9, + "section_label": "Vocal Melody", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0 + }, + { + "measure": 10, + "section_label": "", + "chord_symbols": [ + "G-7b5", + "C7b9" + ], + "slash_count": 0 + }, + { + "measure": 11, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0 + }, + { + "measure": 12, + "section_label": "", + "chord_symbols": [ + "A-7b5", + "D7b9" + ], + "slash_count": 0 + }, + { + "measure": 13, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0 + }, + { + "measure": 14, + "section_label": "", + "chord_symbols": [ + "Ab7" + ], + "slash_count": 0 + }, + { + "measure": 15, + "section_label": "", + "chord_symbols": [ + "G-7b5" + ], + "slash_count": 0 + }, + { + "measure": 16, + "section_label": "", + "chord_symbols": [ + "C7b9" + ], + "slash_count": 0 + }, + { + "measure": 17, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0 + }, + { + "measure": 18, + "section_label": "", + "chord_symbols": [ + "Db7" + ], + "slash_count": 0 + }, + { + "measure": 19, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0 + }, + { + "measure": 20, + "section_label": "", + "chord_symbols": [ + "D-7b5", + "G7" + ], + "slash_count": 0 + }, + { + "measure": 21, + "section_label": "", + "chord_symbols": [ + "C-7" + ], + "slash_count": 0 + }, + { + "measure": 22, + "section_label": "", + "chord_symbols": [ + "F7" + ], + "slash_count": 0 + }, + { + "measure": 23, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0 + }, + { + "measure": 24, + "section_label": "", + "chord_symbols": [ + "Bb7" + ], + "slash_count": 0 + }, + { + "measure": 25, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0 + }, + { + "measure": 26, + "section_label": "", + "chord_symbols": [ + "G-7b5", + "C7b9" + ], + "slash_count": 0 + }, + { + "measure": 27, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0 + }, + { + "measure": 28, + "section_label": "", + "chord_symbols": [ + "A-7b9", + "D7b9" + ], + "slash_count": 0 + }, + { + "measure": 29, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0 + }, + { + "measure": 30, + "section_label": "", + "chord_symbols": [ + "Ab7" + ], + "slash_count": 0 + }, + { + "measure": 31, + "section_label": "", + "chord_symbols": [ + "G-7b5" + ], + "slash_count": 0 + }, + { + "measure": 32, + "section_label": "", + "chord_symbols": [ + "C7b9" + ], + "slash_count": 0 + }, + { + "measure": 33, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0 + }, + { + "measure": 34, + "section_label": "", + "chord_symbols": [ + "Db7" + ], + "slash_count": 0 + }, + { + "measure": 35, + "section_label": "", + "chord_symbols": [ + "Ebmaj7", + "Ab7" + ], + "slash_count": 0 + }, + { + "measure": 36, + "section_label": "", + "chord_symbols": [ + "G-7b5" + ], + "slash_count": 0 + }, + { + "measure": 37, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0 + }, + { + "measure": 38, + "section_label": "", + "chord_symbols": [ + "Bb7" + ], + "slash_count": 0 + }, + { + "measure": 39, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0 + }, + { + "measure": 40, + "section_label": "", + "chord_symbols": [ + "F-7", + "Bb7" + ], + "slash_count": 0 + }, + { + "measure": 41, + "section_label": "Guitar Melody", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0 + }, + { + "measure": 42, + "section_label": "", + "chord_symbols": [ + "G-7b5", + "C7b9" + ], + "slash_count": 0 + }, + { + "measure": 43, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0 + }, + { + "measure": 44, + "section_label": "", + "chord_symbols": [ + "A-7b5", + "D7b9" + ], + "slash_count": 0 + }, + { + "measure": 45, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0 + }, + { + "measure": 46, + "section_label": "", + "chord_symbols": [ + "Ab7" + ], + "slash_count": 0 + }, + { + "measure": 47, + "section_label": "", + "chord_symbols": [ + "G-7b5" + ], + "slash_count": 0 + }, + { + "measure": 48, + "section_label": "", + "chord_symbols": [ + "C7b9" + ], + "slash_count": 0 + }, + { + "measure": 49, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0 + }, + { + "measure": 50, + "section_label": "", + "chord_symbols": [ + "Db7" + ], + "slash_count": 0 + }, + { + "measure": 51, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0 + }, + { + "measure": 52, + "section_label": "", + "chord_symbols": [ + "D-7b5", + "G7" + ], + "slash_count": 0 + }, + { + "measure": 53, + "section_label": "", + "chord_symbols": [ + "C-7" + ], + "slash_count": 0 + }, + { + "measure": 54, + "section_label": "", + "chord_symbols": [ + "F7" + ], + "slash_count": 0 + }, + { + "measure": 55, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0 + }, + { + "measure": 56, + "section_label": "", + "chord_symbols": [ + "Bb7" + ], + "slash_count": 0 + }, + { + "measure": 57, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0 + }, + { + "measure": 58, + "section_label": "", + "chord_symbols": [ + "G-7b5", + "C7b9" + ], + "slash_count": 0 + }, + { + "measure": 59, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0 + }, + { + "measure": 60, + "section_label": "", + "chord_symbols": [ + "A-7b9", + "D7b9" + ], + "slash_count": 0 + }, + { + "measure": 61, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0 + }, + { + "measure": 62, + "section_label": "", + "chord_symbols": [ + "Ab7" + ], + "slash_count": 0 + }, + { + "measure": 63, + "section_label": "", + "chord_symbols": [ + "G-7b5" + ], + "slash_count": 0 + }, + { + "measure": 64, + "section_label": "", + "chord_symbols": [ + "C7b9" + ], + "slash_count": 0 + }, + { + "measure": 65, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0 + }, + { + "measure": 66, + "section_label": "", + "chord_symbols": [ + "Db7" + ], + "slash_count": 0 + }, + { + "measure": 67, + "section_label": "", + "chord_symbols": [ + "Ebmaj7", + "Ab7" + ], + "slash_count": 0 + }, + { + "measure": 68, + "section_label": "", + "chord_symbols": [ + "G-7b5" + ], + "slash_count": 0 + }, + { + "measure": 69, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0 + }, + { + "measure": 70, + "section_label": "", + "chord_symbols": [ + "Bb7" + ], + "slash_count": 0 + }, + { + "measure": 71, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0 + }, + { + "measure": 72, + "section_label": "", + "chord_symbols": [ + "F-7", + "Bb7" + ], + "slash_count": 0 + }, + { + "measure": 73, + "section_label": "Guitar Solo", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 74, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 75, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 76, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 77, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 78, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 79, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 80, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 81, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 82, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 83, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 84, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 85, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 86, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 87, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 88, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 89, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 90, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 91, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 92, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 93, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 94, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 95, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 96, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 97, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 98, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 99, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 100, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 101, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 102, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 103, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 104, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 105, + "section_label": "Guitar Solo", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0 + }, + { + "measure": 106, + "section_label": "", + "chord_symbols": [ + "G-7b5", + "C7b9" + ], + "slash_count": 0 + }, + { + "measure": 107, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0 + }, + { + "measure": 108, + "section_label": "", + "chord_symbols": [ + "A-7b5", + "D7b9" + ], + "slash_count": 0 + }, + { + "measure": 109, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0 + }, + { + "measure": 110, + "section_label": "", + "chord_symbols": [ + "Ab7" + ], + "slash_count": 0 + }, + { + "measure": 111, + "section_label": "", + "chord_symbols": [ + "G-7b5" + ], + "slash_count": 0 + }, + { + "measure": 112, + "section_label": "", + "chord_symbols": [ + "C7b9" + ], + "slash_count": 0 + }, + { + "measure": 113, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0 + }, + { + "measure": 114, + "section_label": "", + "chord_symbols": [ + "Db7" + ], + "slash_count": 0 + }, + { + "measure": 115, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0 + }, + { + "measure": 116, + "section_label": "", + "chord_symbols": [ + "D-7b5", + "G7" + ], + "slash_count": 0 + }, + { + "measure": 117, + "section_label": "", + "chord_symbols": [ + "C-7" + ], + "slash_count": 0 + }, + { + "measure": 118, + "section_label": "", + "chord_symbols": [ + "F7" + ], + "slash_count": 0 + }, + { + "measure": 119, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0 + }, + { + "measure": 120, + "section_label": "", + "chord_symbols": [ + "Bb7" + ], + "slash_count": 0 + }, + { + "measure": 121, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0 + }, + { + "measure": 122, + "section_label": "", + "chord_symbols": [ + "G-7b5", + "C7b9" + ], + "slash_count": 0 + }, + { + "measure": 123, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0 + }, + { + "measure": 124, + "section_label": "", + "chord_symbols": [ + "A-7b9", + "D7b9" + ], + "slash_count": 0 + }, + { + "measure": 125, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0 + }, + { + "measure": 126, + "section_label": "", + "chord_symbols": [ + "Ab7" + ], + "slash_count": 0 + }, + { + "measure": 127, + "section_label": "", + "chord_symbols": [ + "G-7b5" + ], + "slash_count": 0 + }, + { + "measure": 128, + "section_label": "", + "chord_symbols": [ + "C7b9" + ], + "slash_count": 0 + }, + { + "measure": 129, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0 + }, + { + "measure": 130, + "section_label": "", + "chord_symbols": [ + "Db7" + ], + "slash_count": 0 + }, + { + "measure": 131, + "section_label": "", + "chord_symbols": [ + "Ebmaj7", + "Ab7" + ], + "slash_count": 0 + }, + { + "measure": 132, + "section_label": "", + "chord_symbols": [ + "G-7b5" + ], + "slash_count": 0 + }, + { + "measure": 133, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0 + }, + { + "measure": 134, + "section_label": "", + "chord_symbols": [ + "Bb7" + ], + "slash_count": 0 + }, + { + "measure": 135, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0 + }, + { + "measure": 136, + "section_label": "", + "chord_symbols": [ + "F-7", + "Bb7" + ], + "slash_count": 0 + }, + { + "measure": 137, + "section_label": "Vocal Melody", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0 + }, + { + "measure": 138, + "section_label": "", + "chord_symbols": [ + "G-7b5", + "C7b9" + ], + "slash_count": 0 + }, + { + "measure": 139, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0 + }, + { + "measure": 140, + "section_label": "", + "chord_symbols": [ + "A-7b5", + "D7b9" + ], + "slash_count": 0 + }, + { + "measure": 141, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0 + }, + { + "measure": 142, + "section_label": "", + "chord_symbols": [ + "Ab7" + ], + "slash_count": 0 + }, + { + "measure": 143, + "section_label": "", + "chord_symbols": [ + "G-7b5" + ], + "slash_count": 0 + }, + { + "measure": 144, + "section_label": "", + "chord_symbols": [ + "C7b9" + ], + "slash_count": 0 + }, + { + "measure": 145, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0 + }, + { + "measure": 146, + "section_label": "", + "chord_symbols": [ + "Db7" + ], + "slash_count": 0 + }, + { + "measure": 147, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0 + }, + { + "measure": 148, + "section_label": "", + "chord_symbols": [ + "D-7b5", + "G7" + ], + "slash_count": 0 + }, + { + "measure": 149, + "section_label": "", + "chord_symbols": [ + "C-7" + ], + "slash_count": 0 + }, + { + "measure": 150, + "section_label": "", + "chord_symbols": [ + "F7" + ], + "slash_count": 0 + }, + { + "measure": 151, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0 + }, + { + "measure": 152, + "section_label": "", + "chord_symbols": [ + "Bb7" + ], + "slash_count": 0 + }, + { + "measure": 153, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0 + }, + { + "measure": 154, + "section_label": "", + "chord_symbols": [ + "G-7b5", + "C7b9" + ], + "slash_count": 0 + }, + { + "measure": 155, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0 + }, + { + "measure": 156, + "section_label": "", + "chord_symbols": [ + "A-7b9", + "D7b9" + ], + "slash_count": 0 + }, + { + "measure": 157, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0 + }, + { + "measure": 158, + "section_label": "", + "chord_symbols": [ + "Ab7" + ], + "slash_count": 0 + }, + { + "measure": 159, + "section_label": "", + "chord_symbols": [ + "G-7b5" + ], + "slash_count": 0 + }, + { + "measure": 160, + "section_label": "", + "chord_symbols": [ + "C7b9" + ], + "slash_count": 0 + }, + { + "measure": 161, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0 + }, + { + "measure": 162, + "section_label": "", + "chord_symbols": [ + "Db7" + ], + "slash_count": 0 + }, + { + "measure": 163, + "section_label": "", + "chord_symbols": [ + "Ebmaj7", + "Ab7" + ], + "slash_count": 0 + }, + { + "measure": 164, + "section_label": "", + "chord_symbols": [ + "G-7b5" + ], + "slash_count": 0 + }, + { + "measure": 165, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0 + }, + { + "measure": 166, + "section_label": "", + "chord_symbols": [ + "Bb7" + ], + "slash_count": 0 + }, + { + "measure": 167, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0 + }, + { + "measure": 168, + "section_label": "", + "chord_symbols": [ + "F-7", + "Bb7" + ], + "slash_count": 0 + }, + { + "measure": 169, + "section_label": "Ending", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0 + }, + { + "measure": 170, + "section_label": "", + "chord_symbols": [ + "Db7" + ], + "slash_count": 0 + }, + { + "measure": 171, + "section_label": "", + "chord_symbols": [ + "Ebmaj7", + "Ab7" + ], + "slash_count": 0 + }, + { + "measure": 172, + "section_label": "", + "chord_symbols": [ + "G-7b5" + ], + "slash_count": 0 + }, + { + "measure": 173, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0 + }, + { + "measure": 174, + "section_label": "", + "chord_symbols": [ + "Bb7" + ], + "slash_count": 0 + }, + { + "measure": 175, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0 + }, + { + "measure": 176, + "section_label": "", + "chord_symbols": [ + "F-7", + "Bb7" + ], + "slash_count": 0 + } + ] + }, + "it-could-happen-to-you-electric.json": { + "title": "It Could Happen to You", + "composer": "James Van Heusen / Johnny Burke", + "key_signature": "Eb", + "part_type": "electric", + "measure_count": 176, + "section_labels": [ + { + "measure": 1, + "label": "Rhythm Lead-in" + }, + { + "measure": 9, + "label": "Vocal Melody" + }, + { + "measure": 41, + "label": "Guitar Melody" + }, + { + "measure": 73, + "label": "Guitar Solo" + }, + { + "measure": 105, + "label": "Guitar Solo" + }, + { + "measure": 137, + "label": "Vocal Melody" + }, + { + "measure": 169, + "label": "Ending" + } + ], + "measures": [ + { + "measure": 1, + "section_label": "Rhythm Lead-in", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0 + }, + { + "measure": 2, + "section_label": "", + "chord_symbols": [ + "Db7" + ], + "slash_count": 0 + }, + { + "measure": 3, + "section_label": "", + "chord_symbols": [ + "Ebmaj7", + "Ab7" + ], + "slash_count": 0 + }, + { + "measure": 4, + "section_label": "", + "chord_symbols": [ + "G-7b5" + ], + "slash_count": 0 + }, + { + "measure": 5, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0 + }, + { + "measure": 6, + "section_label": "", + "chord_symbols": [ + "Bb7" + ], + "slash_count": 0 + }, + { + "measure": 7, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0 + }, + { + "measure": 8, + "section_label": "", + "chord_symbols": [ + "F-7", + "Bb7" + ], + "slash_count": 0 + }, + { + "measure": 9, + "section_label": "Vocal Melody", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0 + }, + { + "measure": 10, + "section_label": "", + "chord_symbols": [ + "G-7b5", + "C7b9" + ], + "slash_count": 0 + }, + { + "measure": 11, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0 + }, + { + "measure": 12, + "section_label": "", + "chord_symbols": [ + "A-7b5", + "D7b9" + ], + "slash_count": 0 + }, + { + "measure": 13, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0 + }, + { + "measure": 14, + "section_label": "", + "chord_symbols": [ + "Ab7" + ], + "slash_count": 0 + }, + { + "measure": 15, + "section_label": "", + "chord_symbols": [ + "G-7b5" + ], + "slash_count": 0 + }, + { + "measure": 16, + "section_label": "", + "chord_symbols": [ + "C7b9" + ], + "slash_count": 0 + }, + { + "measure": 17, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0 + }, + { + "measure": 18, + "section_label": "", + "chord_symbols": [ + "Db7" + ], + "slash_count": 0 + }, + { + "measure": 19, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0 + }, + { + "measure": 20, + "section_label": "", + "chord_symbols": [ + "D-7b5", + "G7" + ], + "slash_count": 0 + }, + { + "measure": 21, + "section_label": "", + "chord_symbols": [ + "C-7" + ], + "slash_count": 0 + }, + { + "measure": 22, + "section_label": "", + "chord_symbols": [ + "F7" + ], + "slash_count": 0 + }, + { + "measure": 23, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0 + }, + { + "measure": 24, + "section_label": "", + "chord_symbols": [ + "Bb7" + ], + "slash_count": 0 + }, + { + "measure": 25, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0 + }, + { + "measure": 26, + "section_label": "", + "chord_symbols": [ + "G-7b5", + "C7b9" + ], + "slash_count": 0 + }, + { + "measure": 27, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0 + }, + { + "measure": 28, + "section_label": "", + "chord_symbols": [ + "A-7b9", + "D7b9" + ], + "slash_count": 0 + }, + { + "measure": 29, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0 + }, + { + "measure": 30, + "section_label": "", + "chord_symbols": [ + "Ab7" + ], + "slash_count": 0 + }, + { + "measure": 31, + "section_label": "", + "chord_symbols": [ + "G-7b5" + ], + "slash_count": 0 + }, + { + "measure": 32, + "section_label": "", + "chord_symbols": [ + "C7b9" + ], + "slash_count": 0 + }, + { + "measure": 33, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0 + }, + { + "measure": 34, + "section_label": "", + "chord_symbols": [ + "Db7" + ], + "slash_count": 0 + }, + { + "measure": 35, + "section_label": "", + "chord_symbols": [ + "Ebmaj7", + "Ab7" + ], + "slash_count": 0 + }, + { + "measure": 36, + "section_label": "", + "chord_symbols": [ + "G-7b5" + ], + "slash_count": 0 + }, + { + "measure": 37, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0 + }, + { + "measure": 38, + "section_label": "", + "chord_symbols": [ + "Bb7" + ], + "slash_count": 0 + }, + { + "measure": 39, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0 + }, + { + "measure": 40, + "section_label": "", + "chord_symbols": [ + "F-7", + "Bb7" + ], + "slash_count": 0 + }, + { + "measure": 41, + "section_label": "Guitar Melody", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0 + }, + { + "measure": 42, + "section_label": "", + "chord_symbols": [ + "G-7b5", + "C7b9" + ], + "slash_count": 0 + }, + { + "measure": 43, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0 + }, + { + "measure": 44, + "section_label": "", + "chord_symbols": [ + "A-7b5", + "D7b9" + ], + "slash_count": 0 + }, + { + "measure": 45, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0 + }, + { + "measure": 46, + "section_label": "", + "chord_symbols": [ + "Ab7" + ], + "slash_count": 0 + }, + { + "measure": 47, + "section_label": "", + "chord_symbols": [ + "G-7b5" + ], + "slash_count": 0 + }, + { + "measure": 48, + "section_label": "", + "chord_symbols": [ + "C7b9" + ], + "slash_count": 0 + }, + { + "measure": 49, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0 + }, + { + "measure": 50, + "section_label": "", + "chord_symbols": [ + "Db7" + ], + "slash_count": 0 + }, + { + "measure": 51, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0 + }, + { + "measure": 52, + "section_label": "", + "chord_symbols": [ + "D-7b5", + "G7" + ], + "slash_count": 0 + }, + { + "measure": 53, + "section_label": "", + "chord_symbols": [ + "C-7" + ], + "slash_count": 0 + }, + { + "measure": 54, + "section_label": "", + "chord_symbols": [ + "F7" + ], + "slash_count": 0 + }, + { + "measure": 55, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0 + }, + { + "measure": 56, + "section_label": "", + "chord_symbols": [ + "Bb7" + ], + "slash_count": 0 + }, + { + "measure": 57, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0 + }, + { + "measure": 58, + "section_label": "", + "chord_symbols": [ + "G-7b5", + "C7b9" + ], + "slash_count": 0 + }, + { + "measure": 59, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0 + }, + { + "measure": 60, + "section_label": "", + "chord_symbols": [ + "A-7b9", + "D7b9" + ], + "slash_count": 0 + }, + { + "measure": 61, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0 + }, + { + "measure": 62, + "section_label": "", + "chord_symbols": [ + "Ab7" + ], + "slash_count": 0 + }, + { + "measure": 63, + "section_label": "", + "chord_symbols": [ + "G-7b5" + ], + "slash_count": 0 + }, + { + "measure": 64, + "section_label": "", + "chord_symbols": [ + "C7b9" + ], + "slash_count": 0 + }, + { + "measure": 65, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0 + }, + { + "measure": 66, + "section_label": "", + "chord_symbols": [ + "Db7" + ], + "slash_count": 0 + }, + { + "measure": 67, + "section_label": "", + "chord_symbols": [ + "Ebmaj7", + "Ab7" + ], + "slash_count": 0 + }, + { + "measure": 68, + "section_label": "", + "chord_symbols": [ + "G-7b5" + ], + "slash_count": 0 + }, + { + "measure": 69, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0 + }, + { + "measure": 70, + "section_label": "", + "chord_symbols": [ + "Bb7" + ], + "slash_count": 0 + }, + { + "measure": 71, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0 + }, + { + "measure": 72, + "section_label": "", + "chord_symbols": [ + "F-7", + "Bb7" + ], + "slash_count": 0 + }, + { + "measure": 73, + "section_label": "Guitar Solo", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0 + }, + { + "measure": 74, + "section_label": "", + "chord_symbols": [ + "G-7b5", + "C7b9" + ], + "slash_count": 0 + }, + { + "measure": 75, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0 + }, + { + "measure": 76, + "section_label": "", + "chord_symbols": [ + "A-7b5", + "D7b9" + ], + "slash_count": 0 + }, + { + "measure": 77, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0 + }, + { + "measure": 78, + "section_label": "", + "chord_symbols": [ + "Ab7" + ], + "slash_count": 0 + }, + { + "measure": 79, + "section_label": "", + "chord_symbols": [ + "G-7b5" + ], + "slash_count": 0 + }, + { + "measure": 80, + "section_label": "", + "chord_symbols": [ + "C7b9" + ], + "slash_count": 0 + }, + { + "measure": 81, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0 + }, + { + "measure": 82, + "section_label": "", + "chord_symbols": [ + "Db7" + ], + "slash_count": 0 + }, + { + "measure": 83, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0 + }, + { + "measure": 84, + "section_label": "", + "chord_symbols": [ + "D-7b5", + "G7" + ], + "slash_count": 0 + }, + { + "measure": 85, + "section_label": "", + "chord_symbols": [ + "C-7" + ], + "slash_count": 0 + }, + { + "measure": 86, + "section_label": "", + "chord_symbols": [ + "F7" + ], + "slash_count": 0 + }, + { + "measure": 87, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0 + }, + { + "measure": 88, + "section_label": "", + "chord_symbols": [ + "Bb7" + ], + "slash_count": 0 + }, + { + "measure": 89, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0 + }, + { + "measure": 90, + "section_label": "", + "chord_symbols": [ + "G-7b5", + "C7b9" + ], + "slash_count": 0 + }, + { + "measure": 91, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0 + }, + { + "measure": 92, + "section_label": "", + "chord_symbols": [ + "A-7b9", + "D7b9" + ], + "slash_count": 0 + }, + { + "measure": 93, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0 + }, + { + "measure": 94, + "section_label": "", + "chord_symbols": [ + "Ab7" + ], + "slash_count": 0 + }, + { + "measure": 95, + "section_label": "", + "chord_symbols": [ + "G-7b5" + ], + "slash_count": 0 + }, + { + "measure": 96, + "section_label": "", + "chord_symbols": [ + "C7b9" + ], + "slash_count": 0 + }, + { + "measure": 97, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0 + }, + { + "measure": 98, + "section_label": "", + "chord_symbols": [ + "Db7" + ], + "slash_count": 0 + }, + { + "measure": 99, + "section_label": "", + "chord_symbols": [ + "Ebmaj7", + "Ab7" + ], + "slash_count": 0 + }, + { + "measure": 100, + "section_label": "", + "chord_symbols": [ + "G-7b5" + ], + "slash_count": 0 + }, + { + "measure": 101, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0 + }, + { + "measure": 102, + "section_label": "", + "chord_symbols": [ + "Bb7" + ], + "slash_count": 0 + }, + { + "measure": 103, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0 + }, + { + "measure": 104, + "section_label": "", + "chord_symbols": [ + "F-7", + "Bb7" + ], + "slash_count": 0 + }, + { + "measure": 105, + "section_label": "Guitar Solo", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 106, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 107, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 108, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 109, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 110, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 111, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 112, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 113, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 114, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 115, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 116, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 117, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 118, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 119, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 120, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 121, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 122, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 123, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 124, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 125, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 126, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 127, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 128, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 129, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 130, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 131, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 132, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 133, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 134, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 135, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 136, + "section_label": "", + "chord_symbols": [], + "slash_count": 4 + }, + { + "measure": 137, + "section_label": "Vocal Melody", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0 + }, + { + "measure": 138, + "section_label": "", + "chord_symbols": [ + "G-7b5", + "C7b9" + ], + "slash_count": 0 + }, + { + "measure": 139, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0 + }, + { + "measure": 140, + "section_label": "", + "chord_symbols": [ + "A-7b5", + "D7b9" + ], + "slash_count": 0 + }, + { + "measure": 141, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0 + }, + { + "measure": 142, + "section_label": "", + "chord_symbols": [ + "Ab7" + ], + "slash_count": 0 + }, + { + "measure": 143, + "section_label": "", + "chord_symbols": [ + "G-7b5" + ], + "slash_count": 0 + }, + { + "measure": 144, + "section_label": "", + "chord_symbols": [ + "C7b9" + ], + "slash_count": 0 + }, + { + "measure": 145, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0 + }, + { + "measure": 146, + "section_label": "", + "chord_symbols": [ + "Db7" + ], + "slash_count": 0 + }, + { + "measure": 147, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0 + }, + { + "measure": 148, + "section_label": "", + "chord_symbols": [ + "D-7b5", + "G7" + ], + "slash_count": 0 + }, + { + "measure": 149, + "section_label": "", + "chord_symbols": [ + "C-7" + ], + "slash_count": 0 + }, + { + "measure": 150, + "section_label": "", + "chord_symbols": [ + "F7" + ], + "slash_count": 0 + }, + { + "measure": 151, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0 + }, + { + "measure": 152, + "section_label": "", + "chord_symbols": [ + "Bb7" + ], + "slash_count": 0 + }, + { + "measure": 153, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0 + }, + { + "measure": 154, + "section_label": "", + "chord_symbols": [ + "G-7b5", + "C7b9" + ], + "slash_count": 0 + }, + { + "measure": 155, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0 + }, + { + "measure": 156, + "section_label": "", + "chord_symbols": [ + "A-7b9", + "D7b9" + ], + "slash_count": 0 + }, + { + "measure": 157, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0 + }, + { + "measure": 158, + "section_label": "", + "chord_symbols": [ + "Ab7" + ], + "slash_count": 0 + }, + { + "measure": 159, + "section_label": "", + "chord_symbols": [ + "G-7b5" + ], + "slash_count": 0 + }, + { + "measure": 160, + "section_label": "", + "chord_symbols": [ + "C7b9" + ], + "slash_count": 0 + }, + { + "measure": 161, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0 + }, + { + "measure": 162, + "section_label": "", + "chord_symbols": [ + "Db7" + ], + "slash_count": 0 + }, + { + "measure": 163, + "section_label": "", + "chord_symbols": [ + "Ebmaj7", + "Ab7" + ], + "slash_count": 0 + }, + { + "measure": 164, + "section_label": "", + "chord_symbols": [ + "G-7b5" + ], + "slash_count": 0 + }, + { + "measure": 165, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0 + }, + { + "measure": 166, + "section_label": "", + "chord_symbols": [ + "Bb7" + ], + "slash_count": 0 + }, + { + "measure": 167, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0 + }, + { + "measure": 168, + "section_label": "", + "chord_symbols": [ + "F-7", + "Bb7" + ], + "slash_count": 0 + }, + { + "measure": 169, + "section_label": "Ending", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0 + }, + { + "measure": 170, + "section_label": "", + "chord_symbols": [ + "Db7" + ], + "slash_count": 0 + }, + { + "measure": 171, + "section_label": "", + "chord_symbols": [ + "Ebmaj7", + "Ab7" + ], + "slash_count": 0 + }, + { + "measure": 172, + "section_label": "", + "chord_symbols": [ + "G-7b5" + ], + "slash_count": 0 + }, + { + "measure": 173, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0 + }, + { + "measure": 174, + "section_label": "", + "chord_symbols": [ + "Bb7" + ], + "slash_count": 0 + }, + { + "measure": 175, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0 + }, + { + "measure": 176, + "section_label": "", + "chord_symbols": [ + "F-7", + "Bb7" + ], + "slash_count": 0 + } + ] + }, + "it-could-happen-to-you-vocal.json": { + "title": "It Could Happen to You", + "composer": "James Van Heusen / Johnny Burke", + "key_signature": "Eb", + "part_type": "vocal", + "measure_count": 176, + "section_labels": [ + { + "measure": 1, + "label": "Rhythm Lead-in" + }, + { + "measure": 9, + "label": "Vocal Melody" + }, + { + "measure": 41, + "label": "Guitar Melody" + }, + { + "measure": 73, + "label": "Guitar Solo" + }, + { + "measure": 105, + "label": "Guitar Solo" + }, + { + "measure": 137, + "label": "Vocal Melody" + }, + { + "measure": 169, + "label": "Ending" + } + ], + "measures": [ + { + "measure": 1, + "section_label": "Rhythm Lead-in", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 2, + "section_label": "", + "chord_symbols": [ + "Db7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 3, + "section_label": "", + "chord_symbols": [ + "Ebmaj7", + "Ab7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 4, + "section_label": "", + "chord_symbols": [ + "G-7b5" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 5, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 6, + "section_label": "", + "chord_symbols": [ + "Bb7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 7, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 8, + "section_label": "", + "chord_symbols": [ + "F-7", + "Bb7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 9, + "section_label": "Vocal Melody", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 12288, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 10, + "section_label": "", + "chord_symbols": [ + "G-7b5", + "C7b9" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 2048, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 2048, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 11, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 12288, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 12, + "section_label": "", + "chord_symbols": [ + "A-7b5", + "D7b9" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 2048, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 2048, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 13, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 14, + "section_label": "", + "chord_symbols": [ + "Ab7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 15, + "section_label": "", + "chord_symbols": [ + "G-7b5" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 16, + "section_label": "", + "chord_symbols": [ + "C7b9" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 17, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 18, + "section_label": "", + "chord_symbols": [ + "Db7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 2048, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 2048, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 19, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 20, + "section_label": "", + "chord_symbols": [ + "D-7b5", + "G7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 21, + "section_label": "", + "chord_symbols": [ + "C-7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 22, + "section_label": "", + "chord_symbols": [ + "F7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 2048, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 2048, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 23, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 24, + "section_label": "", + "chord_symbols": [ + "Bb7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 6144, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 2048, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 25, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 12288, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 26, + "section_label": "", + "chord_symbols": [ + "G-7b5", + "C7b9" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 2048, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 2048, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 27, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 12288, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 28, + "section_label": "", + "chord_symbols": [ + "A-7b9", + "D7b9" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 2048, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 2048, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 29, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 30, + "section_label": "", + "chord_symbols": [ + "Ab7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 31, + "section_label": "", + "chord_symbols": [ + "G-7b5" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 32, + "section_label": "", + "chord_symbols": [ + "C7b9" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 33, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 34, + "section_label": "", + "chord_symbols": [ + "Db7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 2048, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 2048, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 35, + "section_label": "", + "chord_symbols": [ + "Ebmaj7", + "Ab7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 2048, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 2048, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 36, + "section_label": "", + "chord_symbols": [ + "G-7b5" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 37, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 38, + "section_label": "", + "chord_symbols": [ + "Bb7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 39, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 40, + "section_label": "", + "chord_symbols": [ + "F-7", + "Bb7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 41, + "section_label": "Guitar Melody", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 42, + "section_label": "", + "chord_symbols": [ + "G-7b5", + "C7b9" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 43, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 44, + "section_label": "", + "chord_symbols": [ + "A-7b5", + "D7b9" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 45, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 46, + "section_label": "", + "chord_symbols": [ + "Ab7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 47, + "section_label": "", + "chord_symbols": [ + "G-7b5" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 48, + "section_label": "", + "chord_symbols": [ + "C7b9" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 49, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 50, + "section_label": "", + "chord_symbols": [ + "Db7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 51, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 52, + "section_label": "", + "chord_symbols": [ + "D-7b5", + "G7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 53, + "section_label": "", + "chord_symbols": [ + "C-7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 54, + "section_label": "", + "chord_symbols": [ + "F7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 55, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 56, + "section_label": "", + "chord_symbols": [ + "Bb7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 57, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 58, + "section_label": "", + "chord_symbols": [ + "G-7b5", + "C7b9" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 59, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 60, + "section_label": "", + "chord_symbols": [ + "A-7b9", + "D7b9" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 61, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 62, + "section_label": "", + "chord_symbols": [ + "Ab7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 63, + "section_label": "", + "chord_symbols": [ + "G-7b5" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 64, + "section_label": "", + "chord_symbols": [ + "C7b9" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 65, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 66, + "section_label": "", + "chord_symbols": [ + "Db7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 67, + "section_label": "", + "chord_symbols": [ + "Ebmaj7", + "Ab7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 68, + "section_label": "", + "chord_symbols": [ + "G-7b5" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 69, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 70, + "section_label": "", + "chord_symbols": [ + "Bb7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 71, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 72, + "section_label": "", + "chord_symbols": [ + "F-7", + "Bb7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 73, + "section_label": "Guitar Solo", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 74, + "section_label": "", + "chord_symbols": [ + "G-7b5", + "C7b9" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 75, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 76, + "section_label": "", + "chord_symbols": [ + "A-7b5", + "D7b9" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 77, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 78, + "section_label": "", + "chord_symbols": [ + "Ab7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 79, + "section_label": "", + "chord_symbols": [ + "G-7b5" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 80, + "section_label": "", + "chord_symbols": [ + "C7b9" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 81, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 82, + "section_label": "", + "chord_symbols": [ + "Db7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 83, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 84, + "section_label": "", + "chord_symbols": [ + "D-7b5", + "G7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 85, + "section_label": "", + "chord_symbols": [ + "C-7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 86, + "section_label": "", + "chord_symbols": [ + "F7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 87, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 88, + "section_label": "", + "chord_symbols": [ + "Bb7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 89, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 90, + "section_label": "", + "chord_symbols": [ + "G-7b5", + "C7b9" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 91, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 92, + "section_label": "", + "chord_symbols": [ + "A-7b9", + "D7b9" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 93, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 94, + "section_label": "", + "chord_symbols": [ + "Ab7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 95, + "section_label": "", + "chord_symbols": [ + "G-7b5" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 96, + "section_label": "", + "chord_symbols": [ + "C7b9" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 97, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 98, + "section_label": "", + "chord_symbols": [ + "Db7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 99, + "section_label": "", + "chord_symbols": [ + "Ebmaj7", + "Ab7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 100, + "section_label": "", + "chord_symbols": [ + "G-7b5" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 101, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 102, + "section_label": "", + "chord_symbols": [ + "Bb7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 103, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 104, + "section_label": "", + "chord_symbols": [ + "F-7", + "Bb7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 105, + "section_label": "Guitar Solo", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 106, + "section_label": "", + "chord_symbols": [ + "G-7b5", + "C7b9" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 107, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 108, + "section_label": "", + "chord_symbols": [ + "A-7b5", + "D7b9" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 109, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 110, + "section_label": "", + "chord_symbols": [ + "Ab7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 111, + "section_label": "", + "chord_symbols": [ + "G-7b5" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 112, + "section_label": "", + "chord_symbols": [ + "C7b9" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 113, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 114, + "section_label": "", + "chord_symbols": [ + "Db7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 115, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 116, + "section_label": "", + "chord_symbols": [ + "D-7b5", + "G7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 117, + "section_label": "", + "chord_symbols": [ + "C-7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 118, + "section_label": "", + "chord_symbols": [ + "F7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 119, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 120, + "section_label": "", + "chord_symbols": [ + "Bb7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 121, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 122, + "section_label": "", + "chord_symbols": [ + "G-7b5", + "C7b9" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 123, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 124, + "section_label": "", + "chord_symbols": [ + "A-7b9", + "D7b9" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 125, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 126, + "section_label": "", + "chord_symbols": [ + "Ab7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 127, + "section_label": "", + "chord_symbols": [ + "G-7b5" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 128, + "section_label": "", + "chord_symbols": [ + "C7b9" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 129, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 130, + "section_label": "", + "chord_symbols": [ + "Db7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 131, + "section_label": "", + "chord_symbols": [ + "Ebmaj7", + "Ab7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 132, + "section_label": "", + "chord_symbols": [ + "G-7b5" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 133, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 134, + "section_label": "", + "chord_symbols": [ + "Bb7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 135, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 136, + "section_label": "", + "chord_symbols": [ + "F-7", + "Bb7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 137, + "section_label": "Vocal Melody", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 12288, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 138, + "section_label": "", + "chord_symbols": [ + "G-7b5", + "C7b9" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 2048, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 2048, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 139, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 12288, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 140, + "section_label": "", + "chord_symbols": [ + "A-7b5", + "D7b9" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 2048, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 2048, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 141, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 142, + "section_label": "", + "chord_symbols": [ + "Ab7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 143, + "section_label": "", + "chord_symbols": [ + "G-7b5" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 144, + "section_label": "", + "chord_symbols": [ + "C7b9" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 145, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 146, + "section_label": "", + "chord_symbols": [ + "Db7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 2048, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 2048, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 147, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 148, + "section_label": "", + "chord_symbols": [ + "D-7b5", + "G7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 149, + "section_label": "", + "chord_symbols": [ + "C-7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 150, + "section_label": "", + "chord_symbols": [ + "F7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 2048, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 2048, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 151, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 152, + "section_label": "", + "chord_symbols": [ + "Bb7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 6144, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 2048, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 153, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 12288, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 154, + "section_label": "", + "chord_symbols": [ + "G-7b5", + "C7b9" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 2048, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 2048, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 155, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 12288, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 156, + "section_label": "", + "chord_symbols": [ + "A-7b9", + "D7b9" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 2048, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 2048, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 157, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 158, + "section_label": "", + "chord_symbols": [ + "Ab7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 159, + "section_label": "", + "chord_symbols": [ + "G-7b5" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 160, + "section_label": "", + "chord_symbols": [ + "C7b9" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 161, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 162, + "section_label": "", + "chord_symbols": [ + "Db7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 2048, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 2048, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 163, + "section_label": "", + "chord_symbols": [ + "Ebmaj7", + "Ab7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 2048, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 2048, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 164, + "section_label": "", + "chord_symbols": [ + "G-7b5" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 165, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 166, + "section_label": "", + "chord_symbols": [ + "Bb7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 167, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 168, + "section_label": "", + "chord_symbols": [ + "F-7", + "Bb7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 169, + "section_label": "Ending", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 170, + "section_label": "", + "chord_symbols": [ + "Db7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 2048, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 2048, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 171, + "section_label": "", + "chord_symbols": [ + "Ebmaj7", + "Ab7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 2048, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 2048, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 172, + "section_label": "", + "chord_symbols": [ + "G-7b5" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": false + } + ] + }, + { + "measure": 173, + "section_label": "", + "chord_symbols": [ + "F-7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 174, + "section_label": "", + "chord_symbols": [ + "Bb7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 8192, + "display_ticks": null, + "has_lyric": true + }, + { + "kind": "note", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 175, + "section_label": "", + "chord_symbols": [ + "Ebmaj7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "note", + "duration_ticks": 16384, + "display_ticks": null, + "has_lyric": true + } + ] + }, + { + "measure": 176, + "section_label": "", + "chord_symbols": [ + "F-7", + "Bb7" + ], + "slash_count": 0, + "vocal_skeleton": [ + { + "kind": "rest", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + }, + { + "kind": "rest", + "duration_ticks": 4096, + "display_ticks": null, + "has_lyric": false + } + ] + } + ] + } +} diff --git a/data/practice/chord/01_three_note_shell_voicings/01-cycles.json b/data/practice/chord/01_three_note_shell_voicings/01-cycles.json new file mode 100644 index 0000000..f7411d7 --- /dev/null +++ b/data/practice/chord/01_three_note_shell_voicings/01-cycles.json @@ -0,0 +1,448 @@ +{ + "version": 1, + "metadata": { + "title": "01 Cycles", + "composer": "", + "key_signature": "C", + "time_signature": "4/4", + "style": "Med. Swing" + }, + "staves": [ + { + "id": "staff-vocal", + "name": "Vocal", + "clef": "treble", + "role": "vocal", + "measures": [ + { + "id": "measure-1", + "time_signature": "4/4", + "key_signature": "C", + "voices": [ + { + "id": "voice-2vg7k4p1", + "notes": [ + { + "id": "note-ekasof25", + "kind": "note", + "duration_ticks": 4096, + "pitches": [ + { + "letter": "g", + "accidental": "n", + "octave": 4 + }, + { + "letter": "b", + "accidental": "n", + "octave": 4 + }, + { + "letter": "f", + "accidental": "n", + "octave": 5 + } + ], + "chord_symbol": "G7", + "hidden": false + }, + { + "id": "note-1fafh8eh", + "kind": "note", + "duration_ticks": 4096, + "pitches": [ + { + "letter": "g", + "accidental": "n", + "octave": 4 + }, + { + "letter": "b", + "accidental": "n", + "octave": 4 + }, + { + "letter": "f", + "accidental": "n", + "octave": 5 + } + ], + "hidden": false + }, + { + "id": "note-46dyougy", + "kind": "note", + "duration_ticks": 4096, + "pitches": [ + { + "letter": "c", + "accidental": "n", + "octave": 4 + }, + { + "letter": "b", + "accidental": "b", + "octave": 4 + }, + { + "letter": "e", + "accidental": "n", + "octave": 5 + } + ], + "chord_symbol": "C7", + "hidden": false + }, + { + "id": "note-qsxuq33n", + "kind": "note", + "duration_ticks": 4096, + "pitches": [ + { + "letter": "c", + "accidental": "n", + "octave": 4 + }, + { + "letter": "b", + "accidental": "b", + "octave": 4 + }, + { + "letter": "e", + "accidental": "n", + "octave": 5 + } + ], + "hidden": false + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-tn8h5n0h", + "time_signature": "4/4", + "key_signature": "C", + "voices": [ + { + "id": "voice-8hwk9b7q", + "notes": [ + { + "id": "note-64c6gqr5", + "kind": "note", + "duration_ticks": 4096, + "pitches": [ + { + "letter": "f", + "accidental": "n", + "octave": 4 + }, + { + "letter": "a", + "accidental": "n", + "octave": 4 + }, + { + "letter": "e", + "accidental": "b", + "octave": 5 + } + ], + "chord_symbol": "F7", + "hidden": false + }, + { + "id": "note-hbgzjjm4", + "kind": "note", + "duration_ticks": 4096, + "pitches": [ + { + "letter": "f", + "accidental": "n", + "octave": 4 + }, + { + "letter": "a", + "accidental": "n", + "octave": 4 + }, + { + "letter": "e", + "accidental": "b", + "octave": 5 + } + ], + "hidden": false + }, + { + "id": "note-bpc3jl26", + "kind": "note", + "duration_ticks": 4096, + "pitches": [ + { + "letter": "b", + "accidental": "b", + "octave": 3 + }, + { + "letter": "a", + "accidental": "b", + "octave": 4 + }, + { + "letter": "d", + "accidental": "n", + "octave": 5 + } + ], + "chord_symbol": "Bb7", + "hidden": false + }, + { + "id": "note-tph2glun", + "kind": "note", + "duration_ticks": 4096, + "pitches": [ + { + "letter": "b", + "accidental": "b", + "octave": 3 + }, + { + "letter": "a", + "accidental": "b", + "octave": 4 + }, + { + "letter": "d", + "accidental": "n", + "octave": 5 + } + ], + "hidden": false + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-toxu9etb", + "time_signature": "4/4", + "key_signature": "C", + "voices": [ + { + "id": "voice-rz7qmbk5", + "notes": [ + { + "id": "note-rfziub9v", + "kind": "note", + "duration_ticks": 4096, + "pitches": [ + { + "letter": "e", + "accidental": "b", + "octave": 4 + }, + { + "letter": "g", + "accidental": "n", + "octave": 4 + }, + { + "letter": "d", + "accidental": "b", + "octave": 5 + } + ], + "chord_symbol": "Eb7", + "hidden": false + }, + { + "id": "note-q6he4t8j", + "kind": "note", + "duration_ticks": 4096, + "pitches": [ + { + "letter": "e", + "accidental": "b", + "octave": 4 + }, + { + "letter": "g", + "accidental": "n", + "octave": 4 + }, + { + "letter": "d", + "accidental": "b", + "octave": 5 + } + ], + "hidden": false + }, + { + "id": "note-bwh485jp", + "kind": "note", + "duration_ticks": 4096, + "pitches": [ + { + "letter": "a", + "accidental": "b", + "octave": 3 + }, + { + "letter": "g", + "accidental": "b", + "octave": 4 + }, + { + "letter": "c", + "accidental": "n", + "octave": 5 + } + ], + "chord_symbol": "Ab7", + "hidden": false + }, + { + "id": "note-rjm4vz5k", + "kind": "note", + "duration_ticks": 4096, + "pitches": [ + { + "letter": "a", + "accidental": "b", + "octave": 3 + }, + { + "letter": "g", + "accidental": "b", + "octave": 4 + }, + { + "letter": "c", + "accidental": "n", + "octave": 5 + } + ], + "hidden": false + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-vj7x9zvk", + "time_signature": "4/4", + "key_signature": "C", + "voices": [ + { + "id": "voice-9sgs888d", + "notes": [ + { + "id": "note-v1y57u53", + "kind": "note", + "duration_ticks": 4096, + "pitches": [ + { + "letter": "d", + "accidental": "b", + "octave": 4 + }, + { + "letter": "f", + "accidental": "n", + "octave": 4 + }, + { + "letter": "c", + "accidental": "n", + "octave": 5 + } + ], + "chord_symbol": "Dbmaj7", + "hidden": false + }, + { + "id": "note-qvbgpked", + "kind": "note", + "duration_ticks": 4096, + "pitches": [ + { + "letter": "d", + "accidental": "b", + "octave": 4 + }, + { + "letter": "f", + "accidental": "n", + "octave": 4 + }, + { + "letter": "c", + "accidental": "n", + "octave": 5 + } + ], + "hidden": false + }, + { + "id": "note-gy3ukk29", + "kind": "note", + "duration_ticks": 4096, + "pitches": [ + { + "letter": "d", + "accidental": "b", + "octave": 4 + }, + { + "letter": "f", + "accidental": "n", + "octave": 4 + }, + { + "letter": "b", + "accidental": "b", + "octave": 4 + } + ], + "chord_symbol": "Db6", + "hidden": false + }, + { + "id": "note-0vcz65hi", + "kind": "note", + "duration_ticks": 4096, + "pitches": [ + { + "letter": "d", + "accidental": "b", + "octave": 4 + }, + { + "letter": "f", + "accidental": "n", + "octave": 4 + }, + { + "letter": "b", + "accidental": "b", + "octave": 4 + } + ], + "hidden": false + } + ], + "tuplets": [] + } + ] + } + ] + } + ] +} diff --git a/data/practice/melody/01_diatonic_excercises/01-the-diatonic-scales.json b/data/practice/melody/01_diatonic_excercises/01-the-diatonic-scales.json new file mode 100644 index 0000000..1be6d19 --- /dev/null +++ b/data/practice/melody/01_diatonic_excercises/01-the-diatonic-scales.json @@ -0,0 +1,1558 @@ +{ + "version": 1, + "metadata": { + "title": "01 The Diatonic Scales", + "composer": "", + "key_signature": "C", + "time_signature": "4/4", + "style": "Med. Swing" + }, + "staves": [ + { + "id": "staff-vocal", + "name": "Vocal", + "clef": "treble", + "role": "vocal", + "measures": [ + { + "id": "measure-1", + "time_signature": "4/4", + "key_signature": "C", + "voices": [ + { + "id": "voice-qb98gzde", + "notes": [ + { + "id": "note-bxlkf4ug", + "kind": "note", + "duration_ticks": 1366, + "pitches": [ + { + "letter": "c", + "accidental": "n", + "octave": 4 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-0c6c5tws", + "hidden": false + }, + { + "id": "note-i2tjegsv", + "kind": "note", + "duration_ticks": 1365, + "pitches": [ + { + "letter": "d", + "accidental": "n", + "octave": 4 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-0c6c5tws", + "hidden": false + }, + { + "id": "note-46thuc68", + "kind": "note", + "duration_ticks": 1365, + "pitches": [ + { + "letter": "e", + "accidental": "n", + "octave": 4 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-0c6c5tws", + "hidden": false + }, + { + "id": "note-r5zek4mx", + "kind": "note", + "duration_ticks": 1366, + "pitches": [ + { + "letter": "d", + "accidental": "n", + "octave": 4 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-7br9xx6i", + "hidden": false + }, + { + "id": "note-m5w6wcw4", + "kind": "note", + "duration_ticks": 1365, + "pitches": [ + { + "letter": "e", + "accidental": "n", + "octave": 4 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-7br9xx6i", + "hidden": false + }, + { + "id": "note-2fmh7gqz", + "kind": "note", + "duration_ticks": 1365, + "pitches": [ + { + "letter": "f", + "accidental": "n", + "octave": 4 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-7br9xx6i", + "hidden": false + }, + { + "id": "note-kw6fhfap", + "kind": "note", + "duration_ticks": 1366, + "pitches": [ + { + "letter": "e", + "accidental": "n", + "octave": 4 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-qv21cdbr", + "hidden": false + }, + { + "id": "note-jygl12v0", + "kind": "note", + "duration_ticks": 1365, + "pitches": [ + { + "letter": "f", + "accidental": "n", + "octave": 4 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-qv21cdbr", + "hidden": false + }, + { + "id": "note-imtgvxtj", + "kind": "note", + "duration_ticks": 1365, + "pitches": [ + { + "letter": "g", + "accidental": "n", + "octave": 4 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-qv21cdbr", + "hidden": false + }, + { + "id": "note-xt2llp3p", + "kind": "note", + "duration_ticks": 1366, + "pitches": [ + { + "letter": "f", + "accidental": "n", + "octave": 4 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-vdvtkj4m", + "hidden": false + }, + { + "id": "note-xxf30jqc", + "kind": "note", + "duration_ticks": 1365, + "pitches": [ + { + "letter": "g", + "accidental": "n", + "octave": 4 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-vdvtkj4m", + "hidden": false + }, + { + "id": "note-s06gf3nr", + "kind": "note", + "duration_ticks": 1365, + "pitches": [ + { + "letter": "a", + "accidental": "n", + "octave": 4 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-vdvtkj4m", + "hidden": false + } + ], + "tuplets": [ + { + "id": "tuplet-0c6c5tws", + "note_count": 3, + "space_count": 2 + }, + { + "id": "tuplet-7br9xx6i", + "note_count": 3, + "space_count": 2 + }, + { + "id": "tuplet-qv21cdbr", + "note_count": 3, + "space_count": 2 + }, + { + "id": "tuplet-vdvtkj4m", + "note_count": 3, + "space_count": 2 + } + ] + } + ] + }, + { + "id": "measure-rg2scwei", + "time_signature": "4/4", + "key_signature": "C", + "voices": [ + { + "id": "voice-9px0mgan", + "notes": [ + { + "id": "note-ka5cwduo", + "kind": "note", + "duration_ticks": 1366, + "pitches": [ + { + "letter": "g", + "accidental": "n", + "octave": 4 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-0hgigtlc", + "hidden": false + }, + { + "id": "note-a0jm57pv", + "kind": "note", + "duration_ticks": 1365, + "pitches": [ + { + "letter": "a", + "accidental": "n", + "octave": 4 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-0hgigtlc", + "hidden": false + }, + { + "id": "note-a6dew1x8", + "kind": "note", + "duration_ticks": 1365, + "pitches": [ + { + "letter": "b", + "accidental": "n", + "octave": 4 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-0hgigtlc", + "hidden": false + }, + { + "id": "note-pp5ix20g", + "kind": "note", + "duration_ticks": 1366, + "pitches": [ + { + "letter": "a", + "accidental": "n", + "octave": 4 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-sk4f28v4", + "hidden": false + }, + { + "id": "note-2r5lj3d7", + "kind": "note", + "duration_ticks": 1365, + "pitches": [ + { + "letter": "b", + "accidental": "n", + "octave": 4 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-sk4f28v4", + "hidden": false + }, + { + "id": "note-tsbdlnpw", + "kind": "note", + "duration_ticks": 1365, + "pitches": [ + { + "letter": "c", + "accidental": "n", + "octave": 5 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-sk4f28v4", + "hidden": false + }, + { + "id": "note-1n8gcxul", + "kind": "note", + "duration_ticks": 1366, + "pitches": [ + { + "letter": "b", + "accidental": "n", + "octave": 4 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-ql3hxzpa", + "hidden": false + }, + { + "id": "note-lo0hh86o", + "kind": "note", + "duration_ticks": 1365, + "pitches": [ + { + "letter": "c", + "accidental": "n", + "octave": 5 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-ql3hxzpa", + "hidden": false + }, + { + "id": "note-30g0w375", + "kind": "note", + "duration_ticks": 1365, + "pitches": [ + { + "letter": "d", + "accidental": "n", + "octave": 5 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-ql3hxzpa", + "hidden": false + }, + { + "id": "note-vdsp6lyd", + "kind": "note", + "duration_ticks": 1366, + "pitches": [ + { + "letter": "c", + "accidental": "n", + "octave": 5 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-bfsqd36b", + "hidden": false + }, + { + "id": "note-6mesdjsd", + "kind": "note", + "duration_ticks": 1365, + "pitches": [ + { + "letter": "d", + "accidental": "n", + "octave": 5 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-bfsqd36b", + "hidden": false + }, + { + "id": "note-ryiqaves", + "kind": "note", + "duration_ticks": 1365, + "pitches": [ + { + "letter": "e", + "accidental": "n", + "octave": 5 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-bfsqd36b", + "hidden": false + } + ], + "tuplets": [ + { + "id": "tuplet-0hgigtlc", + "note_count": 3, + "space_count": 2 + }, + { + "id": "tuplet-sk4f28v4", + "note_count": 3, + "space_count": 2 + }, + { + "id": "tuplet-ql3hxzpa", + "note_count": 3, + "space_count": 2 + }, + { + "id": "tuplet-bfsqd36b", + "note_count": 3, + "space_count": 2 + } + ] + } + ] + }, + { + "id": "measure-gxys5m6z", + "time_signature": "4/4", + "key_signature": "C", + "voices": [ + { + "id": "voice-fbr2eqd5", + "notes": [ + { + "id": "note-57ucdp89", + "kind": "note", + "duration_ticks": 1366, + "pitches": [ + { + "letter": "d", + "accidental": "n", + "octave": 5 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-sjd8geyw", + "hidden": false + }, + { + "id": "note-se99qakq", + "kind": "note", + "duration_ticks": 1365, + "pitches": [ + { + "letter": "e", + "accidental": "n", + "octave": 5 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-sjd8geyw", + "hidden": false + }, + { + "id": "note-lq6gd2o8", + "kind": "note", + "duration_ticks": 1365, + "pitches": [ + { + "letter": "f", + "accidental": "n", + "octave": 5 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-sjd8geyw", + "hidden": false + }, + { + "id": "note-u1ih3c89", + "kind": "note", + "duration_ticks": 1366, + "pitches": [ + { + "letter": "e", + "accidental": "n", + "octave": 5 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-jglcvslm", + "hidden": false + }, + { + "id": "note-1hdahj72", + "kind": "note", + "duration_ticks": 1365, + "pitches": [ + { + "letter": "f", + "accidental": "n", + "octave": 5 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-jglcvslm", + "hidden": false + }, + { + "id": "note-186nmb17", + "kind": "note", + "duration_ticks": 1365, + "pitches": [ + { + "letter": "g", + "accidental": "n", + "octave": 5 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-jglcvslm", + "hidden": false + }, + { + "id": "note-oryk1kwq", + "kind": "note", + "duration_ticks": 1366, + "pitches": [ + { + "letter": "f", + "accidental": "n", + "octave": 5 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-lzam84h2", + "hidden": false + }, + { + "id": "note-9cfwrwm1", + "kind": "note", + "duration_ticks": 1365, + "pitches": [ + { + "letter": "g", + "accidental": "n", + "octave": 5 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-lzam84h2", + "hidden": false + }, + { + "id": "note-dkg7bffj", + "kind": "note", + "duration_ticks": 1365, + "pitches": [ + { + "letter": "a", + "accidental": "n", + "octave": 5 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-lzam84h2", + "hidden": false + }, + { + "id": "note-9u1uww79", + "kind": "note", + "duration_ticks": 1366, + "pitches": [ + { + "letter": "g", + "accidental": "n", + "octave": 5 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-3kg6c83v", + "hidden": false + }, + { + "id": "note-q1a9k3qe", + "kind": "note", + "duration_ticks": 1365, + "pitches": [ + { + "letter": "a", + "accidental": "n", + "octave": 5 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-3kg6c83v", + "hidden": false + }, + { + "id": "note-ndravo0j", + "kind": "note", + "duration_ticks": 1365, + "pitches": [ + { + "letter": "b", + "accidental": "n", + "octave": 5 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-3kg6c83v", + "hidden": false + } + ], + "tuplets": [ + { + "id": "tuplet-sjd8geyw", + "note_count": 3, + "space_count": 2 + }, + { + "id": "tuplet-jglcvslm", + "note_count": 3, + "space_count": 2 + }, + { + "id": "tuplet-lzam84h2", + "note_count": 3, + "space_count": 2 + }, + { + "id": "tuplet-3kg6c83v", + "note_count": 3, + "space_count": 2 + } + ] + } + ] + }, + { + "id": "measure-4vbri0zj", + "time_signature": "4/4", + "key_signature": "C", + "voices": [ + { + "id": "voice-wdewvnpc", + "notes": [ + { + "id": "note-ucj0etgg", + "kind": "note", + "duration_ticks": 1366, + "pitches": [ + { + "letter": "a", + "accidental": "n", + "octave": 5 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-7pxfmh32", + "hidden": false + }, + { + "id": "note-xb6yrv8c", + "kind": "note", + "duration_ticks": 1365, + "pitches": [ + { + "letter": "b", + "accidental": "n", + "octave": 5 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-7pxfmh32", + "hidden": false + }, + { + "id": "note-ietm2w5r", + "kind": "note", + "duration_ticks": 1365, + "pitches": [ + { + "letter": "c", + "accidental": "n", + "octave": 6 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-7pxfmh32", + "hidden": false + }, + { + "id": "note-9iza7rvh", + "kind": "note", + "duration_ticks": 1366, + "pitches": [ + { + "letter": "b", + "accidental": "n", + "octave": 5 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-ugbzsnpb", + "hidden": false + }, + { + "id": "note-1xheqp5s", + "kind": "note", + "duration_ticks": 1365, + "pitches": [ + { + "letter": "c", + "accidental": "n", + "octave": 6 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-ugbzsnpb", + "hidden": false + }, + { + "id": "note-1t3pebnn", + "kind": "note", + "duration_ticks": 1365, + "pitches": [ + { + "letter": "d", + "accidental": "n", + "octave": 6 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-ugbzsnpb", + "hidden": false + }, + { + "id": "note-ga6v2g2o", + "kind": "note", + "duration_ticks": 8192, + "pitches": [ + { + "letter": "c", + "accidental": "n", + "octave": 6 + } + ], + "hidden": false + } + ], + "tuplets": [ + { + "id": "tuplet-7pxfmh32", + "note_count": 3, + "space_count": 2 + }, + { + "id": "tuplet-ugbzsnpb", + "note_count": 3, + "space_count": 2 + } + ] + } + ] + }, + { + "id": "measure-2ipnsuly", + "time_signature": "4/4", + "key_signature": "C", + "voices": [ + { + "id": "voice-etcsr918", + "notes": [ + { + "id": "note-n1y3pcno", + "kind": "note", + "duration_ticks": 1366, + "pitches": [ + { + "letter": "c", + "accidental": "n", + "octave": 6 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-fpud02wc", + "hidden": false + }, + { + "id": "note-to1jn24c", + "kind": "note", + "duration_ticks": 1365, + "pitches": [ + { + "letter": "b", + "accidental": "n", + "octave": 5 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-fpud02wc", + "hidden": false + }, + { + "id": "note-f1ca9l1o", + "kind": "note", + "duration_ticks": 1365, + "pitches": [ + { + "letter": "a", + "accidental": "n", + "octave": 5 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-fpud02wc", + "hidden": false + }, + { + "id": "note-bvrdcejv", + "kind": "note", + "duration_ticks": 1366, + "pitches": [ + { + "letter": "b", + "accidental": "n", + "octave": 5 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-cael92rs", + "hidden": false + }, + { + "id": "note-wjcprqb3", + "kind": "note", + "duration_ticks": 1365, + "pitches": [ + { + "letter": "a", + "accidental": "n", + "octave": 5 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-cael92rs", + "hidden": false + }, + { + "id": "note-di1cz37y", + "kind": "note", + "duration_ticks": 1365, + "pitches": [ + { + "letter": "g", + "accidental": "n", + "octave": 5 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-cael92rs", + "hidden": false + }, + { + "id": "note-wkic5hag", + "kind": "note", + "duration_ticks": 1366, + "pitches": [ + { + "letter": "a", + "accidental": "n", + "octave": 5 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-vafmlhht", + "hidden": false + }, + { + "id": "note-pvji76v1", + "kind": "note", + "duration_ticks": 1365, + "pitches": [ + { + "letter": "g", + "accidental": "n", + "octave": 5 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-vafmlhht", + "hidden": false + }, + { + "id": "note-3tld6udb", + "kind": "note", + "duration_ticks": 1365, + "pitches": [ + { + "letter": "f", + "accidental": "n", + "octave": 5 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-vafmlhht", + "hidden": false + }, + { + "id": "note-y1s32dwx", + "kind": "note", + "duration_ticks": 1366, + "pitches": [ + { + "letter": "g", + "accidental": "n", + "octave": 5 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-mnku0rkq", + "hidden": false + }, + { + "id": "note-cs88wbjs", + "kind": "note", + "duration_ticks": 1365, + "pitches": [ + { + "letter": "f", + "accidental": "n", + "octave": 5 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-mnku0rkq", + "hidden": false + }, + { + "id": "note-20kf276x", + "kind": "note", + "duration_ticks": 1365, + "pitches": [ + { + "letter": "e", + "accidental": "n", + "octave": 5 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-mnku0rkq", + "hidden": false + } + ], + "tuplets": [ + { + "id": "tuplet-fpud02wc", + "note_count": 3, + "space_count": 2 + }, + { + "id": "tuplet-cael92rs", + "note_count": 3, + "space_count": 2 + }, + { + "id": "tuplet-vafmlhht", + "note_count": 3, + "space_count": 2 + }, + { + "id": "tuplet-mnku0rkq", + "note_count": 3, + "space_count": 2 + } + ] + } + ] + }, + { + "id": "measure-zs1vs6x5", + "time_signature": "4/4", + "key_signature": "C", + "voices": [ + { + "id": "voice-0160bcf2", + "notes": [ + { + "id": "note-xq0eb1xd", + "kind": "note", + "duration_ticks": 1366, + "pitches": [ + { + "letter": "f", + "accidental": "n", + "octave": 5 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-poawgjl8", + "hidden": false + }, + { + "id": "note-vop6rzh7", + "kind": "note", + "duration_ticks": 1365, + "pitches": [ + { + "letter": "e", + "accidental": "n", + "octave": 5 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-poawgjl8", + "hidden": false + }, + { + "id": "note-vr92r23w", + "kind": "note", + "duration_ticks": 1365, + "pitches": [ + { + "letter": "d", + "accidental": "n", + "octave": 5 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-poawgjl8", + "hidden": false + }, + { + "id": "note-v8fs9ztq", + "kind": "note", + "duration_ticks": 1366, + "pitches": [ + { + "letter": "e", + "accidental": "n", + "octave": 5 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-44dvhfxz", + "hidden": false + }, + { + "id": "note-rogj5cev", + "kind": "note", + "duration_ticks": 1365, + "pitches": [ + { + "letter": "d", + "accidental": "n", + "octave": 5 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-44dvhfxz", + "hidden": false + }, + { + "id": "note-9wd4q2fz", + "kind": "note", + "duration_ticks": 1365, + "pitches": [ + { + "letter": "c", + "accidental": "n", + "octave": 5 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-44dvhfxz", + "hidden": false + }, + { + "id": "note-950rnkfe", + "kind": "note", + "duration_ticks": 1366, + "pitches": [ + { + "letter": "d", + "accidental": "n", + "octave": 5 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-g84u6o31", + "hidden": false + }, + { + "id": "note-ja6ss3bh", + "kind": "note", + "duration_ticks": 1365, + "pitches": [ + { + "letter": "c", + "accidental": "n", + "octave": 5 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-g84u6o31", + "hidden": false + }, + { + "id": "note-wftoujxu", + "kind": "note", + "duration_ticks": 1365, + "pitches": [ + { + "letter": "b", + "accidental": "n", + "octave": 4 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-g84u6o31", + "hidden": false + }, + { + "id": "note-aofm5qua", + "kind": "note", + "duration_ticks": 1366, + "pitches": [ + { + "letter": "c", + "accidental": "n", + "octave": 5 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-5xuqvazv", + "hidden": false + }, + { + "id": "note-kv79naw4", + "kind": "note", + "duration_ticks": 1365, + "pitches": [ + { + "letter": "b", + "accidental": "n", + "octave": 4 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-5xuqvazv", + "hidden": false + }, + { + "id": "note-niov875z", + "kind": "note", + "duration_ticks": 1365, + "pitches": [ + { + "letter": "a", + "accidental": "n", + "octave": 4 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-5xuqvazv", + "hidden": false + } + ], + "tuplets": [ + { + "id": "tuplet-poawgjl8", + "note_count": 3, + "space_count": 2 + }, + { + "id": "tuplet-44dvhfxz", + "note_count": 3, + "space_count": 2 + }, + { + "id": "tuplet-g84u6o31", + "note_count": 3, + "space_count": 2 + }, + { + "id": "tuplet-5xuqvazv", + "note_count": 3, + "space_count": 2 + } + ] + } + ] + }, + { + "id": "measure-bg26hhcc", + "time_signature": "4/4", + "key_signature": "C", + "voices": [ + { + "id": "voice-p94lw6g6", + "notes": [ + { + "id": "note-1cnd787r", + "kind": "note", + "duration_ticks": 1366, + "pitches": [ + { + "letter": "b", + "accidental": "n", + "octave": 4 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-e1s1uefl", + "hidden": false + }, + { + "id": "note-igxn5vko", + "kind": "note", + "duration_ticks": 1365, + "pitches": [ + { + "letter": "a", + "accidental": "n", + "octave": 4 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-e1s1uefl", + "hidden": false + }, + { + "id": "note-e8v88wkp", + "kind": "note", + "duration_ticks": 1365, + "pitches": [ + { + "letter": "g", + "accidental": "n", + "octave": 4 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-e1s1uefl", + "hidden": false + }, + { + "id": "note-el762yor", + "kind": "note", + "duration_ticks": 1366, + "pitches": [ + { + "letter": "a", + "accidental": "n", + "octave": 4 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-oatrapdk", + "hidden": false + }, + { + "id": "note-m1gpu28c", + "kind": "note", + "duration_ticks": 1365, + "pitches": [ + { + "letter": "g", + "accidental": "n", + "octave": 4 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-oatrapdk", + "hidden": false + }, + { + "id": "note-an156n90", + "kind": "note", + "duration_ticks": 1365, + "pitches": [ + { + "letter": "f", + "accidental": "n", + "octave": 4 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-oatrapdk", + "hidden": false + }, + { + "id": "note-edgh0gjq", + "kind": "note", + "duration_ticks": 1366, + "pitches": [ + { + "letter": "g", + "accidental": "n", + "octave": 4 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-769g892y", + "hidden": false + }, + { + "id": "note-r3xgtdxq", + "kind": "note", + "duration_ticks": 1365, + "pitches": [ + { + "letter": "f", + "accidental": "n", + "octave": 4 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-769g892y", + "hidden": false + }, + { + "id": "note-154fr5rm", + "kind": "note", + "duration_ticks": 1365, + "pitches": [ + { + "letter": "e", + "accidental": "n", + "octave": 4 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-769g892y", + "hidden": false + }, + { + "id": "note-c67fzxu6", + "kind": "note", + "duration_ticks": 1366, + "pitches": [ + { + "letter": "f", + "accidental": "n", + "octave": 4 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-5dnmbgya", + "hidden": false + }, + { + "id": "note-eh1y44pm", + "kind": "note", + "duration_ticks": 1365, + "pitches": [ + { + "letter": "e", + "accidental": "n", + "octave": 4 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-5dnmbgya", + "hidden": false + }, + { + "id": "note-hyuiw6ok", + "kind": "note", + "duration_ticks": 1365, + "pitches": [ + { + "letter": "d", + "accidental": "n", + "octave": 4 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-5dnmbgya", + "hidden": false + } + ], + "tuplets": [ + { + "id": "tuplet-e1s1uefl", + "note_count": 3, + "space_count": 2 + }, + { + "id": "tuplet-oatrapdk", + "note_count": 3, + "space_count": 2 + }, + { + "id": "tuplet-769g892y", + "note_count": 3, + "space_count": 2 + }, + { + "id": "tuplet-5dnmbgya", + "note_count": 3, + "space_count": 2 + } + ] + } + ] + }, + { + "id": "measure-poqg1x91", + "time_signature": "4/4", + "key_signature": "C", + "voices": [ + { + "id": "voice-uruarcnq", + "notes": [ + { + "id": "note-oz7r0sve", + "kind": "note", + "duration_ticks": 1366, + "pitches": [ + { + "letter": "e", + "accidental": "n", + "octave": 4 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-nijslfzp", + "hidden": false + }, + { + "id": "note-xrmv3n5y", + "kind": "note", + "duration_ticks": 1365, + "pitches": [ + { + "letter": "d", + "accidental": "n", + "octave": 4 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-nijslfzp", + "hidden": false + }, + { + "id": "note-b9ekeqii", + "kind": "note", + "duration_ticks": 1365, + "pitches": [ + { + "letter": "c", + "accidental": "n", + "octave": 4 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-nijslfzp", + "hidden": false + }, + { + "id": "note-yzywgfvc", + "kind": "note", + "duration_ticks": 1366, + "pitches": [ + { + "letter": "d", + "accidental": "n", + "octave": 4 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-4h58hac4", + "hidden": false + }, + { + "id": "note-niurzq3k", + "kind": "note", + "duration_ticks": 1365, + "pitches": [ + { + "letter": "c", + "accidental": "n", + "octave": 4 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-4h58hac4", + "hidden": false + }, + { + "id": "note-jtyj8v4f", + "kind": "note", + "duration_ticks": 1365, + "pitches": [ + { + "letter": "b", + "accidental": "n", + "octave": 3 + } + ], + "display_ticks": 2048, + "tuplet_id": "tuplet-4h58hac4", + "hidden": false + }, + { + "id": "note-vtnila6w", + "kind": "note", + "duration_ticks": 8192, + "pitches": [ + { + "letter": "c", + "accidental": "n", + "octave": 4 + } + ], + "hidden": false + } + ], + "tuplets": [ + { + "id": "tuplet-nijslfzp", + "note_count": 3, + "space_count": 2 + }, + { + "id": "tuplet-4h58hac4", + "note_count": 3, + "space_count": 2 + } + ] + } + ] + } + ] + } + ] +} diff --git a/data/songs/autumn-leaves.json b/data/songs/autumn-leaves.json new file mode 100644 index 0000000..90f8536 --- /dev/null +++ b/data/songs/autumn-leaves.json @@ -0,0 +1,1867 @@ +{ + "version": 1, + "metadata": { + "title": "Autumn Leaves", + "composer": "Joseph Kosma / Johnny Mercer / Jaques Prevert", + "key_signature": "F", + "time_signature": "4/4", + "style": "Med." + }, + "staves": [ + { + "id": "staff-vocal", + "name": "Vocal", + "clef": "treble", + "role": "vocal", + "arranged": false, + "measures": [ + { + "id": "measure-1", + "time_signature": "4/4", + "key_signature": "F", + "voices": [ + { + "id": "voice-cvatw8bc", + "notes": [ + { + "id": "note-kftmjdeo", + "kind": "rest", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "b", + "octave": 4, + "accidental": "n" + } + ], + "tie_to_next": false, + "tie_from_previous": false + }, + { + "id": "note-ort00jrw", + "kind": "note", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "d", + "octave": 4, + "accidental": "n" + } + ], + "lyric": "The", + "tie_to_next": false, + "tie_from_previous": false + }, + { + "id": "note-adk5a1tq", + "kind": "note", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "e", + "octave": 4, + "accidental": "n" + } + ], + "lyric": "fall-", + "tie_to_next": false, + "tie_from_previous": false + }, + { + "id": "note-wtrdl5cd", + "kind": "note", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "f", + "octave": 4, + "accidental": "n" + } + ], + "lyric": "ing", + "tie_to_next": false, + "tie_from_previous": false + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-og0kdby4", + "time_signature": "4/4", + "key_signature": "F", + "voices": [ + { + "id": "voice-w6nqydxy", + "notes": [ + { + "id": "note-2x980i92", + "kind": "note", + "hidden": false, + "duration_ticks": 16384, + "pitches": [ + { + "letter": "b", + "octave": 4, + "accidental": "b" + } + ], + "chord_symbol": "G-7", + "lyric": "leaves", + "tie_to_next": true, + "tie_from_previous": false + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-7sdwgg2f", + "time_signature": "4/4", + "key_signature": "F", + "voices": [ + { + "id": "voice-it2dteqr", + "notes": [ + { + "id": "note-ce95hhjb", + "kind": "note", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "b", + "octave": 4, + "accidental": "b" + } + ], + "chord_symbol": "C7", + "tie_to_next": false, + "tie_from_previous": true + }, + { + "id": "note-f5kh0w5d", + "kind": "note", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "c", + "octave": 4, + "accidental": "n" + } + ], + "lyric": "drift", + "tie_to_next": false, + "tie_from_previous": false + }, + { + "id": "note-wp6hjfyh", + "kind": "note", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "d", + "octave": 4, + "accidental": "n" + } + ], + "lyric": "by", + "tie_to_next": false, + "tie_from_previous": false + }, + { + "id": "note-8trg90ha", + "kind": "note", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "e", + "octave": 4, + "accidental": "n" + } + ], + "lyric": "my", + "tie_to_next": false, + "tie_from_previous": false + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-q3ofslil", + "time_signature": "4/4", + "key_signature": "F", + "voices": [ + { + "id": "voice-k7ov9eg7", + "notes": [ + { + "id": "note-n2lycist", + "kind": "note", + "hidden": false, + "duration_ticks": 8192, + "pitches": [ + { + "letter": "a", + "octave": 4, + "accidental": "n" + } + ], + "chord_symbol": "Fmaj7", + "lyric": "win-", + "tie_to_next": false, + "tie_from_previous": false + }, + { + "id": "note-eysxu055", + "kind": "note", + "hidden": false, + "duration_ticks": 8192, + "pitches": [ + { + "letter": "a", + "octave": 4, + "accidental": "n" + } + ], + "lyric": "dow,", + "tie_to_next": true, + "tie_from_previous": false + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-pztvr49j", + "time_signature": "4/4", + "key_signature": "F", + "voices": [ + { + "id": "voice-k0tkcjg6", + "notes": [ + { + "id": "note-pr7ph4u9", + "kind": "note", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "a", + "octave": 4, + "accidental": "n" + } + ], + "chord_symbol": "Bbmaj7", + "tie_to_next": false, + "tie_from_previous": true + }, + { + "id": "note-ok9748wx", + "kind": "note", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "b", + "octave": 3, + "accidental": "b" + } + ], + "lyric": "the", + "tie_to_next": false, + "tie_from_previous": false + }, + { + "id": "note-v8zo070i", + "kind": "note", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "c", + "octave": 4, + "accidental": "n" + } + ], + "lyric": "au-", + "tie_to_next": false, + "tie_from_previous": false + }, + { + "id": "note-1t8ne5bg", + "kind": "note", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "d", + "octave": 4, + "accidental": "n" + } + ], + "lyric": "tumn", + "tie_to_next": false, + "tie_from_previous": false + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-b5b4z30o", + "time_signature": "4/4", + "key_signature": "F", + "voices": [ + { + "id": "voice-nmnhixb5", + "notes": [ + { + "id": "note-91smlkm9", + "kind": "note", + "hidden": false, + "duration_ticks": 16384, + "pitches": [ + { + "letter": "g", + "octave": 4, + "accidental": "n" + } + ], + "chord_symbol": "E-7b5", + "lyric": "leaves", + "tie_to_next": true, + "tie_from_previous": false + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-imn1szfs", + "time_signature": "4/4", + "key_signature": "F", + "voices": [ + { + "id": "voice-yo3sky5a", + "notes": [ + { + "id": "note-yua3rxui", + "kind": "note", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "g", + "octave": 4, + "accidental": "n" + } + ], + "chord_symbol": "A7", + "tie_to_next": false, + "tie_from_previous": true + }, + { + "id": "note-xe74q1me", + "kind": "note", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "a", + "octave": 3, + "accidental": "n" + } + ], + "lyric": "of", + "tie_to_next": false, + "tie_from_previous": false + }, + { + "id": "note-28zu0ten", + "kind": "note", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "b", + "octave": 3, + "accidental": "n" + } + ], + "lyric": "red", + "tie_to_next": false, + "tie_from_previous": false + }, + { + "id": "note-tszfdakz", + "kind": "note", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "c", + "octave": 4, + "accidental": "#" + } + ], + "lyric": "and", + "tie_to_next": false, + "tie_from_previous": false + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-v8ibq8ds", + "time_signature": "4/4", + "key_signature": "F", + "voices": [ + { + "id": "voice-tqioavxl", + "notes": [ + { + "id": "note-zfrtmg7a", + "kind": "note", + "hidden": false, + "duration_ticks": 16384, + "pitches": [ + { + "letter": "f", + "octave": 4, + "accidental": "n" + } + ], + "chord_symbol": "D-", + "lyric": "gold.", + "tie_to_next": false, + "tie_from_previous": false + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-hbqisegy", + "time_signature": "4/4", + "key_signature": "F", + "voices": [ + { + "id": "voice-5cm3falc", + "notes": [ + { + "id": "note-ytgdeo67", + "kind": "rest", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "b", + "octave": 4, + "accidental": "n" + } + ], + "tie_to_next": false, + "tie_from_previous": false + }, + { + "id": "note-fp7ucokq", + "kind": "note", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "d", + "octave": 4, + "accidental": "n" + } + ], + "lyric": "I", + "tie_to_next": false, + "tie_from_previous": false + }, + { + "id": "note-hbzpl1k5", + "kind": "note", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "e", + "octave": 4, + "accidental": "n" + } + ], + "lyric": "see", + "tie_to_next": false, + "tie_from_previous": false + }, + { + "id": "note-9o8q2n3z", + "kind": "note", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "f", + "octave": 4, + "accidental": "n" + } + ], + "lyric": "your", + "tie_to_next": false, + "tie_from_previous": false + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-sylh5t5d", + "time_signature": "4/4", + "key_signature": "F", + "voices": [ + { + "id": "voice-q098mba5", + "notes": [ + { + "id": "note-llocjynv", + "kind": "note", + "hidden": false, + "duration_ticks": 16384, + "pitches": [ + { + "letter": "b", + "octave": 4, + "accidental": "b" + } + ], + "chord_symbol": "G-7", + "lyric": "lips,", + "tie_to_next": true, + "tie_from_previous": false + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-thgn02dn", + "time_signature": "4/4", + "key_signature": "F", + "voices": [ + { + "id": "voice-4n9g7k5j", + "notes": [ + { + "id": "note-emdutch0", + "kind": "note", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "b", + "octave": 4, + "accidental": "b" + } + ], + "chord_symbol": "C7", + "tie_to_next": false, + "tie_from_previous": true + }, + { + "id": "note-dklu2n82", + "kind": "note", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "c", + "octave": 4, + "accidental": "n" + } + ], + "lyric": "the", + "tie_to_next": false, + "tie_from_previous": false + }, + { + "id": "note-t2qdgqo4", + "kind": "note", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "d", + "octave": 4, + "accidental": "n" + } + ], + "lyric": "sum-", + "tie_to_next": false, + "tie_from_previous": false + }, + { + "id": "note-8xzd5r9l", + "kind": "note", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "e", + "octave": 4, + "accidental": "n" + } + ], + "lyric": "mer", + "tie_to_next": false, + "tie_from_previous": false + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-afhotm0x", + "time_signature": "4/4", + "key_signature": "F", + "voices": [ + { + "id": "voice-gpwnaxt6", + "notes": [ + { + "id": "note-gjbcbj36", + "kind": "note", + "hidden": false, + "duration_ticks": 8192, + "pitches": [ + { + "letter": "a", + "octave": 4, + "accidental": "n" + } + ], + "chord_symbol": "Fmaj7", + "lyric": "kiss-", + "tie_to_next": false, + "tie_from_previous": false + }, + { + "id": "note-a9cmn74e", + "kind": "note", + "hidden": false, + "duration_ticks": 8192, + "pitches": [ + { + "letter": "a", + "octave": 4, + "accidental": "n" + } + ], + "lyric": "es,", + "tie_to_next": true, + "tie_from_previous": false + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-pjz4md5h", + "time_signature": "4/4", + "key_signature": "F", + "voices": [ + { + "id": "voice-7b9xo3y9", + "notes": [ + { + "id": "note-ket17i9z", + "kind": "note", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "a", + "octave": 4, + "accidental": "n" + } + ], + "chord_symbol": "Bbmaj7", + "tie_to_next": false, + "tie_from_previous": true + }, + { + "id": "note-gp8yy9vj", + "kind": "note", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "b", + "octave": 3, + "accidental": "b" + } + ], + "lyric": "the", + "tie_to_next": false, + "tie_from_previous": false + }, + { + "id": "note-9vbtjqon", + "kind": "note", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "c", + "octave": 4, + "accidental": "n" + } + ], + "lyric": "sun-", + "tie_to_next": false, + "tie_from_previous": false + }, + { + "id": "note-abs2war7", + "kind": "note", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "d", + "octave": 4, + "accidental": "n" + } + ], + "lyric": "burnt", + "tie_to_next": false, + "tie_from_previous": false + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-see1f4xb", + "time_signature": "4/4", + "key_signature": "F", + "voices": [ + { + "id": "voice-rowy0opm", + "notes": [ + { + "id": "note-2xxtk304", + "kind": "note", + "hidden": false, + "duration_ticks": 16384, + "pitches": [ + { + "letter": "g", + "octave": 4, + "accidental": "n" + } + ], + "chord_symbol": "E-7b5", + "lyric": "hands", + "tie_to_next": true, + "tie_from_previous": false + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-49aemr1t", + "time_signature": "4/4", + "key_signature": "F", + "voices": [ + { + "id": "voice-ycs189a1", + "notes": [ + { + "id": "note-x2q6822u", + "kind": "note", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "g", + "octave": 4, + "accidental": "n" + } + ], + "chord_symbol": "A7", + "tie_to_next": false, + "tie_from_previous": true + }, + { + "id": "note-zxdcl5bc", + "kind": "note", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "e", + "octave": 4, + "accidental": "n" + } + ], + "lyric": "I", + "tie_to_next": false, + "tie_from_previous": false + }, + { + "id": "note-k7qb52mx", + "kind": "note", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "g", + "octave": 4, + "accidental": "n" + } + ], + "lyric": "used", + "tie_to_next": false, + "tie_from_previous": false + }, + { + "id": "note-es78bjke", + "kind": "note", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "f", + "octave": 4, + "accidental": "n" + } + ], + "lyric": "to", + "tie_to_next": false, + "tie_from_previous": false + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-uzgt546a", + "time_signature": "4/4", + "key_signature": "F", + "voices": [ + { + "id": "voice-ig2djaqw", + "notes": [ + { + "id": "note-iqzkoutt", + "kind": "note", + "hidden": false, + "duration_ticks": 16384, + "pitches": [ + { + "letter": "d", + "octave": 4, + "accidental": "n" + } + ], + "chord_symbol": "D-", + "lyric": "hold.", + "tie_to_next": true, + "tie_from_previous": false + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-s4yzxinj", + "time_signature": "4/4", + "key_signature": "F", + "voices": [ + { + "id": "voice-buq54egy", + "notes": [ + { + "id": "note-xtqweec3", + "kind": "note", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "d", + "octave": 4, + "accidental": "n" + } + ], + "tie_to_next": false, + "tie_from_previous": true + }, + { + "id": "note-f0vw2sct", + "kind": "rest", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "b", + "octave": 4, + "accidental": "n" + } + ], + "tie_to_next": false, + "tie_from_previous": false + }, + { + "id": "note-fhvpnqlr", + "kind": "note", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "c", + "octave": 4, + "accidental": "#" + } + ], + "lyric": "Since", + "tie_to_next": false, + "tie_from_previous": false + }, + { + "id": "note-9m0g5h7u", + "kind": "note", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "d", + "octave": 4, + "accidental": "n" + } + ], + "lyric": "you", + "tie_to_next": false, + "tie_from_previous": false + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-x79rfne1", + "time_signature": "4/4", + "key_signature": "F", + "voices": [ + { + "id": "voice-1u6nndng", + "notes": [ + { + "id": "note-qrwcj60o", + "kind": "note", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "e", + "octave": 4, + "accidental": "n" + } + ], + "chord_symbol": "E-7b5", + "lyric": "went", + "tie_to_next": false, + "tie_from_previous": false + }, + { + "id": "note-65pdz9zy", + "kind": "note", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "a", + "octave": 3, + "accidental": "n" + } + ], + "lyric": "a-", + "tie_to_next": false, + "tie_from_previous": false + }, + { + "id": "note-arjkwn1m", + "kind": "note", + "hidden": false, + "duration_ticks": 8192, + "pitches": [ + { + "letter": "e", + "octave": 4, + "accidental": "n" + } + ], + "lyric": "way", + "tie_to_next": true, + "tie_from_previous": false + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-00plz0km", + "time_signature": "4/4", + "key_signature": "F", + "voices": [ + { + "id": "voice-7px6hs9q", + "notes": [ + { + "id": "note-vlq587o8", + "kind": "note", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "e", + "octave": 4, + "accidental": "n" + } + ], + "chord_symbol": "A7b9", + "tie_to_next": false, + "tie_from_previous": true + }, + { + "id": "note-fnfv02nq", + "kind": "note", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "e", + "octave": 4, + "accidental": "n" + } + ], + "lyric": "the", + "tie_to_next": false, + "tie_from_previous": false + }, + { + "id": "note-rwm28uqb", + "kind": "note", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "d", + "octave": 4, + "accidental": "n" + } + ], + "lyric": "days", + "tie_to_next": false, + "tie_from_previous": false + }, + { + "id": "note-8zum2xrn", + "kind": "note", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "e", + "octave": 4, + "accidental": "n" + } + ], + "lyric": "grow", + "tie_to_next": false, + "tie_from_previous": false + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-lmk6mq1c", + "time_signature": "4/4", + "key_signature": "F", + "voices": [ + { + "id": "voice-unkg2a7i", + "notes": [ + { + "id": "note-2e3ec0ay", + "kind": "note", + "hidden": false, + "duration_ticks": 16384, + "pitches": [ + { + "letter": "f", + "octave": 4, + "accidental": "n" + } + ], + "chord_symbol": "D-", + "lyric": "long,", + "tie_to_next": true, + "tie_from_previous": false + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-7w1ev64s", + "time_signature": "4/4", + "key_signature": "F", + "voices": [ + { + "id": "voice-9lqag21l", + "notes": [ + { + "id": "note-otsf2fod", + "kind": "note", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "f", + "octave": 4, + "accidental": "n" + } + ], + "tie_to_next": false, + "tie_from_previous": true + }, + { + "id": "note-vscu5kjl", + "kind": "note", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "f", + "octave": 4, + "accidental": "n" + } + ], + "lyric": "and", + "tie_to_next": false, + "tie_from_previous": false + }, + { + "id": "note-8qdeyzjb", + "kind": "note", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "e", + "octave": 4, + "accidental": "n" + } + ], + "lyric": "soon", + "tie_to_next": false, + "tie_from_previous": false + }, + { + "id": "note-t5h4al7h", + "kind": "note", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "f", + "octave": 4, + "accidental": "n" + } + ], + "lyric": "I'll", + "tie_to_next": false, + "tie_from_previous": false + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-ueqif3lp", + "time_signature": "4/4", + "key_signature": "F", + "voices": [ + { + "id": "voice-9kuvfh0u", + "notes": [ + { + "id": "note-w444uqj3", + "kind": "note", + "hidden": false, + "duration_ticks": 16384, + "pitches": [ + { + "letter": "g", + "octave": 4, + "accidental": "n" + } + ], + "chord_symbol": "G-7", + "lyric": "hear", + "tie_to_next": true, + "tie_from_previous": false + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-aylagr2s", + "time_signature": "4/4", + "key_signature": "F", + "voices": [ + { + "id": "voice-egs69tp3", + "notes": [ + { + "id": "note-ddwkim0c", + "kind": "note", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "g", + "octave": 4, + "accidental": "n" + } + ], + "chord_symbol": "C7", + "tie_to_next": false, + "tie_from_previous": true + }, + { + "id": "note-jynigw67", + "kind": "note", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "c", + "octave": 4, + "accidental": "n" + } + ], + "lyric": "old", + "tie_to_next": false, + "tie_from_previous": false + }, + { + "id": "note-sipp7fqi", + "kind": "note", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "c", + "octave": 5, + "accidental": "n" + } + ], + "lyric": "win-", + "tie_to_next": false, + "tie_from_previous": false + }, + { + "id": "note-7euzlojx", + "kind": "note", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "b", + "octave": 4, + "accidental": "b" + } + ], + "lyric": "ter's", + "tie_to_next": false, + "tie_from_previous": false + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-4htrpn3s", + "time_signature": "4/4", + "key_signature": "F", + "voices": [ + { + "id": "voice-jqd5sf7s", + "notes": [ + { + "id": "note-r4th9nxz", + "kind": "note", + "hidden": false, + "duration_ticks": 16384, + "pitches": [ + { + "letter": "a", + "octave": 4, + "accidental": "n" + } + ], + "chord_symbol": "Fmaj7", + "lyric": "song.", + "tie_to_next": true, + "tie_from_previous": false + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-w64pueqa", + "time_signature": "4/4", + "key_signature": "F", + "voices": [ + { + "id": "voice-rf52sqot", + "notes": [ + { + "id": "note-02jr3xk8", + "kind": "note", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "a", + "octave": 4, + "accidental": "n" + } + ], + "tie_to_next": false, + "tie_from_previous": true + }, + { + "id": "note-wv1bi4gn", + "kind": "rest", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "b", + "octave": 4, + "accidental": "n" + } + ], + "tie_to_next": false, + "tie_from_previous": false + }, + { + "id": "note-rxl190tg", + "kind": "note", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "g", + "octave": 4, + "accidental": "#" + } + ], + "lyric": "But", + "tie_to_next": false, + "tie_from_previous": false + }, + { + "id": "note-8j3fvdpc", + "kind": "note", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "a", + "octave": 4, + "accidental": "n" + } + ], + "lyric": "I", + "tie_to_next": false, + "tie_from_previous": false + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-mql83vyd", + "time_signature": "4/4", + "key_signature": "F", + "voices": [ + { + "id": "voice-8mxoy6p0", + "notes": [ + { + "id": "note-d1epy4lw", + "kind": "note", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "b", + "octave": 4, + "accidental": "b" + } + ], + "chord_symbol": "E-7b5", + "lyric": "miss", + "tie_to_next": false, + "tie_from_previous": false + }, + { + "id": "note-wuowf662", + "kind": "note", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "b", + "octave": 4, + "accidental": "b" + } + ], + "lyric": "you", + "tie_to_next": false, + "tie_from_previous": false + }, + { + "id": "note-jr5q5iyc", + "kind": "note", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "g", + "octave": 4, + "accidental": "n" + } + ], + "lyric": "most", + "tie_to_next": false, + "tie_from_previous": false + }, + { + "id": "note-e2hslw12", + "kind": "note", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "g", + "octave": 4, + "accidental": "n" + } + ], + "lyric": "of", + "tie_to_next": false, + "tie_from_previous": false + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-ymn81b1d", + "time_signature": "4/4", + "key_signature": "F", + "voices": [ + { + "id": "voice-bvp2pidx", + "notes": [ + { + "id": "note-px4kf5mp", + "kind": "note", + "hidden": false, + "duration_ticks": 12288, + "pitches": [ + { + "letter": "e", + "octave": 4, + "accidental": "n" + } + ], + "chord_symbol": "A7b9", + "lyric": "all,", + "tie_to_next": false, + "tie_from_previous": false + }, + { + "id": "note-s0cjqrtx", + "kind": "note", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "b", + "octave": 4, + "accidental": "b" + } + ], + "lyric": "my", + "tie_to_next": false, + "tie_from_previous": false + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-vnqmp01v", + "time_signature": "4/4", + "key_signature": "F", + "voices": [ + { + "id": "voice-auijfivx", + "notes": [ + { + "id": "note-tcl6axz2", + "kind": "note", + "hidden": false, + "duration_ticks": 8192, + "pitches": [ + { + "letter": "a", + "octave": 4, + "accidental": "n" + } + ], + "chord_symbol": "D-7", + "lyric": "dar-", + "tie_to_next": false, + "tie_from_previous": false + }, + { + "id": "note-iz6cyq64", + "kind": "note", + "hidden": false, + "duration_ticks": 8192, + "pitches": [ + { + "letter": "a", + "octave": 4, + "accidental": "n" + } + ], + "chord_symbol": "G7", + "lyric": "ling,", + "tie_to_next": true, + "tie_from_previous": false + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-lh1if10x", + "time_signature": "4/4", + "key_signature": "F", + "voices": [ + { + "id": "voice-5ce4xnk3", + "notes": [ + { + "id": "note-kjct60cu", + "kind": "note", + "hidden": false, + "duration_ticks": 8192, + "pitches": [ + { + "letter": "a", + "octave": 4, + "accidental": "n" + } + ], + "chord_symbol": "C-7", + "tie_to_next": false, + "tie_from_previous": true + }, + { + "id": "note-a8c2k54x", + "kind": "note", + "hidden": false, + "duration_ticks": 8192, + "pitches": [ + { + "letter": "d", + "octave": 4, + "accidental": "n" + } + ], + "chord_symbol": "F7", + "lyric": "when", + "tie_to_next": false, + "tie_from_previous": false + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-3kozczl8", + "time_signature": "4/4", + "key_signature": "F", + "voices": [ + { + "id": "voice-lcphsjhh", + "notes": [ + { + "id": "note-7eifmvr3", + "kind": "note", + "hidden": false, + "duration_ticks": 12288, + "pitches": [ + { + "letter": "g", + "octave": 4, + "accidental": "n" + } + ], + "chord_symbol": "E-7b5", + "lyric": "au-", + "tie_to_next": false, + "tie_from_previous": false + }, + { + "id": "note-2tamuxj0", + "kind": "note", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "f", + "octave": 4, + "accidental": "n" + } + ], + "lyric": "tumn", + "tie_to_next": false, + "tie_from_previous": false + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-ebotxuh3", + "time_signature": "4/4", + "key_signature": "F", + "voices": [ + { + "id": "voice-dkpubweu", + "notes": [ + { + "id": "note-9unebppn", + "kind": "note", + "hidden": false, + "duration_ticks": 8192, + "pitches": [ + { + "letter": "e", + "octave": 4, + "accidental": "n" + } + ], + "chord_symbol": "A7b9", + "lyric": "leaves", + "tie_to_next": false, + "tie_from_previous": false + }, + { + "id": "note-jhanjbm3", + "kind": "note", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "f", + "octave": 4, + "accidental": "n" + } + ], + "lyric": "start", + "tie_to_next": false, + "tie_from_previous": false + }, + { + "id": "note-ytb1byx8", + "kind": "note", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "a", + "octave": 3, + "accidental": "n" + } + ], + "lyric": "to", + "tie_to_next": false, + "tie_from_previous": false + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-bm7bgjko", + "time_signature": "4/4", + "key_signature": "F", + "voices": [ + { + "id": "voice-1ceiqh93", + "notes": [ + { + "id": "note-0gehejln", + "kind": "note", + "hidden": false, + "duration_ticks": 16384, + "pitches": [ + { + "letter": "d", + "octave": 4, + "accidental": "n" + } + ], + "chord_symbol": "D-", + "lyric": "fall.", + "tie_to_next": false, + "tie_from_previous": false + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-q8k7806a", + "time_signature": "4/4", + "key_signature": "F", + "voices": [ + { + "id": "voice-wduskp4m", + "notes": [ + { + "id": "note-tm7ku54y", + "kind": "rest", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "b", + "octave": 4, + "accidental": "n" + } + ], + "tie_to_next": false, + "tie_from_previous": false + }, + { + "id": "note-8rzwfa1n", + "kind": "rest", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "b", + "octave": 4, + "accidental": "n" + } + ], + "tie_to_next": false, + "tie_from_previous": false + }, + { + "id": "note-8h0hmq20", + "kind": "rest", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "b", + "octave": 4, + "accidental": "n" + } + ], + "tie_to_next": false, + "tie_from_previous": false + }, + { + "id": "note-ck5hol0w", + "kind": "rest", + "hidden": false, + "duration_ticks": 4096, + "pitches": [ + { + "letter": "b", + "octave": 4, + "accidental": "n" + } + ], + "tie_to_next": false, + "tie_from_previous": false + } + ], + "tuplets": [] + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/data/songs/it-could-happen-to-you.json b/data/songs/it-could-happen-to-you.json new file mode 100644 index 0000000..4c7ad2d --- /dev/null +++ b/data/songs/it-could-happen-to-you.json @@ -0,0 +1,1740 @@ +{ + "version": 1, + "metadata": { + "title": "It Could Happen to You", + "composer": "James Van Heusen / Johnny Burke", + "key_signature": "Eb", + "time_signature": "4/4", + "style": "Med." + }, + "staves": [ + { + "id": "staff-vocal", + "name": "Vocal", + "clef": "treble", + "role": "vocal", + "measures": [ + { + "id": "measure-1", + "time_signature": "4/4", + "key_signature": "Eb", + "voices": [ + { + "id": "voice-5pn6gd3v", + "notes": [ + { + "id": "note-kuiyrgkn", + "kind": "note", + "duration_ticks": 12288, + "pitches": [ + { + "letter": "b", + "accidental": "b", + "octave": 3 + } + ], + "chord_symbol": "Ebmaj7", + "hidden": false, + "lyric": "Hide" + }, + { + "id": "note-iz1k23sv", + "kind": "note", + "duration_ticks": 4096, + "pitches": [ + { + "letter": "c", + "accidental": "n", + "octave": 4 + } + ], + "hidden": false, + "lyric": "your" + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-k3lqg44o", + "time_signature": "4/4", + "key_signature": "Eb", + "voices": [ + { + "id": "voice-pix1zraq", + "notes": [ + { + "id": "note-yw8a8z8s", + "kind": "note", + "duration_ticks": 4096, + "pitches": [ + { + "letter": "d", + "accidental": "b", + "octave": 4 + } + ], + "chord_symbol": "G-7b5", + "hidden": false, + "lyric": "heart" + }, + { + "id": "note-9yek441g", + "kind": "note", + "duration_ticks": 2048, + "pitches": [ + { + "letter": "c", + "accidental": "n", + "octave": 4 + } + ], + "hidden": false, + "lyric": "from" + }, + { + "id": "note-i0o0s8ef", + "kind": "note", + "duration_ticks": 2048, + "pitches": [ + { + "letter": "g", + "accidental": "n", + "octave": 4 + } + ], + "hidden": false, + "tie_to_next": true, + "lyric": "sight," + }, + { + "id": "note-7sp45zld", + "kind": "note", + "duration_ticks": 8192, + "pitches": [ + { + "letter": "g", + "accidental": "n", + "octave": 4 + } + ], + "chord_symbol": "C7b9", + "hidden": false, + "tie_from_previous": true + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-nxug7h75", + "time_signature": "4/4", + "key_signature": "Eb", + "voices": [ + { + "id": "voice-evww19bt", + "notes": [ + { + "id": "note-yhhanabs", + "kind": "note", + "duration_ticks": 12288, + "pitches": [ + { + "letter": "c", + "accidental": "n", + "octave": 4 + } + ], + "chord_symbol": "F-7", + "hidden": false, + "lyric": "lock" + }, + { + "id": "note-ox6q8p3f", + "kind": "note", + "duration_ticks": 4096, + "pitches": [ + { + "letter": "d", + "accidental": "n", + "octave": 4 + } + ], + "hidden": false, + "lyric": "your" + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-is7t6uss", + "time_signature": "4/4", + "key_signature": "Eb", + "voices": [ + { + "id": "voice-te98z581", + "notes": [ + { + "id": "note-ylc4xlxy", + "kind": "note", + "duration_ticks": 4096, + "pitches": [ + { + "letter": "e", + "accidental": "b", + "octave": 4 + } + ], + "chord_symbol": "A-7b5", + "hidden": false, + "lyric": "dreams" + }, + { + "id": "note-qbbxzeg2", + "kind": "note", + "duration_ticks": 2048, + "pitches": [ + { + "letter": "d", + "accidental": "n", + "octave": 4 + } + ], + "hidden": false, + "lyric": "at" + }, + { + "id": "note-d61uoqsd", + "kind": "note", + "duration_ticks": 2048, + "pitches": [ + { + "letter": "a", + "accidental": "n", + "octave": 4 + } + ], + "hidden": false, + "tie_to_next": true, + "lyric": "night," + }, + { + "id": "note-u8mxymql", + "kind": "note", + "duration_ticks": 8192, + "pitches": [ + { + "letter": "a", + "accidental": "n", + "octave": 4 + } + ], + "chord_symbol": "D7b9", + "hidden": false, + "tie_from_previous": true + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-2z4szbbx", + "time_signature": "4/4", + "key_signature": "Eb", + "voices": [ + { + "id": "voice-n8p5z1bh", + "notes": [ + { + "id": "note-gye69ads", + "kind": "note", + "duration_ticks": 8192, + "pitches": [ + { + "letter": "b", + "accidental": "b", + "octave": 4 + } + ], + "chord_symbol": "Ebmaj7", + "hidden": false, + "lyric": "it" + }, + { + "id": "note-ny4b1gma", + "kind": "note", + "duration_ticks": 8192, + "pitches": [ + { + "letter": "b", + "accidental": "b", + "octave": 4 + } + ], + "hidden": false, + "lyric": "could" + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-60xy76js", + "time_signature": "4/4", + "key_signature": "Eb", + "voices": [ + { + "id": "voice-h8i79syb", + "notes": [ + { + "id": "note-vhq0leeo", + "kind": "note", + "duration_ticks": 4096, + "pitches": [ + { + "letter": "b", + "accidental": "b", + "octave": 4 + } + ], + "chord_symbol": "Ab7", + "hidden": false, + "lyric": "hap-" + }, + { + "id": "note-c5lb0ws3", + "kind": "note", + "duration_ticks": 8192, + "pitches": [ + { + "letter": "a", + "accidental": "b", + "octave": 4 + } + ], + "hidden": false, + "lyric": "pen" + }, + { + "id": "note-1kfy9yl0", + "kind": "note", + "duration_ticks": 4096, + "pitches": [ + { + "letter": "e", + "accidental": "b", + "octave": 4 + } + ], + "hidden": false, + "lyric": "to" + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-cny54efj", + "time_signature": "4/4", + "key_signature": "Eb", + "voices": [ + { + "id": "voice-nym3aeo4", + "notes": [ + { + "id": "note-k8nlot0n", + "kind": "note", + "duration_ticks": 16384, + "pitches": [ + { + "letter": "g", + "accidental": "n", + "octave": 4 + } + ], + "chord_symbol": "G-7b5", + "hidden": false, + "lyric": "you." + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-65am4rw4", + "time_signature": "4/4", + "key_signature": "Eb", + "voices": [ + { + "id": "voice-8oovtl0v", + "notes": [ + { + "id": "note-8llz3qnm", + "kind": "rest", + "duration_ticks": 4096, + "pitches": [ + { + "letter": "b", + "octave": 4, + "accidental": "n" + } + ], + "chord_symbol": "C7b9" + }, + { + "id": "note-r0rc4u4u", + "kind": "rest", + "duration_ticks": 4096, + "pitches": [ + { + "letter": "b", + "octave": 4, + "accidental": "n" + } + ] + }, + { + "id": "note-bohzxdcg", + "kind": "rest", + "duration_ticks": 4096, + "pitches": [ + { + "letter": "b", + "octave": 4, + "accidental": "n" + } + ] + }, + { + "id": "note-y0aufljh", + "kind": "rest", + "duration_ticks": 4096, + "pitches": [ + { + "letter": "b", + "octave": 4, + "accidental": "n" + } + ] + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-wotid6so", + "time_signature": "4/4", + "key_signature": "Eb", + "voices": [ + { + "id": "voice-5hb08eka", + "notes": [ + { + "id": "note-mggawdka", + "kind": "note", + "duration_ticks": 8192, + "pitches": [ + { + "letter": "g", + "accidental": "n", + "octave": 4 + } + ], + "chord_symbol": "F-7", + "hidden": false, + "lyric": "Don't" + }, + { + "id": "note-ag8yif9r", + "kind": "note", + "duration_ticks": 8192, + "pitches": [ + { + "letter": "g", + "accidental": "n", + "octave": 4 + } + ], + "hidden": false, + "lyric": "count" + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-6i2qhlv2", + "time_signature": "4/4", + "key_signature": "Eb", + "voices": [ + { + "id": "voice-67hetdfn", + "notes": [ + { + "id": "note-obpikul5", + "kind": "note", + "duration_ticks": 4096, + "pitches": [ + { + "letter": "g", + "accidental": "n", + "octave": 4 + } + ], + "chord_symbol": "Db7", + "hidden": false, + "lyric": "stars" + }, + { + "id": "note-8bih3kg7", + "kind": "note", + "duration_ticks": 4096, + "pitches": [ + { + "letter": "a", + "accidental": "b", + "octave": 4 + } + ], + "hidden": false, + "lyric": "or" + }, + { + "id": "note-tw4cn4ph", + "kind": "note", + "duration_ticks": 4096, + "pitches": [ + { + "letter": "e", + "accidental": "b", + "octave": 4 + } + ], + "hidden": false, + "lyric": "you" + }, + { + "id": "note-2r2q349z", + "kind": "note", + "duration_ticks": 2048, + "pitches": [ + { + "letter": "f", + "accidental": "n", + "octave": 4 + } + ], + "hidden": false, + "lyric": "might" + }, + { + "id": "note-u2ros5zw", + "kind": "note", + "duration_ticks": 2048, + "pitches": [ + { + "letter": "g", + "accidental": "n", + "octave": 4 + } + ], + "hidden": false, + "tie_to_next": true, + "lyric": "stum-" + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-hfrhzer7", + "time_signature": "4/4", + "key_signature": "Eb", + "voices": [ + { + "id": "voice-1vorjn9z", + "notes": [ + { + "id": "note-u65ems92", + "kind": "note", + "duration_ticks": 8192, + "pitches": [ + { + "letter": "g", + "accidental": "n", + "octave": 4 + } + ], + "chord_symbol": "Ebmaj7", + "hidden": false, + "tie_from_previous": true + }, + { + "id": "note-3km66pic", + "kind": "note", + "duration_ticks": 8192, + "pitches": [ + { + "letter": "g", + "accidental": "n", + "octave": 4 + } + ], + "hidden": false, + "lyric": "ble," + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-n9f993bg", + "time_signature": "4/4", + "key_signature": "Eb", + "voices": [ + { + "id": "voice-4g9sbvq6", + "notes": [ + { + "id": "note-e8iclu4a", + "kind": "rest", + "duration_ticks": 4096, + "pitches": [ + { + "letter": "b", + "octave": 4, + "accidental": "n" + } + ], + "chord_symbol": "D-7b5" + }, + { + "id": "note-1v0tyulw", + "kind": "rest", + "duration_ticks": 4096, + "pitches": [ + { + "letter": "b", + "octave": 4, + "accidental": "n" + } + ] + }, + { + "id": "note-dl1pgdvd", + "kind": "rest", + "duration_ticks": 4096, + "pitches": [ + { + "letter": "b", + "octave": 4, + "accidental": "n" + } + ], + "chord_symbol": "G7" + }, + { + "id": "note-byz4jhwc", + "kind": "rest", + "duration_ticks": 4096, + "pitches": [ + { + "letter": "b", + "octave": 4, + "accidental": "n" + } + ] + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-1c0ciyw4", + "time_signature": "4/4", + "key_signature": "Eb", + "voices": [ + { + "id": "voice-uiunwi47", + "notes": [ + { + "id": "note-k7069vr8", + "kind": "note", + "duration_ticks": 8192, + "pitches": [ + { + "letter": "e", + "accidental": "b", + "octave": 4 + } + ], + "chord_symbol": "C-7", + "hidden": false, + "lyric": "some-" + }, + { + "id": "note-wtw8u0pe", + "kind": "note", + "duration_ticks": 8192, + "pitches": [ + { + "letter": "e", + "accidental": "b", + "octave": 4 + } + ], + "hidden": false, + "lyric": "one" + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-d20ryz87", + "time_signature": "4/4", + "key_signature": "Eb", + "voices": [ + { + "id": "voice-izb44ir3", + "notes": [ + { + "id": "note-jmvd1d5d", + "kind": "note", + "duration_ticks": 4096, + "pitches": [ + { + "letter": "e", + "accidental": "b", + "octave": 4 + } + ], + "chord_symbol": "F7", + "hidden": false, + "lyric": "drops" + }, + { + "id": "note-ko7pf8ta", + "kind": "note", + "duration_ticks": 4096, + "pitches": [ + { + "letter": "f", + "accidental": "n", + "octave": 4 + } + ], + "hidden": false, + "lyric": "a" + }, + { + "id": "note-bqv3m7zk", + "kind": "note", + "duration_ticks": 4096, + "pitches": [ + { + "letter": "c", + "accidental": "n", + "octave": 4 + } + ], + "hidden": false, + "lyric": "sigh" + }, + { + "id": "note-jpmylsfs", + "kind": "note", + "duration_ticks": 2048, + "pitches": [ + { + "letter": "d", + "accidental": "n", + "octave": 4 + } + ], + "hidden": false, + "lyric": "and" + }, + { + "id": "note-7x2p92i7", + "kind": "note", + "duration_ticks": 2048, + "pitches": [ + { + "letter": "e", + "accidental": "b", + "octave": 4 + } + ], + "hidden": false, + "tie_to_next": true, + "lyric": "down" + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-omwmbsxg", + "time_signature": "4/4", + "key_signature": "Eb", + "voices": [ + { + "id": "voice-lhyh6eto", + "notes": [ + { + "id": "note-cdqqeh9z", + "kind": "note", + "duration_ticks": 8192, + "pitches": [ + { + "letter": "e", + "accidental": "b", + "octave": 4 + } + ], + "chord_symbol": "F-7", + "hidden": false, + "tie_from_previous": true + }, + { + "id": "note-z854ug7z", + "kind": "note", + "duration_ticks": 8192, + "pitches": [ + { + "letter": "f", + "accidental": "n", + "octave": 4 + } + ], + "hidden": false, + "lyric": "you" + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-0pv3rjyi", + "time_signature": "4/4", + "key_signature": "Eb", + "voices": [ + { + "id": "voice-87ihdgf9", + "notes": [ + { + "id": "note-vo4bl9ww", + "kind": "note", + "duration_ticks": 6144, + "pitches": [ + { + "letter": "c", + "accidental": "n", + "octave": 4 + } + ], + "chord_symbol": "Bb7", + "hidden": false, + "lyric": "tum-" + }, + { + "id": "note-q0kwjwz9", + "kind": "note", + "duration_ticks": 2048, + "pitches": [ + { + "letter": "d", + "accidental": "n", + "octave": 4 + } + ], + "hidden": false, + "tie_to_next": true, + "lyric": "ble." + }, + { + "id": "note-2jafn1rx", + "kind": "note", + "duration_ticks": 8192, + "pitches": [ + { + "letter": "d", + "accidental": "n", + "octave": 4 + } + ], + "hidden": false, + "tie_from_previous": true + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-emaxg70d", + "time_signature": "4/4", + "key_signature": "Eb", + "voices": [ + { + "id": "voice-p8k5sc7t", + "notes": [ + { + "id": "note-zbeip48s", + "kind": "note", + "duration_ticks": 12288, + "pitches": [ + { + "letter": "b", + "accidental": "b", + "octave": 3 + } + ], + "chord_symbol": "Ebmaj7", + "hidden": false, + "lyric": "Keep" + }, + { + "id": "note-nndmo2ix", + "kind": "note", + "duration_ticks": 4096, + "pitches": [ + { + "letter": "c", + "accidental": "n", + "octave": 4 + } + ], + "hidden": false, + "lyric": "an" + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-4gedf949", + "time_signature": "4/4", + "key_signature": "Eb", + "voices": [ + { + "id": "voice-jlvgs55c", + "notes": [ + { + "id": "note-i6ypequk", + "kind": "note", + "duration_ticks": 4096, + "pitches": [ + { + "letter": "d", + "accidental": "b", + "octave": 4 + } + ], + "chord_symbol": "G-7b5", + "hidden": false, + "lyric": "eye" + }, + { + "id": "note-0m6reggh", + "kind": "note", + "duration_ticks": 2048, + "pitches": [ + { + "letter": "c", + "accidental": "n", + "octave": 4 + } + ], + "hidden": false, + "lyric": "on" + }, + { + "id": "note-xwjd2gd2", + "kind": "note", + "duration_ticks": 2048, + "pitches": [ + { + "letter": "g", + "accidental": "n", + "octave": 4 + } + ], + "hidden": false, + "tie_to_next": true, + "lyric": "spring," + }, + { + "id": "note-69glta5f", + "kind": "note", + "duration_ticks": 8192, + "pitches": [ + { + "letter": "g", + "accidental": "n", + "octave": 4 + } + ], + "chord_symbol": "C7b9", + "hidden": false, + "tie_from_previous": true + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-9cehautu", + "time_signature": "4/4", + "key_signature": "Eb", + "voices": [ + { + "id": "voice-530rnrt5", + "notes": [ + { + "id": "note-jopxmfvg", + "kind": "note", + "duration_ticks": 12288, + "pitches": [ + { + "letter": "c", + "accidental": "n", + "octave": 4 + } + ], + "chord_symbol": "F-7", + "hidden": false, + "lyric": "run" + }, + { + "id": "note-rrw00a1j", + "kind": "note", + "duration_ticks": 4096, + "pitches": [ + { + "letter": "d", + "accidental": "n", + "octave": 4 + } + ], + "hidden": false, + "lyric": "when" + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-v34tymkr", + "time_signature": "4/4", + "key_signature": "Eb", + "voices": [ + { + "id": "voice-n2541r6g", + "notes": [ + { + "id": "note-3m44ed29", + "kind": "note", + "duration_ticks": 4096, + "pitches": [ + { + "letter": "e", + "accidental": "b", + "octave": 4 + } + ], + "chord_symbol": "A-7b9", + "hidden": false, + "lyric": "church" + }, + { + "id": "note-hm8euexe", + "kind": "note", + "duration_ticks": 2048, + "pitches": [ + { + "letter": "d", + "accidental": "n", + "octave": 4 + } + ], + "hidden": false, + "lyric": "bells" + }, + { + "id": "note-yxakpaqn", + "kind": "note", + "duration_ticks": 2048, + "pitches": [ + { + "letter": "a", + "accidental": "n", + "octave": 4 + } + ], + "hidden": false, + "tie_to_next": true, + "lyric": "ring," + }, + { + "id": "note-f9wcddmz", + "kind": "note", + "duration_ticks": 8192, + "pitches": [ + { + "letter": "a", + "accidental": "n", + "octave": 4 + } + ], + "chord_symbol": "D7b9", + "hidden": false, + "tie_from_previous": true + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-mth3p6xr", + "time_signature": "4/4", + "key_signature": "Eb", + "voices": [ + { + "id": "voice-za6bru5e", + "notes": [ + { + "id": "note-q7kqglnq", + "kind": "note", + "duration_ticks": 8192, + "pitches": [ + { + "letter": "b", + "accidental": "b", + "octave": 4 + } + ], + "chord_symbol": "Ebmaj7", + "hidden": false, + "lyric": "it" + }, + { + "id": "note-tm0fk4h3", + "kind": "note", + "duration_ticks": 8192, + "pitches": [ + { + "letter": "b", + "accidental": "b", + "octave": 4 + } + ], + "hidden": false, + "lyric": "could" + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-cvqbyk45", + "time_signature": "4/4", + "key_signature": "Eb", + "voices": [ + { + "id": "voice-4ehj66zt", + "notes": [ + { + "id": "note-7mi2nfo8", + "kind": "note", + "duration_ticks": 4096, + "pitches": [ + { + "letter": "b", + "accidental": "b", + "octave": 4 + } + ], + "chord_symbol": "Ab7", + "hidden": false, + "lyric": "hap-" + }, + { + "id": "note-m9quav8w", + "kind": "note", + "duration_ticks": 8192, + "pitches": [ + { + "letter": "a", + "accidental": "b", + "octave": 4 + } + ], + "hidden": false, + "lyric": "pen" + }, + { + "id": "note-el0diqd8", + "kind": "note", + "duration_ticks": 4096, + "pitches": [ + { + "letter": "e", + "accidental": "b", + "octave": 4 + } + ], + "hidden": false, + "lyric": "to" + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-dmfg986x", + "time_signature": "4/4", + "key_signature": "Eb", + "voices": [ + { + "id": "voice-qqidkgap", + "notes": [ + { + "id": "note-ycljp8e0", + "kind": "note", + "duration_ticks": 16384, + "pitches": [ + { + "letter": "g", + "accidental": "n", + "octave": 4 + } + ], + "chord_symbol": "G-7b5", + "hidden": false, + "lyric": "you." + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-c5153ghx", + "time_signature": "4/4", + "key_signature": "Eb", + "voices": [ + { + "id": "voice-la9t1z91", + "notes": [ + { + "id": "note-mmj7w8go", + "kind": "rest", + "duration_ticks": 4096, + "pitches": [ + { + "letter": "b", + "octave": 4, + "accidental": "n" + } + ], + "chord_symbol": "C7b9" + }, + { + "id": "note-5o2sfcw1", + "kind": "rest", + "duration_ticks": 4096, + "pitches": [ + { + "letter": "b", + "octave": 4, + "accidental": "n" + } + ] + }, + { + "id": "note-4fvnubzs", + "kind": "rest", + "duration_ticks": 4096, + "pitches": [ + { + "letter": "b", + "octave": 4, + "accidental": "n" + } + ] + }, + { + "id": "note-2lfybg24", + "kind": "rest", + "duration_ticks": 4096, + "pitches": [ + { + "letter": "b", + "octave": 4, + "accidental": "n" + } + ] + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-4mb2skuk", + "time_signature": "4/4", + "key_signature": "Eb", + "voices": [ + { + "id": "voice-obks9c6s", + "notes": [ + { + "id": "note-1d9wlwi9", + "kind": "note", + "duration_ticks": 8192, + "pitches": [ + { + "letter": "g", + "accidental": "n", + "octave": 4 + } + ], + "chord_symbol": "F-7", + "hidden": false, + "lyric": "All" + }, + { + "id": "note-s0k5nska", + "kind": "note", + "duration_ticks": 8192, + "pitches": [ + { + "letter": "g", + "accidental": "n", + "octave": 4 + } + ], + "hidden": false, + "lyric": "I" + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-6qc76e48", + "time_signature": "4/4", + "key_signature": "Eb", + "voices": [ + { + "id": "voice-h47x88u0", + "notes": [ + { + "id": "note-kyueh4u9", + "kind": "note", + "duration_ticks": 4096, + "pitches": [ + { + "letter": "g", + "accidental": "n", + "octave": 4 + } + ], + "chord_symbol": "Db7", + "hidden": false, + "lyric": "did" + }, + { + "id": "note-i5lf2fb0", + "kind": "note", + "duration_ticks": 4096, + "pitches": [ + { + "letter": "a", + "accidental": "b", + "octave": 4 + } + ], + "hidden": false, + "lyric": "was" + }, + { + "id": "note-ff5amvez", + "kind": "note", + "duration_ticks": 4096, + "pitches": [ + { + "letter": "e", + "accidental": "b", + "octave": 4 + } + ], + "hidden": false, + "lyric": "won-" + }, + { + "id": "note-m94d1kvm", + "kind": "note", + "duration_ticks": 2048, + "pitches": [ + { + "letter": "f", + "accidental": "n", + "octave": 4 + } + ], + "hidden": false, + "lyric": "der" + }, + { + "id": "note-5s7022k0", + "kind": "note", + "duration_ticks": 2048, + "pitches": [ + { + "letter": "g", + "accidental": "n", + "octave": 4 + } + ], + "hidden": false, + "tie_to_next": true, + "lyric": "how" + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-vu7wroo6", + "time_signature": "4/4", + "key_signature": "Eb", + "voices": [ + { + "id": "voice-v1fa1ey0", + "notes": [ + { + "id": "note-g702zkvd", + "kind": "note", + "duration_ticks": 4096, + "pitches": [ + { + "letter": "g", + "accidental": "n", + "octave": 4 + } + ], + "chord_symbol": "Ebmaj7", + "hidden": false, + "tie_from_previous": true + }, + { + "id": "note-awpxmxrp", + "kind": "note", + "duration_ticks": 4096, + "pitches": [ + { + "letter": "d", + "accidental": "n", + "octave": 4 + } + ], + "hidden": false, + "lyric": "your" + }, + { + "id": "note-u7ljw048", + "kind": "note", + "duration_ticks": 4096, + "pitches": [ + { + "letter": "f", + "accidental": "n", + "octave": 4 + } + ], + "chord_symbol": "Ab7", + "hidden": false, + "lyric": "arms" + }, + { + "id": "note-gw3nkn0r", + "kind": "note", + "duration_ticks": 2048, + "pitches": [ + { + "letter": "e", + "accidental": "b", + "octave": 4 + } + ], + "hidden": false, + "lyric": "would" + }, + { + "id": "note-lth1pkjg", + "kind": "note", + "duration_ticks": 2048, + "pitches": [ + { + "letter": "b", + "accidental": "b", + "octave": 4 + } + ], + "hidden": false, + "tie_to_next": true, + "lyric": "be," + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-yepi7qn2", + "time_signature": "4/4", + "key_signature": "Eb", + "voices": [ + { + "id": "voice-yauzir01", + "notes": [ + { + "id": "note-ak2l1teq", + "kind": "note", + "duration_ticks": 16384, + "pitches": [ + { + "letter": "b", + "accidental": "b", + "octave": 4 + } + ], + "chord_symbol": "G-7b5", + "hidden": false, + "tie_from_previous": true + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-xru0shgp", + "time_signature": "4/4", + "key_signature": "Eb", + "voices": [ + { + "id": "voice-xbf773uk", + "notes": [ + { + "id": "note-wsy00yxy", + "kind": "note", + "duration_ticks": 8192, + "pitches": [ + { + "letter": "b", + "accidental": "b", + "octave": 3 + } + ], + "chord_symbol": "F-7", + "hidden": false, + "lyric": "and" + }, + { + "id": "note-12fmjz0z", + "kind": "note", + "duration_ticks": 8192, + "pitches": [ + { + "letter": "b", + "accidental": "b", + "octave": 3 + } + ], + "hidden": false, + "lyric": "it" + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-bjecb6gs", + "time_signature": "4/4", + "key_signature": "Eb", + "voices": [ + { + "id": "voice-y4wt02vw", + "notes": [ + { + "id": "note-6kh4v2ql", + "kind": "note", + "duration_ticks": 4096, + "pitches": [ + { + "letter": "a", + "accidental": "b", + "octave": 4 + } + ], + "chord_symbol": "Bb7", + "hidden": false, + "lyric": "hap-" + }, + { + "id": "note-mw2uwy6p", + "kind": "note", + "duration_ticks": 8192, + "pitches": [ + { + "letter": "f", + "accidental": "n", + "octave": 4 + } + ], + "hidden": false, + "lyric": "pened" + }, + { + "id": "note-66fg8qvq", + "kind": "note", + "duration_ticks": 4096, + "pitches": [ + { + "letter": "g", + "accidental": "n", + "octave": 4 + } + ], + "hidden": false, + "lyric": "to" + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-9jy6byfe", + "time_signature": "4/4", + "key_signature": "Eb", + "voices": [ + { + "id": "voice-j8gkm4cm", + "notes": [ + { + "id": "note-eib9ym2k", + "kind": "note", + "duration_ticks": 16384, + "pitches": [ + { + "letter": "e", + "accidental": "b", + "octave": 4 + } + ], + "chord_symbol": "Ebmaj7", + "hidden": false, + "lyric": "me." + } + ], + "tuplets": [] + } + ] + }, + { + "id": "measure-gnwn1v6i", + "time_signature": "4/4", + "key_signature": "Eb", + "voices": [ + { + "id": "voice-6caphzu5", + "notes": [ + { + "id": "note-h04zhpyx", + "kind": "rest", + "duration_ticks": 4096, + "pitches": [ + { + "letter": "b", + "octave": 4, + "accidental": "n" + } + ], + "chord_symbol": "F-7" + }, + { + "id": "note-c4wrn4pn", + "kind": "rest", + "duration_ticks": 4096, + "pitches": [ + { + "letter": "b", + "octave": 4, + "accidental": "n" + } + ] + }, + { + "id": "note-aivh8atp", + "kind": "rest", + "duration_ticks": 4096, + "pitches": [ + { + "letter": "b", + "octave": 4, + "accidental": "n" + } + ], + "chord_symbol": "Bb7" + }, + { + "id": "note-yo6pxzqs", + "kind": "rest", + "duration_ticks": 4096, + "pitches": [ + { + "letter": "b", + "octave": 4, + "accidental": "n" + } + ] + } + ], + "tuplets": [] + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/generator/__init__.py b/generator/__init__.py new file mode 100644 index 0000000..e5fb6a6 --- /dev/null +++ b/generator/__init__.py @@ -0,0 +1,2 @@ +"""Build-time score generation for Product Vamp.""" + diff --git a/generator/__main__.py b/generator/__main__.py new file mode 100644 index 0000000..26846d1 --- /dev/null +++ b/generator/__main__.py @@ -0,0 +1,56 @@ +from __future__ import annotations + +import argparse +import shutil +from pathlib import Path + +from generator.arrange.generate import generate_performance_scores +from generator.practice.generate import generate_practice_scores +from generator.score import count_json_files, validate_generated_tree +from generator.summary import validate_expected_performance_summary, validate_practice_variants + + +def parse_args() -> argparse.Namespace: + parser = argparse.ArgumentParser(description="Generate Product Vamp package score assets.") + parser.add_argument("--data-dir", type=Path, required=True) + parser.add_argument("--output-dir", type=Path, required=True) + parser.add_argument("--static-assets-dir", type=Path, default=Path("package/assets")) + parser.add_argument("--clean", action="store_true") + parser.add_argument("--check", action="store_true") + return parser.parse_args() + + +def main() -> int: + args = parse_args() + data_dir = args.data_dir.resolve() + output_dir = args.output_dir.resolve() + static_assets_dir = args.static_assets_dir.resolve() + + if args.clean and output_dir.exists(): + shutil.rmtree(output_dir) + output_dir.mkdir(parents=True, exist_ok=True) + + fonts_src = static_assets_dir / "fonts" + if fonts_src.exists(): + shutil.copytree(fonts_src, output_dir / "fonts", dirs_exist_ok=True) + + performance_count = generate_performance_scores(data_dir / "songs", output_dir / "songs") + practice_count = generate_practice_scores(data_dir / "practice", output_dir / "practice") + + validate_generated_tree(output_dir) + print( + "Generated Product Vamp assets: " + f"{performance_count} performance scores, " + f"{practice_count} practice score variants, " + f"{count_json_files(output_dir)} total JSON files." + ) + + if args.check: + validate_expected_performance_summary(data_dir / "expected" / "performance_summary.json", output_dir / "songs") + validate_practice_variants(output_dir / "practice") + print("Generator check passed.") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/generator/arrange/__init__.py b/generator/arrange/__init__.py new file mode 100644 index 0000000..5838b57 --- /dev/null +++ b/generator/arrange/__init__.py @@ -0,0 +1,2 @@ +"""Performance arrangement generation.""" + diff --git a/generator/arrange/form.py b/generator/arrange/form.py new file mode 100644 index 0000000..6332a17 --- /dev/null +++ b/generator/arrange/form.py @@ -0,0 +1,65 @@ +from __future__ import annotations + +from dataclasses import dataclass +from typing import Literal + +from generator.score import body_start_measure_index + +SectionRole = Literal["rhythm", "accompaniment", "melody", "vocal", "rest", "slash"] + + +@dataclass(frozen=True) +class ArrangementSection: + label: str + source_measure_index: int + measure_count: int + section_index: int + role: SectionRole + + +def phrase_aware_edge_measure_count(body_measure_count: int) -> int: + if body_measure_count >= 8: + return 8 + if body_measure_count >= 4: + return 4 + return body_measure_count + + +def section_role(part_type: str, section_index: int) -> SectionRole: + if part_type == "acoustic": + return "slash" if section_index == 3 else "rhythm" + if part_type == "electric": + if section_index == 4: + return "slash" + if section_index == 2: + return "melody" + if section_index in {1, 5, 6}: + return "accompaniment" + return "rest" + return "vocal" if section_index in {1, 5, 6} else "rest" + + +def full_arrangement_sections(measures: list[dict], part_type: str) -> list[ArrangementSection]: + if not measures: + return [] + body_start = body_start_measure_index(measures) + if body_start >= len(measures): + return [] + body_measure_count = len(measures) - body_start + edge_measure_count = phrase_aware_edge_measure_count(body_measure_count) + edge_source_measure = body_start + body_measure_count - edge_measure_count + specs = ( + ("Rhythm Lead-in", edge_source_measure, edge_measure_count, 0), + ("Vocal Melody", body_start, body_measure_count, 1), + ("Guitar Melody", body_start, body_measure_count, 2), + ("Guitar Solo", body_start, body_measure_count, 3), + ("Guitar Solo", body_start, body_measure_count, 4), + ("Vocal Melody", body_start, body_measure_count, 5), + ("Ending", edge_source_measure, edge_measure_count, 6), + ) + return [ + ArrangementSection(label=label, source_measure_index=start, measure_count=count, section_index=index, role=section_role(part_type, index)) + for label, start, count, index in specs + if count > 0 + ] + diff --git a/generator/arrange/fretboard.py b/generator/arrange/fretboard.py new file mode 100644 index 0000000..f96189f --- /dev/null +++ b/generator/arrange/fretboard.py @@ -0,0 +1,151 @@ +from __future__ import annotations + +from itertools import product +from typing import NamedTuple + +from generator.transposition import mod12 + +STANDARD_TUNING = ((6, 40), (5, 45), (4, 50), (3, 55), (2, 59), (1, 64)) +WRITTEN_GUITAR_OCTAVE_OFFSET = 12 + + +class TabPosition(NamedTuple): + string_number: int + fret: int + midi: int + + +ROOTS = { + "C": 0, + "C#": 1, + "Db": 1, + "D": 2, + "D#": 3, + "Eb": 3, + "E": 4, + "F": 5, + "F#": 6, + "Gb": 6, + "G": 7, + "G#": 8, + "Ab": 8, + "A": 9, + "A#": 10, + "Bb": 10, + "B": 11, +} + + +def parse_root(symbol: str) -> tuple[str, str] | None: + if not symbol or symbol[0].upper() not in "ABCDEFG": + return None + length = 1 + if len(symbol) > 1 and symbol[1] in {"#", "b"}: + length = 2 + return symbol[:length], symbol[length:] + + +def chord_intervals(quality: str) -> tuple[int, ...]: + value = quality.lower() + if "7b5" in value or "ø" in value or "half" in value: + return (0, 3, 6, 10) + if "dim" in value or "o" in value: + return (0, 3, 6, 9) + if "aug" in value or "+" in value: + return (0, 4, 8, 10) + if "sus" in value: + return (0, 5, 7, 10) + if value.startswith("-") or (value.startswith("m") and not value.startswith("maj")): + return (0, 3, 7, 10 if "7" in value else 10) + if "maj7" in value or "ma7" in value or "Δ" in value: + return (0, 4, 7, 11) + if "6" in value and "7" not in value: + return (0, 4, 7, 9) + if "7" in value: + return (0, 4, 7, 10) + return (0, 4, 7) + + +def chord_pitch_classes(symbol: str) -> tuple[int, ...]: + parsed = parse_root(symbol) + if parsed is None: + return () + root, quality = parsed + root_pc = ROOTS.get(root[0].upper() + root[1:], ROOTS.get(root.upper())) + if root_pc is None: + return () + return tuple(mod12(root_pc + interval) for interval in chord_intervals(quality)) + + +def positions_for_string(string_number: int, open_midi: int, pitch_classes: tuple[int, ...]) -> list[TabPosition]: + result: list[TabPosition] = [] + for fret in range(0, 13): + midi = open_midi + fret + if mod12(midi) in pitch_classes: + result.append(TabPosition(string_number, fret, midi)) + return result + + +def candidate_score(candidate: tuple[TabPosition, ...], pitch_classes: tuple[int, ...]) -> int: + fretted = [position.fret for position in candidate if position.fret > 0] + if not fretted: + span = 0 + low = 0 + else: + span = max(fretted) - min(fretted) + low = min(fretted) + covered = {mod12(position.midi) for position in candidate} + missing = len(set(pitch_classes) - covered) + open_penalty = sum(1 for position in candidate if position.fret == 0) + return missing * 1000 + span * 80 + abs(low - 5) * 12 + open_penalty * 8 + sum(position.fret for position in candidate) + + +def find_playable_voicing(symbol: str) -> list[TabPosition]: + pitch_classes = chord_pitch_classes(symbol) + if not pitch_classes: + return [] + + string_sets = ((6, 4, 3, 2), (5, 4, 3, 2), (4, 3, 2, 1), (6, 5, 4, 3), (5, 3, 2, 1)) + by_string = {string_number: positions_for_string(string_number, open_midi, pitch_classes) for string_number, open_midi in STANDARD_TUNING} + best: tuple[TabPosition, ...] | None = None + best_score = 10**9 + for string_set in string_sets: + options = [by_string[string_number][:8] for string_number in string_set] + if any(not item for item in options): + continue + for candidate in product(*options): + fretted = [position.fret for position in candidate if position.fret > 0] + if fretted and max(fretted) - min(fretted) > 4: + continue + covered = {mod12(position.midi) for position in candidate} + if len(covered & set(pitch_classes)) < min(3, len(set(pitch_classes))): + continue + score = candidate_score(candidate, pitch_classes) + if score < best_score: + best = candidate + best_score = score + return sorted(best or [], key=lambda item: item.midi) + + +def pitch_from_midi(midi: int) -> dict[str, int | str]: + names = ( + ("c", "n"), + ("c", "#"), + ("d", "n"), + ("e", "b"), + ("e", "n"), + ("f", "n"), + ("f", "#"), + ("g", "n"), + ("a", "b"), + ("a", "n"), + ("b", "b"), + ("b", "n"), + ) + letter, accidental = names[mod12(midi)] + return {"letter": letter, "accidental": accidental, "octave": midi // 12 - 1} + + +def pitches_for_voicing(symbol: str) -> list[dict[str, int | str]]: + return [pitch_from_midi(position.midi + WRITTEN_GUITAR_OCTAVE_OFFSET) for position in find_playable_voicing(symbol)] + diff --git a/generator/arrange/generate.py b/generator/arrange/generate.py new file mode 100644 index 0000000..416f5f5 --- /dev/null +++ b/generator/arrange/generate.py @@ -0,0 +1,272 @@ +from __future__ import annotations + +from pathlib import Path + +from generator.arrange.form import ArrangementSection, full_arrangement_sections +from generator.arrange.fretboard import pitches_for_voicing +from generator.score import ( + QUARTER_TICKS, + apply_source_chord_markers, + active_chord_at_offset, + chord_markers, + chord_symbol_at_offset, + copy_source_voice, + first_chord_symbol, + first_voice, + leading_pickup_measure_index, + load_json, + make_arranged_document, + make_measure, + measure_capacity_ticks, + renderable_duration, + renderable_rest_notes, + rest_note, + sanitized_note, + slash_note, + slugify, + source_staff, + source_note_attack_at, + write_json, +) + +PART_TYPES = ("acoustic", "electric", "vocal") + + +def propagated_chords(measures: list[dict]) -> list[str]: + result: list[str] = [] + current = "" + for measure in measures: + current = first_chord_symbol(measure, current) + result.append(current) + return result + + +def playable_chord_note(note_id: str, duration_ticks: int, voicing_chord_symbol: str, visible_chord_symbol: str = "") -> dict: + note = { + "id": note_id, + "kind": "note", + "duration_ticks": duration_ticks, + "pitches": pitches_for_voicing(voicing_chord_symbol), + "hidden": False, + } + if not note["pitches"]: + return rest_note(note_id, duration_ticks, visible_chord_symbol) + if visible_chord_symbol: + note["chord_symbol"] = visible_chord_symbol + return note + + +def rhythm_notes(measure: dict, chord_symbol: str, sequence: int) -> tuple[list[dict], int]: + capacity = measure_capacity_ticks(str(measure.get("time_signature", "4/4"))) + hit_offsets = (0, QUARTER_TICKS + QUARTER_TICKS // 2, QUARTER_TICKS * 2, QUARTER_TICKS * 2 + QUARTER_TICKS // 2, QUARTER_TICKS * 3 + QUARTER_TICKS // 2) + hit_duration = QUARTER_TICKS // 2 + notes: list[dict] = [] + cursor = 0 + for offset in hit_offsets: + if offset >= capacity: + break + if offset > cursor: + rests, sequence = renderable_rest_notes("arr-rest", offset - cursor, sequence) + notes.extend(rests) + cursor = offset + active_chord = active_chord_at_offset(measure, offset, chord_symbol) + visible_chord = chord_symbol_at_offset(measure, offset) + sequence += 1 + notes.append(playable_chord_note(f"arr-note-{sequence}", min(hit_duration, capacity - offset), active_chord, visible_chord)) + cursor = offset + min(hit_duration, capacity - offset) + if cursor < capacity: + rests, sequence = renderable_rest_notes("arr-rest", capacity - cursor, sequence) + notes.extend(rests) + return apply_source_chord_markers(notes, measure), sequence + + +def accompaniment_notes(measure: dict, chord_symbol: str, sequence: int) -> tuple[list[dict], int]: + capacity = measure_capacity_ticks(str(measure.get("time_signature", "4/4"))) + notes: list[dict] = [] + lead_rest = min(QUARTER_TICKS // 2, capacity) + if lead_rest: + rests, sequence = renderable_rest_notes("arr-rest", lead_rest, sequence, chord_symbol_at_offset(measure, 0)) + notes.extend(rests) + if lead_rest < capacity: + hit = min(QUARTER_TICKS // 2, capacity - lead_rest) + visible_chord = chord_symbol_at_offset(measure, lead_rest) + active_chord = active_chord_at_offset(measure, lead_rest, chord_symbol) + sequence += 1 + if source_note_attack_at(measure, lead_rest): + notes.append(rest_note(f"arr-rest-{sequence}", hit, visible_chord)) + else: + notes.append(playable_chord_note(f"arr-note-{sequence}", hit, active_chord, visible_chord)) + cursor = lead_rest + hit + if cursor < capacity: + markers = [marker for marker in chord_markers(measure) if marker[0] >= cursor] + if markers: + segment_cursor = cursor + for index, (start, _, chord) in enumerate(markers): + if start > segment_cursor: + rests, sequence = renderable_rest_notes("arr-rest", start - segment_cursor, sequence) + notes.extend(rests) + next_start = markers[index + 1][0] if index + 1 < len(markers) else capacity + rests, sequence = renderable_rest_notes("arr-rest", next_start - start, sequence, chord) + notes.extend(rests) + segment_cursor = next_start + if segment_cursor < capacity: + rests, sequence = renderable_rest_notes("arr-rest", capacity - segment_cursor, sequence) + notes.extend(rests) + else: + rests, sequence = renderable_rest_notes("arr-rest", capacity - cursor, sequence) + notes.extend(rests) + return apply_source_chord_markers(notes, measure), sequence + + +def slash_notes(measure: dict, chord_symbol: str, sequence: int) -> tuple[list[dict], int]: + capacity = measure_capacity_ticks(str(measure.get("time_signature", "4/4"))) + notes: list[dict] = [] + cursor = 0 + while cursor < capacity: + sequence += 1 + duration = min(QUARTER_TICKS, capacity - cursor) + notes.append(slash_note(f"arr-slash-{sequence}", duration)) + cursor += duration + return notes, sequence + + +def rest_notes(measure: dict, chord_symbol: str, sequence: int) -> tuple[list[dict], int]: + capacity = measure_capacity_ticks(str(measure.get("time_signature", "4/4"))) + markers = chord_markers(measure) + if not markers: + notes, sequence = renderable_rest_notes("arr-rest", capacity, sequence) + return notes, sequence + + notes: list[dict] = [] + cursor = 0 + for index, (start, _, chord) in enumerate(markers): + if start > cursor: + if not renderable_duration(start - cursor): + return source_rest_skeleton_notes(measure, sequence) + rests, sequence = renderable_rest_notes("arr-rest", start - cursor, sequence) + notes.extend(rests) + next_start = markers[index + 1][0] if index + 1 < len(markers) else capacity + if not renderable_duration(next_start - start): + return source_rest_skeleton_notes(measure, sequence) + rests, sequence = renderable_rest_notes("arr-rest", next_start - start, sequence, chord) + notes.extend(rests) + cursor = next_start + if cursor < capacity: + if not renderable_duration(capacity - cursor): + return source_rest_skeleton_notes(measure, sequence) + rests, sequence = renderable_rest_notes("arr-rest", capacity - cursor, sequence) + notes.extend(rests) + return notes, sequence + + +def source_rest_skeleton_notes(measure: dict, sequence: int) -> tuple[list[dict], int]: + notes: list[dict] = [] + for source_note in first_voice(measure).get("notes", []): + if not isinstance(source_note, dict): + continue + sequence += 1 + note = rest_note(f"arr-rest-{sequence}", int(source_note.get("duration_ticks", QUARTER_TICKS)), str(source_note.get("chord_symbol", ""))) + if "display_ticks" in source_note: + note["display_ticks"] = source_note["display_ticks"] + if "tuplet_id" in source_note: + note["tuplet_id"] = source_note["tuplet_id"] + notes.append(note) + if not notes: + sequence += 1 + notes.append(rest_note(f"arr-rest-{sequence}", measure_capacity_ticks(str(measure.get("time_signature", "4/4"))))) + return notes, sequence + + +def melody_voice(measure: dict, *, strip_lyrics: bool) -> dict: + voice = copy_source_voice(measure, strip_lyrics=strip_lyrics) + voice["id"] = "voice-arranged-source" + voice["notes"] = [sanitized_note(note, strip_lyrics=strip_lyrics) for note in first_voice(measure).get("notes", []) if isinstance(note, dict)] + return voice + + +def apply_vocal_pickup_overlap(output: list[dict], source_measures: list[dict], section: ArrangementSection) -> None: + pickup = leading_pickup_measure_index(source_measures) + if pickup is None or section.source_measure_index != pickup + 1 or not output: + return + voice = copy_source_voice(source_measures[pickup], strip_lyrics=False) + for note in voice["notes"]: + if isinstance(note, dict): + note.pop("chord_symbol", None) + output[-1]["voices"][0]["id"] = "voice-arranged-vocal" + output[-1]["voices"][0]["tuplets"] = voice["tuplets"] + output[-1]["voices"][0]["notes"] = voice["notes"] + + +def voice_for_section(section: ArrangementSection, measure: dict, chord_symbol: str, sequence: int) -> tuple[dict, int]: + if section.role == "vocal": + return melody_voice(measure, strip_lyrics=False), sequence + if section.role == "melody": + return melody_voice(measure, strip_lyrics=True), sequence + if section.role == "rhythm": + notes, sequence = rhythm_notes(measure, chord_symbol, sequence) + elif section.role == "accompaniment": + notes, sequence = accompaniment_notes(measure, chord_symbol, sequence) + elif section.role == "slash": + notes, sequence = slash_notes(measure, chord_symbol, sequence) + else: + notes, sequence = rest_notes(measure, chord_symbol, sequence) + return {"id": "voice-arranged-guitar", "tuplets": [], "notes": notes}, sequence + + +def arranged_measures(source_measures: list[dict], part_type: str) -> list[dict]: + sections = full_arrangement_sections(source_measures, part_type) + chords = propagated_chords(source_measures) + output: list[dict] = [] + sequence = 0 + for section in sections: + if part_type == "vocal" and section.role == "vocal": + apply_vocal_pickup_overlap(output, source_measures, section) + for offset in range(section.measure_count): + source_index = section.source_measure_index + offset + source_measure = source_measures[source_index] + chord_symbol = chords[source_index] if source_index < len(chords) else "" + voice, sequence = voice_for_section(section, source_measure, chord_symbol, sequence) + output_measure = make_measure( + f"measure-{len(output) + 1}", + source_measure, + voice.get("notes", []), + section_label=section.label if offset == 0 else "", + tuplets=voice.get("tuplets", []), + ) + output_measure["voices"][0]["id"] = str(voice.get("id", output_measure["voices"][0]["id"])) + output.append(output_measure) + return output + + +def arrange_document(document: dict, part_type: str) -> dict: + staff = source_staff(document) + measures = staff.get("measures") + if not isinstance(measures, list) or not measures: + raise ValueError("performance arrangement requires at least one source measure") + output = make_arranged_document( + document, + staff, + staff_id="staff-arranged-vocal" if part_type == "vocal" else "staff-arranged-guitar", + staff_name=part_type.capitalize(), + role="vocal" if part_type == "vocal" else "guitar", + arrangement_part_type=part_type, + measures=arranged_measures([measure for measure in measures if isinstance(measure, dict)], part_type), + ) + metadata = output.setdefault("metadata", {}) + if isinstance(metadata, dict): + metadata.setdefault("tempo", 124) + return output + + +def generate_performance_scores(source_dir: Path, output_dir: Path) -> int: + if not source_dir.exists(): + raise ValueError(f"performance source directory not found: {source_dir}") + count = 0 + for source_path in sorted(source_dir.glob("*.json")): + document = load_json(source_path) + for part_type in PART_TYPES: + output = arrange_document(document, part_type) + target = output_dir / f"{slugify(source_path.stem)}-{part_type}.json" + write_json(target, output) + count += 1 + return count diff --git a/generator/practice/__init__.py b/generator/practice/__init__.py new file mode 100644 index 0000000..795df66 --- /dev/null +++ b/generator/practice/__init__.py @@ -0,0 +1,2 @@ +"""Practice score generation.""" + diff --git a/generator/practice/generate.py b/generator/practice/generate.py new file mode 100644 index 0000000..8c85936 --- /dev/null +++ b/generator/practice/generate.py @@ -0,0 +1,77 @@ +from __future__ import annotations + +from pathlib import Path + +from generator.score import copy_source_voice, load_json, make_arranged_document, make_measure, slugify, source_staff, write_json +from generator.transposition import TARGET_KEYS, transpose_document + + +def practice_document(document: dict) -> dict: + staff = source_staff(document) + source_measures = staff.get("measures") + if not isinstance(source_measures, list): + raise ValueError("practice source must contain measures") + measures: list[dict] = [] + for index, measure in enumerate(source_measure for source_measure in source_measures if isinstance(source_measure, dict)): + voice = copy_source_voice(measure, strip_lyrics=True) + output_measure = make_measure( + f"measure-{index + 1}", + measure, + voice["notes"], + section_label=str(measure.get("section_label", "")), + tuplets=voice["tuplets"], + ) + output_measure["voices"][0]["id"] = str(voice.get("id", output_measure["voices"][0]["id"])) + measures.append(output_measure) + return make_arranged_document( + document, + staff, + staff_id="staff-arranged-practice", + staff_name="Practice", + role="vocal", + arrangement_part_type="practice", + measures=measures, + ) + + +def key_file_name(key: str) -> str: + return key.lower().replace("#", "sharp").replace("b", "b") + ".json" + + +def generate_chord_practice(source_path: Path, source_root: Path, output_dir: Path) -> int: + document = practice_document(load_json(source_path)) + metadata = document.get("metadata", {}) + key = str(metadata.get("key_signature", "C") if isinstance(metadata, dict) else "C") + relative = source_path.relative_to(source_root) + lesson_group = relative.parent.name + exercise_id = slugify(source_path.stem) + write_json(output_dir / "chord" / lesson_group / exercise_id / key_file_name(key), document) + return 1 + + +def generate_melody_practice(source_path: Path, source_root: Path, output_dir: Path) -> int: + base_document = practice_document(load_json(source_path)) + relative = source_path.relative_to(source_root) + lesson_group = relative.parent.name + exercise_id = slugify(source_path.stem) + count = 0 + for key in TARGET_KEYS: + write_json(output_dir / "melody" / lesson_group / exercise_id / key_file_name(key), transpose_document(base_document, key)) + count += 1 + return count + + +def generate_practice_scores(source_dir: Path, output_dir: Path) -> int: + if not source_dir.exists(): + return 0 + count = 0 + chord_root = source_dir / "chord" + if chord_root.exists(): + for path in sorted(chord_root.rglob("*.json")): + count += generate_chord_practice(path, chord_root, output_dir) + melody_root = source_dir / "melody" + if melody_root.exists(): + for path in sorted(melody_root.rglob("*.json")): + count += generate_melody_practice(path, melody_root, output_dir) + return count + diff --git a/generator/score.py b/generator/score.py new file mode 100644 index 0000000..d292277 --- /dev/null +++ b/generator/score.py @@ -0,0 +1,367 @@ +from __future__ import annotations + +import copy +import json +import re +from pathlib import Path +from typing import Any + +WHOLE_TICKS = 16384 +HALF_TICKS = WHOLE_TICKS // 2 +QUARTER_TICKS = WHOLE_TICKS // 4 +EIGHTH_TICKS = WHOLE_TICKS // 8 +SIXTEENTH_TICKS = WHOLE_TICKS // 16 +THIRTY_SECOND_TICKS = WHOLE_TICKS // 32 +RENDERABLE_TICKS = ( + WHOLE_TICKS + HALF_TICKS, + WHOLE_TICKS, + HALF_TICKS + QUARTER_TICKS, + HALF_TICKS, + QUARTER_TICKS + EIGHTH_TICKS, + QUARTER_TICKS, + EIGHTH_TICKS + SIXTEENTH_TICKS, + EIGHTH_TICKS, + SIXTEENTH_TICKS + THIRTY_SECOND_TICKS, + SIXTEENTH_TICKS, + THIRTY_SECOND_TICKS, +) + +REST_PITCH = {"letter": "b", "accidental": "n", "octave": 4} +FORBIDDEN_OUTPUT_FIELDS = { + "tab_positions", + "tab_frets", + "finger", + "fingers", + "fingering", + "left_hand_finger", + "right_hand_finger", +} + + +def load_json(path: Path) -> dict[str, Any]: + with path.open("r", encoding="utf-8") as stream: + document = json.load(stream) + if not isinstance(document, dict): + raise ValueError(f"{path} is not a score document") + return document + + +def write_json(path: Path, document: dict[str, Any]) -> None: + path.parent.mkdir(parents=True, exist_ok=True) + with path.open("w", encoding="utf-8") as stream: + json.dump(document, stream, indent=2, ensure_ascii=False) + stream.write("\n") + + +def slugify(value: str) -> str: + value = value.strip().lower() + value = re.sub(r"[^a-z0-9]+", "-", value) + value = value.strip("-") + return value or "score" + + +def human_label(value: str) -> str: + text = value.replace("_", " ").replace("-", " ").strip() + return " ".join(part.capitalize() for part in text.split()) or "General" + + +def source_staff(document: dict[str, Any]) -> dict[str, Any]: + staves = document.get("staves") + if not isinstance(staves, list) or not staves: + raise ValueError("score document must contain at least one staff") + first_staff: dict[str, Any] | None = None + for value in staves: + if not isinstance(value, dict): + continue + if first_staff is None: + first_staff = value + staff_id = str(value.get("id", "")) + if not value.get("arranged") and staff_id not in {"staff-arranged-guitar", "staff-arranged-vocal", "staff-arranged-practice"} and value.get("role") != "guitar": + return value + if first_staff is None: + raise ValueError("score document does not contain an object staff") + return first_staff + + +def measure_capacity_ticks(time_signature: str) -> int: + try: + beats_text, unit_text = time_signature.split("/", 1) + beats = int(beats_text) + unit = int(unit_text) + except ValueError: + return WHOLE_TICKS + if beats <= 0 or unit <= 0: + return WHOLE_TICKS + return WHOLE_TICKS * beats // unit + + +def note_duration(note: dict[str, Any]) -> int: + value = note.get("duration_ticks", QUARTER_TICKS) + return max(1, int(value)) if isinstance(value, int) else QUARTER_TICKS + + +def renderable_duration(duration_ticks: int) -> bool: + return duration_ticks in RENDERABLE_TICKS + + +def renderable_duration_parts(duration_ticks: int) -> list[int]: + parts: list[int] = [] + remaining = duration_ticks + while remaining > 0: + match = next((duration for duration in RENDERABLE_TICKS if duration <= remaining), None) + if match is None: + return [duration_ticks] + parts.append(match) + remaining -= match + return parts + + +def first_voice(measure: dict[str, Any]) -> dict[str, Any]: + voices = measure.get("voices") + if isinstance(voices, list) and voices and isinstance(voices[0], dict): + return voices[0] + return {"id": "voice-empty", "tuplets": [], "notes": []} + + +def first_chord_symbol(measure: dict[str, Any], fallback: str = "") -> str: + voice = first_voice(measure) + notes = voice.get("notes") + if not isinstance(notes, list): + return fallback + for note in notes: + if isinstance(note, dict): + chord = note.get("chord_symbol") + if isinstance(chord, str) and chord: + return chord + return fallback + + +def measure_notes(measure: dict[str, Any]) -> list[dict[str, Any]]: + voice = first_voice(measure) + notes = voice.get("notes") + return [note for note in notes if isinstance(note, dict)] if isinstance(notes, list) else [] + + +def timed_measure_notes(measure: dict[str, Any]) -> list[tuple[int, dict[str, Any]]]: + cursor = 0 + result: list[tuple[int, dict[str, Any]]] = [] + for note in measure_notes(measure): + result.append((cursor, note)) + cursor += note_duration(note) + return result + + +def chord_markers(measure: dict[str, Any]) -> list[tuple[int, int, str]]: + markers: list[tuple[int, int, str]] = [] + for start_ticks, note in timed_measure_notes(measure): + chord = note.get("chord_symbol") + if isinstance(chord, str) and chord: + markers.append((start_ticks, note_duration(note), chord)) + return markers + + +def chord_symbol_at_offset(measure: dict[str, Any], offset_ticks: int) -> str: + for start_ticks, _, chord in chord_markers(measure): + if start_ticks == offset_ticks: + return chord + return "" + + +def active_chord_at_offset(measure: dict[str, Any], offset_ticks: int, fallback: str = "") -> str: + current = fallback + for start_ticks, _, chord in chord_markers(measure): + if start_ticks > offset_ticks: + break + current = chord + return current + + +def source_note_attack_at(measure: dict[str, Any], offset_ticks: int) -> bool: + for start_ticks, note in timed_measure_notes(measure): + if start_ticks == offset_ticks and note.get("kind", "note") == "note" and isinstance(note.get("pitches"), list) and note["pitches"]: + return True + return False + + +def first_pitched_note_start(measure: dict[str, Any]) -> int | None: + cursor = 0 + for note in measure_notes(measure): + if note.get("kind", "note") == "note" and isinstance(note.get("pitches"), list) and note["pitches"]: + return cursor + cursor += note_duration(note) + return None + + +def leading_pickup_measure_index(measures: list[dict[str, Any]]) -> int | None: + if len(measures) < 2 or first_chord_symbol(measures[0]): + return None + first_pitch = first_pitched_note_start(measures[0]) + if first_pitch is None or first_pitch <= 0: + return None + for index, measure in enumerate(measures): + if first_chord_symbol(measure): + return 0 if index == 1 else None + return None + + +def body_start_measure_index(measures: list[dict[str, Any]]) -> int: + pickup = leading_pickup_measure_index(measures) + return pickup + 1 if pickup is not None else 0 + + +def rest_note(note_id: str, duration_ticks: int, chord_symbol: str = "") -> dict[str, Any]: + note: dict[str, Any] = { + "id": note_id, + "kind": "rest", + "duration_ticks": duration_ticks, + "pitches": [copy.deepcopy(REST_PITCH)], + "hidden": False, + } + if chord_symbol: + note["chord_symbol"] = chord_symbol + return note + + +def renderable_rest_notes(note_id_prefix: str, duration_ticks: int, sequence: int, chord_symbol: str = "") -> tuple[list[dict[str, Any]], int]: + notes: list[dict[str, Any]] = [] + for index, duration in enumerate(renderable_duration_parts(duration_ticks)): + sequence += 1 + notes.append(rest_note(f"{note_id_prefix}-{sequence}", duration, chord_symbol if index == 0 else "")) + return notes, sequence + + +def apply_source_chord_markers(notes: list[dict[str, Any]], measure: dict[str, Any]) -> list[dict[str, Any]]: + markers = [(start, chord) for start, _, chord in chord_markers(measure)] + if not markers: + result = [copy.deepcopy(note) for note in notes] + for note in result: + note.pop("chord_symbol", None) + return result + + unique_markers: list[tuple[int, str]] = [] + for start, chord in markers: + if unique_markers and unique_markers[-1][0] == start: + unique_markers[-1] = (start, chord) + else: + unique_markers.append((start, chord)) + + marker_by_start = dict(unique_markers) + marker_starts = [start for start, _ in unique_markers] + result: list[dict[str, Any]] = [] + cursor = 0 + split_sequence = 0 + for source_note in notes: + note = copy.deepcopy(source_note) + note.pop("chord_symbol", None) + duration = note_duration(note) + end = cursor + duration + split_points = [cursor] + [start for start in marker_starts if cursor < start < end] + [end] + for index in range(len(split_points) - 1): + start = split_points[index] + stop = split_points[index + 1] + part_duration = stop - start + if part_duration <= 0: + continue + part = copy.deepcopy(note) + part["duration_ticks"] = part_duration + if len(split_points) > 2: + split_sequence += 1 + part["id"] = f"{note.get('id', 'note')}-split-{split_sequence}" + if part.get("kind", "note") == "note": + part["tie_to_next"] = index + 2 < len(split_points) + part["tie_from_previous"] = index > 0 + if start in marker_by_start: + part["chord_symbol"] = marker_by_start[start] + result.append(part) + cursor = end + return result + + +def slash_note(note_id: str, duration_ticks: int, chord_symbol: str = "") -> dict[str, Any]: + note: dict[str, Any] = { + "id": note_id, + "kind": "note", + "duration_ticks": duration_ticks, + "pitches": [copy.deepcopy(REST_PITCH)], + "notehead": "slash", + "hidden": False, + } + if chord_symbol: + note["chord_symbol"] = chord_symbol + return note + + +def sanitize_json(value: Any) -> Any: + if isinstance(value, dict): + return {key: sanitize_json(item) for key, item in value.items() if key not in FORBIDDEN_OUTPUT_FIELDS} + if isinstance(value, list): + return [sanitize_json(item) for item in value] + return copy.deepcopy(value) + + +def sanitized_note(note: dict[str, Any], *, strip_lyrics: bool) -> dict[str, Any]: + output = sanitize_json(note) + if strip_lyrics: + output.pop("lyric", None) + output.setdefault("hidden", False) + return output + + +def copy_source_voice(measure: dict[str, Any], *, strip_lyrics: bool) -> dict[str, Any]: + voice = first_voice(measure) + tuplets = sanitize_json(voice.get("tuplets", [])) + notes = [sanitized_note(note, strip_lyrics=strip_lyrics) for note in measure_notes(measure)] + return { + "id": str(voice.get("id", "voice-source")), + "tuplets": tuplets if isinstance(tuplets, list) else [], + "notes": notes or [rest_note("arr-rest-empty", measure_capacity_ticks(str(measure.get("time_signature", "4/4"))))], + } + + +def make_measure(measure_id: str, source: dict[str, Any], notes: list[dict[str, Any]], *, section_label: str = "", tuplets: list[Any] | None = None) -> dict[str, Any]: + measure: dict[str, Any] = { + "id": measure_id, + "time_signature": str(source.get("time_signature", "4/4")), + "key_signature": str(source.get("key_signature", "C")), + "voices": [{ + "id": f"voice-{measure_id}", + "tuplets": tuplets or [], + "notes": notes, + }], + } + if section_label: + measure["section_label"] = section_label + return measure + + +def make_arranged_document(source_document: dict[str, Any], staff: dict[str, Any], *, staff_id: str, staff_name: str, role: str, arrangement_part_type: str, measures: list[dict[str, Any]]) -> dict[str, Any]: + metadata = sanitize_json(source_document.get("metadata", {})) + if not isinstance(metadata, dict): + metadata = {} + output: dict[str, Any] = { + "version": int(source_document.get("version", 1)) if isinstance(source_document.get("version", 1), int) else 1, + "metadata": metadata, + "staves": [{ + "id": staff_id, + "name": staff_name, + "clef": str(staff.get("clef", "treble")), + "role": role, + "arranged": True, + "arrangement_part_type": arrangement_part_type, + "measures": measures, + }], + } + return sanitize_json(output) + + +def count_json_files(root: Path) -> int: + return sum(1 for path in root.rglob("*.json") if path.is_file()) + + +def validate_generated_tree(root: Path) -> None: + for path in root.rglob("*.json"): + text = path.read_text(encoding="utf-8") + for field in FORBIDDEN_OUTPUT_FIELDS: + if f'"{field}"' in text: + raise ValueError(f"{path} contains forbidden generated field {field}") + json.loads(text) diff --git a/generator/summary.py b/generator/summary.py new file mode 100644 index 0000000..1e4ebd9 --- /dev/null +++ b/generator/summary.py @@ -0,0 +1,116 @@ +from __future__ import annotations + +import json +from pathlib import Path +from typing import Any + +from generator.score import load_json, measure_notes +from generator.transposition import TARGET_KEYS + + +def _arranged_staff(document: dict[str, Any]) -> dict[str, Any]: + staves = document.get("staves") + if not isinstance(staves, list) or not staves or not isinstance(staves[0], dict): + raise ValueError("generated score document must contain an arranged staff") + return staves[0] + + +def _measure_summary(staff: dict[str, Any], measure: dict[str, Any], measure_number: int) -> dict[str, Any]: + notes = measure_notes(measure) + summary: dict[str, Any] = { + "measure": measure_number, + "section_label": str(measure.get("section_label", "")), + "chord_symbols": [str(note.get("chord_symbol", "")) for note in notes if isinstance(note.get("chord_symbol"), str) and note.get("chord_symbol")], + "slash_count": sum(1 for note in notes if note.get("kind", "note") == "note" and note.get("notehead") == "slash"), + } + if staff.get("arrangement_part_type") == "vocal": + summary["vocal_skeleton"] = [ + { + "kind": str(note.get("kind", "note")), + "duration_ticks": int(note.get("duration_ticks", 0)), + "display_ticks": int(note["display_ticks"]) if isinstance(note.get("display_ticks"), int) else None, + "has_lyric": isinstance(note.get("lyric"), str) and bool(note.get("lyric")), + } + for note in notes + ] + return summary + + +def performance_document_summary(document: dict[str, Any]) -> dict[str, Any]: + metadata = document.get("metadata") + if not isinstance(metadata, dict): + metadata = {} + staff = _arranged_staff(document) + measures = staff.get("measures") + if not isinstance(measures, list): + measures = [] + measure_summaries = [ + _measure_summary(staff, measure, index + 1) + for index, measure in enumerate(measures) + if isinstance(measure, dict) + ] + return { + "title": str(metadata.get("title", "")), + "composer": str(metadata.get("composer", "")), + "key_signature": str(metadata.get("key_signature", "")), + "part_type": str(staff.get("arrangement_part_type", "")), + "measure_count": len(measure_summaries), + "section_labels": [ + {"measure": item["measure"], "label": item["section_label"]} + for item in measure_summaries + if item["section_label"] + ], + "measures": measure_summaries, + } + + +def performance_tree_summary(root: Path) -> dict[str, Any]: + return { + path.name: performance_document_summary(load_json(path)) + for path in sorted(root.glob("*.json")) + } + + +def validate_expected_performance_summary(expected_path: Path, generated_songs_dir: Path) -> None: + if not expected_path.exists(): + raise ValueError(f"missing generator compatibility summary: {expected_path}") + with expected_path.open("r", encoding="utf-8") as stream: + expected = json.load(stream) + actual = performance_tree_summary(generated_songs_dir) + if actual == expected: + return + + expected_names = set(expected.keys()) if isinstance(expected, dict) else set() + actual_names = set(actual.keys()) + missing = sorted(expected_names - actual_names) + extra = sorted(actual_names - expected_names) + if missing or extra: + raise ValueError(f"performance generator drift: missing={missing}, extra={extra}") + + for name in sorted(actual_names): + if actual[name] != expected[name]: + raise ValueError(f"performance generator drift in {name}; update generator logic or refresh the expected summary intentionally") + raise ValueError("performance generator drift") + + +def validate_practice_variants(generated_practice_dir: Path) -> None: + if not generated_practice_dir.exists(): + return + melody_root = generated_practice_dir / "melody" + if melody_root.exists(): + expected_names = {key.lower().replace("#", "sharp").replace("b", "b") + ".json" for key in TARGET_KEYS} + for exercise_dir in sorted(path for path in melody_root.rglob("*") if path.is_dir()): + json_names = {path.name for path in exercise_dir.glob("*.json")} + if not json_names: + continue + if json_names != expected_names: + raise ValueError(f"melody practice generator drift in {exercise_dir}: expected {sorted(expected_names)}, found {sorted(json_names)}") + + chord_root = generated_practice_dir / "chord" + if chord_root.exists(): + for exercise_dir in sorted(path for path in chord_root.rglob("*") if path.is_dir()): + json_names = [path.name for path in exercise_dir.glob("*.json")] + if not json_names: + continue + if len(json_names) != 1: + raise ValueError(f"chord practice generator drift in {exercise_dir}: expected one authored-key variant, found {json_names}") diff --git a/generator/transposition.py b/generator/transposition.py new file mode 100644 index 0000000..79a177e --- /dev/null +++ b/generator/transposition.py @@ -0,0 +1,194 @@ +from __future__ import annotations + +import copy +from dataclasses import dataclass +from typing import Any + + +@dataclass(frozen=True) +class KeyProfile: + name: str + root: int + degrees: tuple[str, str, str, str, str, str, str] + prefer_flats: bool + + +KEY_PROFILES = ( + KeyProfile("C", 0, ("C", "D", "E", "F", "G", "A", "B"), False), + KeyProfile("Db", 1, ("Db", "Eb", "F", "Gb", "Ab", "Bb", "C"), True), + KeyProfile("D", 2, ("D", "E", "F#", "G", "A", "B", "C#"), False), + KeyProfile("Eb", 3, ("Eb", "F", "G", "Ab", "Bb", "C", "D"), True), + KeyProfile("E", 4, ("E", "F#", "G#", "A", "B", "C#", "D#"), False), + KeyProfile("F", 5, ("F", "G", "A", "Bb", "C", "D", "E"), True), + KeyProfile("Gb", 6, ("Gb", "Ab", "Bb", "Cb", "Db", "Eb", "F"), True), + KeyProfile("G", 7, ("G", "A", "B", "C", "D", "E", "F#"), False), + KeyProfile("Ab", 8, ("Ab", "Bb", "C", "Db", "Eb", "F", "G"), True), + KeyProfile("A", 9, ("A", "B", "C#", "D", "E", "F#", "G#"), False), + KeyProfile("Bb", 10, ("Bb", "C", "D", "Eb", "F", "G", "A"), True), + KeyProfile("B", 11, ("B", "C#", "D#", "E", "F#", "G#", "A#"), False), +) +TARGET_KEYS = tuple(profile.name for profile in KEY_PROFILES) +NATURAL_PITCH_CLASSES = {"c": 0, "d": 2, "e": 4, "f": 5, "g": 7, "a": 9, "b": 11} +LETTER_DEGREES = {"c": 0, "d": 1, "e": 2, "f": 3, "g": 4, "a": 5, "b": 6} + + +def mod12(value: int) -> int: + return value % 12 + + +def find_key(name: str) -> KeyProfile: + normalized = name.lower() + aliases = {"c#": "db", "d#": "eb", "f#": "gb", "g#": "ab", "a#": "bb"} + normalized = aliases.get(normalized, normalized) + for profile in KEY_PROFILES: + if profile.name.lower() == normalized: + return profile + raise ValueError(f"unsupported key signature: {name}") + + +def signed_interval(source: KeyProfile, target: KeyProfile) -> int: + interval = mod12(target.root - source.root) + return interval - 12 if interval > 6 else interval + + +def split_spelling(value: str) -> tuple[str, str]: + if not value: + return "C", "" + return value[0], value[1:] + + +def accidental_offset(accidental: str) -> int: + value = accidental.lower() + if value in {"#", "sharp"}: + return 1 + if value in {"b", "flat"}: + return -1 + return 0 + + +def spelling_pitch_class(spelling: str) -> int: + letter, accidental = split_spelling(spelling) + return mod12(NATURAL_PITCH_CLASSES.get(letter.lower(), 0) + accidental_offset(accidental)) + + +def pitch_class(pitch: dict[str, Any]) -> int: + letter = str(pitch.get("letter", "c")).lower() + accidental = str(pitch.get("accidental", "n")) + return mod12(NATURAL_PITCH_CLASSES.get(letter, 0) + accidental_offset(accidental)) + + +def pitch_midi(pitch: dict[str, Any]) -> int: + octave = int(pitch.get("octave", 4)) + return octave * 12 + pitch_class(pitch) + + +def octave_for(midi: int, pitch_class_value: int) -> int: + octave = (midi - pitch_class_value) // 12 + while octave * 12 + pitch_class_value > midi: + octave -= 1 + while (octave + 1) * 12 + pitch_class_value <= midi: + octave += 1 + return octave + + +def matching_source_degree_for_pitch(pitch: dict[str, Any], source: KeyProfile) -> int | None: + actual = pitch_class(pitch) + source_letter_degree = LETTER_DEGREES.get(str(pitch.get("letter", "c")).lower(), 0) + for index, spelling in enumerate(source.degrees): + letter, _ = split_spelling(spelling) + if LETTER_DEGREES.get(letter.lower(), 0) == source_letter_degree and spelling_pitch_class(spelling) == actual: + return index + return None + + +def chromatic_spelling(pitch_class_value: int, prefer_flats: bool) -> str: + flats = ("C", "Db", "D", "Eb", "E", "F", "Gb", "G", "Ab", "A", "Bb", "B") + sharps = ("C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B") + return flats[pitch_class_value] if prefer_flats else sharps[pitch_class_value] + + +def transpose_pitch(pitch: dict[str, Any], source: KeyProfile, target: KeyProfile, interval: int) -> dict[str, Any]: + transposed_midi = pitch_midi(pitch) + interval + degree = matching_source_degree_for_pitch(pitch, source) + spelling = target.degrees[degree] if degree is not None else chromatic_spelling(mod12(transposed_midi), target.prefer_flats) + letter, accidental = split_spelling(spelling) + pc = spelling_pitch_class(spelling) + return { + "letter": letter.lower(), + "accidental": accidental or "n", + "octave": octave_for(transposed_midi, pc), + } + + +def parse_chord_root(value: str, offset: int) -> tuple[int, str] | None: + if offset >= len(value) or value[offset].upper() not in "ABCDEFG": + return None + length = 1 + if offset + length < len(value) and value[offset + length] in {"#", "b"}: + length += 1 + return length, value[offset:offset + length] + + +def matching_source_degree_for_root(root: str, source: KeyProfile) -> int | None: + root_letter, _ = split_spelling(root) + actual = spelling_pitch_class(root) + for index, spelling in enumerate(source.degrees): + letter, _ = split_spelling(spelling) + if LETTER_DEGREES.get(letter.lower(), 0) == LETTER_DEGREES.get(root_letter.lower(), 0) and spelling_pitch_class(spelling) == actual: + return index + return None + + +def transpose_root(root: str, source: KeyProfile, target: KeyProfile, interval: int) -> str: + degree = matching_source_degree_for_root(root, source) + if degree is not None: + return target.degrees[degree] + return chromatic_spelling(mod12(spelling_pitch_class(root) + interval), target.prefer_flats) + + +def transpose_chord_symbol(symbol: str, source: KeyProfile, target: KeyProfile, interval: int) -> str: + root = parse_chord_root(symbol, 0) + if root is None: + return symbol + root_length, root_text = root + result = transpose_root(root_text, source, target, interval) + symbol[root_length:] + slash = result.find("/") + if slash < 0: + return result + bass = parse_chord_root(result, slash + 1) + if bass is None: + return result + bass_length, bass_text = bass + return result[:slash + 1] + transpose_root(bass_text, source, target, interval) + result[slash + 1 + bass_length:] + + +def transpose_document(document: dict[str, Any], target_key_name: str) -> dict[str, Any]: + output = copy.deepcopy(document) + metadata = output.setdefault("metadata", {}) + if not isinstance(metadata, dict): + raise ValueError("score metadata must be an object") + source_key = find_key(str(metadata.get("key_signature", "C") or "C")) + target_key = find_key(target_key_name) + interval = signed_interval(source_key, target_key) + metadata["key_signature"] = target_key.name + for staff in output.get("staves", []): + if not isinstance(staff, dict): + continue + for measure in staff.get("measures", []): + if not isinstance(measure, dict): + continue + measure["key_signature"] = target_key.name + for voice in measure.get("voices", []): + if not isinstance(voice, dict): + continue + for note in voice.get("notes", []): + if not isinstance(note, dict): + continue + chord = note.get("chord_symbol") + if isinstance(chord, str) and chord: + note["chord_symbol"] = transpose_chord_symbol(chord, source_key, target_key, interval) + pitches = note.get("pitches") + if isinstance(pitches, list): + note["pitches"] = [transpose_pitch(pitch, source_key, target_key, interval) if isinstance(pitch, dict) else pitch for pitch in pitches] + return output + diff --git a/include/types.hpp b/include/types.hpp new file mode 100644 index 0000000..62490a1 --- /dev/null +++ b/include/types.hpp @@ -0,0 +1,25 @@ +#pragma once + +#include + +#if defined(__has_include) +#if __has_include() +#include +#endif +#endif + +namespace std { + +using bool_t = decltype(true); +using char_t = decltype('x'); +using uchar_t = std::uint8_t; + +#if !defined(__STDCPP_FLOAT32_T__) +using float32_t = decltype(0.0F); +#endif + +#if !defined(__STDCPP_FLOAT64_T__) +using float64_t = decltype(0.0); +#endif + +} diff --git a/include/vamp_pico/capi/lwipopts.h b/include/vamp_pico/capi/lwipopts.h new file mode 100644 index 0000000..9469529 --- /dev/null +++ b/include/vamp_pico/capi/lwipopts.h @@ -0,0 +1,73 @@ +#pragma once + +#ifndef NO_SYS +#define NO_SYS 1 +#endif + +#ifndef LWIP_SOCKET +#define LWIP_SOCKET 0 +#endif + +#define LWIP_NETCONN 0 +#define MEM_LIBC_MALLOC 0 +#define MEM_ALIGNMENT 4 +#define MEM_SIZE 16000 +#define MEMP_NUM_TCP_SEG 32 +#define MEMP_NUM_ARP_QUEUE 10 +#define PBUF_POOL_SIZE 24 +#define LWIP_ARP 1 +#define LWIP_ETHERNET 1 +#define LWIP_ICMP 1 +#define LWIP_RAW 1 +#define LWIP_DHCP 1 +#define LWIP_DNS 1 +#define LWIP_IPV4 1 +#define LWIP_TCP 1 +#define LWIP_UDP 1 +#define LWIP_TCP_KEEPALIVE 1 +#define LWIP_NETIF_STATUS_CALLBACK 1 +#define LWIP_NETIF_LINK_CALLBACK 1 +#define LWIP_NETIF_HOSTNAME 1 +#define LWIP_NETIF_TX_SINGLE_PBUF 1 +#define LWIP_CHKSUM_ALGORITHM 3 +#define DHCP_DOES_ARP_CHECK 0 +#define LWIP_DHCP_DOES_ACD_CHECK 0 + +#define TCP_MSS 1460 +#define TCP_WND (8 * TCP_MSS) +#define TCP_SND_BUF (8 * TCP_MSS) +#define TCP_SND_QUEUELEN ((4 * TCP_SND_BUF + TCP_MSS - 1) / TCP_MSS) + +#define MEM_STATS 0 +#define SYS_STATS 0 +#define MEMP_STATS 0 +#define LINK_STATS 0 + +#define ETHARP_DEBUG LWIP_DBG_OFF +#define NETIF_DEBUG LWIP_DBG_OFF +#define PBUF_DEBUG LWIP_DBG_OFF +#define API_LIB_DEBUG LWIP_DBG_OFF +#define API_MSG_DEBUG LWIP_DBG_OFF +#define SOCKETS_DEBUG LWIP_DBG_OFF +#define ICMP_DEBUG LWIP_DBG_OFF +#define INET_DEBUG LWIP_DBG_OFF +#define IP_DEBUG LWIP_DBG_OFF +#define IP_REASS_DEBUG LWIP_DBG_OFF +#define RAW_DEBUG LWIP_DBG_OFF +#define MEM_DEBUG LWIP_DBG_OFF +#define MEMP_DEBUG LWIP_DBG_OFF +#define SYS_DEBUG LWIP_DBG_OFF +#define TCP_DEBUG LWIP_DBG_OFF +#define TCP_INPUT_DEBUG LWIP_DBG_OFF +#define TCP_OUTPUT_DEBUG LWIP_DBG_OFF +#define TCP_RTO_DEBUG LWIP_DBG_OFF +#define TCP_CWND_DEBUG LWIP_DBG_OFF +#define TCP_WND_DEBUG LWIP_DBG_OFF +#define TCP_FR_DEBUG LWIP_DBG_OFF +#define TCP_QLEN_DEBUG LWIP_DBG_OFF +#define TCP_RST_DEBUG LWIP_DBG_OFF +#define UDP_DEBUG LWIP_DBG_OFF +#define TCPIP_DEBUG LWIP_DBG_OFF +#define PPP_DEBUG LWIP_DBG_OFF +#define SLIP_DEBUG LWIP_DBG_OFF +#define DHCP_DEBUG LWIP_DBG_OFF diff --git a/include/vamp_pico/display.hpp b/include/vamp_pico/display.hpp new file mode 100644 index 0000000..4c52ef3 --- /dev/null +++ b/include/vamp_pico/display.hpp @@ -0,0 +1,36 @@ +#pragma once + +#include +#include + +#include +#include + +namespace vamp_pico { + +constexpr auto display_width = std::int32_t{320}; +constexpr auto display_height = std::int32_t{240}; + +constexpr auto color_black = std::uint16_t{0x0000}; +constexpr auto color_white = std::uint16_t{0xffff}; +constexpr auto color_gray = std::uint16_t{0x8410}; + +class display { +public: + auto init() -> void; + auto fill(std::uint16_t color) -> void; + auto fill_rect(std::int32_t x, std::int32_t y, std::int32_t width, std::int32_t height, std::uint16_t color) -> void; + auto draw_text(std::int32_t x, std::int32_t y, std::char_t const* text, std::uint16_t color, std::int32_t scale = 2) -> void; + auto show_boot(std::char_t const* line1, std::char_t const* line2, std::uint16_t accent) -> void; + auto show_remote(vamp_style::color status, std::char_t const* title, std::char_t const* part, std::uint32_t page, std::uint32_t pages, std::bool_t active) -> void; +private: + std::bool_t remote_valid_{}; + vamp_style::color last_status_{}; + std::bool_t last_active_{}; + std::array last_title_{}; + std::array last_part_{}; + std::uint32_t last_page_{}; + std::uint32_t last_pages_{}; +}; + +} diff --git a/include/vamp_pico/http_client.hpp b/include/vamp_pico/http_client.hpp new file mode 100644 index 0000000..fa6367b --- /dev/null +++ b/include/vamp_pico/http_client.hpp @@ -0,0 +1,21 @@ +#pragma once + +#include +#include + +namespace vamp_pico { + +struct remote_display_state { + std::bool_t active{}; + std::char_t title[96]{}; + std::char_t part[48]{}; + std::char_t mode[24]{}; + std::uint32_t page{}; + std::uint32_t pages{}; +}; + +auto post_remote_command(vamp_protocol::page_command command, vamp_pico::remote_display_state& state) -> std::bool_t; +auto heartbeat() -> std::bool_t; +auto fetch_remote_display(vamp_pico::remote_display_state& state) -> std::bool_t; + +} diff --git a/include/vamp_pico/touch.hpp b/include/vamp_pico/touch.hpp new file mode 100644 index 0000000..c375e17 --- /dev/null +++ b/include/vamp_pico/touch.hpp @@ -0,0 +1,20 @@ +#pragma once + +#include + +#include + +namespace vamp_pico { + +struct touch_point { + std::int32_t x{}; + std::int32_t y{}; +}; + +class touch_controller { +public: + auto init() -> void; + auto read(touch_point& point) -> std::bool_t; +}; + +} diff --git a/include/vamp_protocol/page_control.hpp b/include/vamp_protocol/page_control.hpp new file mode 100644 index 0000000..d231d03 --- /dev/null +++ b/include/vamp_protocol/page_control.hpp @@ -0,0 +1,28 @@ +#pragma once + +#include + +namespace vamp_protocol { + +constexpr std::char_t root_path[] = "/"; +constexpr std::char_t status_path[] = "/api/status"; +constexpr std::char_t next_page_path[] = "/api/page/next"; +constexpr std::char_t previous_page_path[] = "/api/page/previous"; +constexpr std::char_t remote_next_path[] = "/api/remote/next"; +constexpr std::char_t remote_previous_path[] = "/api/remote/previous"; +constexpr std::char_t remote_select_path[] = "/api/remote/select"; +constexpr std::char_t remote_heartbeat_path[] = "/api/remote/heartbeat"; +constexpr std::char_t remote_display_path[] = "/api/remote/display"; + +enum class page_command { + PREVIOUS, + NEXT, + SELECT, +}; + +auto page_command_path(vamp_protocol::page_command command) -> std::char_t const*; +auto page_command_legacy_path(vamp_protocol::page_command command) -> std::char_t const*; +auto page_command_name(vamp_protocol::page_command command) -> std::char_t const*; +auto page_command_display_label(vamp_protocol::page_command command) -> std::char_t const*; + +} diff --git a/include/vamp_style.hpp b/include/vamp_style.hpp new file mode 100644 index 0000000..787f435 --- /dev/null +++ b/include/vamp_style.hpp @@ -0,0 +1,32 @@ +#pragma once + +#include + +#include + +namespace vamp_style { + +struct color { + std::uint8_t r{}; + std::uint8_t g{}; + std::uint8_t b{}; + std::uint8_t a{255}; +}; + +constexpr auto background = vamp_style::color{9, 12, 14, 255}; +constexpr auto panel = vamp_style::color{21, 27, 30, 255}; +constexpr auto ink = vamp_style::color{238, 244, 241, 255}; +constexpr auto muted = vamp_style::color{137, 151, 149, 255}; +constexpr auto rule = vamp_style::color{66, 78, 78, 255}; +constexpr auto paper = vamp_style::color{2, 3, 3, 255}; +constexpr auto paper_ink = vamp_style::color{246, 248, 244, 255}; +constexpr auto accent = vamp_style::color{232, 190, 70, 255}; +constexpr auto selection = vamp_style::color{41, 100, 111, 255}; +constexpr auto connecting = vamp_style::color{45, 111, 185, 255}; +constexpr auto retrying = vamp_style::color{229, 171, 37, 255}; +constexpr auto connected = vamp_style::color{40, 170, 88, 255}; +constexpr auto danger = vamp_style::color{190, 63, 58, 255}; + +auto rgb565(vamp_style::color value) -> std::uint16_t; + +} diff --git a/include/vamp_style/font.hpp b/include/vamp_style/font.hpp new file mode 100644 index 0000000..446215f --- /dev/null +++ b/include/vamp_style/font.hpp @@ -0,0 +1,27 @@ +#pragma once + +#include +#include +#include + +#include + +namespace vamp_style { + +constexpr auto ui_font_path = std::string_view{"/usr/share/product-vamp/fonts/petaluma/PetalumaScript.otf"}; +constexpr auto score_text_font_path = std::string_view{"/usr/share/product-vamp/fonts/petaluma/PetalumaScript.otf"}; +constexpr auto score_music_font_path = std::string_view{"/usr/share/product-vamp/fonts/petaluma/Petaluma.otf"}; +constexpr auto ui_font_height = std::int32_t{36}; +constexpr auto ui_font_max_width = std::int32_t{28}; + +struct font_glyph { + std::array alpha{}; + std::uint8_t width{}; + std::uint8_t advance{}; +}; + +auto ui_font_glyph(std::char_t value) -> vamp_style::font_glyph; +auto ui_font_pair_adjust(std::char_t left, std::char_t right) -> std::int32_t; +auto ui_text_width(std::string_view text, std::int32_t scale) -> std::int32_t; + +} diff --git a/include/vamp_zero/app.hpp b/include/vamp_zero/app.hpp new file mode 100644 index 0000000..a2d0b2b --- /dev/null +++ b/include/vamp_zero/app.hpp @@ -0,0 +1,25 @@ +#pragma once + +#include +#include +#include + +#include + +#include + +namespace vamp_zero { + +struct command_line { + std::string config_path{"/etc/product-vamp/vamp.json"}; + std::bool_t check_config{}; + std::bool_t health_check{}; + std::bool_t print_version{}; + std::bool_t exit_after_startup{}; + std::bool_t migrate{}; +}; + +auto parse_command_line(std::int32_t argc, std::char_t** argv) -> std::expected; +auto run(vamp_zero::command_line command) -> std::expected; + +} diff --git a/include/vamp_zero/color.hpp b/include/vamp_zero/color.hpp new file mode 100644 index 0000000..df2443a --- /dev/null +++ b/include/vamp_zero/color.hpp @@ -0,0 +1,11 @@ +#pragma once + +#include + +#include + +namespace vamp_zero { + +auto to_luma(vamp_style::color value) -> luma::color; + +} diff --git a/include/vamp_zero/config.hpp b/include/vamp_zero/config.hpp new file mode 100644 index 0000000..110717c --- /dev/null +++ b/include/vamp_zero/config.hpp @@ -0,0 +1,59 @@ +#pragma once + +#include +#include +#include + +#include + +#include +#include +#include + +#include +#include + +namespace vamp_zero { + +struct runtime_config { + vamp_zero::hardware_mode hardware{vamp_zero::hardware_mode::REAL}; + std::bool_t headless{false}; + std::bool_t exit_after_startup{false}; + std::string assets_path{"/usr/share/product-vamp"}; + std::string heartbeat_path{"/run/product-vamp/heartbeat.json"}; +}; + +struct database_config { + std::string path{"/var/lib/product-vamp/vamp.db"}; + std::string migrations_path{"/usr/share/product-vamp/migrations"}; +}; + +struct control_config { + ligo::endpoint_config endpoint{ + .name = "product-vamp-control", + .protocol = ligo::protocol::HTTP, + .bind = "0.0.0.0:8080", + .timeout = std::chrono::milliseconds{5000}, + .http = { + .max_body_size = 64U * 1024U, + }, + }; + std::string ap_ssid{"Vamp Control"}; + std::string ap_passphrase{"vamp-control"}; + std::string ap_interface{"wlan0"}; + std::string zero_ip{"192.168.42.1"}; + std::string zero_cidr{"192.168.42.1/24"}; +}; + +struct config { + modulus::config modulus{}; + vamp_zero::runtime_config runtime{}; + vamp_zero::database_config database{}; + vamp_zero::control_config control{}; + luma::application_config display{.title = "Product Vamp"}; +}; + +auto parse_config(boost::json::value const& value) -> std::expected; +auto load_config(std::string const& path) -> std::expected; + +} diff --git a/include/vamp_zero/database.hpp b/include/vamp_zero/database.hpp new file mode 100644 index 0000000..7adb454 --- /dev/null +++ b/include/vamp_zero/database.hpp @@ -0,0 +1,23 @@ +#pragma once + +#include +#include +#include + +#include +#include + +#include + +#include +#include + +namespace vamp_zero { + +auto async_migrate_database(boost::asio::any_io_executor executor, vamp_zero::database_config config) -> boost::asio::awaitable>; +auto async_import_catalogs(boost::asio::any_io_executor executor, vamp_zero::database_config config, std::string assets_path) -> boost::asio::awaitable>; +auto async_load_performance_library(boost::asio::any_io_executor executor, vamp_zero::database_config config) -> boost::asio::awaitable>; +auto async_load_practice_library(boost::asio::any_io_executor executor, vamp_zero::database_config config) -> boost::asio::awaitable>; +auto split_migration_statements(std::string const& input) -> std::expected, modulus::error>; + +} diff --git a/include/vamp_zero/errors.hpp b/include/vamp_zero/errors.hpp new file mode 100644 index 0000000..96c8ac0 --- /dev/null +++ b/include/vamp_zero/errors.hpp @@ -0,0 +1,33 @@ +#pragma once + +#include +#include +#include +#include + +#include + +namespace vamp_zero { + +enum class error_code : std::int32_t { + OK = 0, + INVALID_ARGUMENT = 1, + NOT_FOUND = 2, + UNAVAILABLE = 3, + PERSISTENCE = 4, + CONFLICT = 5, + INTERNAL = 6, +}; + +auto make_error(vamp_zero::error_code code, std::string message, modulus::source_location location = modulus::source_location(__builtin_FILE(), __builtin_LINE(), __builtin_FUNCTION())) -> modulus::error; +auto fail_void(vamp_zero::error_code code, std::string message, modulus::source_location location = modulus::source_location(__builtin_FILE(), __builtin_LINE(), __builtin_FUNCTION())) -> std::expected; + +template +auto fail(vamp_zero::error_code code, std::string message, modulus::source_location location = modulus::source_location(__builtin_FILE(), __builtin_LINE(), __builtin_FUNCTION())) -> std::expected; + +} + +template +auto vamp_zero::fail(vamp_zero::error_code code, std::string message, modulus::source_location location) -> std::expected { + return modulus::fail(vamp_zero::make_error(code, std::move(message), location)); +} diff --git a/include/vamp_zero/library.hpp b/include/vamp_zero/library.hpp new file mode 100644 index 0000000..37ff03c --- /dev/null +++ b/include/vamp_zero/library.hpp @@ -0,0 +1,20 @@ +#pragma once + +#include +#include +#include +#include + +#include + +#include + +namespace vamp_zero { + +auto parse_score_document(std::string_view json, std::string source_path = {}) -> std::expected; +auto load_performance_library(std::string const& assets_path) -> std::expected; +auto load_practice_library(std::string const& assets_path) -> std::expected; +auto group_library_parts(std::vector parts) -> vamp_zero::library_state; +auto group_practice_exercises(std::vector exercises) -> vamp_zero::practice_library; + +} diff --git a/include/vamp_zero/page_control.hpp b/include/vamp_zero/page_control.hpp new file mode 100644 index 0000000..cb115c8 --- /dev/null +++ b/include/vamp_zero/page_control.hpp @@ -0,0 +1,20 @@ +#pragma once + +#include +#include + +#include + +#include + +#include +#include + +namespace vamp_zero { + +auto apply_app_command(vamp_zero::app_state state, vamp_protocol::page_command command) -> vamp_zero::app_state; +auto app_status_json(vamp_zero::app_state const& state) -> boost::json::value; +auto remote_display_text(vamp_zero::app_state const& state) -> std::string; +auto validate_app_state(vamp_zero::app_state const& state) -> std::expected; + +} diff --git a/include/vamp_zero/portal.hpp b/include/vamp_zero/portal.hpp new file mode 100644 index 0000000..bba62cb --- /dev/null +++ b/include/vamp_zero/portal.hpp @@ -0,0 +1,42 @@ +#pragma once + +#include +#include +#include +#include + +#include + +#include + +#include +#include +#include + +namespace vamp_zero { + +class control_state { +public: + using observer = std::function; + + control_state(vamp_zero::config config, vamp_zero::app_state state); + auto config() const -> vamp_zero::config; + auto snapshot() const -> vamp_zero::app_state; + auto apply(vamp_protocol::page_command command) -> vamp_zero::app_state; + auto heartbeat() -> vamp_zero::app_state; + auto refresh_connection() -> std::optional; + auto set_observer(vamp_zero::control_state::observer observer) -> void; +private: + auto pico_connected_locked() const -> std::bool_t; + auto snapshot_locked() const -> vamp_zero::app_state; + mutable std::mutex mutex_{}; + vamp_zero::config config_{}; + vamp_zero::app_state state_{}; + std::chrono::steady_clock::time_point last_heartbeat_{}; + vamp_zero::control_state::observer observer_{}; +}; + +auto make_router(vamp_zero::control_state& state) -> ligo::service_router; +auto portal_status_json(vamp_zero::config const& config, vamp_zero::app_state const& state) -> boost::json::value; + +} diff --git a/include/vamp_zero/score.hpp b/include/vamp_zero/score.hpp new file mode 100644 index 0000000..814ab16 --- /dev/null +++ b/include/vamp_zero/score.hpp @@ -0,0 +1,17 @@ +#pragma once + +#include + +#include + +#include + +namespace vamp_zero { + +constexpr auto score_measures_per_system = std::size_t{4}; +constexpr auto score_systems_per_page = std::size_t{3}; +constexpr auto score_measures_per_page = score_measures_per_system * score_systems_per_page; + +auto draw_score_page(luma::draw_context& context, luma::rect bounds, vamp_zero::score_document const& score, std::size_t page_index) -> void; + +} diff --git a/include/vamp_zero/types.hpp b/include/vamp_zero/types.hpp new file mode 100644 index 0000000..7c674b9 --- /dev/null +++ b/include/vamp_zero/types.hpp @@ -0,0 +1,162 @@ +#pragma once + +#include +#include +#include +#include +#include + +#include + +namespace vamp_zero { + +enum class hardware_mode { + FAKE, + REAL, +}; + +struct score_pitch { + std::char_t letter{'c'}; + std::int32_t octave{}; + std::string accidental{}; +}; + +struct score_note { + std::string id{}; + std::string kind{}; + std::bool_t hidden{}; + std::int64_t duration_ticks{}; + std::int64_t display_ticks{}; + std::string notehead{}; + std::string chord_symbol{}; + std::string lyric{}; + std::bool_t tie_to_next{}; + std::bool_t tie_from_previous{}; + std::vector pitches{}; +}; + +struct score_measure { + std::string id{}; + std::string section_label{}; + std::string time_signature{}; + std::string key_signature{}; + std::vector notes{}; +}; + +struct score_document { + std::string id{}; + std::string title{}; + std::string composer{}; + std::string key_signature{}; + std::string part{}; + std::string arrangement_part_type{}; + std::string source_path{}; + std::string source_json{}; + std::vector measures{}; +}; + +struct library_part { + std::string id{}; + std::string title{}; + std::string composer{}; + std::string key_signature{}; + std::string part{}; + std::string source_path{}; + std::string source_json{}; + std::size_t measure_count{}; + std::size_t total_pages{}; +}; + +struct song_group { + std::string title{}; + std::string composer{}; + std::vector parts{}; +}; + +struct library_state { + std::vector parts{}; + std::vector groups{}; +}; + +struct practice_exercise { + struct score_variant { + std::string id{}; + std::string key_signature{}; + std::string source_path{}; + std::string source_json{}; + std::size_t measure_count{}; + std::size_t total_pages{}; + }; + + std::string id{}; + std::string practice_type_id{}; + std::string practice_type_title{}; + std::string lesson_group_id{}; + std::string lesson_group_title{}; + std::string title{}; + std::string composer{}; + std::string key_signature{}; + std::string source_path{}; + std::string source_json{}; + std::size_t measure_count{}; + std::size_t total_pages{}; + std::vector variants{}; +}; + +struct practice_lesson_group { + std::string id{}; + std::string title{}; + std::vector exercises{}; +}; + +struct practice_type_group { + std::string id{}; + std::string title{}; + std::vector lesson_groups{}; +}; + +struct practice_library { + std::vector exercises{}; + std::vector types{}; +}; + +enum class app_mode { + MAIN_MENU, + PERFORMANCE_SONG_MENU, + PERFORMANCE_PART_MENU, + PERFORMANCE_SCORE, + PRACTICE_TYPE_MENU, + PRACTICE_LESSON_MENU, + PRACTICE_EXERCISE_MENU, + PRACTICE_KEY_MENU, + PRACTICE_SCORE, +}; + +struct app_state { + vamp_zero::library_state performance{}; + vamp_zero::practice_library practice{}; + vamp_zero::app_mode mode{vamp_zero::app_mode::MAIN_MENU}; + std::size_t selected_main_menu_index{}; + std::size_t selected_song_index{}; + std::size_t selected_part_index{}; + std::size_t selected_practice_type_index{}; + std::size_t selected_practice_lesson_index{}; + std::size_t selected_practice_exercise_index{}; + std::size_t selected_practice_key_index{}; + std::string active_part_id{}; + std::string active_practice_id{}; + std::size_t page_index{}; + std::uint64_t next_count{}; + std::uint64_t previous_count{}; + std::uint64_t select_count{}; + std::uint64_t heartbeat_count{}; + std::string last_command{"startup"}; + std::bool_t pico_connected{false}; +}; + +auto to_string(vamp_zero::hardware_mode value) -> std::string; +auto to_string(vamp_zero::app_mode value) -> std::string; +auto practice_key_names() -> std::vector const&; +auto practice_type_supports_key_selection(std::string_view practice_type_id) -> std::bool_t; + +} diff --git a/include/vamp_zero/ui.hpp b/include/vamp_zero/ui.hpp new file mode 100644 index 0000000..7348f27 --- /dev/null +++ b/include/vamp_zero/ui.hpp @@ -0,0 +1,43 @@ +#pragma once + +#include +#include +#include +#include +#include + +#include + +#include +#include + +#include +#include + +namespace vamp_zero { + +struct ui_state { + vamp_zero::app_state app{}; + std::string ap_ssid{}; + std::string zero_ip{}; + std::uint16_t port{8080}; +}; + +class zero_ui { +public: + zero_ui(boost::asio::any_io_executor executor, luma::application_config config); + auto run() -> std::expected; + auto stop() -> void; + auto publish(vamp_zero::ui_state state) -> std::expected; + auto snapshot() const -> vamp_zero::ui_state; +private: + auto make_root(vamp_zero::ui_state const& state) -> std::expected, modulus::error>; + boost::asio::any_io_executor executor_; + luma::application application_; + mutable std::mutex mutex_{}; + vamp_zero::ui_state state_{}; +}; + +auto make_ui_state(vamp_zero::config const& config, vamp_zero::app_state app) -> vamp_zero::ui_state; + +} diff --git a/model/pico_enclosure1-Body.stl b/model/pico_enclosure1-Body.stl new file mode 100644 index 0000000..fc4f268 Binary files /dev/null and b/model/pico_enclosure1-Body.stl differ diff --git a/model/pico_enclosure1.FCStd b/model/pico_enclosure1.FCStd new file mode 100644 index 0000000..65ea258 Binary files /dev/null and b/model/pico_enclosure1.FCStd differ diff --git a/modulus.json b/modulus.json new file mode 100644 index 0000000..317660e --- /dev/null +++ b/modulus.json @@ -0,0 +1,95 @@ +{ + "package": { + "name": "product-vamp", + "artifact": { + "enabled": true, + "targets": [ + "arm_64_gcc12_release" + ], + "install_prefix": ".", + "cmake_definitions": { + "VAMP_BUILD_PICO_FIRMWARE": true, + "VAMP_BUILD_ZERO_IMAGE": true + }, + "registry_url": "https://git.thyme-labs.com/api/packages/khodo/generic", + "upload_env": "PRODUCT_VAMP_PACKAGE_UPLOAD" + } + }, + "tests": { + "enabled": true, + "name": "product-vamp" + }, + "tooling": { + "default_target": "x86_64_gcc12_debug", + "docker": { + "image": "product-vamp-modulus-build:dev" + }, + "remote": { + "name": "khodo", + "url": "https://git.thyme-labs.com/api/packages/khodo/conan" + }, + "lsp": { + "enabled": true, + "compile_databases": [ + { + "name": "pico", + "build_dir": "build/build_pico_debug", + "cmake_definitions": { + "CMAKE_BUILD_TYPE": "Debug", + "VAMP_PICO_FIRMWARE_PROJECT": true, + "PICO_BOARD": "pico2_w", + "PICO_GCC_TRIPLE": "arm-none-eabi", + "PICO_SDK_FETCH_FROM_GIT": false + }, + "unset_env": [ + "CC", + "CXX", + "CPP", + "AS", + "AR", + "LD", + "RANLIB", + "STRIP", + "CFLAGS", + "CXXFLAGS", + "CPPFLAGS", + "LDFLAGS" + ] + } + ] + }, + "run": { + "enabled": true, + "target": "x86_64_gcc12_debug", + "executable": "vamp-zero", + "args": [ + "--config", + "package/config/vamp.example.json", + "--once" + ], + "ports": [ + "127.0.0.1:8080:8080/tcp" + ] + }, + "targets": { + "x86_64_gcc12_debug": { + "profile": "conan/profiles/x86_64_gcc12_debug", + "build_dir": "build/build_x86_debug", + "can_run": true, + "build_type": "Debug" + }, + "x86_64_gcc12_release": { + "profile": "conan/profiles/x86_64_gcc12_release", + "build_dir": "build/build_x86_release", + "can_run": true, + "build_type": "Release" + }, + "arm_64_gcc12_release": { + "profile": "conan/profiles/arm_64_gcc12_release", + "build_dir": "build/build_arm_release", + "can_run": false, + "build_type": "Release" + } + } + } +} diff --git a/modulus.py b/modulus.py new file mode 100755 index 0000000..8864322 --- /dev/null +++ b/modulus.py @@ -0,0 +1,519 @@ +#!/usr/bin/env python3 +import json +import os +import pathlib +import shlex +import subprocess +import sys +import time + +PACKAGE_REF = "modulus/latest" +CONAN_VERSION = "2.26.2" +FETCH_IMAGE = "modulus-fetch:dev" +DEFAULT_BUILD_BASE_IMAGE = "debian:trixie-slim" +PICO_SDK_VERSION = "2.3.0" +COMMANDS = ( + "configure", + "build", + "test", + "package", + "lsp", + "run", +) +COMMON_DIR = pathlib.Path("build") / "build_common" +TOOLS_DIR = pathlib.Path("build") / "build_tools" +RUNTIME_DIR = COMMON_DIR / "modulus" +CONAN_HOME_DIR = COMMON_DIR / "conan_cache" +DEFAULT_REMOTE_NAME = "khodo" +DEFAULT_REMOTE_URL = "https://git.thyme-labs.com/api/packages/khodo/conan" + +def repo_root(): + root = pathlib.Path(__file__).resolve().parent + if not (root / "modulus.json").is_file(): + raise SystemExit("modulus.py must be run from a Modulus-managed repository root") + return root + +def read_json(path): + try: + data = json.loads(path.read_text(encoding="utf-8")) + except (OSError, json.JSONDecodeError) as error: + raise SystemExit(f"failed to read {path}: {error}") from error + if not isinstance(data, dict): + raise SystemExit(f"{path} must contain a JSON object") + return data + +def remote_config(root): + config = read_json(root / "modulus.json") + remote = config.get( + "tooling", + {}, + ).get("remote", {}) + if not isinstance(remote, dict): + remote = {} + return ( + str(remote.get("name") or DEFAULT_REMOTE_NAME), + str(remote.get("url") or DEFAULT_REMOTE_URL), + ) + +def runtime_ready(root): + return ( + (root / TOOLS_DIR / "configure.py").is_file() + and (root / TOOLS_DIR / "lsp.py").is_file() + and (root / TOOLS_DIR / "run.py").is_file() + and (root / RUNTIME_DIR / "modulus" / "cli.py").is_file() + and (root / RUNTIME_DIR / "modulus" / "export.py").is_file() + ) + +def optional_credentials(): + user = os.environ.get("CONAN_USER") + token = os.environ.get("CONAN_TOKEN") + if bool(user) != bool(token): + raise SystemExit("CONAN_USER and CONAN_TOKEN must either both be set or both be unset") + return user, token + +def env_flag(name): + return os.environ.get(name, "").lower() in {"1", "true", "yes", "on"} + +def direct_mode(root): + return env_flag("MODULUS_DIRECT") or project_docker_marker(root).exists() + +def run(command, input_text=None, capture=False, display_command=None, env=None, check=True): + visible = display_command if display_command is not None else command + print("+", " ".join(shlex.quote(str(part)) for part in visible)) + completed = subprocess.run( + [str(part) for part in command], + input=input_text, + stdout=subprocess.PIPE if capture else None, + stderr=subprocess.PIPE if capture else None, + text=True, + check=False, + env=env, + ) + if check and completed.returncode != 0: + if capture and completed.stdout: + print(completed.stdout, end="") + if capture and completed.stderr: + print(completed.stderr, end="", file=sys.stderr) + raise SystemExit(completed.returncode) + return completed + +def run_with_retries(command, attempts=3, input_text=None, display_command=None, env=None): + completed = None + for attempt in range(1, attempts + 1): + completed = run( + command, + input_text=input_text, + display_command=display_command, + env=env, + check=False, + ) + if completed.returncode == 0: + return completed + if attempt != attempts: + delay = attempt * 20 + print(f"command failed with exit code {completed.returncode}; retrying in {delay}s") + time.sleep(delay) + raise SystemExit(completed.returncode if completed is not None else 1) + +def fetch_dockerfile(): + return f"""FROM {DEFAULT_BUILD_BASE_IMAGE} + +ENV DEBIAN_FRONTEND=noninteractive + +RUN apt-get update \\ + && apt-get install -y --no-install-recommends \\ + ca-certificates \\ + python3 \\ + python3-venv \\ + && rm -rf /var/lib/apt/lists/* + +RUN python3 -m venv /opt/modulus-python + +ENV PATH=/opt/modulus-python/bin:$PATH + +RUN python -m pip install --no-cache-dir conan=={CONAN_VERSION} + +WORKDIR /workspace +""" + +def product_build_dockerfile(): + return f"""FROM {DEFAULT_BUILD_BASE_IMAGE} + +ENV DEBIAN_FRONTEND=noninteractive + +RUN dpkg --add-architecture arm64 + +RUN apt-get update \\ + && apt-get install -y --no-install-recommends \\ + bash \\ + build-essential \\ + ca-certificates \\ + clangd-19 \\ + cmake \\ + curl \\ + docker-buildx \\ + docker-cli \\ + docker.io \\ + g++-12 \\ + g++-12-aarch64-linux-gnu \\ + gcc-12 \\ + gcc-12-aarch64-linux-gnu \\ + gcc-arm-none-eabi \\ + git \\ + libdrm-dev \\ + libdrm-dev:arm64 \\ + libegl-dev \\ + libegl-dev:arm64 \\ + libgbm-dev \\ + libgbm-dev:arm64 \\ + libgles-dev \\ + libgles-dev:arm64 \\ + libglvnd-dev \\ + libglvnd-dev:arm64 \\ + libnewlib-arm-none-eabi \\ + libstdc++-arm-none-eabi-newlib \\ + ninja-build \\ + pkg-config \\ + python3 \\ + python3-venv \\ + && ln -sf /usr/bin/clangd-19 /usr/local/bin/clangd \\ + && rm -rf /var/lib/apt/lists/* + +ENV CC=/usr/bin/gcc-12 +ENV CXX=/usr/bin/g++-12 +ENV VAMP_PICO_SDK_VERSION={PICO_SDK_VERSION} +ENV PICO_SDK_PATH=/opt/pico-sdk + +RUN git clone \\ + --depth 1 \\ + --branch "$VAMP_PICO_SDK_VERSION" \\ + --recurse-submodules \\ + --shallow-submodules \\ + https://github.com/raspberrypi/pico-sdk.git \\ + "$PICO_SDK_PATH" + +RUN python3 -m venv /opt/modulus-python + +ENV PATH=/opt/modulus-python/bin:$PATH + +RUN python -m pip install --no-cache-dir \\ + conan=={CONAN_VERSION} + +WORKDIR /workspace + +RUN mkdir -p /opt && touch /opt/modulus-build-image +""" + +def sync_product_build_dockerfile(root): + dockerfile = root / TOOLS_DIR / "docker" / "Dockerfile" + if not dockerfile.parent.is_dir(): + return + desired = product_build_dockerfile() + try: + current = dockerfile.read_text(encoding="utf-8") + except OSError: + current = None + if current != desired: + dockerfile.write_text(desired, encoding="utf-8") + +def ensure_fetch_image(): + if not docker_platform_args(): + inspected = subprocess.run( + [ + "docker", + "image", + "inspect", + FETCH_IMAGE, + ], + stdout=subprocess.DEVNULL, + stderr=subprocess.DEVNULL, + check=False, + ) + if inspected.returncode == 0: + return + run_with_retries( + [ + "docker", + "build", + *docker_platform_args(), + "--tag", + FETCH_IMAGE, + "-", + ], + input_text=fetch_dockerfile(), + ) + +def in_container(): + return pathlib.Path("/.dockerenv").exists() + +def docker_workspace_args(root): + if in_container(): + container = os.environ.get("HOSTNAME", "").strip() + if not container: + raise SystemExit("HOSTNAME is required to share the CI workspace with the Modulus fetch container") + return [ + "--volumes-from", + container, + ] + return [ + "--volume", + f"{root}:{root}", + ] + +def docker_socket_args(): + socket = pathlib.Path("/var/run/docker.sock") + if not socket.is_socket(): + return [] + args = [ + "--volume", + "/var/run/docker.sock:/var/run/docker.sock", + ] + try: + args.extend(["--group-add", str(socket.stat().st_gid)]) + except OSError: + pass + return args + +def docker_platform_args(): + platform = os.environ.get("MODULUS_DOCKER_PLATFORM", "").strip() + if not platform: + return [] + return [ + "--platform", + platform, + ] + +def fetch_env(root): + env = os.environ.copy() + env["CONAN_HOME"] = str(root / CONAN_HOME_DIR) + return env + +def run_fetch(root, command, capture=False, display_command=None, check=True): + if direct_mode(root): + return run(command, capture=capture, display_command=display_command, env=fetch_env(root), check=check) + ensure_fetch_image() + docker_command = [ + "docker", + "run", + "--rm", + "--interactive", + "--user", + f"{os.getuid()}:{os.getgid()}", + "--env", + "HOME=/tmp", + "--env", + "CONAN_HOME", + "--env", + "CONAN_USER", + "--env", + "CONAN_TOKEN", + "--env", + "DOCKER_HOST", + *docker_workspace_args(root), + *docker_socket_args(), + "--workdir", + str(root), + FETCH_IMAGE, + *command, + ] + return run(docker_command, capture=capture, display_command=display_command, env=fetch_env(root), check=check) + +def configure_remote(root, remote_name, remote_url): + user, token = optional_credentials() + run_fetch( + root, + [ + "conan", + "remote", + "add", + "-f", + remote_name, + remote_url, + ], + ) + if not user and not token: + return + run_fetch( + root, + [ + "conan", + "remote", + "login", + remote_name, + user, + "-p", + token, + ], + display_command=[ + "conan", + "remote", + "login", + remote_name, + user, + "-p", + "", + ], + ) + +def package_refs(data): + refs = [] + for location_data in data.values(): + if not isinstance(location_data, dict): + continue + for ref, ref_data in location_data.items(): + if not ref.startswith(PACKAGE_REF) or not isinstance(ref_data, dict): + continue + revisions = ref_data.get( + "revisions", + {}, + ) + if not isinstance(revisions, dict): + continue + for recipe_revision, revision_data in revisions.items(): + if not isinstance(revision_data, dict): + continue + packages = revision_data.get( + "packages", + {}, + ) + if not isinstance(packages, dict): + continue + for package_id, package_data in packages.items(): + package_revisions = package_data.get( + "revisions", + {}, + )if isinstance(package_data, dict) else {} + if isinstance(package_revisions, dict) and package_revisions: + for package_revision in package_revisions: + refs.append(f"{PACKAGE_REF}#{recipe_revision}:{package_id}#{package_revision}") + else: + refs.append(f"{PACKAGE_REF}#{recipe_revision}:{package_id}") + return sorted(refs) + +def remove_cached_modulus(root): + run_fetch( + root, + [ + "conan", + "remove", + PACKAGE_REF + ":*", + "-c", + ], + check=False, + ) + +def download_modulus(root, remote_name): + remove_cached_modulus(root) + run_fetch( + root, + [ + "conan", + "download", + PACKAGE_REF + ":*", + "-r", + remote_name, + ], + ) + completed = run_fetch( + root, + [ + "conan", + "list", + PACKAGE_REF + ":*", + "-c", + "-f", + "json", + ], + capture=True, + ) + refs = package_refs(json.loads(completed.stdout)) + if not refs: + raise SystemExit(f"no downloaded {PACKAGE_REF} package found in the Conan cache") + package_ref = refs[-1] + completed = run_fetch( + root, + [ + "conan", + "cache", + "path", + package_ref, + ], + capture=True, + ) + package_root = pathlib.Path(completed.stdout.strip()) + if not (package_root / "modulus" / "export.py").is_file() or not (package_root / "tools").is_dir(): + raise SystemExit(f"downloaded {PACKAGE_REF} package does not contain Modulus export files: {package_root}") + return package_root + +def materialize_runtime(root): + remote_name, remote_url = remote_config(root) + configure_remote(root, remote_name, remote_url) + package_root = download_modulus(root, remote_name) + sys.path.insert(0, str(package_root)) + import modulus.export + modulus.export.sync_project(root, package_root) + +def ensure_runtime(root): + if not runtime_ready(root): + materialize_runtime(root) + sync_product_build_dockerfile(root) + +def project_docker_marker(root): + config = read_json(root / "modulus.json") + tooling = config.get("tooling", {}) + if not isinstance(tooling, dict): + tooling = {} + docker = tooling.get("docker", {}) + if not isinstance(docker, dict): + docker = {} + return pathlib.Path(str(docker.get("marker") or "/opt/modulus-build-image")) + +def run_configure(argv): + return delegate("configure", argv) + +def run_package(argv): + return delegate("package", argv) + +def delegate(command, argv): + root = repo_root() + ensure_runtime(root) + sys.path.insert(0, str(root / RUNTIME_DIR)) + import modulus.cli + original_docker_run = modulus.cli.docker_run + + def docker_run_with_host_socket(context, command, docker_args=None, env_overrides=None): + merged_docker_args = [ + *docker_socket_args(), + *(docker_args or []), + ] + return original_docker_run(context, command, docker_args=merged_docker_args, env_overrides=env_overrides) + + modulus.cli.docker_run = docker_run_with_host_socket + previous_argv = sys.argv + previous_cwd = pathlib.Path.cwd() + sys.argv = [ + str(root / "modulus.py"), + *argv, + ] + os.chdir(root) + try: + return modulus.cli.main(command) + finally: + os.chdir(previous_cwd) + sys.argv = previous_argv + +def main(argv): + if not argv or argv[0] in ("-h", "--help"): + print("usage: python3 modulus.py " + "|".join(COMMANDS) + " ...") + return 0 if argv else 2 + command = argv[0] + if command not in COMMANDS: + raise SystemExit(f"unknown Modulus command: {command}") + if command == "configure": + return run_configure(argv[1:]) + if command == "package": + return run_package(argv[1:]) + return delegate(command, argv[1:]) + +if __name__ == "__main__": + raise SystemExit(main(sys.argv[1:])) diff --git a/package/assets/fonts/NotoSans-Regular.ttf b/package/assets/fonts/NotoSans-Regular.ttf new file mode 100644 index 0000000..f27f4ff Binary files /dev/null and b/package/assets/fonts/NotoSans-Regular.ttf differ diff --git a/package/assets/fonts/petaluma/OFL.txt b/package/assets/fonts/petaluma/OFL.txt new file mode 100644 index 0000000..6abc56e --- /dev/null +++ b/package/assets/fonts/petaluma/OFL.txt @@ -0,0 +1,94 @@ +Copyright © 2018, Steinberg Media Technologies GmbH (http://www.steinberg.net/), +with Reserved Font Name "Petaluma". + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/package/assets/fonts/petaluma/Petaluma.otf b/package/assets/fonts/petaluma/Petaluma.otf new file mode 100644 index 0000000..f8389d5 Binary files /dev/null and b/package/assets/fonts/petaluma/Petaluma.otf differ diff --git a/package/assets/fonts/petaluma/PetalumaScript.otf b/package/assets/fonts/petaluma/PetalumaScript.otf new file mode 100644 index 0000000..5a378be Binary files /dev/null and b/package/assets/fonts/petaluma/PetalumaScript.otf differ diff --git a/package/assets/fonts/petaluma/PetalumaText.otf b/package/assets/fonts/petaluma/PetalumaText.otf new file mode 100644 index 0000000..c04b161 Binary files /dev/null and b/package/assets/fonts/petaluma/PetalumaText.otf differ diff --git a/package/assets/fonts/petaluma/petaluma_metadata.json b/package/assets/fonts/petaluma/petaluma_metadata.json new file mode 100644 index 0000000..3ee985f --- /dev/null +++ b/package/assets/fonts/petaluma/petaluma_metadata.json @@ -0,0 +1,25862 @@ +{ + "engravingDefaults":{ + "arrowShaftThickness":0.16, + "barlineSeparation":0.4, + "beamSpacing":0.25, + "beamThickness":0.5, + "bracketThickness":0.5, + "dashedBarlineDashLength":0.5, + "dashedBarlineGapLength":0.25, + "dashedBarlineThickness":0.16, + "hairpinThickness":0.16, + "legerLineExtension":0.4, + "legerLineThickness":0.16, + "lyricLineThickness":0.16, + "octaveLineThickness":0.16, + "pedalLineThickness":0.16, + "repeatBarlineDotSeparation":0.16, + "repeatEndingLineThickness":0.16, + "slurEndpointThickness":0.1, + "slurMidpointThickness":0.22, + "staffLineThickness":0.13, + "stemThickness":0.12, + "subBracketThickness":0.16, + "textEnclosureThickness":0.16, + "thickBarlineThickness":0.5, + "thinBarlineThickness":0.16, + "tieEndpointThickness":0.1, + "tieMidpointThickness":0.22, + "tupletBracketThickness":0.16 + }, + "fontName":"Petaluma", + "fontVersion":1.065, + "glyphBBoxes":{ + "4stringTabClef":{ + "bBoxNE":[ + 1.148, + 1.9806114804301538 + ], + "bBoxSW":[ + 0.0, + -1.984 + ] + }, + "6stringTabClef":{ + "bBoxNE":[ + 1.752, + 3.068 + ], + "bBoxSW":[ + 0.0, + -3.072 + ] + }, + "accdnDiatonicClef":{ + "bBoxNE":[ + 1.048, + 2.06 + ], + "bBoxSW":[ + 0.0, + -2.0583938769133985 + ] + }, + "accidental1CommaFlat":{ + "bBoxNE":[ + 1.124, + 2.1 + ], + "bBoxSW":[ + 0.0, + -1.0 + ] + }, + "accidental1CommaSharp":{ + "bBoxNE":[ + 2.076, + 2.112 + ], + "bBoxSW":[ + -0.12, + -1.48 + ] + }, + "accidental2CommaFlat":{ + "bBoxNE":[ + 1.464, + 1.932 + ], + "bBoxSW":[ + 0.0, + -1.0 + ] + }, + "accidental2CommaSharp":{ + "bBoxNE":[ + 2.352, + 2.052 + ], + "bBoxSW":[ + -0.12, + -1.48 + ] + }, + "accidental3CommaFlat":{ + "bBoxNE":[ + 1.388, + 1.864 + ], + "bBoxSW":[ + 0.0, + -1.0 + ] + }, + "accidental3CommaSharp":{ + "bBoxNE":[ + 2.296, + 2.0 + ], + "bBoxSW":[ + -0.12, + -1.48 + ] + }, + "accidental4CommaFlat":{ + "bBoxNE":[ + 1.268, + 1.768342058141186 + ], + "bBoxSW":[ + 0.0, + -1.0 + ] + }, + "accidental5CommaSharp":{ + "bBoxNE":[ + 2.3324444444444445, + 2.04 + ], + "bBoxSW":[ + -0.12, + -1.48 + ] + }, + "accidentalArrowDown":{ + "bBoxNE":[ + 0.5601895003862226, + 0.9330799999999999 + ], + "bBoxSW":[ + -0.0013821625122969463, + -0.212 + ] + }, + "accidentalArrowUp":{ + "bBoxNE":[ + 0.5580316981853197, + 1.0355221746739607 + ], + "bBoxSW":[ + -0.0018727167525811198, + -0.112 + ] + }, + "accidentalBakiyeFlat":{ + "bBoxNE":[ + 1.148, + 1.776 + ], + "bBoxSW":[ + 0.007476926872782314, + -0.944 + ] + }, + "accidentalBakiyeSharp":{ + "bBoxNE":[ + 1.548, + 1.644 + ], + "bBoxSW":[ + -0.1, + -1.424 + ] + }, + "accidentalBracketLeft":{ + "bBoxNE":[ + 0.404, + 1.152 + ], + "bBoxSW":[ + 0.0, + -1.152 + ] + }, + "accidentalBracketRight":{ + "bBoxNE":[ + 0.36177777777777775, + 1.144 + ], + "bBoxSW":[ + 0.0, + -1.13038036588994 + ] + }, + "accidentalBuyukMucennebFlat":{ + "bBoxNE":[ + 1.148, + 1.7298883797707276 + ], + "bBoxSW":[ + 0.007476926872782314, + -0.992 + ] + }, + "accidentalBuyukMucennebSharp":{ + "bBoxNE":[ + 1.868, + 1.4 + ], + "bBoxSW":[ + -0.004, + -1.84 + ] + }, + "accidentalCombiningCloseCurlyBrace":{ + "bBoxNE":[ + 0.656, + 1.4206055973468656 + ], + "bBoxSW":[ + -0.004441011716843349, + -0.35785910065629073 + ] + }, + "accidentalCombiningLower17Schisma":{ + "bBoxNE":[ + 0.952, + 0.952 + ], + "bBoxSW":[ + 0.0, + -0.48 + ] + }, + "accidentalCombiningLower19Schisma":{ + "bBoxNE":[ + 0.856, + 0.308 + ], + "bBoxSW":[ + 0.0, + -0.44 + ] + }, + "accidentalCombiningLower23Limit29LimitComma":{ + "bBoxNE":[ + 1.164, + 1.144 + ], + "bBoxSW":[ + -0.004, + -0.64 + ] + }, + "accidentalCombiningLower31Schisma":{ + "bBoxNE":[ + 1.1782658743539216, + 0.38032804009412974 + ], + "bBoxSW":[ + 0.0, + 0.08 + ] + }, + "accidentalCombiningLower53LimitComma":{ + "bBoxNE":[ + 0.852, + 1.42 + ], + "bBoxSW":[ + 0.0, + -0.56 + ] + }, + "accidentalCombiningOpenCurlyBrace":{ + "bBoxNE":[ + 0.652, + 1.364 + ], + "bBoxSW":[ + 0.0, + -0.48 + ] + }, + "accidentalCombiningRaise17Schisma":{ + "bBoxNE":[ + 1.076, + 0.8362750241995145 + ], + "bBoxSW":[ + 0.0, + -0.56 + ] + }, + "accidentalCombiningRaise19Schisma":{ + "bBoxNE":[ + 1.004, + 0.2891358024691358 + ], + "bBoxSW":[ + 0.001, + -0.4394143294102082 + ] + }, + "accidentalCombiningRaise23Limit29LimitComma":{ + "bBoxNE":[ + 1.288, + 1.104 + ], + "bBoxSW":[ + 0.0, + -0.72 + ] + }, + "accidentalCombiningRaise31Schisma":{ + "bBoxNE":[ + 1.136, + 0.868431532437698 + ], + "bBoxSW":[ + 0.0, + -0.36 + ] + }, + "accidentalCombiningRaise53LimitComma":{ + "bBoxNE":[ + 0.814157268060623, + 1.3978061701891407 + ], + "bBoxSW":[ + 0.0, + -0.476 + ] + }, + "accidentalCommaSlashDown":{ + "bBoxNE":[ + 1.4404256997113707, + 0.37665631459994947 + ], + "bBoxSW":[ + 0.0022224249799879916, + -0.3817708763999664 + ] + }, + "accidentalCommaSlashUp":{ + "bBoxNE":[ + 1.441777575020012, + 0.37665631459994947 + ], + "bBoxSW":[ + 0.0035743002886292883, + -0.3817708763999664 + ] + }, + "accidentalDoubleFlat":{ + "bBoxNE":[ + 1.436, + 1.784 + ], + "bBoxSW":[ + 0.0, + -0.88 + ] + }, + "accidentalDoubleFlatArabic":{ + "bBoxNE":[ + 1.424, + 1.608 + ], + "bBoxSW":[ + -0.012, + -1.056 + ] + }, + "accidentalDoubleFlatEqualTempered":{ + "bBoxNE":[ + 1.764, + 1.58 + ], + "bBoxSW":[ + 0.0, + -1.084 + ] + }, + "accidentalDoubleFlatOneArrowDown":{ + "bBoxNE":[ + 1.436, + 1.776 + ], + "bBoxSW":[ + 0.0, + -1.596 + ] + }, + "accidentalDoubleFlatOneArrowUp":{ + "bBoxNE":[ + 1.412, + 2.04 + ], + "bBoxSW":[ + -0.1801895003862225, + -1.104 + ] + }, + "accidentalDoubleFlatReversed":{ + "bBoxNE":[ + 1.424, + 1.608 + ], + "bBoxSW":[ + -0.012, + -1.056 + ] + }, + "accidentalDoubleFlatThreeArrowsDown":{ + "bBoxNE":[ + 1.424, + 1.752 + ], + "bBoxSW":[ + -0.012, + -2.504 + ] + }, + "accidentalDoubleFlatThreeArrowsUp":{ + "bBoxNE":[ + 1.42, + 3.26009500792994 + ], + "bBoxSW":[ + -0.2218727167525811, + -0.86 + ] + }, + "accidentalDoubleFlatTurned":{ + "bBoxNE":[ + 1.424, + 0.888 + ], + "bBoxSW":[ + -0.012, + -1.776 + ] + }, + "accidentalDoubleFlatTwoArrowsDown":{ + "bBoxNE":[ + 1.412, + 1.768 + ], + "bBoxSW":[ + -0.024, + -1.968 + ] + }, + "accidentalDoubleFlatTwoArrowsUp":{ + "bBoxNE":[ + 1.476, + 2.496 + ], + "bBoxSW":[ + -0.12675, + -1.116 + ] + }, + "accidentalDoubleSharp":{ + "bBoxNE":[ + 1.148, + 0.636 + ], + "bBoxSW":[ + 0.0, + -0.636 + ] + }, + "accidentalDoubleSharpArabic":{ + "bBoxNE":[ + 1.052, + 0.616 + ], + "bBoxSW":[ + -0.096, + -0.656 + ] + }, + "accidentalDoubleSharpEqualTempered":{ + "bBoxNE":[ + 1.036, + 1.272 + ], + "bBoxSW":[ + -0.112, + -0.628 + ] + }, + "accidentalDoubleSharpOneArrowDown":{ + "bBoxNE":[ + 1.148, + 0.6400000000000002 + ], + "bBoxSW":[ + 0.0, + -1.5480950079299398 + ] + }, + "accidentalDoubleSharpOneArrowUp":{ + "bBoxNE":[ + 1.08, + 1.564 + ], + "bBoxSW":[ + -0.068, + -0.628 + ] + }, + "accidentalDoubleSharpThreeArrowsDown":{ + "bBoxNE":[ + 1.028, + 0.612 + ], + "bBoxSW":[ + -0.12, + -2.532 + ] + }, + "accidentalDoubleSharpThreeArrowsUp":{ + "bBoxNE":[ + 1.032, + 2.492 + ], + "bBoxSW":[ + -0.116, + -0.68 + ] + }, + "accidentalDoubleSharpTwoArrowsDown":{ + "bBoxNE":[ + 1.068, + 0.644 + ], + "bBoxSW":[ + -0.08, + -2.132 + ] + }, + "accidentalDoubleSharpTwoArrowsUp":{ + "bBoxNE":[ + 1.076, + 1.99209500792994 + ], + "bBoxSW":[ + -0.072, + -0.668 + ] + }, + "accidentalEnharmonicAlmostEqualTo":{ + "bBoxNE":[ + 1.684, + 0.764 + ], + "bBoxSW":[ + 0.0, + -0.764 + ] + }, + "accidentalEnharmonicEquals":{ + "bBoxNE":[ + 1.912, + 0.672 + ], + "bBoxSW":[ + 0.0, + -0.672 + ] + }, + "accidentalEnharmonicTilde":{ + "bBoxNE":[ + 1.736, + 0.42 + ], + "bBoxSW":[ + 0.0, + -0.42 + ] + }, + "accidentalFilledReversedFlatAndFlat":{ + "bBoxNE":[ + 1.528, + 2.012 + ], + "bBoxSW":[ + 0.0, + -0.82 + ] + }, + "accidentalFilledReversedFlatAndFlatArrowDown":{ + "bBoxNE":[ + 1.528, + 2.012 + ], + "bBoxSW":[ + 0.0, + -1.752 + ] + }, + "accidentalFilledReversedFlatAndFlatArrowUp":{ + "bBoxNE":[ + 1.528, + 1.96 + ], + "bBoxSW":[ + 0.0, + -0.82 + ] + }, + "accidentalFilledReversedFlatArrowDown":{ + "bBoxNE":[ + 1.0601895003862225, + 1.864 + ], + "bBoxSW":[ + 0.0, + -1.576 + ] + }, + "accidentalFilledReversedFlatArrowUp":{ + "bBoxNE":[ + 0.96, + 2.356 + ], + "bBoxSW":[ + 0.0, + -0.956 + ] + }, + "accidentalFiveQuarterTonesFlatArrowDown":{ + "bBoxNE":[ + 1.396, + 1.604 + ], + "bBoxSW":[ + -0.23506401658475426, + -1.836 + ] + }, + "accidentalFiveQuarterTonesSharpArrowUp":{ + "bBoxNE":[ + 1.1557421947271227, + 1.356 + ], + "bBoxSW":[ + -0.072, + -0.616 + ] + }, + "accidentalFlat":{ + "bBoxNE":[ + 0.836, + 1.888 + ], + "bBoxSW":[ + 0.004, + -0.832 + ] + }, + "accidentalFlatArabic":{ + "bBoxNE":[ + 0.792, + 1.796 + ], + "bBoxSW":[ + -0.04, + -0.924 + ] + }, + "accidentalFlatEqualTempered":{ + "bBoxNE":[ + 0.812, + 1.876 + ], + "bBoxSW":[ + -0.304, + -0.936 + ] + }, + "accidentalFlatOneArrowDown":{ + "bBoxNE":[ + 0.8279999999999998, + 1.78 + ], + "bBoxSW":[ + -0.19738216251229695, + -1.736 + ] + }, + "accidentalFlatOneArrowUp":{ + "bBoxNE":[ + 0.8, + 2.356 + ], + "bBoxSW":[ + -0.1618727167525811, + -0.956 + ] + }, + "accidentalFlatThreeArrowsDown":{ + "bBoxNE":[ + 0.824, + 1.712 + ], + "bBoxSW":[ + -0.18538216251229694, + -2.62 + ] + }, + "accidentalFlatThreeArrowsUp":{ + "bBoxNE":[ + 0.828, + 3.18 + ], + "bBoxSW":[ + -0.1801895003862225, + -0.96 + ] + }, + "accidentalFlatTurned":{ + "bBoxNE":[ + 0.832, + 0.876 + ], + "bBoxSW":[ + 0.0, + -1.844 + ] + }, + "accidentalFlatTwoArrowsDown":{ + "bBoxNE":[ + 0.816, + 1.828 + ], + "bBoxSW":[ + -0.20538216251229696, + -2.12409500792994 + ] + }, + "accidentalFlatTwoArrowsUp":{ + "bBoxNE":[ + 0.828, + 2.6555221746739606 + ], + "bBoxSW":[ + -0.1561895003862225, + -0.8 + ] + }, + "accidentalHalfSharpArrowDown":{ + "bBoxNE":[ + 0.974236047471341, + 1.324 + ], + "bBoxSW":[ + -0.0006000000000000001, + -2.16 + ] + }, + "accidentalHalfSharpArrowUp":{ + "bBoxNE":[ + 0.996, + 2.02 + ], + "bBoxSW":[ + 0.0, + -1.36 + ] + }, + "accidentalKomaFlat":{ + "bBoxNE":[ + 0.792, + 1.796 + ], + "bBoxSW":[ + -0.04, + -0.924 + ] + }, + "accidentalKomaSharp":{ + "bBoxNE":[ + 1.2, + 1.404 + ], + "bBoxSW":[ + 0.0, + -1.352 + ] + }, + "accidentalKoron":{ + "bBoxNE":[ + 1.212, + 0.7199999999999998 + ], + "bBoxSW":[ + 0.0, + -1.8498392213892223 + ] + }, + "accidentalKucukMucennebFlat":{ + "bBoxNE":[ + 0.792, + 1.796 + ], + "bBoxSW":[ + -0.04, + -0.924 + ] + }, + "accidentalKucukMucennebSharp":{ + "bBoxNE":[ + 1.436, + 1.372 + ], + "bBoxSW":[ + -0.000608250072385099, + -1.68 + ] + }, + "accidentalLargeDoubleSharp":{ + "bBoxNE":[ + 1.448, + 0.72 + ], + "bBoxSW":[ + -0.0010298367423531545, + -0.716 + ] + }, + "accidentalLowerOneSeptimalComma":{ + "bBoxNE":[ + 1.084, + 2.34 + ], + "bBoxSW":[ + 0.0, + -0.48 + ] + }, + "accidentalLowerOneTridecimalQuartertone":{ + "bBoxNE":[ + 0.84, + 1.932 + ], + "bBoxSW":[ + 0.008, + -0.856 + ] + }, + "accidentalLowerOneUndecimalQuartertone":{ + "bBoxNE":[ + 0.792, + 1.796 + ], + "bBoxSW":[ + -0.04, + -0.924 + ] + }, + "accidentalLowerTwoSeptimalCommas":{ + "bBoxNE":[ + 1.132, + 2.344 + ], + "bBoxSW":[ + 0.0, + -0.48 + ] + }, + "accidentalNarrowReversedFlat":{ + "bBoxNE":[ + 0.832, + 1.796 + ], + "bBoxSW":[ + 0.0, + -0.924 + ] + }, + "accidentalNarrowReversedFlatAndFlat":{ + "bBoxNE":[ + 1.34, + 1.796 + ], + "bBoxSW":[ + 0.0, + -0.924 + ] + }, + "accidentalNatural":{ + "bBoxNE":[ + 0.854, + 1.848 + ], + "bBoxSW":[ + 0.0, + -1.824 + ] + }, + "accidentalNaturalArabic":{ + "bBoxNE":[ + 0.854, + 1.82 + ], + "bBoxSW":[ + 0.0, + -1.852 + ] + }, + "accidentalNaturalEqualTempered":{ + "bBoxNE":[ + 0.878, + 1.908 + ], + "bBoxSW":[ + -0.308, + -1.824 + ] + }, + "accidentalNaturalFlat":{ + "bBoxNE":[ + 1.896, + 1.792 + ], + "bBoxSW":[ + 0.0, + -1.3672432234745935 + ] + }, + "accidentalNaturalOneArrowDown":{ + "bBoxNE":[ + 1.0241895003862225, + 1.796 + ], + "bBoxSW":[ + 0.0, + -2.08 + ] + }, + "accidentalNaturalOneArrowUp":{ + "bBoxNE":[ + 0.8619999999999999, + 2.328 + ], + "bBoxSW":[ + -0.1658727167525811, + -1.884 + ] + }, + "accidentalNaturalReversed":{ + "bBoxNE":[ + 0.856, + 1.82 + ], + "bBoxSW":[ + 0.0, + -1.852 + ] + }, + "accidentalNaturalSharp":{ + "bBoxNE":[ + 2.3777777777777778, + 1.544 + ], + "bBoxSW":[ + -0.017907887575677756, + -1.48 + ] + }, + "accidentalNaturalThreeArrowsDown":{ + "bBoxNE":[ + 1.0681895003862225, + 1.752 + ], + "bBoxSW":[ + 0.004, + -2.964 + ] + }, + "accidentalNaturalThreeArrowsUp":{ + "bBoxNE":[ + 0.858, + 3.092 + ], + "bBoxSW":[ + -0.22675, + -1.912 + ] + }, + "accidentalNaturalTwoArrowsDown":{ + "bBoxNE":[ + 1.0441895003862225, + 1.808 + ], + "bBoxSW":[ + 0.012, + -2.556 + ] + }, + "accidentalNaturalTwoArrowsUp":{ + "bBoxNE":[ + 0.8819999999999999, + 2.532 + ], + "bBoxSW":[ + -0.18187271675258113, + -1.832 + ] + }, + "accidentalOneAndAHalfSharpsArrowDown":{ + "bBoxNE":[ + 1.56, + 1.792 + ], + "bBoxSW":[ + -0.084, + -2.068 + ] + }, + "accidentalOneAndAHalfSharpsArrowUp":{ + "bBoxNE":[ + 1.568, + 2.50009500792994 + ], + "bBoxSW":[ + -0.076, + -1.236 + ] + }, + "accidentalOneQuarterToneFlatFerneyhough":{ + "bBoxNE":[ + 0.8097777777777778, + 0.576 + ], + "bBoxSW":[ + 0.0, + -1.476 + ] + }, + "accidentalOneQuarterToneSharpFerneyhough":{ + "bBoxNE":[ + 0.8097777777777778, + 1.49209500792994 + ], + "bBoxSW":[ + 0.0, + -0.78 + ] + }, + "accidentalOneThirdToneFlatFerneyhough":{ + "bBoxNE":[ + 0.8, + 0.588 + ], + "bBoxSW":[ + 0.0, + -1.652 + ] + }, + "accidentalOneThirdToneSharpFerneyhough":{ + "bBoxNE":[ + 0.8, + 1.684 + ], + "bBoxSW":[ + 0.0, + -0.608 + ] + }, + "accidentalParensLeft":{ + "bBoxNE":[ + 0.5207573964497042, + 1.0704330002895404 + ], + "bBoxSW":[ + 0.0, + -1.08 + ] + }, + "accidentalParensRight":{ + "bBoxNE":[ + 0.556, + 1.108 + ], + "bBoxSW":[ + -0.0017777777777777779, + -1.1 + ] + }, + "accidentalQuarterFlatEqualTempered":{ + "bBoxNE":[ + 1.092, + 1.876 + ], + "bBoxSW":[ + -0.024, + -0.936 + ] + }, + "accidentalQuarterSharpEqualTempered":{ + "bBoxNE":[ + 1.4085122224792737, + 1.4018856180831645 + ], + "bBoxSW":[ + -0.032, + -1.4 + ] + }, + "accidentalQuarterToneFlat4":{ + "bBoxNE":[ + 1.5324818716237576, + 2.6758535899460423 + ], + "bBoxSW":[ + 0.0008268332132549929, + -0.96 + ] + }, + "accidentalQuarterToneFlatArabic":{ + "bBoxNE":[ + 1.148, + 1.776 + ], + "bBoxSW":[ + 0.007476926872782314, + -0.944 + ] + }, + "accidentalQuarterToneFlatArrowUp":{ + "bBoxNE":[ + 0.8, + 2.356 + ], + "bBoxSW":[ + -0.1618727167525811, + -0.956 + ] + }, + "accidentalQuarterToneFlatFilledReversed":{ + "bBoxNE":[ + 0.832, + 1.796 + ], + "bBoxSW":[ + 0.0, + -0.924 + ] + }, + "accidentalQuarterToneFlatNaturalArrowDown":{ + "bBoxNE":[ + 1.0241895003862225, + 1.796 + ], + "bBoxSW":[ + 0.0, + -2.08 + ] + }, + "accidentalQuarterToneFlatPenderecki":{ + "bBoxNE":[ + 0.792, + 1.796 + ], + "bBoxSW":[ + -0.04, + -0.924 + ] + }, + "accidentalQuarterToneFlatStein":{ + "bBoxNE":[ + 0.832, + 1.76 + ], + "bBoxSW":[ + 0.0, + -0.96 + ] + }, + "accidentalQuarterToneFlatVanBlankenburg":{ + "bBoxNE":[ + 0.9578167211425256, + 1.792 + ], + "bBoxSW":[ + 0.0, + -0.776 + ] + }, + "accidentalQuarterToneSharp4":{ + "bBoxNE":[ + 1.68, + 2.5 + ], + "bBoxSW":[ + 0.0, + -1.5 + ] + }, + "accidentalQuarterToneSharpArabic":{ + "bBoxNE":[ + 1.2, + 1.404 + ], + "bBoxSW":[ + 0.0, + -1.352 + ] + }, + "accidentalQuarterToneSharpArrowDown":{ + "bBoxNE":[ + 1.564, + 1.604 + ], + "bBoxSW":[ + -0.084, + -2.072 + ] + }, + "accidentalQuarterToneSharpBusotti":{ + "bBoxNE":[ + 1.292608250072385, + 1.616 + ], + "bBoxSW":[ + -0.00100467853578499, + -1.572 + ] + }, + "accidentalQuarterToneSharpNaturalArrowUp":{ + "bBoxNE":[ + 0.8619999999999999, + 2.328 + ], + "bBoxSW":[ + -0.1658727167525811, + -1.884 + ] + }, + "accidentalQuarterToneSharpStein":{ + "bBoxNE":[ + 1.2, + 1.404 + ], + "bBoxSW":[ + 0.0, + -1.352 + ] + }, + "accidentalQuarterToneSharpWiggle":{ + "bBoxNE":[ + 2.66, + 3.068 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "accidentalRaiseOneSeptimalComma":{ + "bBoxNE":[ + 1.0802857546961429, + 1.624 + ], + "bBoxSW":[ + -0.0004461310487815607, + -1.2 + ] + }, + "accidentalRaiseOneTridecimalQuartertone":{ + "bBoxNE":[ + 1.44, + 2.944 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "accidentalRaiseOneUndecimalQuartertone":{ + "bBoxNE":[ + 1.4405122224792737, + 2.76 + ], + "bBoxSW":[ + -0.00042569971137069985, + 0.0 + ] + }, + "accidentalRaiseTwoSeptimalCommas":{ + "bBoxNE":[ + 1.132, + 2.22 + ], + "bBoxSW":[ + -0.0004461310487815595, + -0.6 + ] + }, + "accidentalReversedFlatAndFlatArrowDown":{ + "bBoxNE":[ + 1.528, + 2.012 + ], + "bBoxSW":[ + 0.0, + -1.752 + ] + }, + "accidentalReversedFlatAndFlatArrowUp":{ + "bBoxNE":[ + 1.528, + 1.96 + ], + "bBoxSW":[ + 0.0, + -0.82 + ] + }, + "accidentalReversedFlatArrowDown":{ + "bBoxNE":[ + 1.0601895003862225, + 1.864 + ], + "bBoxSW":[ + 0.0, + -1.576 + ] + }, + "accidentalReversedFlatArrowUp":{ + "bBoxNE":[ + 0.96, + 2.356 + ], + "bBoxSW":[ + 0.0, + -0.956 + ] + }, + "accidentalSharp":{ + "bBoxNE":[ + 1.56, + 1.532 + ], + "bBoxSW":[ + -0.088, + -1.536 + ] + }, + "accidentalSharpArabic":{ + "bBoxNE":[ + 1.548, + 1.644 + ], + "bBoxSW":[ + -0.1, + -1.424 + ] + }, + "accidentalSharpEqualTempered":{ + "bBoxNE":[ + 1.4, + 1.76 + ], + "bBoxSW":[ + -0.248, + -1.604 + ] + }, + "accidentalSharpOneArrowDown":{ + "bBoxNE":[ + 1.564, + 1.604 + ], + "bBoxSW":[ + -0.084, + -2.072 + ] + }, + "accidentalSharpOneArrowUp":{ + "bBoxNE":[ + 1.544, + 2.02 + ], + "bBoxSW":[ + -0.104, + -1.452 + ] + }, + "accidentalSharpOneHorizontalStroke":{ + "bBoxNE":[ + 1.5853882492398048, + 1.5847752591831394 + ], + "bBoxSW":[ + 0.0015555041452365117, + -1.332 + ] + }, + "accidentalSharpReversed":{ + "bBoxNE":[ + 1.608, + 1.644 + ], + "bBoxSW":[ + -0.04, + -1.424 + ] + }, + "accidentalSharpSharp":{ + "bBoxNE":[ + 2.712, + 1.608 + ], + "bBoxSW":[ + -0.08, + -1.572 + ] + }, + "accidentalSharpThreeArrowsDown":{ + "bBoxNE":[ + 1.552, + 1.64 + ], + "bBoxSW":[ + -0.096, + -2.76 + ] + }, + "accidentalSharpThreeArrowsUp":{ + "bBoxNE":[ + 1.528, + 2.856 + ], + "bBoxSW":[ + -0.12, + -1.552 + ] + }, + "accidentalSharpTwoArrowsDown":{ + "bBoxNE":[ + 1.56, + 1.556 + ], + "bBoxSW":[ + -0.088, + -2.452 + ] + }, + "accidentalSharpTwoArrowsUp":{ + "bBoxNE":[ + 1.54, + 2.62 + ], + "bBoxSW":[ + -0.108, + -1.444 + ] + }, + "accidentalSori":{ + "bBoxNE":[ + 1.736, + 1.3 + ], + "bBoxSW":[ + 0.0, + -1.18 + ] + }, + "accidentalTavenerFlat":{ + "bBoxNE":[ + 2.888, + 2.72 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "accidentalTavenerSharp":{ + "bBoxNE":[ + 3.844, + 3.064 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "accidentalThreeQuarterTonesFlatArabic":{ + "bBoxNE":[ + 1.112, + 1.832 + ], + "bBoxSW":[ + 0.0, + -0.96 + ] + }, + "accidentalThreeQuarterTonesFlatArrowDown":{ + "bBoxNE":[ + 0.8279999999999998, + 1.78 + ], + "bBoxSW":[ + -0.19738216251229695, + -1.736 + ] + }, + "accidentalThreeQuarterTonesFlatArrowUp":{ + "bBoxNE":[ + 1.404, + 2.076 + ], + "bBoxSW":[ + -0.032, + -1.064 + ] + }, + "accidentalThreeQuarterTonesFlatCouper":{ + "bBoxNE":[ + 1.508, + 1.8362180770482042 + ], + "bBoxSW":[ + 0.0, + -0.88 + ] + }, + "accidentalThreeQuarterTonesFlatGrisey":{ + "bBoxNE":[ + 0.84, + 1.932 + ], + "bBoxSW":[ + 0.008, + -0.856 + ] + }, + "accidentalThreeQuarterTonesFlatTartini":{ + "bBoxNE":[ + 1.364, + 1.8535890385241018 + ], + "bBoxSW":[ + 0.0, + -0.7955869153542834 + ] + }, + "accidentalThreeQuarterTonesFlatZimmermann":{ + "bBoxNE":[ + 1.688, + 1.76 + ], + "bBoxSW":[ + 0.0, + -0.96 + ] + }, + "accidentalThreeQuarterTonesSharpArabic":{ + "bBoxNE":[ + 1.552, + 1.78 + ], + "bBoxSW":[ + -0.092, + -1.492 + ] + }, + "accidentalThreeQuarterTonesSharpArrowDown":{ + "bBoxNE":[ + 1.068, + 0.596 + ], + "bBoxSW":[ + -0.11338216251229695, + -1.388 + ] + }, + "accidentalThreeQuarterTonesSharpArrowUp":{ + "bBoxNE":[ + 1.544, + 2.02 + ], + "bBoxSW":[ + -0.104, + -1.452 + ] + }, + "accidentalThreeQuarterTonesSharpBusotti":{ + "bBoxNE":[ + 2.024, + 1.764 + ], + "bBoxSW":[ + -0.0017148401401066735, + -1.44 + ] + }, + "accidentalThreeQuarterTonesSharpStein":{ + "bBoxNE":[ + 1.552, + 1.78 + ], + "bBoxSW":[ + -0.092, + -1.492 + ] + }, + "accidentalTripleFlat":{ + "bBoxNE":[ + 2.356, + 1.8280000000000003 + ], + "bBoxSW":[ + 0.0, + -0.8250396120253924 + ] + }, + "accidentalTripleSharp":{ + "bBoxNE":[ + 2.516, + 1.392 + ], + "bBoxSW":[ + -0.16, + -1.388 + ] + }, + "accidentalTwoThirdTonesFlatFerneyhough":{ + "bBoxNE":[ + 0.8, + 0.796 + ], + "bBoxSW":[ + 0.0, + -1.7 + ] + }, + "accidentalTwoThirdTonesSharpFerneyhough":{ + "bBoxNE":[ + 0.8, + 1.768 + ], + "bBoxSW":[ + 0.0, + -0.672 + ] + }, + "accidentalWilsonMinus":{ + "bBoxNE":[ + 1.1368373560575675, + 0.652 + ], + "bBoxSW":[ + 0.0, + -0.652 + ] + }, + "accidentalWilsonPlus":{ + "bBoxNE":[ + 1.192, + 0.872 + ], + "bBoxSW":[ + 0.0, + -0.872 + ] + }, + "accidentalXenakisOneThirdToneSharp":{ + "bBoxNE":[ + 1.436, + 1.468 + ], + "bBoxSW":[ + 0.004, + -1.38 + ] + }, + "accidentalXenakisTwoThirdTonesSharp":{ + "bBoxNE":[ + 1.8115527064941694, + 3.084 + ], + "bBoxSW":[ + 0.0011383799378978203, + 0.0 + ] + }, + "arpeggiatoDown":{ + "bBoxNE":[ + 0.872, + 5.76 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "arpeggiatoUp":{ + "bBoxNE":[ + 1.048, + 5.836 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "articAccentAbove":{ + "bBoxNE":[ + 1.7, + 1.304 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "articAccentBelow":{ + "bBoxNE":[ + 1.7, + 0.0 + ], + "bBoxSW":[ + 0.0, + -1.304 + ] + }, + "articAccentStaccatoAbove":{ + "bBoxNE":[ + 1.54, + 2.02 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "articAccentStaccatoBelow":{ + "bBoxNE":[ + 1.54, + -0.004 + ], + "bBoxSW":[ + 0.0, + -2.022638259240229 + ] + }, + "articLaissezVibrerAbove":{ + "bBoxNE":[ + 1.648, + 0.724 + ], + "bBoxSW":[ + -0.0015802469135802468, + 0.0 + ] + }, + "articLaissezVibrerBelow":{ + "bBoxNE":[ + 1.648, + 0.0 + ], + "bBoxSW":[ + -0.0015802469135802468, + -0.724 + ] + }, + "articMarcatoAbove":{ + "bBoxNE":[ + 1.584, + 1.312 + ], + "bBoxSW":[ + 0.00016485678111448322, + 0.0 + ] + }, + "articMarcatoBelow":{ + "bBoxNE":[ + 1.5838351432188855, + 0.0 + ], + "bBoxSW":[ + 0.0, + -1.312 + ] + }, + "articMarcatoStaccatoAbove":{ + "bBoxNE":[ + 1.664, + 1.932 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "articMarcatoStaccatoBelow":{ + "bBoxNE":[ + 1.664, + 0.0 + ], + "bBoxSW":[ + 0.0, + -1.932 + ] + }, + "articMarcatoTenutoAbove":{ + "bBoxNE":[ + 2.148, + 1.688 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "articMarcatoTenutoBelow":{ + "bBoxNE":[ + 2.148, + 0.0 + ], + "bBoxSW":[ + 0.0, + -1.688 + ] + }, + "articStaccatissimoAbove":{ + "bBoxNE":[ + 0.556, + 1.644 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "articStaccatissimoBelow":{ + "bBoxNE":[ + 0.556, + 0.0 + ], + "bBoxSW":[ + 0.0, + -1.644 + ] + }, + "articStaccatissimoStrokeAbove":{ + "bBoxNE":[ + 0.25599999999999995, + 1.808 + ], + "bBoxSW":[ + -0.00038003171975932237, + 0.0 + ] + }, + "articStaccatissimoStrokeBelow":{ + "bBoxNE":[ + 0.2563800317197593, + 0.0 + ], + "bBoxSW":[ + 0.0, + -1.808 + ] + }, + "articStaccatissimoWedgeAbove":{ + "bBoxNE":[ + 0.34, + 1.18 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "articStaccatissimoWedgeBelow":{ + "bBoxNE":[ + 0.34, + 0.0 + ], + "bBoxSW":[ + 0.0, + -1.18 + ] + }, + "articStaccatoAbove":{ + "bBoxNE":[ + 0.448, + 0.624 + ], + "bBoxSW":[ + 0.005660441186198766, + 0.0 + ] + }, + "articStaccatoBelow":{ + "bBoxNE":[ + 0.44833612891459673, + 0.0 + ], + "bBoxSW":[ + 0.005660441186198766, + -0.624 + ] + }, + "articStressAbove":{ + "bBoxNE":[ + 1.22, + 1.276 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "articStressBelow":{ + "bBoxNE":[ + 1.22, + 0.0 + ], + "bBoxSW":[ + 0.0, + -1.276 + ] + }, + "articTenutoAbove":{ + "bBoxNE":[ + 1.8844954642256424, + 0.224 + ], + "bBoxSW":[ + 0.001407706729450254, + 0.0 + ] + }, + "articTenutoAccentAbove":{ + "bBoxNE":[ + 2.084, + 1.752 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "articTenutoAccentBelow":{ + "bBoxNE":[ + 2.084, + 0.0 + ], + "bBoxSW":[ + 0.0, + -1.752 + ] + }, + "articTenutoBelow":{ + "bBoxNE":[ + 1.8844954642256424, + -0.012 + ], + "bBoxSW":[ + 0.001407706729450254, + -0.236 + ] + }, + "articTenutoStaccatoAbove":{ + "bBoxNE":[ + 1.888, + 1.08 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "articTenutoStaccatoBelow":{ + "bBoxNE":[ + 1.888, + 0.0 + ], + "bBoxSW":[ + 0.0, + -1.08 + ] + }, + "articUnstressAbove":{ + "bBoxNE":[ + 1.968, + 1.184 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "articUnstressBelow":{ + "bBoxNE":[ + 1.968, + 0.0 + ], + "bBoxSW":[ + 0.0, + -1.184 + ] + }, + "augmentationDot":{ + "bBoxNE":[ + 0.384, + 0.228 + ], + "bBoxSW":[ + 0.0, + -0.228 + ] + }, + "barlineDashed":{ + "bBoxNE":[ + 0.164, + 3.912 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "barlineDotted":{ + "bBoxNE":[ + 0.264, + 3.872 + ], + "bBoxSW":[ + -9.45748312269372e-05, + -0.00010096510203220532 + ] + }, + "barlineDouble":{ + "bBoxNE":[ + 0.692, + 4.2921687836487035 + ], + "bBoxSW":[ + 0.0, + 0.004 + ] + }, + "barlineFinal":{ + "bBoxNE":[ + 1.604, + 4.204 + ], + "bBoxSW":[ + 0.0, + 0.007119630626262371 + ] + }, + "barlineHeavy":{ + "bBoxNE":[ + 1.0368163265306123, + 4.204 + ], + "bBoxSW":[ + 0.0, + 0.052 + ] + }, + "barlineHeavyHeavy":{ + "bBoxNE":[ + 2.324, + 4.088 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "barlineReverseFinal":{ + "bBoxNE":[ + 1.604, + 4.204 + ], + "bBoxSW":[ + 0.0, + 0.007119630626262364 + ] + }, + "barlineShort":{ + "bBoxNE":[ + 0.2, + 4.0 + ], + "bBoxSW":[ + 0.0, + 2.099490332008122 + ] + }, + "barlineSingle":{ + "bBoxNE":[ + 0.204, + 4.1 + ], + "bBoxSW":[ + -0.0007846096908265275, + 0.004 + ] + }, + "barlineTick":{ + "bBoxNE":[ + 0.22414440603865662, + 4.486172135266826 + ], + "bBoxSW":[ + 0.0, + 3.5076209992275547 + ] + }, + "beamAccelRit1":{ + "bBoxNE":[ + 4.712507422293522, + 3.0 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "beamAccelRit10":{ + "bBoxNE":[ + 2.149121123953499, + 3.0 + ], + "bBoxSW":[ + -0.03777777777777778, + 0.0 + ] + }, + "beamAccelRit11":{ + "bBoxNE":[ + 1.8959553702480567, + 3.0 + ], + "bBoxSW":[ + -0.0005510204081632821, + 0.0 + ] + }, + "beamAccelRit12":{ + "bBoxNE":[ + 1.6180416025884925, + 3.0 + ], + "bBoxSW":[ + -0.04, + 0.0 + ] + }, + "beamAccelRit13":{ + "bBoxNE":[ + 1.3155500586026239, + 3.006337835372767 + ], + "bBoxSW":[ + -0.03955555555555556, + 0.0 + ] + }, + "beamAccelRit14":{ + "bBoxNE":[ + 1.0385943195822434, + 3.0 + ], + "bBoxSW":[ + -0.0006400000000000006, + 0.0 + ] + }, + "beamAccelRit15":{ + "bBoxNE":[ + 0.7679908358730921, + 3.0 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "beamAccelRit2":{ + "bBoxNE":[ + 4.461908098383994, + 3.0 + ], + "bBoxSW":[ + -0.0017777777777777776, + 0.0 + ] + }, + "beamAccelRit3":{ + "bBoxNE":[ + 4.147575130136374, + 3.0 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "beamAccelRit4":{ + "bBoxNE":[ + 3.9175750556483546, + 3.0 + ], + "bBoxSW":[ + -0.001, + 0.0 + ] + }, + "beamAccelRit5":{ + "bBoxNE":[ + 3.652892414973393, + 3.0 + ], + "bBoxSW":[ + 0.0027199999999999998, + 0.0 + ] + }, + "beamAccelRit6":{ + "bBoxNE":[ + 3.3697080768435015, + 3.0 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "beamAccelRit7":{ + "bBoxNE":[ + 3.100601367565761, + 3.0 + ], + "bBoxSW":[ + -3.999999999999204e-05, + 0.0 + ] + }, + "beamAccelRit8":{ + "bBoxNE":[ + 2.7406570388891818, + 3.0 + ], + "bBoxSW":[ + -0.0002222222222222222, + 0.0 + ] + }, + "beamAccelRit9":{ + "bBoxNE":[ + 2.4611561633625603, + 3.0 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "beamAccelRitFinal":{ + "bBoxNE":[ + 0.18099999999999997, + 3.0 + ], + "bBoxSW":[ + -0.13230745135363103, + 0.0 + ] + }, + "brace":{ + "bBoxNE":[ + 0.312, + 3.9941533300761005 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "braceflat":{ + "bBoxNE":[ + 0.184, + 3.9941533300761005 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "bracelarge":{ + "bBoxNE":[ + 0.312, + 3.9941533300761005 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "bracelarger":{ + "bBoxNE":[ + 0.252, + 3.9941533300761005 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "bracesmall":{ + "bBoxNE":[ + 0.48, + 3.9941533300761005 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "bracket":{ + "bBoxNE":[ + 2.0618964531373725, + 5.628 + ], + "bBoxSW":[ + 0.0, + -1.628 + ] + }, + "bracketBottom":{ + "bBoxNE":[ + 1.984, + 0.0 + ], + "bBoxSW":[ + 0.0, + -1.572 + ] + }, + "bracketTop":{ + "bBoxNE":[ + 2.032, + 1.48 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "brassBend":{ + "bBoxNE":[ + 1.524, + 1.468 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "brassDoitLong":{ + "bBoxNE":[ + 4.4524377458988855, + 1.536 + ], + "bBoxSW":[ + -0.0007149086701032449, + -0.2 + ] + }, + "brassDoitMedium":{ + "bBoxNE":[ + 1.9048500471043426, + 1.33261423355015 + ], + "bBoxSW":[ + -0.0013126101586284165, + -0.2 + ] + }, + "brassDoitShort":{ + "bBoxNE":[ + 1.084, + 1.328 + ], + "bBoxSW":[ + 0.0, + -0.2 + ] + }, + "brassFallLipLong":{ + "bBoxNE":[ + 4.42, + 0.216 + ], + "bBoxSW":[ + 0.0, + -1.448 + ] + }, + "brassFallLipMedium":{ + "bBoxNE":[ + 1.98, + 0.2288463383107819 + ], + "bBoxSW":[ + 0.0, + -1.488 + ] + }, + "brassFallLipShort":{ + "bBoxNE":[ + 1.192, + 0.26 + ], + "bBoxSW":[ + 0.0, + -1.376 + ] + }, + "brassFallRoughLong":{ + "bBoxNE":[ + 4.716, + 4.688 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "brassFallRoughMedium":{ + "bBoxNE":[ + 3.164, + 3.276 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "brassFallRoughShort":{ + "bBoxNE":[ + 1.648, + 1.736 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "brassFallSmoothLong":{ + "bBoxNE":[ + 5.276448383149633, + 5.452 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "brassFallSmoothMedium":{ + "bBoxNE":[ + 3.396, + 3.744 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "brassFallSmoothShort":{ + "bBoxNE":[ + 1.54, + 1.736 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "brassFlip":{ + "bBoxNE":[ + 1.608, + 1.444 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "brassHarmonMuteClosed":{ + "bBoxNE":[ + 1.46, + 1.408 + ], + "bBoxSW":[ + -0.34, + -0.332 + ] + }, + "brassHarmonMuteStemHalfLeft":{ + "bBoxNE":[ + 1.548, + 1.428 + ], + "bBoxSW":[ + -0.252, + -0.312 + ] + }, + "brassHarmonMuteStemHalfRight":{ + "bBoxNE":[ + 1.452, + 1.42 + ], + "bBoxSW":[ + -0.348, + -0.32 + ] + }, + "brassHarmonMuteStemOpen":{ + "bBoxNE":[ + 1.428, + 1.436 + ], + "bBoxSW":[ + -0.372, + -0.304 + ] + }, + "brassJazzTurn":{ + "bBoxNE":[ + 2.584, + 0.848 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "brassLiftLong":{ + "bBoxNE":[ + 4.636, + 4.684 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "brassLiftMedium":{ + "bBoxNE":[ + 3.228, + 3.352 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "brassLiftShort":{ + "bBoxNE":[ + 1.764, + 1.932 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "brassLiftSmoothLong":{ + "bBoxNE":[ + 5.208, + 5.244 + ], + "bBoxSW":[ + 0.0, + 0.0008615612366938898 + ] + }, + "brassLiftSmoothMedium":{ + "bBoxNE":[ + 3.44, + 3.466156186096339 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "brassLiftSmoothShort":{ + "bBoxNE":[ + 1.528, + 1.576 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "brassMuteClosed":{ + "bBoxNE":[ + 1.096, + 1.04 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "brassMuteHalfClosed":{ + "bBoxNE":[ + 1.26, + 1.236 + ], + "bBoxSW":[ + 0.002, + 0.0 + ] + }, + "brassMuteOpen":{ + "bBoxNE":[ + 1.2520477336444662, + 1.236 + ], + "bBoxSW":[ + 0.004, + 0.0 + ] + }, + "brassPlop":{ + "bBoxNE":[ + 1.156, + 1.60030050188443 + ], + "bBoxSW":[ + -0.0010118863916448685, + -0.08 + ] + }, + "brassScoop":{ + "bBoxNE":[ + 1.248, + 0.112 + ], + "bBoxSW":[ + -0.0017777777777777779, + -1.56 + ] + }, + "brassSmear":{ + "bBoxNE":[ + 1.336, + 0.604 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "brassValveTrill":{ + "bBoxNE":[ + 1.204, + 1.2 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "breathMarkComma":{ + "bBoxNE":[ + 0.592, + 1.1 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "breathMarkSalzedo":{ + "bBoxNE":[ + 2.644, + 2.072 + ], + "bBoxSW":[ + 0.0, + -0.04 + ] + }, + "breathMarkTick":{ + "bBoxNE":[ + 2.272, + 2.484 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "breathMarkUpbow":{ + "bBoxNE":[ + 1.016, + 2.38 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "bridgeClef":{ + "bBoxNE":[ + 3.412, + 3.432 + ], + "bBoxSW":[ + 0.0, + -3.26 + ] + }, + "buzzRoll":{ + "bBoxNE":[ + 0.708, + 0.4849441508091487 + ], + "bBoxSW":[ + -0.7, + -0.492 + ] + }, + "cClef":{ + "bBoxNE":[ + 2.924, + 2.172 + ], + "bBoxSW":[ + 0.0, + -2.172 + ] + }, + "cClef8vb":{ + "bBoxNE":[ + 2.924, + 2.172 + ], + "bBoxSW":[ + 0.0, + -3.684 + ] + }, + "cClefArrowDown":{ + "bBoxNE":[ + 3.184, + 2.172 + ], + "bBoxSW":[ + 0.0009211523481542301, + -3.476 + ] + }, + "cClefArrowUp":{ + "bBoxNE":[ + 3.1, + 3.432 + ], + "bBoxSW":[ + 0.0, + -2.172 + ] + }, + "cClefChange":{ + "bBoxNE":[ + 1.756, + 1.304 + ], + "bBoxSW":[ + 0.0, + -1.304 + ] + }, + "cClefCombining":{ + "bBoxNE":[ + 0.94, + 2.248 + ], + "bBoxSW":[ + 0.0, + -2.248 + ] + }, + "cClefReversed":{ + "bBoxNE":[ + 2.924, + 2.172 + ], + "bBoxSW":[ + 0.0, + -2.172 + ] + }, + "cClefSmall":{ + "bBoxNE":[ + 2.924, + 2.172 + ], + "bBoxSW":[ + 0.0, + -2.172 + ] + }, + "cClefSquare":{ + "bBoxNE":[ + 2.264, + 2.048 + ], + "bBoxSW":[ + 0.0, + -2.044 + ] + }, + "caesura":{ + "bBoxNE":[ + 2.2623327459015354, + 2.249792444851725 + ], + "bBoxSW":[ + 0.0, + -0.00036067977499789716 + ] + }, + "caesuraCurved":{ + "bBoxNE":[ + 1.544, + 2.336 + ], + "bBoxSW":[ + 0.0, + -0.04 + ] + }, + "caesuraShort":{ + "bBoxNE":[ + 0.836, + 2.452 + ], + "bBoxSW":[ + -0.00014345665658975048, + -0.08 + ] + }, + "caesuraThick":{ + "bBoxNE":[ + 2.832307395535209, + 2.968 + ], + "bBoxSW":[ + 0.0, + 0.006808988283156649 + ] + }, + "clef15":{ + "bBoxNE":[ + 1.016, + 1.544 + ], + "bBoxSW":[ + 0.0, + 0.012 + ] + }, + "clef8":{ + "bBoxNE":[ + 0.68, + 1.4448204624943501 + ], + "bBoxSW":[ + -0.001959156314330528, + 0.024 + ] + }, + "clefChangeCombining":{ + "bBoxNE":[ + 0.0, + 0.0 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "coda":{ + "bBoxNE":[ + 5.52, + 4.148 + ], + "bBoxSW":[ + 0.0, + -0.784 + ] + }, + "codaSquare":{ + "bBoxNE":[ + 3.884, + 3.852 + ], + "bBoxSW":[ + 0.0, + -1.0 + ] + }, + "csymAccidentalDoubleFlat":{ + "bBoxNE":[ + 1.436, + 2.664 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "csymAccidentalDoubleFlatSmall":{ + "bBoxNE":[ + 1.836, + 3.104 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "csymAccidentalDoubleSharp":{ + "bBoxNE":[ + 1.068, + 1.272 + ], + "bBoxSW":[ + -0.08, + 0.0 + ] + }, + "csymAccidentalDoubleSharpSmall":{ + "bBoxNE":[ + 1.796, + 1.868 + ], + "bBoxSW":[ + 0.0, + -0.0009657453878187922 + ] + }, + "csymAccidentalFlat":{ + "bBoxNE":[ + 0.832, + 2.72 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "csymAccidentalFlatSmall":{ + "bBoxNE":[ + 1.076, + 3.1 + ], + "bBoxSW":[ + 0.00016568047337277923, + 0.0 + ] + }, + "csymAccidentalNatural":{ + "bBoxNE":[ + 0.854, + 3.672 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "csymAccidentalNaturalSmall":{ + "bBoxNE":[ + 0.876, + 3.28 + ], + "bBoxSW":[ + 0.0, + 0.008 + ] + }, + "csymAccidentalSharp":{ + "bBoxNE":[ + 1.568, + 3.028 + ], + "bBoxSW":[ + -0.08, + -0.04 + ] + }, + "csymAccidentalSharpSmall":{ + "bBoxNE":[ + 1.4046125748587692, + 3.188 + ], + "bBoxSW":[ + -0.0003865007690490888, + -0.12 + ] + }, + "csymAccidentalTripleFlat":{ + "bBoxNE":[ + 2.356, + 2.672 + ], + "bBoxSW":[ + 0.0, + 0.018960387974607577 + ] + }, + "csymAccidentalTripleFlatSmall":{ + "bBoxNE":[ + 2.744, + 3.047639777949432 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "csymAccidentalTripleSharp":{ + "bBoxNE":[ + 2.516, + 2.74 + ], + "bBoxSW":[ + -0.16, + -0.04 + ] + }, + "csymAccidentalTripleSharpSmall":{ + "bBoxNE":[ + 2.912, + 3.164 + ], + "bBoxSW":[ + 0.0, + -0.08 + ] + }, + "csymAlteredBassSlash":{ + "bBoxNE":[ + 1.472, + 4.284 + ], + "bBoxSW":[ + -0.20139650012874083, + 0.00022903981461319756 + ] + }, + "csymAugmented":{ + "bBoxNE":[ + 2.12, + 2.156 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "csymAugmentedSmall.augmentedsmall":{ + "bBoxNE":[ + 1.868, + 1.868 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "csymBracketLeftTall":{ + "bBoxNE":[ + 1.312, + 3.228 + ], + "bBoxSW":[ + 0.0, + 0.008 + ] + }, + "csymBracketRightTall":{ + "bBoxNE":[ + 1.224, + 3.31641500792994 + ], + "bBoxSW":[ + 0.0034077691738418786, + -0.000687235568608502 + ] + }, + "csymDiagonalArrangementSlash":{ + "bBoxNE":[ + 3.96, + 4.110205730595375 + ], + "bBoxSW":[ + -0.0007945192620510076, + -0.10778729411675653 + ] + }, + "csymDiminished":{ + "bBoxNE":[ + 2.024, + 2.0 + ], + "bBoxSW":[ + 0.0, + -4.4144717269037916e-05 + ] + }, + "csymDiminishedSmall.dim7":{ + "bBoxNE":[ + 1.764607151372552, + 1.9262649603639102 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "csymHalfDiminished":{ + "bBoxNE":[ + 1.984, + 1.968 + ], + "bBoxSW":[ + -0.128, + -0.132 + ] + }, + "csymHalfDiminishedSmall":{ + "bBoxNE":[ + 1.944, + 1.948 + ], + "bBoxSW":[ + -0.2, + -0.2 + ] + }, + "csymMajorSeventh":{ + "bBoxNE":[ + 2.3724202037311692, + 2.276 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "csymMajorSeventhSmall.maj7":{ + "bBoxNE":[ + 2.136, + 1.972 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "csymMinor":{ + "bBoxNE":[ + 1.9265793833870362, + 1.060817418897175 + ], + "bBoxSW":[ + 0.0, + 0.772 + ] + }, + "csymMinorSmall.minorsmall":{ + "bBoxNE":[ + 1.92, + 1.2 + ], + "bBoxSW":[ + 0.0, + 0.78 + ] + }, + "csymParensLeftTall":{ + "bBoxNE":[ + 0.74, + 4.136 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "csymParensLeftVeryTall":{ + "bBoxNE":[ + 0.464, + 3.736612574858769 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "csymParensRightTall":{ + "bBoxNE":[ + 0.7541646415445623, + 4.232 + ], + "bBoxSW":[ + -0.16, + 0.0008081641154691503 + ] + }, + "csymParensRightVeryTall":{ + "bBoxNE":[ + 0.44573299929923804, + 4.036 + ], + "bBoxSW":[ + -0.08, + -0.0003062874293846445 + ] + }, + "curlewSign":{ + "bBoxNE":[ + 3.42, + 1.076 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "daCapo":{ + "bBoxNE":[ + 4.664062847927129, + 1.648 + ], + "bBoxSW":[ + 0.08, + -0.128 + ] + }, + "dalSegno":{ + "bBoxNE":[ + 4.3087580015448905, + 1.764 + ], + "bBoxSW":[ + 0.08, + -0.048 + ] + }, + "doubleLateralRollStevens":{ + "bBoxNE":[ + 0.4600000000000001, + 1.56 + ], + "bBoxSW":[ + -0.4485669736404079, + 0.0 + ] + }, + "doubleTongueAbove":{ + "bBoxNE":[ + 1.836, + 1.112 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "doubleTongueBelow":{ + "bBoxNE":[ + 1.772, + 1.1446040612287405 + ], + "bBoxSW":[ + 0.0, + -0.0020562448023853314 + ] + }, + "dynamicCombinedSeparatorColon":{ + "bBoxNE":[ + 0.552, + 0.9217777777777778 + ], + "bBoxSW":[ + 0.12, + 0.08971471633212252 + ] + }, + "dynamicCombinedSeparatorHyphen":{ + "bBoxNE":[ + 1.004, + 0.689034824300644 + ], + "bBoxSW":[ + 0.12088888888888888, + 0.416 + ] + }, + "dynamicCombinedSeparatorSlash":{ + "bBoxNE":[ + 1.088, + 2.0962774116372915 + ], + "bBoxSW":[ + -0.152, + -0.52 + ] + }, + "dynamicCombinedSeparatorSpace":{ + "bBoxNE":[ + 0.0, + 0.0 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "dynamicCrescendoHairpin":{ + "bBoxNE":[ + 3.016, + 1.4 + ], + "bBoxSW":[ + 0.0, + 0.4 + ] + }, + "dynamicDiminuendoHairpin":{ + "bBoxNE":[ + 3.02, + 1.4 + ], + "bBoxSW":[ + 0.0, + 0.4 + ] + }, + "dynamicFF":{ + "bBoxNE":[ + 2.332, + 1.712 + ], + "bBoxSW":[ + -0.476, + -0.788 + ] + }, + "dynamicFFF":{ + "bBoxNE":[ + 3.584, + 1.74 + ], + "bBoxSW":[ + -0.196, + -0.788 + ] + }, + "dynamicFFFF":{ + "bBoxNE":[ + 4.692, + 1.792 + ], + "bBoxSW":[ + -0.196, + -0.788 + ] + }, + "dynamicFFFFF":{ + "bBoxNE":[ + 5.496, + 1.896 + ], + "bBoxSW":[ + -0.196, + -0.7808122654377322 + ] + }, + "dynamicFFFFFF":{ + "bBoxNE":[ + 6.508, + 1.888 + ], + "bBoxSW":[ + -0.196, + -0.788 + ] + }, + "dynamicForte":{ + "bBoxNE":[ + 1.2452044854709998, + 2.016 + ], + "bBoxSW":[ + -0.576, + -0.46155051836627886 + ] + }, + "dynamicFortePiano":{ + "bBoxNE":[ + 2.716, + 1.888 + ], + "bBoxSW":[ + -0.196, + -0.983264845280236 + ] + }, + "dynamicForzando":{ + "bBoxNE":[ + 2.816, + 1.696 + ], + "bBoxSW":[ + -0.196, + -0.7815505183662789 + ] + }, + "dynamicHairpinBracketLeft":{ + "bBoxNE":[ + 0.34436318380256536, + 1.04 + ], + "bBoxSW":[ + 0.0, + -1.0366170447970362 + ] + }, + "dynamicHairpinBracketRight":{ + "bBoxNE":[ + 0.36, + 1.052 + ], + "bBoxSW":[ + 0.0, + -1.052 + ] + }, + "dynamicHairpinParenthesisLeft":{ + "bBoxNE":[ + 0.464, + 0.9577131406939215 + ], + "bBoxSW":[ + 0.0, + -0.984 + ] + }, + "dynamicHairpinParenthesisRight":{ + "bBoxNE":[ + 0.464, + 0.9577131406939215 + ], + "bBoxSW":[ + 0.0, + -0.984 + ] + }, + "dynamicMF":{ + "bBoxNE":[ + 3.4855755076535924, + 1.728 + ], + "bBoxSW":[ + -0.06, + -0.744 + ] + }, + "dynamicMP":{ + "bBoxNE":[ + 3.2400789564829036, + 1.644 + ], + "bBoxSW":[ + -0.1, + -0.972 + ] + }, + "dynamicMessaDiVoce":{ + "bBoxNE":[ + 6.08, + 1.404 + ], + "bBoxSW":[ + 0.0, + 0.4 + ] + }, + "dynamicMezzo":{ + "bBoxNE":[ + 2.236, + 1.46 + ], + "bBoxSW":[ + -0.072, + -0.2 + ] + }, + "dynamicNiente":{ + "bBoxNE":[ + 1.148, + 1.656 + ], + "bBoxSW":[ + -0.08, + 0.0 + ] + }, + "dynamicNienteForHairpin":{ + "bBoxNE":[ + 0.44, + 0.256 + ], + "bBoxSW":[ + 0.0, + -0.256 + ] + }, + "dynamicPF":{ + "bBoxNE":[ + 2.672, + 1.764 + ], + "bBoxSW":[ + -0.176, + -1.096 + ] + }, + "dynamicPP":{ + "bBoxNE":[ + 2.348, + 1.5216568542494924 + ], + "bBoxSW":[ + -0.384, + -1.130269060918431 + ] + }, + "dynamicPPP":{ + "bBoxNE":[ + 3.572, + 1.432 + ], + "bBoxSW":[ + -0.40451156235874897, + -1.284 + ] + }, + "dynamicPPPP":{ + "bBoxNE":[ + 4.788, + 1.544 + ], + "bBoxSW":[ + -0.456, + -1.10825 + ] + }, + "dynamicPPPPP":{ + "bBoxNE":[ + 5.984, + 1.492 + ], + "bBoxSW":[ + -0.396, + -1.14 + ] + }, + "dynamicPPPPPP":{ + "bBoxNE":[ + 7.192118697336088, + 1.576 + ], + "bBoxSW":[ + -0.412, + -1.096 + ] + }, + "dynamicPiano":{ + "bBoxNE":[ + 1.3060077273456978, + 2.06 + ], + "bBoxSW":[ + -0.196, + -0.568 + ] + }, + "dynamicRinforzando":{ + "bBoxNE":[ + 1.2883842880780505, + 1.3 + ], + "bBoxSW":[ + -0.3, + -0.36 + ] + }, + "dynamicRinforzando1":{ + "bBoxNE":[ + 2.6179839565068885, + 2.016 + ], + "bBoxSW":[ + -0.3, + -0.46155051836627886 + ] + }, + "dynamicRinforzando2":{ + "bBoxNE":[ + 3.884, + 1.856 + ], + "bBoxSW":[ + -0.3, + -0.6215505183662788 + ] + }, + "dynamicSforzando":{ + "bBoxNE":[ + 1.184, + 1.516 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "dynamicSforzando1":{ + "bBoxNE":[ + 2.6219839565068885, + 1.856 + ], + "bBoxSW":[ + 0.0, + -0.62 + ] + }, + "dynamicSforzandoPianissimo":{ + "bBoxNE":[ + 5.082007727345697, + 1.896 + ], + "bBoxSW":[ + 0.0, + -0.968 + ] + }, + "dynamicSforzandoPiano":{ + "bBoxNE":[ + 3.7860077273456976, + 1.856 + ], + "bBoxSW":[ + 0.0, + -0.928 + ] + }, + "dynamicSforzato":{ + "bBoxNE":[ + 3.744, + 1.812 + ], + "bBoxSW":[ + 0.0, + -0.664 + ] + }, + "dynamicSforzatoFF":{ + "bBoxNE":[ + 4.724, + 1.824 + ], + "bBoxSW":[ + 0.0, + -0.676 + ] + }, + "dynamicSforzatoPiano":{ + "bBoxNE":[ + 5.038007727345697, + 1.816 + ], + "bBoxSW":[ + 0.0, + -1.12 + ] + }, + "dynamicZ":{ + "bBoxNE":[ + 1.324, + 1.312 + ], + "bBoxSW":[ + -0.17095520732772349, + 0.0 + ] + }, + "fClef":{ + "bBoxNE":[ + 3.104, + 0.864 + ], + "bBoxSW":[ + 0.0, + -1.984 + ] + }, + "fClef15ma":{ + "bBoxNE":[ + 3.104, + 2.258605518642711 + ], + "bBoxSW":[ + 0.0, + -1.984 + ] + }, + "fClef15mb":{ + "bBoxNE":[ + 3.104, + 0.864 + ], + "bBoxSW":[ + 0.0, + -3.424 + ] + }, + "fClef8va":{ + "bBoxNE":[ + 3.104, + 2.22882046249435 + ], + "bBoxSW":[ + 0.0, + -1.984 + ] + }, + "fClef8vb":{ + "bBoxNE":[ + 3.104, + 0.864 + ], + "bBoxSW":[ + 0.0, + -3.256 + ] + }, + "fClefArrowDown":{ + "bBoxNE":[ + 3.104, + 0.864 + ], + "bBoxSW":[ + 0.0, + -3.388 + ] + }, + "fClefArrowUp":{ + "bBoxNE":[ + 3.104, + 2.1 + ], + "bBoxSW":[ + 0.0, + -1.984 + ] + }, + "fClefChange":{ + "bBoxNE":[ + 2.072, + 0.5902050004788353 + ], + "bBoxSW":[ + 0.0, + -1.308 + ] + }, + "fClefReversed":{ + "bBoxNE":[ + 3.104, + 0.996 + ], + "bBoxSW":[ + 0.0, + -1.852 + ] + }, + "fClefSmall":{ + "bBoxNE":[ + 3.104, + 0.864 + ], + "bBoxSW":[ + 0.0, + -1.984 + ] + }, + "fClefTurned":{ + "bBoxNE":[ + 3.104, + 0.996 + ], + "bBoxSW":[ + 0.0, + -1.852 + ] + }, + "fermataAbove":{ + "bBoxNE":[ + 1.888, + 1.816 + ], + "bBoxSW":[ + -0.00018201776161617822, + 0.00806028691002794 + ] + }, + "fermataBelow":{ + "bBoxNE":[ + 2.0742822693430196, + -0.0036645799346026707 + ], + "bBoxSW":[ + -0.0012433402239946149, + -1.72 + ] + }, + "fermataLongAbove":{ + "bBoxNE":[ + 2.3659644730092273, + 1.348405398412727 + ], + "bBoxSW":[ + 0.0, + -0.024 + ] + }, + "fermataLongBelow":{ + "bBoxNE":[ + 2.408, + 0.028 + ], + "bBoxSW":[ + 0.0, + -1.34 + ] + }, + "fermataLongHenzeAbove":{ + "bBoxNE":[ + 2.88, + 1.656 + ], + "bBoxSW":[ + 0.0, + -0.104 + ] + }, + "fermataLongHenzeBelow":{ + "bBoxNE":[ + 2.68, + 0.08 + ], + "bBoxSW":[ + 0.0, + -1.668 + ] + }, + "fermataShortAbove":{ + "bBoxNE":[ + 2.18, + 1.392 + ], + "bBoxSW":[ + 0.0, + -0.07234205814118595 + ] + }, + "fermataShortBelow":{ + "bBoxNE":[ + 2.26, + 0.04 + ], + "bBoxSW":[ + 0.0, + -1.34 + ] + }, + "fermataShortHenzeAbove":{ + "bBoxNE":[ + 1.6560063999999999, + 1.72 + ], + "bBoxSW":[ + 0.0, + -0.12 + ] + }, + "fermataShortHenzeBelow":{ + "bBoxNE":[ + 1.473393876913398, + 0.12 + ], + "bBoxSW":[ + 0.0, + -1.648 + ] + }, + "fermataVeryLongAbove":{ + "bBoxNE":[ + 2.86, + 1.748 + ], + "bBoxSW":[ + 0.0, + -0.05638538706646999 + ] + }, + "fermataVeryLongBelow":{ + "bBoxNE":[ + 2.745777575020012, + 0.12 + ], + "bBoxSW":[ + -4.9382716049379386e-05, + -1.708 + ] + }, + "fermataVeryShortAbove":{ + "bBoxNE":[ + 2.844, + 1.984 + ], + "bBoxSW":[ + 0.0, + -0.124 + ] + }, + "fermataVeryShortBelow":{ + "bBoxNE":[ + 2.788, + 0.052 + ], + "bBoxSW":[ + 0.0, + -1.9 + ] + }, + "figbass0":{ + "bBoxNE":[ + 0.8009123751085776, + 1.004 + ], + "bBoxSW":[ + 0.08, + -0.004 + ] + }, + "figbass1":{ + "bBoxNE":[ + 0.668, + 0.988 + ], + "bBoxSW":[ + 0.07920548073794899, + 0.0 + ] + }, + "figbass2":{ + "bBoxNE":[ + 0.8327411619664543, + 0.952 + ], + "bBoxSW":[ + 0.08, + 0.0037652081134236966 + ] + }, + "figbass2Raised":{ + "bBoxNE":[ + 0.8327411619664543, + 0.944 + ], + "bBoxSW":[ + 0.08, + -0.23651483716701108 + ] + }, + "figbass3":{ + "bBoxNE":[ + 0.808, + 1.0060901699437494 + ], + "bBoxSW":[ + 0.08, + 0.0 + ] + }, + "figbass4":{ + "bBoxNE":[ + 0.728, + 1.1 + ], + "bBoxSW":[ + 0.07843078061834695, + -0.052 + ] + }, + "figbass4Raised":{ + "bBoxNE":[ + 0.9048655263941818, + 1.128342058141186 + ], + "bBoxSW":[ + 0.08179792653488453, + 0.009367017265131289 + ] + }, + "figbass5":{ + "bBoxNE":[ + 0.828, + 1.04 + ], + "bBoxSW":[ + 0.08, + 0.0 + ] + }, + "figbass5Raised1":{ + "bBoxNE":[ + 0.828, + 1.248 + ], + "bBoxSW":[ + 0.08, + 0.0 + ] + }, + "figbass5Raised2":{ + "bBoxNE":[ + 0.844, + 1.183 + ], + "bBoxSW":[ + 0.08, + 0.0 + ] + }, + "figbass5Raised3":{ + "bBoxNE":[ + 0.828, + 1.2661766308261122 + ], + "bBoxSW":[ + 0.08, + -0.22525292441212125 + ] + }, + "figbass6":{ + "bBoxNE":[ + 0.8205, + 1.0149351873272818 + ], + "bBoxSW":[ + 0.07922396419624582, + -0.02805736772092406 + ] + }, + "figbass6Raised":{ + "bBoxNE":[ + 1.2085175150052083, + 1.040414344449609 + ], + "bBoxSW":[ + -0.18901664795724887, + -0.06105785123966942 + ] + }, + "figbass6Raised2":{ + "bBoxNE":[ + 0.8262222222222222, + 1.0964990118229705 + ], + "bBoxSW":[ + -0.04069898241168461, + 2.798378739461782e-05 + ] + }, + "figbass7":{ + "bBoxNE":[ + 0.764, + 0.909 + ], + "bBoxSW":[ + 0.08028831190300854, + -0.031397579401409616 + ] + }, + "figbass7Diminished":{ + "bBoxNE":[ + 1.0417763532470847, + 1.065842783870886 + ], + "bBoxSW":[ + 0.06044444444444444, + 0.007466506815209878 + ] + }, + "figbass7Raised1":{ + "bBoxNE":[ + 0.7204552197900097, + 1.204 + ], + "bBoxSW":[ + 0.0801813388139609, + 0.0 + ] + }, + "figbass7Raised2":{ + "bBoxNE":[ + 0.8034194606834417, + 0.9414577320296791 + ], + "bBoxSW":[ + 0.08148655129467872, + 0.023645205103780306 + ] + }, + "figbass8":{ + "bBoxNE":[ + 0.664, + 1.144 + ], + "bBoxSW":[ + 0.08, + -0.02 + ] + }, + "figbass9":{ + "bBoxNE":[ + 0.716, + 1.22 + ], + "bBoxSW":[ + 0.08, + -0.04 + ] + }, + "figbass9Raised":{ + "bBoxNE":[ + 1.028, + 1.352 + ], + "bBoxSW":[ + 0.08, + -0.064 + ] + }, + "figbassBracketLeft":{ + "bBoxNE":[ + 0.496, + 1.0661220749335956 + ], + "bBoxSW":[ + 0.0, + -0.12 + ] + }, + "figbassBracketRight":{ + "bBoxNE":[ + 0.316, + 1.00425 + ], + "bBoxSW":[ + -0.08, + -0.11252307312721768 + ] + }, + "figbassCombiningLowering":{ + "bBoxNE":[ + 1.596, + 0.776 + ], + "bBoxSW":[ + 0.0, + 0.16272348151954139 + ] + }, + "figbassCombiningRaising":{ + "bBoxNE":[ + 1.6333279884048864, + 0.8280861399092377 + ], + "bBoxSW":[ + 0.0, + 0.152 + ] + }, + "figbassDoubleFlat":{ + "bBoxNE":[ + 0.876, + 1.48 + ], + "bBoxSW":[ + 0.08, + 0.0 + ] + }, + "figbassDoubleSharp":{ + "bBoxNE":[ + 0.804, + 0.8 + ], + "bBoxSW":[ + 0.08, + 0.0 + ] + }, + "figbassFlat":{ + "bBoxNE":[ + 0.536, + 1.48 + ], + "bBoxSW":[ + 0.08, + 0.0 + ] + }, + "figbassNatural":{ + "bBoxNE":[ + 0.425, + 1.0 + ], + "bBoxSW":[ + 0.08, + -0.48 + ] + }, + "figbassParensLeft":{ + "bBoxNE":[ + 0.496, + 1.1 + ], + "bBoxSW":[ + 0.0, + -0.084 + ] + }, + "figbassParensRight":{ + "bBoxNE":[ + 0.37649110640673517, + 1.089 + ], + "bBoxSW":[ + -0.08, + -0.12 + ] + }, + "figbassPlus":{ + "bBoxNE":[ + 0.5681900158598796, + 0.801569219381653 + ], + "bBoxSW":[ + -0.0008148234794623814, + 0.208 + ] + }, + "figbassSharp":{ + "bBoxNE":[ + 0.984, + 1.28 + ], + "bBoxSW":[ + 0.08, + -0.4 + ] + }, + "fingering0":{ + "bBoxNE":[ + 0.8009123751085776, + 1.004 + ], + "bBoxSW":[ + 0.08, + -0.004 + ] + }, + "fingering0Italic":{ + "bBoxNE":[ + 0.8009123751085776, + 1.004 + ], + "bBoxSW":[ + 0.08, + -0.004 + ] + }, + "fingering1":{ + "bBoxNE":[ + 0.668, + 0.988 + ], + "bBoxSW":[ + 0.07920548073794899, + 0.0 + ] + }, + "fingering1Italic":{ + "bBoxNE":[ + 0.668, + 0.988 + ], + "bBoxSW":[ + 0.07920548073794899, + 0.0 + ] + }, + "fingering2":{ + "bBoxNE":[ + 0.8327411619664543, + 0.952 + ], + "bBoxSW":[ + 0.08, + 0.0037652081134236966 + ] + }, + "fingering2Italic":{ + "bBoxNE":[ + 0.8327411619664543, + 0.952 + ], + "bBoxSW":[ + 0.08, + 0.0037652081134236966 + ] + }, + "fingering3":{ + "bBoxNE":[ + 0.808, + 1.0060901699437494 + ], + "bBoxSW":[ + 0.08, + 0.0 + ] + }, + "fingering3Italic":{ + "bBoxNE":[ + 0.808, + 1.0060901699437494 + ], + "bBoxSW":[ + 0.08, + 0.0 + ] + }, + "fingering4":{ + "bBoxNE":[ + 0.728, + 1.1 + ], + "bBoxSW":[ + 0.07843078061834695, + -0.052 + ] + }, + "fingering4Italic":{ + "bBoxNE":[ + 0.728, + 1.1 + ], + "bBoxSW":[ + 0.07843078061834695, + -0.052 + ] + }, + "fingering5":{ + "bBoxNE":[ + 0.828, + 1.04 + ], + "bBoxSW":[ + 0.08, + 0.0 + ] + }, + "fingering5Italic":{ + "bBoxNE":[ + 0.828, + 1.04 + ], + "bBoxSW":[ + 0.08, + 0.0 + ] + }, + "fingering6":{ + "bBoxNE":[ + 0.8205, + 1.0149351873272818 + ], + "bBoxSW":[ + 0.07922396419624582, + -0.02805736772092406 + ] + }, + "fingering6Italic":{ + "bBoxNE":[ + 0.8205, + 1.0149351873272818 + ], + "bBoxSW":[ + 0.07922396419624582, + -0.02805736772092406 + ] + }, + "fingering7":{ + "bBoxNE":[ + 0.764, + 0.941 + ], + "bBoxSW":[ + 0.08028831190300854, + 0.000602420598590383 + ] + }, + "fingering7Italic":{ + "bBoxNE":[ + 0.764, + 0.941 + ], + "bBoxSW":[ + 0.08028831190300854, + 0.000602420598590383 + ] + }, + "fingering8":{ + "bBoxNE":[ + 0.664, + 1.164 + ], + "bBoxSW":[ + 0.08, + 0.0 + ] + }, + "fingering8Italic":{ + "bBoxNE":[ + 0.664, + 1.164 + ], + "bBoxSW":[ + 0.08, + 0.0 + ] + }, + "fingering9":{ + "bBoxNE":[ + 0.716, + 1.26 + ], + "bBoxSW":[ + 0.08, + 0.0 + ] + }, + "fingering9Italic":{ + "bBoxNE":[ + 0.716, + 1.26 + ], + "bBoxSW":[ + 0.08, + 0.0 + ] + }, + "fingeringALower":{ + "bBoxNE":[ + 1.052, + 0.924 + ], + "bBoxSW":[ + -0.00016658103186081055, + 0.00046335020340151803 + ] + }, + "fingeringCLower":{ + "bBoxNE":[ + 0.712, + 1.084 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "fingeringELower":{ + "bBoxNE":[ + 0.74, + 1.092 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "fingeringILower":{ + "bBoxNE":[ + 0.5570218757728939, + 1.464 + ], + "bBoxSW":[ + -0.08, + 0.0 + ] + }, + "fingeringLeftBracket":{ + "bBoxNE":[ + 0.496, + 1.0661220749335956 + ], + "bBoxSW":[ + 0.0, + -0.12 + ] + }, + "fingeringLeftBracketItalic":{ + "bBoxNE":[ + 0.496, + 1.0661220749335956 + ], + "bBoxSW":[ + 0.0, + -0.12 + ] + }, + "fingeringLeftParenthesis":{ + "bBoxNE":[ + 0.496, + 1.1 + ], + "bBoxSW":[ + 0.0, + -0.084 + ] + }, + "fingeringLeftParenthesisItalic":{ + "bBoxNE":[ + 0.496, + 1.1 + ], + "bBoxSW":[ + 0.0, + -0.084 + ] + }, + "fingeringMLower":{ + "bBoxNE":[ + 1.5144864469491868, + 1.112 + ], + "bBoxSW":[ + -0.2, + -0.072 + ] + }, + "fingeringMultipleNotes":{ + "bBoxNE":[ + 0.7065903200617957, + 1.1282148355233887 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "fingeringOLower":{ + "bBoxNE":[ + 0.94, + 1.076 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "fingeringPLower":{ + "bBoxNE":[ + 1.028, + 0.9320000000000002 + ], + "bBoxSW":[ + -0.06, + -0.6364207760265798 + ] + }, + "fingeringRightBracket":{ + "bBoxNE":[ + 0.316, + 1.00425 + ], + "bBoxSW":[ + -0.08, + -0.11252307312721768 + ] + }, + "fingeringRightBracketItalic":{ + "bBoxNE":[ + 0.316, + 1.00425 + ], + "bBoxSW":[ + -0.08, + -0.11252307312721768 + ] + }, + "fingeringRightParenthesis":{ + "bBoxNE":[ + 0.37649110640673517, + 1.089 + ], + "bBoxSW":[ + -0.08, + -0.12 + ] + }, + "fingeringRightParenthesisItalic":{ + "bBoxNE":[ + 0.37649110640673517, + 1.089 + ], + "bBoxSW":[ + -0.08, + -0.12 + ] + }, + "fingeringSeparatorMiddleDot":{ + "bBoxNE":[ + 0.6205492705633311, + 0.76 + ], + "bBoxSW":[ + 0.1, + 0.24 + ] + }, + "fingeringSeparatorMiddleDotWhite":{ + "bBoxNE":[ + 0.644, + 0.752 + ], + "bBoxSW":[ + 0.1, + 0.25043078061834695 + ] + }, + "fingeringSeparatorSlash":{ + "bBoxNE":[ + 0.728, + 1.232 + ], + "bBoxSW":[ + 0.0, + -0.25375940238539924 + ] + }, + "fingeringSubstitutionAbove":{ + "bBoxNE":[ + 1.1140443330038332, + 1.456 + ], + "bBoxSW":[ + 0.0, + 1.1 + ] + }, + "fingeringSubstitutionBelow":{ + "bBoxNE":[ + 1.112, + -0.02 + ], + "bBoxSW":[ + -0.0008749086701032453, + -0.3659581975139568 + ] + }, + "fingeringSubstitutionDash":{ + "bBoxNE":[ + 0.864, + 0.5937777777777778 + ], + "bBoxSW":[ + 0.0, + 0.4225346467576171 + ] + }, + "fingeringTLower":{ + "bBoxNE":[ + 0.8403332521512029, + 1.6844211306119696 + ], + "bBoxSW":[ + 0.0005663086753315855, + 0.0 + ] + }, + "fingeringTUpper":{ + "bBoxNE":[ + 1.092, + 0.996 + ], + "bBoxSW":[ + 0.08, + 0.0 + ] + }, + "fingeringXLower":{ + "bBoxNE":[ + 0.868, + 1.008 + ], + "bBoxSW":[ + -0.064, + 0.0 + ] + }, + "flag1024thDown":{ + "bBoxNE":[ + 1.076, + 2.812 + ], + "bBoxSW":[ + -0.024, + -4.8 + ] + }, + "flag1024thDownSmall":{ + "bBoxNE":[ + 1.244, + 3.052 + ], + "bBoxSW":[ + 0.0, + -4.616 + ] + }, + "flag1024thDownStraight":{ + "bBoxNE":[ + 1.012, + 2.0956905072135705 + ], + "bBoxSW":[ + -0.02, + -4.544 + ] + }, + "flag1024thUp":{ + "bBoxNE":[ + 1.076, + 4.32 + ], + "bBoxSW":[ + -0.024, + -3.2919464323367555 + ] + }, + "flag1024thUpShort":{ + "bBoxNE":[ + 0.996, + 4.26 + ], + "bBoxSW":[ + 0.0, + -2.4 + ] + }, + "flag1024thUpSmall":{ + "bBoxNE":[ + 1.044, + 4.6 + ], + "bBoxSW":[ + -0.024, + -2.876 + ] + }, + "flag1024thUpStraight":{ + "bBoxNE":[ + 1.036, + 4.572 + ], + "bBoxSW":[ + 0.0, + -1.992 + ] + }, + "flag128thDown":{ + "bBoxNE":[ + 1.008, + 3.016 + ], + "bBoxSW":[ + -0.0035555555555555553, + -2.32 + ] + }, + "flag128thDownSmall":{ + "bBoxNE":[ + 1.188, + 3.1639999999999997 + ], + "bBoxSW":[ + 0.0, + -2.4621533300761005 + ] + }, + "flag128thDownStraight":{ + "bBoxNE":[ + 1.012, + 2.052 + ], + "bBoxSW":[ + 0.0, + -2.28 + ] + }, + "flag128thUp":{ + "bBoxNE":[ + 1.008, + 2.12 + ], + "bBoxSW":[ + 0.0, + -3.216 + ] + }, + "flag128thUpShort":{ + "bBoxNE":[ + 0.96, + 2.316 + ], + "bBoxSW":[ + 0.0, + -2.332 + ] + }, + "flag128thUpSmall":{ + "bBoxNE":[ + 1.084, + 2.428 + ], + "bBoxSW":[ + 0.0, + -3.136 + ] + }, + "flag128thUpStraight":{ + "bBoxNE":[ + 1.016, + 2.292 + ], + "bBoxSW":[ + -0.004, + -1.96 + ] + }, + "flag16thDown":{ + "bBoxNE":[ + 1.3086365994544376, + 3.276 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "flag16thDownSmall":{ + "bBoxNE":[ + 1.188, + 2.392 + ], + "bBoxSW":[ + -0.004, + -0.78825 + ] + }, + "flag16thDownStraight":{ + "bBoxNE":[ + 0.992, + 2.0116905072135713 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "flag16thUp":{ + "bBoxNE":[ + 1.3086365994544376, + 0.0 + ], + "bBoxSW":[ + 0.0, + -3.277589038524102 + ] + }, + "flag16thUpShort":{ + "bBoxNE":[ + 0.968, + 0.0 + ], + "bBoxSW":[ + -0.003, + -2.456 + ] + }, + "flag16thUpSmall":{ + "bBoxNE":[ + 1.124460857974766, + 0.16 + ], + "bBoxSW":[ + 0.0, + -2.812 + ] + }, + "flag16thUpStraight":{ + "bBoxNE":[ + 0.9977777777777779, + 0.0 + ], + "bBoxSW":[ + 0.0, + -2.004 + ] + }, + "flag256thDown":{ + "bBoxNE":[ + 1.088, + 3.108168874537874 + ], + "bBoxSW":[ + 0.0, + -3.0 + ] + }, + "flag256thDownSmall":{ + "bBoxNE":[ + 1.216, + 3.032 + ], + "bBoxSW":[ + 0.0, + -3.172 + ] + }, + "flag256thDownStraight":{ + "bBoxNE":[ + 1.032, + 2.068 + ], + "bBoxSW":[ + 0.0, + -3.0811445100235324 + ] + }, + "flag256thUp":{ + "bBoxNE":[ + 1.088, + 2.8000000000000003 + ], + "bBoxSW":[ + 0.0, + -3.308168874537874 + ] + }, + "flag256thUpShort":{ + "bBoxNE":[ + 1.008, + 3.136 + ], + "bBoxSW":[ + -0.044, + -2.22 + ] + }, + "flag256thUpSmall":{ + "bBoxNE":[ + 1.08, + 2.988 + ], + "bBoxSW":[ + -0.02, + -3.12 + ] + }, + "flag256thUpStraight":{ + "bBoxNE":[ + 1.004, + 3.028 + ], + "bBoxSW":[ + -0.02, + -2.032 + ] + }, + "flag32ndDown":{ + "bBoxNE":[ + 1.0723769763774647, + 3.317884296391469 + ], + "bBoxSW":[ + -0.01120321149962249, + -0.6763079565820407 + ] + }, + "flag32ndDownSmall":{ + "bBoxNE":[ + 1.228, + 2.1 + ], + "bBoxSW":[ + 0.0, + -1.812 + ] + }, + "flag32ndDownStraight":{ + "bBoxNE":[ + 1.006328521939184, + 2.0527594349601435 + ], + "bBoxSW":[ + 0.0, + -0.78 + ] + }, + "flag32ndUp":{ + "bBoxNE":[ + 1.0723769763774647, + 0.5963079565820408 + ], + "bBoxSW":[ + -0.0007945192620510078, + -3.397884296391469 + ] + }, + "flag32ndUpShort":{ + "bBoxNE":[ + 1.044, + 0.8 + ], + "bBoxSW":[ + 0.0, + -2.428 + ] + }, + "flag32ndUpSmall":{ + "bBoxNE":[ + 1.092, + 0.64 + ], + "bBoxSW":[ + 0.0, + -3.528 + ] + }, + "flag32ndUpStraight":{ + "bBoxNE":[ + 0.9664967316730211, + 0.777031709235413 + ], + "bBoxSW":[ + -0.008, + -1.972 + ] + }, + "flag512thDown":{ + "bBoxNE":[ + 1.136, + 3.1801897262725904 + ], + "bBoxSW":[ + -0.024, + -3.756 + ] + }, + "flag512thDownSmall":{ + "bBoxNE":[ + 1.184, + 3.088 + ], + "bBoxSW":[ + -0.004, + -3.972 + ] + }, + "flag512thDownStraight":{ + "bBoxNE":[ + 0.98, + 2.0407411619664546 + ], + "bBoxSW":[ + 0.0, + -3.856 + ] + }, + "flag512thUp":{ + "bBoxNE":[ + 1.136, + 3.564 + ], + "bBoxSW":[ + -0.024, + -3.3721897262725906 + ] + }, + "flag512thUpShort":{ + "bBoxNE":[ + 1.076, + 3.736 + ], + "bBoxSW":[ + 0.0, + -2.24 + ] + }, + "flag512thUpSmall":{ + "bBoxNE":[ + 1.112, + 3.672 + ], + "bBoxSW":[ + 0.0, + -3.188 + ] + }, + "flag512thUpStraight":{ + "bBoxNE":[ + 1.04, + 3.744 + ], + "bBoxSW":[ + 0.0, + -2.06 + ] + }, + "flag64thDown":{ + "bBoxNE":[ + 1.124, + 3.1821721352668266 + ], + "bBoxSW":[ + -0.02, + -1.5 + ] + }, + "flag64thDownSmall":{ + "bBoxNE":[ + 1.16, + 3.0 + ], + "bBoxSW":[ + 0.0, + -1.8085175150052082 + ] + }, + "flag64thDownStraight":{ + "bBoxNE":[ + 1.012, + 1.9596905072135715 + ], + "bBoxSW":[ + 0.0017777777777777776, + -1.612 + ] + }, + "flag64thUp":{ + "bBoxNE":[ + 1.128, + 1.388 + ], + "bBoxSW":[ + -0.016, + -3.2941721352668263 + ] + }, + "flag64thUpShort":{ + "bBoxNE":[ + 0.984, + 1.452 + ], + "bBoxSW":[ + -0.028, + -2.604 + ] + }, + "flag64thUpSmall":{ + "bBoxNE":[ + 1.048, + 1.32 + ], + "bBoxSW":[ + -0.00025, + -3.436 + ] + }, + "flag64thUpStraight":{ + "bBoxNE":[ + 1.0000711111111111, + 1.58947924442898 + ], + "bBoxSW":[ + -0.00042316915539090683, + -1.952 + ] + }, + "flag8thDown":{ + "bBoxNE":[ + 1.044, + 3.276 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "flag8thDownSmall":{ + "bBoxNE":[ + 0.94, + 3.016 + ], + "bBoxSW":[ + -0.016919467536203256, + -0.04 + ] + }, + "flag8thDownStraight":{ + "bBoxNE":[ + 0.984, + 1.272 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "flag8thUp":{ + "bBoxNE":[ + 1.044, + 0.0 + ], + "bBoxSW":[ + 0.0, + -3.276 + ] + }, + "flag8thUpShort":{ + "bBoxNE":[ + 1.112, + 0.0 + ], + "bBoxSW":[ + 0.0, + -2.096 + ] + }, + "flag8thUpSmall":{ + "bBoxNE":[ + 1.012, + 0.12 + ], + "bBoxSW":[ + 0.0, + -2.9525836611985143 + ] + }, + "flag8thUpStraight":{ + "bBoxNE":[ + 0.996, + 0.0 + ], + "bBoxSW":[ + 0.0, + -1.272 + ] + }, + "flagInternalDown":{ + "bBoxNE":[ + 1.124, + 1.932 + ], + "bBoxSW":[ + 0.0, + -0.052 + ] + }, + "flagInternalUp":{ + "bBoxNE":[ + 0.90508, + 0.048 + ], + "bBoxSW":[ + 0.0, + -1.708 + ] + }, + "gClef":{ + "bBoxNE":[ + 2.656, + 4.036 + ], + "bBoxSW":[ + 0.0, + -2.236 + ] + }, + "gClef15ma":{ + "bBoxNE":[ + 2.656, + 5.402605518642711 + ], + "bBoxSW":[ + 0.0, + -2.236 + ] + }, + "gClef15mb":{ + "bBoxNE":[ + 2.656, + 4.036 + ], + "bBoxSW":[ + 0.0, + -3.54 + ] + }, + "gClef8va":{ + "bBoxNE":[ + 2.656, + 5.25282046249435 + ], + "bBoxSW":[ + 0.0, + -2.236 + ] + }, + "gClef8vb":{ + "bBoxNE":[ + 2.656, + 4.036 + ], + "bBoxSW":[ + 0.0, + -3.36 + ] + }, + "gClef8vbCClef":{ + "bBoxNE":[ + 3.288, + 4.0253896320455205 + ], + "bBoxSW":[ + 0.0, + -2.244 + ] + }, + "gClef8vbOld":{ + "bBoxNE":[ + 4.16, + 4.036 + ], + "bBoxSW":[ + 0.0, + -2.236 + ] + }, + "gClef8vbParens":{ + "bBoxNE":[ + 2.656, + 4.036 + ], + "bBoxSW":[ + 0.0, + -3.74 + ] + }, + "gClefArrowDown":{ + "bBoxNE":[ + 2.652, + 4.036 + ], + "bBoxSW":[ + 0.0, + -2.556 + ] + }, + "gClefArrowUp":{ + "bBoxNE":[ + 2.656, + 4.02 + ], + "bBoxSW":[ + 0.0, + -2.236 + ] + }, + "gClefChange":{ + "bBoxNE":[ + 1.768, + 2.596 + ], + "bBoxSW":[ + 0.0, + -1.588 + ] + }, + "gClefLigatedNumberAbove":{ + "bBoxNE":[ + 2.656, + 4.036 + ], + "bBoxSW":[ + 0.0, + -2.236 + ] + }, + "gClefLigatedNumberBelow":{ + "bBoxNE":[ + 2.652, + 4.024 + ], + "bBoxSW":[ + 0.0, + -2.6008018721948933 + ] + }, + "gClefReversed":{ + "bBoxNE":[ + 2.656, + 4.036 + ], + "bBoxSW":[ + 0.0, + -2.236 + ] + }, + "gClefSmall":{ + "bBoxNE":[ + 2.656, + 4.036 + ], + "bBoxSW":[ + 0.0, + -2.236 + ] + }, + "gClefTurned":{ + "bBoxNE":[ + 2.656, + 4.032 + ], + "bBoxSW":[ + 0.0, + -2.24 + ] + }, + "glissandoDown":{ + "bBoxNE":[ + 4.372685960588273, + 4.5 + ], + "bBoxSW":[ + 0.06, + -0.00018975732565135737 + ] + }, + "glissandoUp":{ + "bBoxNE":[ + 4.384, + 4.336383203414836 + ], + "bBoxSW":[ + 0.112, + 0.0 + ] + }, + "graceNoteAcciaccaturaStemDown":{ + "bBoxNE":[ + 0.82, + 0.31418712700437346 + ], + "bBoxSW":[ + -0.3, + -2.048 + ] + }, + "graceNoteAcciaccaturaStemUp":{ + "bBoxNE":[ + 1.368, + 2.024 + ], + "bBoxSW":[ + 0.0, + -0.32014356688601386 + ] + }, + "graceNoteAppoggiaturaStemDown":{ + "bBoxNE":[ + 0.82, + 0.31418712700437346 + ], + "bBoxSW":[ + 0.0, + -2.048 + ] + }, + "graceNoteAppoggiaturaStemUp":{ + "bBoxNE":[ + 1.148, + 2.024 + ], + "bBoxSW":[ + 0.0, + -0.32014356688601386 + ] + }, + "graceNoteSlashStemDown":{ + "bBoxNE":[ + 1.560647580015449, + 1.7278538791489932 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "graceNoteSlashStemUp":{ + "bBoxNE":[ + 1.56, + 1.7278538791489932 + ], + "bBoxSW":[ + -0.0006475800154489022, + 0.0 + ] + }, + "guitarBarreFull":{ + "bBoxNE":[ + 1.708, + 2.388 + ], + "bBoxSW":[ + 0.0, + -0.06 + ] + }, + "guitarBarreHalf":{ + "bBoxNE":[ + 3.4, + 2.428 + ], + "bBoxSW":[ + 0.0, + -0.06 + ] + }, + "guitarClosePedal":{ + "bBoxNE":[ + 1.152, + 1.12 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "guitarFadeIn":{ + "bBoxNE":[ + 1.596, + 1.636 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "guitarFadeOut":{ + "bBoxNE":[ + 1.476, + 1.54 + ], + "bBoxSW":[ + 0.0007351547197639742, + 0.0 + ] + }, + "guitarGolpe":{ + "bBoxNE":[ + 1.136, + 1.136 + ], + "bBoxSW":[ + 0.00028831190300854725, + -0.00017899247175586378 + ] + }, + "guitarHalfOpenPedal":{ + "bBoxNE":[ + 1.204, + 1.236 + ], + "bBoxSW":[ + 0.0, + -0.0005825806963091509 + ] + }, + "guitarLeftHandTapping":{ + "bBoxNE":[ + 1.552, + 1.488 + ], + "bBoxSW":[ + -0.001483563817966342, + -0.268 + ] + }, + "guitarOpenPedal":{ + "bBoxNE":[ + 1.204, + 1.236 + ], + "bBoxSW":[ + 0.0, + -0.0005825806963091509 + ] + }, + "guitarRightHandTapping":{ + "bBoxNE":[ + 0.852, + 1.0761685123122966 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "guitarShake":{ + "bBoxNE":[ + 4.464, + 1.66 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "guitarString0":{ + "bBoxNE":[ + 2.764, + 2.772 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "guitarString1":{ + "bBoxNE":[ + 2.764, + 2.772 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "guitarString2":{ + "bBoxNE":[ + 2.764, + 2.772 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "guitarString3":{ + "bBoxNE":[ + 2.764, + 2.772 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "guitarString4":{ + "bBoxNE":[ + 2.764, + 2.772 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "guitarString5":{ + "bBoxNE":[ + 2.764, + 2.772 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "guitarString6":{ + "bBoxNE":[ + 2.764, + 2.772 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "guitarString7":{ + "bBoxNE":[ + 2.764, + 2.772 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "guitarString8":{ + "bBoxNE":[ + 2.764, + 2.772 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "guitarString9":{ + "bBoxNE":[ + 2.764, + 2.772 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "guitarStrumDown":{ + "bBoxNE":[ + 0.932, + 1.908 + ], + "bBoxSW":[ + -7.324376844541902e-05, + 0.0 + ] + }, + "guitarStrumUp":{ + "bBoxNE":[ + 0.9406989824116846, + 1.916 + ], + "bBoxSW":[ + 0.0, + -0.00018209438964790335 + ] + }, + "guitarVibratoBarDip":{ + "bBoxNE":[ + 2.092, + 2.007639777949432 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "guitarVibratoBarScoop":{ + "bBoxNE":[ + 1.952, + 2.1309862284732284 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "guitarVibratoStroke":{ + "bBoxNE":[ + 0.6165523597411976, + 0.44808075661591684 + ], + "bBoxSW":[ + -0.056, + 0.0 + ] + }, + "guitarVolumeSwell":{ + "bBoxNE":[ + 3.104, + 1.636 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "guitarWideVibratoStroke":{ + "bBoxNE":[ + 0.8321975308641976, + 0.8331994113232681 + ], + "bBoxSW":[ + -0.15619555635878815, + 0.0005862068965517153 + ] + }, + "harpMetalRod":{ + "bBoxNE":[ + 2.776, + 2.204 + ], + "bBoxSW":[ + -0.00075, + -0.00015101530718510502 + ] + }, + "harpPedalCentered":{ + "bBoxNE":[ + 1.332, + 1.964 + ], + "bBoxSW":[ + 0.0, + 0.984 + ] + }, + "harpPedalDivider":{ + "bBoxNE":[ + 1.252, + 2.892 + ], + "bBoxSW":[ + -0.00011209578740816206, + 0.015868133194899228 + ] + }, + "harpPedalLowered":{ + "bBoxNE":[ + 1.268, + 1.5284444444444443 + ], + "bBoxSW":[ + 0.0, + 0.37155555555555553 + ] + }, + "harpPedalRaised":{ + "bBoxNE":[ + 1.308, + 2.608 + ], + "bBoxSW":[ + 0.0, + 1.396 + ] + }, + "harpSalzedoAeolianAscending":{ + "bBoxNE":[ + 2.052, + 4.744 + ], + "bBoxSW":[ + 0.0, + -0.079 + ] + }, + "harpSalzedoAeolianDescending":{ + "bBoxNE":[ + 1.976, + 3.6285299106658457 + ], + "bBoxSW":[ + 0.0, + -1.2 + ] + }, + "harpSalzedoDampAbove":{ + "bBoxNE":[ + 1.4, + 2.088 + ], + "bBoxSW":[ + -0.2, + -0.44 + ] + }, + "harpSalzedoDampBelow":{ + "bBoxNE":[ + 1.56, + 1.34 + ], + "bBoxSW":[ + -0.2783938769133981, + -0.996 + ] + }, + "harpSalzedoDampBothHands":{ + "bBoxNE":[ + 2.842938917210359, + 1.4081318236610083 + ], + "bBoxSW":[ + -0.252, + -0.24 + ] + }, + "harpSalzedoDampLowStrings":{ + "bBoxNE":[ + 1.512, + 2.8 + ], + "bBoxSW":[ + -0.272, + -0.356 + ] + }, + "harpSalzedoFluidicSoundsLeft":{ + "bBoxNE":[ + 0.9846114804301538, + 0.9923405307116419 + ], + "bBoxSW":[ + -0.0008125667665018363, + -0.00011663801738433222 + ] + }, + "harpSalzedoFluidicSoundsRight":{ + "bBoxNE":[ + 1.144, + 1.072 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "harpSalzedoIsolatedSounds":{ + "bBoxNE":[ + 2.116805061467041, + 2.104 + ], + "bBoxSW":[ + 0.0, + -0.00015044039647520434 + ] + }, + "harpSalzedoMetallicSounds":{ + "bBoxNE":[ + 1.6, + 2.0 + ], + "bBoxSW":[ + 0.0032226190495626677, + -0.39365500872716425 + ] + }, + "harpSalzedoMetallicSoundsOneString":{ + "bBoxNE":[ + 1.608, + 2.024 + ], + "bBoxSW":[ + 0.0, + -0.44 + ] + }, + "harpSalzedoMuffleTotally":{ + "bBoxNE":[ + 2.168, + 2.208 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "harpSalzedoOboicFlux":{ + "bBoxNE":[ + 5.42, + 1.012151797614069 + ], + "bBoxSW":[ + 0.004, + 0.0 + ] + }, + "harpSalzedoPlayUpperEnd":{ + "bBoxNE":[ + 3.556, + 2.18 + ], + "bBoxSW":[ + -0.0018290283829359673, + 0.0 + ] + }, + "harpSalzedoSlideWithSuppleness":{ + "bBoxNE":[ + 2.1722538949886867, + 3.08 + ], + "bBoxSW":[ + 0.004, + 0.0 + ] + }, + "harpSalzedoSnareDrum":{ + "bBoxNE":[ + 2.032, + 1.956 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "harpSalzedoTamTamSounds":{ + "bBoxNE":[ + 2.26, + 2.208 + ], + "bBoxSW":[ + -0.0005096679918780831, + 0.0 + ] + }, + "harpSalzedoThunderEffect":{ + "bBoxNE":[ + 3.04, + 3.096 + ], + "bBoxSW":[ + -6.339637063943826e-05, + 0.0 + ] + }, + "harpSalzedoTimpanicSounds":{ + "bBoxNE":[ + 2.14, + 2.224 + ], + "bBoxSW":[ + 0.0, + -0.0004714237952503026 + ] + }, + "harpSalzedoWhistlingSounds":{ + "bBoxNE":[ + 2.158, + 3.16 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "harpStringNoiseStem":{ + "bBoxNE":[ + 0.764, + 1.448 + ], + "bBoxSW":[ + -0.764, + -1.448 + ] + }, + "harpTuningKey":{ + "bBoxNE":[ + 2.944, + 2.964 + ], + "bBoxSW":[ + 0.0, + -0.0001506946889211086 + ] + }, + "harpTuningKeyGlissando":{ + "bBoxNE":[ + 3.312, + 3.972 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "harpTuningKeyHandle":{ + "bBoxNE":[ + 3.856, + 1.916 + ], + "bBoxSW":[ + -0.001188262172997355, + 0.064 + ] + }, + "harpTuningKeyShank":{ + "bBoxNE":[ + 2.908, + 1.9 + ], + "bBoxSW":[ + 0.0, + -0.12 + ] + }, + "indianDrumClef":{ + "bBoxNE":[ + 2.61736817737956, + 1.7680715369200806 + ], + "bBoxSW":[ + -0.0027144070560586897, + -1.9948117993956322 + ] + }, + "keyboardBebung2DotsAbove":{ + "bBoxNE":[ + 1.888, + 1.22 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "keyboardBebung2DotsBelow":{ + "bBoxNE":[ + 1.832, + 1.172 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "keyboardBebung3DotsAbove":{ + "bBoxNE":[ + 2.392, + 1.24 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "keyboardBebung3DotsBelow":{ + "bBoxNE":[ + 2.344, + 1.188 + ], + "bBoxSW":[ + 0.0, + -0.0004330481988998528 + ] + }, + "keyboardBebung4DotsAbove":{ + "bBoxNE":[ + 3.028, + 1.496 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "keyboardBebung4DotsBelow":{ + "bBoxNE":[ + 2.792, + 1.228 + ], + "bBoxSW":[ + -0.002092915969499898, + 0.0 + ] + }, + "keyboardLeftPedalPictogram":{ + "bBoxNE":[ + 1.66, + 2.116 + ], + "bBoxSW":[ + -0.09268030746221165, + -0.08 + ] + }, + "keyboardMiddlePedalPictogram":{ + "bBoxNE":[ + 1.828, + 2.008375 + ], + "bBoxSW":[ + -0.08, + -0.08 + ] + }, + "keyboardPedalD":{ + "bBoxNE":[ + 1.344, + 1.972 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "keyboardPedalDot":{ + "bBoxNE":[ + 0.504, + 0.31346085574172766 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "keyboardPedalE":{ + "bBoxNE":[ + 1.132, + 1.3364125127905724 + ], + "bBoxSW":[ + -0.0010896973055328375, + 0.0 + ] + }, + "keyboardPedalHalf":{ + "bBoxNE":[ + 2.9516582612559183, + 2.084 + ], + "bBoxSW":[ + 0.001710979952935141, + 0.0 + ] + }, + "keyboardPedalHalf2":{ + "bBoxNE":[ + 1.7700559190957763, + 1.104 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "keyboardPedalHalf3":{ + "bBoxNE":[ + 1.7288707361397027, + 1.916 + ], + "bBoxSW":[ + 0.0, + 0.804 + ] + }, + "keyboardPedalHeel1":{ + "bBoxNE":[ + 1.708, + 2.392 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "keyboardPedalHeel2":{ + "bBoxNE":[ + 1.592, + 2.256 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "keyboardPedalHeel3":{ + "bBoxNE":[ + 2.044, + 2.168 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "keyboardPedalHeelToToe":{ + "bBoxNE":[ + 3.456, + 3.316 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "keyboardPedalHeelToe":{ + "bBoxNE":[ + 1.532, + 3.372 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "keyboardPedalHookEnd":{ + "bBoxNE":[ + 0.852, + 2.136 + ], + "bBoxSW":[ + 0.0, + -0.000375982329660971 + ] + }, + "keyboardPedalHookStart":{ + "bBoxNE":[ + 0.8309389172103591, + 2.12 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "keyboardPedalHyphen":{ + "bBoxNE":[ + 1.4721334878328292, + 1.152 + ], + "bBoxSW":[ + 0.0, + 0.568 + ] + }, + "keyboardPedalP":{ + "bBoxNE":[ + 1.256, + 2.196 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "keyboardPedalParensLeft":{ + "bBoxNE":[ + 0.6600946745562131, + 2.288 + ], + "bBoxSW":[ + 0.0, + -0.12 + ] + }, + "keyboardPedalParensRight":{ + "bBoxNE":[ + 0.636, + 2.344 + ], + "bBoxSW":[ + 0.0, + -0.12 + ] + }, + "keyboardPedalPed":{ + "bBoxNE":[ + 3.776, + 2.2 + ], + "bBoxSW":[ + 0.0, + -0.052 + ] + }, + "keyboardPedalS":{ + "bBoxNE":[ + 1.296, + 2.152 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "keyboardPedalSost":{ + "bBoxNE":[ + 4.56, + 2.156 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "keyboardPedalToe1":{ + "bBoxNE":[ + 1.64875, + 2.196 + ], + "bBoxSW":[ + 0.002468461084107566, + 0.0 + ] + }, + "keyboardPedalToe2":{ + "bBoxNE":[ + 1.588, + 2.244 + ], + "bBoxSW":[ + 0.0, + -0.00034283385013026443 + ] + }, + "keyboardPedalToeToHeel":{ + "bBoxNE":[ + 3.448, + 3.24 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "keyboardPedalUp":{ + "bBoxNE":[ + 1.7464060529273349, + 1.844 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "keyboardPedalUpNotch":{ + "bBoxNE":[ + 1.125846338310782, + 2.056 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "keyboardPedalUpSpecial":{ + "bBoxNE":[ + 1.764, + 1.844 + ], + "bBoxSW":[ + 0.0, + 0.04286664469493074 + ] + }, + "keyboardPlayWithLH":{ + "bBoxNE":[ + 1.612, + 3.952 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "keyboardPlayWithLHEnd":{ + "bBoxNE":[ + 1.548, + 4.0329822128134705 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "keyboardPlayWithRH":{ + "bBoxNE":[ + 1.612, + 4.04 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "keyboardPlayWithRHEnd":{ + "bBoxNE":[ + 1.63688293687749, + 3.932 + ], + "bBoxSW":[ + 0.0018466699238995185, + 0.0 + ] + }, + "keyboardPluckInside":{ + "bBoxNE":[ + 2.104, + 1.992 + ], + "bBoxSW":[ + 0.0, + -1.104 + ] + }, + "keyboardRightPedalPictogram":{ + "bBoxNE":[ + 1.74, + 2.0324377458988856 + ], + "bBoxSW":[ + -0.08, + -0.08 + ] + }, + "leftRepeatSmall":{ + "bBoxNE":[ + 1.392, + 3.4965064885752546 + ], + "bBoxSW":[ + 0.0, + 0.5099844465947415 + ] + }, + "lyricsElision":{ + "bBoxNE":[ + 2.248, + 0.0 + ], + "bBoxSW":[ + -0.3196742114069592, + -0.5780810367098086 + ] + }, + "lyricsElisionNarrow":{ + "bBoxNE":[ + 1.612, + -0.022407838455841555 + ], + "bBoxSW":[ + -0.16, + -0.616798993049992 + ] + }, + "lyricsElisionWide":{ + "bBoxNE":[ + 3.152, + -0.011486325802615965 + ], + "bBoxSW":[ + -0.3199665572008049, + -0.544 + ] + }, + "lyricsHyphenBaseline":{ + "bBoxNE":[ + 1.344, + 0.204 + ], + "bBoxSW":[ + 0.16, + -0.204 + ] + }, + "lyricsHyphenBaselineNonBreaking":{ + "bBoxNE":[ + 1.2461021807621209, + 0.22399999999999998 + ], + "bBoxSW":[ + 0.16, + -0.22030100757588642 + ] + }, + "lyricsTextRepeat":{ + "bBoxNE":[ + 1.764, + 1.836 + ], + "bBoxSW":[ + 0.0, + -0.00038003171975932237 + ] + }, + "mensuralCombStemDiagonal":{ + "bBoxNE":[ + 0.0, + 0.0 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "mensuralCombStemDown":{ + "bBoxNE":[ + 0.0, + 0.0 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "mensuralCombStemDownFlagExtended":{ + "bBoxNE":[ + 0.0, + 0.0 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "mensuralCombStemDownFlagFlared":{ + "bBoxNE":[ + 0.0, + 0.0 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "mensuralCombStemDownFlagFusa":{ + "bBoxNE":[ + 0.0, + 0.0 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "mensuralCombStemDownFlagLeft":{ + "bBoxNE":[ + 0.0, + 0.0 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "mensuralCombStemDownFlagRight":{ + "bBoxNE":[ + 0.0, + 0.0 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "mensuralCombStemDownFlagSemiminima":{ + "bBoxNE":[ + 0.0, + 0.0 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "mensuralCombStemUp":{ + "bBoxNE":[ + 0.0, + 0.0 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "mensuralCombStemUpFlagExtended":{ + "bBoxNE":[ + 0.0, + 0.0 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "mensuralCombStemUpFlagFlared":{ + "bBoxNE":[ + 0.0, + 0.0 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "mensuralCombStemUpFlagFusa":{ + "bBoxNE":[ + 0.0, + 0.0 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "mensuralCombStemUpFlagLeft":{ + "bBoxNE":[ + 0.0, + 0.0 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "mensuralCombStemUpFlagRight":{ + "bBoxNE":[ + 0.0, + 0.0 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "mensuralCombStemUpFlagSemiminima":{ + "bBoxNE":[ + 0.0, + 0.0 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "mensuralNoteheadLongaBlack":{ + "bBoxNE":[ + 0.0, + 0.0 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "mensuralNoteheadLongaBlackVoid":{ + "bBoxNE":[ + 0.0, + 0.0 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "mensuralNoteheadLongaVoid":{ + "bBoxNE":[ + 0.0, + 0.0 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "mensuralNoteheadLongaWhite":{ + "bBoxNE":[ + 1.48, + 0.916 + ], + "bBoxSW":[ + 0.0, + -0.908 + ] + }, + "mensuralNoteheadMaximaBlack":{ + "bBoxNE":[ + 0.0, + 0.0 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "mensuralNoteheadMaximaBlackVoid":{ + "bBoxNE":[ + 0.0, + 0.0 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "mensuralNoteheadMaximaVoid":{ + "bBoxNE":[ + 0.0, + 0.0 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "mensuralNoteheadMaximaWhite":{ + "bBoxNE":[ + 2.676, + 1.036 + ], + "bBoxSW":[ + 0.0, + -1.036 + ] + }, + "mensuralNoteheadMinimaWhite":{ + "bBoxNE":[ + 1.936, + 0.996 + ], + "bBoxSW":[ + -0.00045426516935322597, + -0.996 + ] + }, + "mensuralNoteheadSemibrevisBlack":{ + "bBoxNE":[ + 0.0, + 0.0 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "mensuralNoteheadSemibrevisBlackVoid":{ + "bBoxNE":[ + 0.0, + 0.0 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "mensuralNoteheadSemibrevisBlackVoidTurned":{ + "bBoxNE":[ + 0.0, + 0.0 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "mensuralNoteheadSemibrevisVoid":{ + "bBoxNE":[ + 0.0, + 0.0 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "mensuralNoteheadSemiminimaWhite":{ + "bBoxNE":[ + 0.0, + 0.0 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "metAugmentationDot":{ + "bBoxNE":[ + 0.384, + 0.228 + ], + "bBoxSW":[ + 0.0, + -0.228 + ] + }, + "metNote1024thDown":{ + "bBoxNE":[ + 1.332, + 0.7 + ], + "bBoxSW":[ + 0.0, + -7.612 + ] + }, + "metNote1024thUp":{ + "bBoxNE":[ + 2.192, + 7.524 + ], + "bBoxSW":[ + 0.0016224971003511372, + -0.56 + ] + }, + "metNote128thDown":{ + "bBoxNE":[ + 1.328, + 0.7 + ], + "bBoxSW":[ + 0.0, + -5.708 + ] + }, + "metNote128thUp":{ + "bBoxNE":[ + 2.248, + 5.532 + ], + "bBoxSW":[ + 0.0, + -0.56 + ] + }, + "metNote16thDown":{ + "bBoxNE":[ + 1.228, + 0.66 + ], + "bBoxSW":[ + 0.0, + -2.692 + ] + }, + "metNote16thUp":{ + "bBoxNE":[ + 2.1926365994544375, + 2.664 + ], + "bBoxSW":[ + 0.0, + -0.592 + ] + }, + "metNote256thDown":{ + "bBoxNE":[ + 1.308, + 0.7 + ], + "bBoxSW":[ + 0.0, + -6.196 + ] + }, + "metNote256thUp":{ + "bBoxNE":[ + 2.26, + 6.216 + ], + "bBoxSW":[ + 0.0, + -0.56 + ] + }, + "metNote32ndDown":{ + "bBoxNE":[ + 1.308, + 0.7000000000000004 + ], + "bBoxSW":[ + 0.0, + -4.0447594349601435 + ] + }, + "metNote32ndUp":{ + "bBoxNE":[ + 2.312, + 4.14 + ], + "bBoxSW":[ + 0.0, + -0.56 + ] + }, + "metNote512thDown":{ + "bBoxNE":[ + 1.292, + 0.7 + ], + "bBoxSW":[ + 0.0, + -6.864 + ] + }, + "metNote512thUp":{ + "bBoxNE":[ + 2.264, + 6.94 + ], + "bBoxSW":[ + 0.0, + -0.56 + ] + }, + "metNote64thDown":{ + "bBoxNE":[ + 1.3, + 0.7 + ], + "bBoxSW":[ + 0.0, + -4.789407809045024 + ] + }, + "metNote64thUp":{ + "bBoxNE":[ + 2.236, + 4.848 + ], + "bBoxSW":[ + 0.0, + -0.56 + ] + }, + "metNote8thDown":{ + "bBoxNE":[ + 1.248, + 0.704 + ], + "bBoxSW":[ + 0.0, + -2.3895789806640755 + ] + }, + "metNote8thUp":{ + "bBoxNE":[ + 1.9284570849098364, + 2.315 + ], + "bBoxSW":[ + -0.0005999999999999943, + -0.5794285714285714 + ] + }, + "metNoteDoubleWhole":{ + "bBoxNE":[ + 2.45675, + 0.892 + ], + "bBoxSW":[ + -0.0017777777777777776, + -0.8921318668051008 + ] + }, + "metNoteDoubleWholeSquare":{ + "bBoxNE":[ + 1.896, + 0.844 + ], + "bBoxSW":[ + 0.0, + -0.8375692193816531 + ] + }, + "metNoteHalfDown":{ + "bBoxNE":[ + 1.24, + 0.6 + ], + "bBoxSW":[ + 0.0, + -2.392434588481236 + ] + }, + "metNoteHalfUp":{ + "bBoxNE":[ + 1.244, + 2.208 + ], + "bBoxSW":[ + 0.0, + -0.588 + ] + }, + "metNoteQuarterDown":{ + "bBoxNE":[ + 1.24, + 0.6 + ], + "bBoxSW":[ + 0.0, + -2.396 + ] + }, + "metNoteQuarterUp":{ + "bBoxNE":[ + 1.24, + 2.212 + ], + "bBoxSW":[ + 0.0, + -0.592 + ] + }, + "metNoteWhole":{ + "bBoxNE":[ + 1.5206659905000632, + 0.66 + ], + "bBoxSW":[ + 0.0, + -0.7446841162823719 + ] + }, + "note1024thDown":{ + "bBoxNE":[ + 1.332, + 0.7 + ], + "bBoxSW":[ + 0.0, + -7.612 + ] + }, + "note1024thUp":{ + "bBoxNE":[ + 2.192, + 7.524 + ], + "bBoxSW":[ + 0.0016224971003511372, + -0.56 + ] + }, + "note128thDown":{ + "bBoxNE":[ + 1.328, + 0.7 + ], + "bBoxSW":[ + 0.0, + -5.708 + ] + }, + "note128thUp":{ + "bBoxNE":[ + 2.248, + 5.532 + ], + "bBoxSW":[ + 0.0, + -0.56 + ] + }, + "note16thDown":{ + "bBoxNE":[ + 1.296, + 0.7 + ], + "bBoxSW":[ + -0.0017860745225515302, + -3.3280083754759064 + ] + }, + "note16thUp":{ + "bBoxNE":[ + 2.344, + 3.42 + ], + "bBoxSW":[ + 0.0, + -0.56 + ] + }, + "note256thDown":{ + "bBoxNE":[ + 1.308, + 0.7 + ], + "bBoxSW":[ + 0.0, + -6.196 + ] + }, + "note256thUp":{ + "bBoxNE":[ + 2.264, + 6.216 + ], + "bBoxSW":[ + 0.004, + -0.56 + ] + }, + "note32ndDown":{ + "bBoxNE":[ + 1.308, + 0.7000000000000004 + ], + "bBoxSW":[ + 0.0, + -4.0447594349601435 + ] + }, + "note32ndUp":{ + "bBoxNE":[ + 2.312, + 4.14 + ], + "bBoxSW":[ + 0.0, + -0.56 + ] + }, + "note512thDown":{ + "bBoxNE":[ + 1.292, + 0.7 + ], + "bBoxSW":[ + 0.0, + -6.864 + ] + }, + "note512thUp":{ + "bBoxNE":[ + 2.264, + 6.94 + ], + "bBoxSW":[ + 0.0, + -0.56 + ] + }, + "note64thDown":{ + "bBoxNE":[ + 1.3, + 0.7 + ], + "bBoxSW":[ + 0.0, + -4.789407809045024 + ] + }, + "note64thUp":{ + "bBoxNE":[ + 2.236, + 4.848 + ], + "bBoxSW":[ + 0.0, + -0.56 + ] + }, + "note8thDown":{ + "bBoxNE":[ + 1.296, + 0.7 + ], + "bBoxSW":[ + 0.0, + -3.3269455266367647 + ] + }, + "note8thUp":{ + "bBoxNE":[ + 2.176, + 3.36 + ], + "bBoxSW":[ + 0.0, + -0.56 + ] + }, + "noteABlack":{ + "bBoxNE":[ + 1.552, + 0.604 + ], + "bBoxSW":[ + 0.0, + -0.608 + ] + }, + "noteAFlatBlack":{ + "bBoxNE":[ + 1.552, + 0.604 + ], + "bBoxSW":[ + 0.0, + -0.608 + ] + }, + "noteAFlatHalf":{ + "bBoxNE":[ + 1.82, + 0.82 + ], + "bBoxSW":[ + 0.0, + -0.82 + ] + }, + "noteAFlatWhole":{ + "bBoxNE":[ + 2.516, + 0.628 + ], + "bBoxSW":[ + 0.0, + -0.628 + ] + }, + "noteAHalf":{ + "bBoxNE":[ + 1.82, + 0.82 + ], + "bBoxSW":[ + 0.0, + -0.82 + ] + }, + "noteASharpBlack":{ + "bBoxNE":[ + 1.552, + 0.604 + ], + "bBoxSW":[ + 0.0, + -0.608 + ] + }, + "noteASharpHalf":{ + "bBoxNE":[ + 1.82, + 0.82 + ], + "bBoxSW":[ + 0.0, + -0.82 + ] + }, + "noteASharpWhole":{ + "bBoxNE":[ + 2.516, + 0.628 + ], + "bBoxSW":[ + 0.0, + -0.628 + ] + }, + "noteAWhole":{ + "bBoxNE":[ + 2.516, + 0.628 + ], + "bBoxSW":[ + 0.0, + -0.628 + ] + }, + "noteBBlack":{ + "bBoxNE":[ + 1.552, + 0.604 + ], + "bBoxSW":[ + 0.0, + -0.608 + ] + }, + "noteBFlatBlack":{ + "bBoxNE":[ + 1.552, + 0.604 + ], + "bBoxSW":[ + 0.0, + -0.604 + ] + }, + "noteBFlatHalf":{ + "bBoxNE":[ + 1.82, + 0.82 + ], + "bBoxSW":[ + 0.0, + -0.82 + ] + }, + "noteBFlatWhole":{ + "bBoxNE":[ + 2.516, + 0.628 + ], + "bBoxSW":[ + 0.0, + -0.628 + ] + }, + "noteBHalf":{ + "bBoxNE":[ + 1.82, + 0.82 + ], + "bBoxSW":[ + 0.0, + -0.82 + ] + }, + "noteBSharpBlack":{ + "bBoxNE":[ + 1.552, + 0.604 + ], + "bBoxSW":[ + 0.0, + -0.608 + ] + }, + "noteBSharpHalf":{ + "bBoxNE":[ + 1.82, + 0.82 + ], + "bBoxSW":[ + 0.0, + -0.82 + ] + }, + "noteBSharpWhole":{ + "bBoxNE":[ + 2.516, + 0.628 + ], + "bBoxSW":[ + 0.0, + -0.628 + ] + }, + "noteBWhole":{ + "bBoxNE":[ + 2.516, + 0.628 + ], + "bBoxSW":[ + 0.0, + -0.628 + ] + }, + "noteCBlack":{ + "bBoxNE":[ + 1.552, + 0.604 + ], + "bBoxSW":[ + 0.0, + -0.608 + ] + }, + "noteCFlatBlack":{ + "bBoxNE":[ + 1.552, + 0.604 + ], + "bBoxSW":[ + 0.0, + -0.608 + ] + }, + "noteCFlatHalf":{ + "bBoxNE":[ + 1.82, + 0.82 + ], + "bBoxSW":[ + 0.0, + -0.82 + ] + }, + "noteCFlatWhole":{ + "bBoxNE":[ + 2.516, + 0.628 + ], + "bBoxSW":[ + 0.0, + -0.628 + ] + }, + "noteCHalf":{ + "bBoxNE":[ + 1.82, + 0.82 + ], + "bBoxSW":[ + 0.0, + -0.82 + ] + }, + "noteCSharpBlack":{ + "bBoxNE":[ + 1.552, + 0.604 + ], + "bBoxSW":[ + 0.0, + -0.608 + ] + }, + "noteCSharpHalf":{ + "bBoxNE":[ + 1.82, + 0.82 + ], + "bBoxSW":[ + 0.0, + -0.82 + ] + }, + "noteCSharpWhole":{ + "bBoxNE":[ + 2.516, + 0.628 + ], + "bBoxSW":[ + 0.0, + -0.628 + ] + }, + "noteCWhole":{ + "bBoxNE":[ + 2.516, + 0.628 + ], + "bBoxSW":[ + 0.0, + -0.628 + ] + }, + "noteDBlack":{ + "bBoxNE":[ + 1.552, + 0.604 + ], + "bBoxSW":[ + 0.0, + -0.608 + ] + }, + "noteDFlatBlack":{ + "bBoxNE":[ + 1.552, + 0.604 + ], + "bBoxSW":[ + 0.0, + -0.608 + ] + }, + "noteDFlatHalf":{ + "bBoxNE":[ + 1.82, + 0.82 + ], + "bBoxSW":[ + 0.0, + -0.82 + ] + }, + "noteDFlatWhole":{ + "bBoxNE":[ + 2.516, + 0.628 + ], + "bBoxSW":[ + 0.0, + -0.628 + ] + }, + "noteDHalf":{ + "bBoxNE":[ + 1.82, + 0.82 + ], + "bBoxSW":[ + 0.0, + -0.82 + ] + }, + "noteDSharpBlack":{ + "bBoxNE":[ + 1.552, + 0.604 + ], + "bBoxSW":[ + 0.0, + -0.608 + ] + }, + "noteDSharpHalf":{ + "bBoxNE":[ + 1.82, + 0.82 + ], + "bBoxSW":[ + 0.0, + -0.82 + ] + }, + "noteDSharpWhole":{ + "bBoxNE":[ + 2.516, + 0.628 + ], + "bBoxSW":[ + 0.0, + -0.628 + ] + }, + "noteDWhole":{ + "bBoxNE":[ + 2.516, + 0.628 + ], + "bBoxSW":[ + 0.0, + -0.628 + ] + }, + "noteDoBlack":{ + "bBoxNE":[ + 1.552, + 0.6080715913730201 + ], + "bBoxSW":[ + 0.0, + -0.6040768809837792 + ] + }, + "noteDoHalf":{ + "bBoxNE":[ + 1.824, + 0.82 + ], + "bBoxSW":[ + 0.0, + -0.82 + ] + }, + "noteDoWhole":{ + "bBoxNE":[ + 2.52, + 0.628 + ], + "bBoxSW":[ + 0.0, + -0.632 + ] + }, + "noteDoubleWhole":{ + "bBoxNE":[ + 2.45675, + 0.892 + ], + "bBoxSW":[ + -0.0017777777777777776, + -0.8921318668051008 + ] + }, + "noteDoubleWholeSquare":{ + "bBoxNE":[ + 1.896, + 0.844 + ], + "bBoxSW":[ + 0.0, + -0.8375692193816531 + ] + }, + "noteEBlack":{ + "bBoxNE":[ + 1.552, + 0.604 + ], + "bBoxSW":[ + 0.0, + -0.608 + ] + }, + "noteEFlatBlack":{ + "bBoxNE":[ + 1.552, + 0.604 + ], + "bBoxSW":[ + 0.0, + -0.608 + ] + }, + "noteEFlatHalf":{ + "bBoxNE":[ + 1.82, + 0.82 + ], + "bBoxSW":[ + 0.0, + -0.82 + ] + }, + "noteEFlatWhole":{ + "bBoxNE":[ + 2.516, + 0.628 + ], + "bBoxSW":[ + 0.0, + -0.628 + ] + }, + "noteEHalf":{ + "bBoxNE":[ + 1.82, + 0.82 + ], + "bBoxSW":[ + 0.0, + -0.82 + ] + }, + "noteESharpBlack":{ + "bBoxNE":[ + 1.552, + 0.604 + ], + "bBoxSW":[ + 0.0, + -0.608 + ] + }, + "noteESharpHalf":{ + "bBoxNE":[ + 1.82, + 0.82 + ], + "bBoxSW":[ + 0.0, + -0.82 + ] + }, + "noteESharpWhole":{ + "bBoxNE":[ + 2.516, + 0.628 + ], + "bBoxSW":[ + 0.0, + -0.628 + ] + }, + "noteEWhole":{ + "bBoxNE":[ + 2.516, + 0.628 + ], + "bBoxSW":[ + 0.0, + -0.628 + ] + }, + "noteEmptyBlack":{ + "bBoxNE":[ + 1.552, + 0.604 + ], + "bBoxSW":[ + 0.0, + -0.608 + ] + }, + "noteEmptyHalf":{ + "bBoxNE":[ + 1.82, + 0.82 + ], + "bBoxSW":[ + 0.0, + -0.82 + ] + }, + "noteEmptyWhole":{ + "bBoxNE":[ + 2.516, + 0.628 + ], + "bBoxSW":[ + 0.0, + -0.628 + ] + }, + "noteFBlack":{ + "bBoxNE":[ + 1.552, + 0.604 + ], + "bBoxSW":[ + 0.0, + -0.608 + ] + }, + "noteFFlatBlack":{ + "bBoxNE":[ + 1.552, + 0.604 + ], + "bBoxSW":[ + 0.0, + -0.608 + ] + }, + "noteFFlatHalf":{ + "bBoxNE":[ + 1.82, + 0.82 + ], + "bBoxSW":[ + 0.0, + -0.82 + ] + }, + "noteFFlatWhole":{ + "bBoxNE":[ + 2.516, + 0.628 + ], + "bBoxSW":[ + 0.0, + -0.628 + ] + }, + "noteFHalf":{ + "bBoxNE":[ + 1.82, + 0.82 + ], + "bBoxSW":[ + 0.0, + -0.82 + ] + }, + "noteFSharpBlack":{ + "bBoxNE":[ + 1.552, + 0.604 + ], + "bBoxSW":[ + 0.0, + -0.608 + ] + }, + "noteFSharpHalf":{ + "bBoxNE":[ + 1.82, + 0.82 + ], + "bBoxSW":[ + 0.0, + -0.82 + ] + }, + "noteFSharpWhole":{ + "bBoxNE":[ + 2.516, + 0.628 + ], + "bBoxSW":[ + 0.0, + -0.628 + ] + }, + "noteFWhole":{ + "bBoxNE":[ + 2.516, + 0.628 + ], + "bBoxSW":[ + 0.0, + -0.628 + ] + }, + "noteFaBlack":{ + "bBoxNE":[ + 1.552, + 0.6080715913730201 + ], + "bBoxSW":[ + 0.0, + -0.6040768809837792 + ] + }, + "noteFaHalf":{ + "bBoxNE":[ + 1.824, + 0.82 + ], + "bBoxSW":[ + 0.0, + -0.82 + ] + }, + "noteFaWhole":{ + "bBoxNE":[ + 2.516, + 0.632 + ], + "bBoxSW":[ + 0.0, + -0.632 + ] + }, + "noteGBlack":{ + "bBoxNE":[ + 1.552, + 0.604 + ], + "bBoxSW":[ + 0.0, + -0.608 + ] + }, + "noteGFlatBlack":{ + "bBoxNE":[ + 1.552, + 0.604 + ], + "bBoxSW":[ + 0.0, + -0.608 + ] + }, + "noteGFlatHalf":{ + "bBoxNE":[ + 1.82, + 0.82 + ], + "bBoxSW":[ + 0.0, + -0.82 + ] + }, + "noteGFlatWhole":{ + "bBoxNE":[ + 2.516, + 0.628 + ], + "bBoxSW":[ + 0.0, + -0.628 + ] + }, + "noteGHalf":{ + "bBoxNE":[ + 1.82, + 0.82 + ], + "bBoxSW":[ + 0.0, + -0.82 + ] + }, + "noteGSharpBlack":{ + "bBoxNE":[ + 1.552, + 0.604 + ], + "bBoxSW":[ + 0.0, + -0.608 + ] + }, + "noteGSharpHalf":{ + "bBoxNE":[ + 1.82, + 0.82 + ], + "bBoxSW":[ + 0.0, + -0.82 + ] + }, + "noteGSharpWhole":{ + "bBoxNE":[ + 2.516, + 0.628 + ], + "bBoxSW":[ + 0.0, + -0.628 + ] + }, + "noteGWhole":{ + "bBoxNE":[ + 2.516, + 0.628 + ], + "bBoxSW":[ + 0.0, + -0.628 + ] + }, + "noteHBlack":{ + "bBoxNE":[ + 1.552, + 0.604 + ], + "bBoxSW":[ + 0.0, + -0.608 + ] + }, + "noteHHalf":{ + "bBoxNE":[ + 1.82, + 0.82 + ], + "bBoxSW":[ + 0.0, + -0.82 + ] + }, + "noteHSharpBlack":{ + "bBoxNE":[ + 1.552, + 0.604 + ], + "bBoxSW":[ + 0.0, + -0.608 + ] + }, + "noteHSharpHalf":{ + "bBoxNE":[ + 1.82, + 0.82 + ], + "bBoxSW":[ + 0.0, + -0.82 + ] + }, + "noteHSharpWhole":{ + "bBoxNE":[ + 2.516, + 0.628 + ], + "bBoxSW":[ + 0.0, + -0.628 + ] + }, + "noteHWhole":{ + "bBoxNE":[ + 2.516, + 0.628 + ], + "bBoxSW":[ + 0.0, + -0.628 + ] + }, + "noteHalfDown":{ + "bBoxNE":[ + 1.284, + 0.776 + ], + "bBoxSW":[ + 0.0, + -3.26 + ] + }, + "noteHalfUp":{ + "bBoxNE":[ + 1.304, + 3.404 + ], + "bBoxSW":[ + 0.004, + -0.56 + ] + }, + "noteLaBlack":{ + "bBoxNE":[ + 1.552, + 0.608 + ], + "bBoxSW":[ + 0.0, + -0.604 + ] + }, + "noteLaHalf":{ + "bBoxNE":[ + 1.824, + 0.824 + ], + "bBoxSW":[ + -0.002303184771338298, + -0.8125431735985512 + ] + }, + "noteLaWhole":{ + "bBoxNE":[ + 2.52, + 0.632 + ], + "bBoxSW":[ + 0.0, + -0.628 + ] + }, + "noteMiBlack":{ + "bBoxNE":[ + 1.552, + 0.6080715913730201 + ], + "bBoxSW":[ + 0.0, + -0.6040768809837792 + ] + }, + "noteMiHalf":{ + "bBoxNE":[ + 1.824, + 0.82 + ], + "bBoxSW":[ + 0.0, + -0.82 + ] + }, + "noteMiWhole":{ + "bBoxNE":[ + 2.516, + 0.628 + ], + "bBoxSW":[ + 0.0, + -0.628 + ] + }, + "noteQuarterDown":{ + "bBoxNE":[ + 1.292, + 0.7 + ], + "bBoxSW":[ + 0.0, + -3.296 + ] + }, + "noteQuarterUp":{ + "bBoxNE":[ + 1.316, + 3.388 + ], + "bBoxSW":[ + 0.0, + -0.56 + ] + }, + "noteReBlack":{ + "bBoxNE":[ + 1.552, + 0.6080715913730201 + ], + "bBoxSW":[ + 0.0, + -0.6040768809837792 + ] + }, + "noteReHalf":{ + "bBoxNE":[ + 1.824, + 0.82 + ], + "bBoxSW":[ + 0.0, + -0.82 + ] + }, + "noteReWhole":{ + "bBoxNE":[ + 2.52, + 0.632 + ], + "bBoxSW":[ + 0.0, + -0.632 + ] + }, + "noteShapeArrowheadLeftBlack":{ + "bBoxNE":[ + 1.168, + 0.492 + ], + "bBoxSW":[ + 0.0, + -0.492 + ] + }, + "noteShapeArrowheadLeftDoubleWhole":{ + "bBoxNE":[ + 2.31275, + 0.892 + ], + "bBoxSW":[ + -0.0017777777777777776, + -0.8921318668051008 + ] + }, + "noteShapeArrowheadLeftWhite":{ + "bBoxNE":[ + 1.172, + 0.492 + ], + "bBoxSW":[ + 0.0, + -0.492 + ] + }, + "noteShapeDiamondBlack":{ + "bBoxNE":[ + 1.616, + 0.688 + ], + "bBoxSW":[ + 0.0, + -0.688 + ] + }, + "noteShapeDiamondDoubleWhole":{ + "bBoxNE":[ + 2.51275, + 0.892 + ], + "bBoxSW":[ + -0.0017777777777777776, + -0.8921318668051008 + ] + }, + "noteShapeDiamondWhite":{ + "bBoxNE":[ + 1.52, + 0.672 + ], + "bBoxSW":[ + 0.0, + -0.672 + ] + }, + "noteShapeIsoscelesTriangleBlack":{ + "bBoxNE":[ + 1.0977777777777777, + 0.516 + ], + "bBoxSW":[ + 0.0, + -0.516 + ] + }, + "noteShapeIsoscelesTriangleDoubleWhole":{ + "bBoxNE":[ + 2.25275, + 0.892 + ], + "bBoxSW":[ + -0.0017777777777777776, + -0.8921318668051008 + ] + }, + "noteShapeIsoscelesTriangleWhite":{ + "bBoxNE":[ + 1.104, + 0.5239999999999999 + ], + "bBoxSW":[ + 0.0, + -0.5155527064941695 + ] + }, + "noteShapeKeystoneBlack":{ + "bBoxNE":[ + 1.0705922932705498, + 0.48458136552049585 + ], + "bBoxSW":[ + 0.0, + -0.488 + ] + }, + "noteShapeKeystoneDoubleWhole":{ + "bBoxNE":[ + 2.08475, + 0.892 + ], + "bBoxSW":[ + -0.0017777777777777776, + -0.8921318668051008 + ] + }, + "noteShapeKeystoneWhite":{ + "bBoxNE":[ + 1.072, + 0.492 + ], + "bBoxSW":[ + 0.0, + -0.48415044039647526 + ] + }, + "noteShapeMoonBlack":{ + "bBoxNE":[ + 1.44, + 0.532 + ], + "bBoxSW":[ + 0.0, + -0.532 + ] + }, + "noteShapeMoonDoubleWhole":{ + "bBoxNE":[ + 2.51275, + 0.892 + ], + "bBoxSW":[ + -0.0017777777777777776, + -0.8921318668051008 + ] + }, + "noteShapeMoonLeftBlack":{ + "bBoxNE":[ + 1.128, + 0.496 + ], + "bBoxSW":[ + 0.0, + -0.496 + ] + }, + "noteShapeMoonLeftDoubleWhole":{ + "bBoxNE":[ + 2.27275, + 0.892 + ], + "bBoxSW":[ + -0.0017777777777777776, + -0.8921318668051008 + ] + }, + "noteShapeMoonLeftWhite":{ + "bBoxNE":[ + 1.128, + 0.496 + ], + "bBoxSW":[ + 0.0, + -0.496 + ] + }, + "noteShapeMoonWhite":{ + "bBoxNE":[ + 1.456, + 0.528 + ], + "bBoxSW":[ + 0.0, + -0.532 + ] + }, + "noteShapeQuarterMoonBlack":{ + "bBoxNE":[ + 0.984, + 0.577111111111111 + ], + "bBoxSW":[ + 0.0, + -0.5736702814052164 + ] + }, + "noteShapeQuarterMoonDoubleWhole":{ + "bBoxNE":[ + 2.12475, + 0.892 + ], + "bBoxSW":[ + -0.0017777777777777776, + -0.8921318668051008 + ] + }, + "noteShapeQuarterMoonWhite":{ + "bBoxNE":[ + 0.988, + 0.576 + ], + "bBoxSW":[ + 0.0, + -0.576 + ] + }, + "noteShapeRoundBlack":{ + "bBoxNE":[ + 1.468, + 0.6332376088978149 + ], + "bBoxSW":[ + 0.0, + -0.644 + ] + }, + "noteShapeRoundDoubleWhole":{ + "bBoxNE":[ + 2.45675, + 0.892 + ], + "bBoxSW":[ + -0.0017777777777777776, + -0.8921318668051008 + ] + }, + "noteShapeRoundWhite":{ + "bBoxNE":[ + 1.724928612953781, + 0.7447846096908265 + ], + "bBoxSW":[ + 0.0, + -0.748 + ] + }, + "noteShapeSquareBlack":{ + "bBoxNE":[ + 1.48, + 0.472 + ], + "bBoxSW":[ + 0.0, + -0.472 + ] + }, + "noteShapeSquareDoubleWhole":{ + "bBoxNE":[ + 2.7447423650840017, + 0.98 + ], + "bBoxSW":[ + -0.0017777777777777776, + -0.9801212110907641 + ] + }, + "noteShapeSquareWhite":{ + "bBoxNE":[ + 1.5, + 0.6603750000000002 + ], + "bBoxSW":[ + 0.0, + -0.6603333333333333 + ] + }, + "noteShapeTriangleLeftBlack":{ + "bBoxNE":[ + 1.464, + 0.528 + ], + "bBoxSW":[ + -0.0004105003709890296, + -0.528 + ] + }, + "noteShapeTriangleLeftDoubleWhole":{ + "bBoxNE":[ + 2.51275, + 0.892 + ], + "bBoxSW":[ + -0.0017777777777777776, + -0.8921318668051008 + ] + }, + "noteShapeTriangleLeftWhite":{ + "bBoxNE":[ + 1.4721872565718495, + 0.564 + ], + "bBoxSW":[ + 0.0, + -0.564 + ] + }, + "noteShapeTriangleRightBlack":{ + "bBoxNE":[ + 1.464410500370989, + 0.528 + ], + "bBoxSW":[ + 0.0, + -0.528 + ] + }, + "noteShapeTriangleRightDoubleWhole":{ + "bBoxNE":[ + 2.51275, + 0.892 + ], + "bBoxSW":[ + -0.0017777777777777776, + -0.8921318668051008 + ] + }, + "noteShapeTriangleRightWhite":{ + "bBoxNE":[ + 1.472, + 0.564 + ], + "bBoxSW":[ + -0.00018725657184943888, + -0.56 + ] + }, + "noteShapeTriangleRoundBlack":{ + "bBoxNE":[ + 1.396, + 0.4969544964927684 + ], + "bBoxSW":[ + 0.0, + -0.504 + ] + }, + "noteShapeTriangleRoundDoubleWhole":{ + "bBoxNE":[ + 2.40075, + 0.892 + ], + "bBoxSW":[ + -0.0017777777777777776, + -0.8921318668051008 + ] + }, + "noteShapeTriangleRoundLeftBlack":{ + "bBoxNE":[ + 1.28, + 0.504 + ], + "bBoxSW":[ + 0.0, + -0.504 + ] + }, + "noteShapeTriangleRoundLeftDoubleWhole":{ + "bBoxNE":[ + 2.35275, + 0.892 + ], + "bBoxSW":[ + -0.0017777777777777776, + -0.8921318668051008 + ] + }, + "noteShapeTriangleRoundLeftWhite":{ + "bBoxNE":[ + 1.28, + 0.504 + ], + "bBoxSW":[ + 0.0, + -0.504 + ] + }, + "noteShapeTriangleRoundWhite":{ + "bBoxNE":[ + 1.396, + 0.504 + ], + "bBoxSW":[ + 0.0, + -0.504 + ] + }, + "noteShapeTriangleUpBlack":{ + "bBoxNE":[ + 1.484, + 0.556 + ], + "bBoxSW":[ + 0.0, + -0.556 + ] + }, + "noteShapeTriangleUpDoubleWhole":{ + "bBoxNE":[ + 2.51275, + 0.892 + ], + "bBoxSW":[ + -0.0017777777777777776, + -0.8921318668051008 + ] + }, + "noteShapeTriangleUpWhite":{ + "bBoxNE":[ + 1.42, + 0.544 + ], + "bBoxSW":[ + 0.0, + -0.5309375 + ] + }, + "noteSiBlack":{ + "bBoxNE":[ + 1.552, + 0.6080715913730201 + ], + "bBoxSW":[ + 0.0, + -0.6040768809837792 + ] + }, + "noteSiHalf":{ + "bBoxNE":[ + 1.824, + 0.82 + ], + "bBoxSW":[ + 0.0, + -0.82 + ] + }, + "noteSiWhole":{ + "bBoxNE":[ + 2.52, + 0.628 + ], + "bBoxSW":[ + 0.0, + -0.632 + ] + }, + "noteSoBlack":{ + "bBoxNE":[ + 1.552, + 0.6080715913730201 + ], + "bBoxSW":[ + 0.0, + -0.6040768809837792 + ] + }, + "noteSoHalf":{ + "bBoxNE":[ + 1.824, + 0.82 + ], + "bBoxSW":[ + 0.0, + -0.82 + ] + }, + "noteSoWhole":{ + "bBoxNE":[ + 2.52, + 0.628 + ], + "bBoxSW":[ + 0.0, + -0.632 + ] + }, + "noteTiBlack":{ + "bBoxNE":[ + 1.552, + 0.608 + ], + "bBoxSW":[ + 0.0, + -0.604 + ] + }, + "noteTiHalf":{ + "bBoxNE":[ + 1.824, + 0.82 + ], + "bBoxSW":[ + 0.0, + -0.82 + ] + }, + "noteTiWhole":{ + "bBoxNE":[ + 2.512, + 0.6291129153156538 + ], + "bBoxSW":[ + 0.0, + -0.6294922776477871 + ] + }, + "noteWhole":{ + "bBoxNE":[ + 1.5206659905000632, + 0.66 + ], + "bBoxSW":[ + 0.0, + -0.7446841162823719 + ] + }, + "noteheadBlack":{ + "bBoxNE":[ + 1.3361857773586716, + 0.656 + ], + "bBoxSW":[ + 0.0, + -0.656 + ] + }, + "noteheadBlackOversized":{ + "bBoxNE":[ + 1.3361857773586716, + 0.656 + ], + "bBoxSW":[ + 0.0, + -0.656 + ] + }, + "noteheadCircleSlash":{ + "bBoxNE":[ + 1.064375982329661, + 0.536 + ], + "bBoxSW":[ + 0.0, + -0.536 + ] + }, + "noteheadCircleX":{ + "bBoxNE":[ + 1.376, + 0.7005020769037946 + ], + "bBoxSW":[ + 0.0, + -0.716 + ] + }, + "noteheadCircleXDoubleWhole":{ + "bBoxNE":[ + 1.748, + 0.876159536277652 + ], + "bBoxSW":[ + 0.0, + -0.88 + ] + }, + "noteheadCircleXHalf":{ + "bBoxNE":[ + 1.236, + 0.716 + ], + "bBoxSW":[ + 0.0, + -0.716 + ] + }, + "noteheadCircleXWhole":{ + "bBoxNE":[ + 1.292, + 0.7377850315114924 + ], + "bBoxSW":[ + 0.0, + -0.76 + ] + }, + "noteheadCircledBlack":{ + "bBoxNE":[ + 1.304, + 0.768 + ], + "bBoxSW":[ + -0.28, + -0.672 + ] + }, + "noteheadCircledBlackLarge":{ + "bBoxNE":[ + 1.684, + 0.96 + ], + "bBoxSW":[ + -0.6, + -0.96 + ] + }, + "noteheadCircledDoubleWhole":{ + "bBoxNE":[ + 2.688, + 1.164 + ], + "bBoxSW":[ + 0.0, + -1.164 + ] + }, + "noteheadCircledDoubleWholeLarge":{ + "bBoxNE":[ + 1.956, + 0.944 + ], + "bBoxSW":[ + -0.36, + -0.944 + ] + }, + "noteheadCircledHalf":{ + "bBoxNE":[ + 1.572, + 0.7 + ], + "bBoxSW":[ + -0.2, + -0.7 + ] + }, + "noteheadCircledHalfLarge":{ + "bBoxNE":[ + 1.752, + 0.904 + ], + "bBoxSW":[ + -0.264, + -0.904 + ] + }, + "noteheadCircledWhole":{ + "bBoxNE":[ + 1.888, + 0.9279999999999999 + ], + "bBoxSW":[ + -0.2, + -0.9240300396174831 + ] + }, + "noteheadCircledWholeLarge":{ + "bBoxNE":[ + 2.06, + 0.94 + ], + "bBoxSW":[ + -0.56, + -0.936 + ] + }, + "noteheadCircledXLarge":{ + "bBoxNE":[ + 1.836, + 0.9320000000000002 + ], + "bBoxSW":[ + 0.0, + -0.9287752591831394 + ] + }, + "noteheadDiamondBlack":{ + "bBoxNE":[ + 1.24, + 0.584 + ], + "bBoxSW":[ + 0.0, + -0.584 + ] + }, + "noteheadDiamondBlackOld":{ + "bBoxNE":[ + 1.136, + 0.5559999999999999 + ], + "bBoxSW":[ + 0.0018961576469080303, + -0.5385308258850338 + ] + }, + "noteheadDiamondBlackWide":{ + "bBoxNE":[ + 2.588, + 0.5360000000000001 + ], + "bBoxSW":[ + 0.0, + -0.5298535823525521 + ] + }, + "noteheadDiamondDoubleWhole":{ + "bBoxNE":[ + 1.716, + 0.884 + ], + "bBoxSW":[ + 0.0, + -0.884 + ] + }, + "noteheadDiamondDoubleWholeOld":{ + "bBoxNE":[ + 1.837745743121888, + 0.912 + ], + "bBoxSW":[ + -0.0009653934519228998, + -0.912 + ] + }, + "noteheadDiamondHalf":{ + "bBoxNE":[ + 1.18, + 0.592 + ], + "bBoxSW":[ + 0.0, + -0.592 + ] + }, + "noteheadDiamondHalfFilled":{ + "bBoxNE":[ + 1.2, + 0.58 + ], + "bBoxSW":[ + 0.0, + -0.584 + ] + }, + "noteheadDiamondHalfOld":{ + "bBoxNE":[ + 1.112, + 0.524 + ], + "bBoxSW":[ + 0.0, + -0.5116123403782813 + ] + }, + "noteheadDiamondHalfWide":{ + "bBoxNE":[ + 1.996, + 0.588 + ], + "bBoxSW":[ + 0.0, + -0.588 + ] + }, + "noteheadDiamondOpen":{ + "bBoxNE":[ + 1.524, + 0.596 + ], + "bBoxSW":[ + 0.0, + -0.596 + ] + }, + "noteheadDiamondWhite":{ + "bBoxNE":[ + 1.048, + 0.51238538706647 + ], + "bBoxSW":[ + 0.0, + -0.516 + ] + }, + "noteheadDiamondWhiteWide":{ + "bBoxNE":[ + 2.34, + 0.576 + ], + "bBoxSW":[ + 0.0, + -0.5698213209169694 + ] + }, + "noteheadDiamondWhole":{ + "bBoxNE":[ + 1.084, + 0.528 + ], + "bBoxSW":[ + 0.0, + -0.528 + ] + }, + "noteheadDiamondWholeOld":{ + "bBoxNE":[ + 1.304, + 0.5639999999999998 + ], + "bBoxSW":[ + 0.0, + -0.5419999745773445 + ] + }, + "noteheadDoubleWhole":{ + "bBoxNE":[ + 2.45675, + 0.892 + ], + "bBoxSW":[ + -0.0017777777777777776, + -0.8921318668051008 + ] + }, + "noteheadDoubleWholeOversized":{ + "bBoxNE":[ + 2.45675, + 0.892 + ], + "bBoxSW":[ + -0.0017777777777777776, + -0.8921318668051008 + ] + }, + "noteheadDoubleWholeSquare":{ + "bBoxNE":[ + 1.896, + 0.844 + ], + "bBoxSW":[ + 0.0, + -0.8375692193816531 + ] + }, + "noteheadDoubleWholeSquareOversized":{ + "bBoxNE":[ + 1.896, + 0.844 + ], + "bBoxSW":[ + 0.0, + -0.8375692193816531 + ] + }, + "noteheadDoubleWholeWithX":{ + "bBoxNE":[ + 2.532, + 0.836 + ], + "bBoxSW":[ + 0.0, + -0.836 + ] + }, + "noteheadHalf":{ + "bBoxNE":[ + 1.336, + 0.7 + ], + "bBoxSW":[ + 0.0, + -0.696 + ] + }, + "noteheadHalfFilled":{ + "bBoxNE":[ + 1.284, + 0.524 + ], + "bBoxSW":[ + -0.004, + -0.52 + ] + }, + "noteheadHalfOversized":{ + "bBoxNE":[ + 1.336, + 0.7 + ], + "bBoxSW":[ + 0.0, + -0.696 + ] + }, + "noteheadHalfWithX":{ + "bBoxNE":[ + 2.08, + 0.608 + ], + "bBoxSW":[ + 0.0, + -0.5946947569105469 + ] + }, + "noteheadHeavyX":{ + "bBoxNE":[ + 1.912, + 0.568 + ], + "bBoxSW":[ + 0.0, + -0.568 + ] + }, + "noteheadHeavyXHat":{ + "bBoxNE":[ + 2.12, + 0.808 + ], + "bBoxSW":[ + -0.16, + -0.808 + ] + }, + "noteheadLargeArrowDownBlack":{ + "bBoxNE":[ + 1.404, + 1.064 + ], + "bBoxSW":[ + 0.0, + -0.564 + ] + }, + "noteheadLargeArrowDownDoubleWhole":{ + "bBoxNE":[ + 2.288, + 1.472 + ], + "bBoxSW":[ + 0.0, + -0.972 + ] + }, + "noteheadLargeArrowDownHalf":{ + "bBoxNE":[ + 1.64, + 1.0729657453878187 + ], + "bBoxSW":[ + 0.0, + -0.58 + ] + }, + "noteheadLargeArrowDownWhole":{ + "bBoxNE":[ + 1.616, + 1.092 + ], + "bBoxSW":[ + -0.004, + -0.592 + ] + }, + "noteheadLargeArrowUpBlack":{ + "bBoxNE":[ + 1.404, + 1.060137707814822 + ], + "bBoxSW":[ + 0.0, + -0.5607423650840018 + ] + }, + "noteheadLargeArrowUpDoubleWhole":{ + "bBoxNE":[ + 2.288, + 1.48 + ], + "bBoxSW":[ + 0.0, + -0.96 + ] + }, + "noteheadLargeArrowUpHalf":{ + "bBoxNE":[ + 1.64, + 1.076 + ], + "bBoxSW":[ + 0.0, + -0.576 + ] + }, + "noteheadLargeArrowUpWhole":{ + "bBoxNE":[ + 1.616, + 1.088 + ], + "bBoxSW":[ + -0.004, + -0.588 + ] + }, + "noteheadMoonBlack":{ + "bBoxNE":[ + 1.312, + 0.5 + ], + "bBoxSW":[ + 0.0, + -0.5 + ] + }, + "noteheadMoonWhite":{ + "bBoxNE":[ + 1.317429790217091, + 0.596 + ], + "bBoxSW":[ + 0.0, + -0.596 + ] + }, + "noteheadNull":{ + "bBoxNE":[ + 0.0, + 0.0 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "noteheadParenthesis":{ + "bBoxNE":[ + 1.316, + 0.804 + ], + "bBoxSW":[ + -0.2807604480880881, + -0.784 + ] + }, + "noteheadParenthesisLeft":{ + "bBoxNE":[ + 0.424, + 0.788 + ], + "bBoxSW":[ + 0.0, + -0.788 + ] + }, + "noteheadParenthesisRight":{ + "bBoxNE":[ + 0.328, + 0.8240000000000001 + ], + "bBoxSW":[ + -0.12, + -0.7963371637152467 + ] + }, + "noteheadPlusBlack":{ + "bBoxNE":[ + 1.3334008329999503, + 0.64 + ], + "bBoxSW":[ + 0.004, + -0.644 + ] + }, + "noteheadPlusDoubleWhole":{ + "bBoxNE":[ + 2.096, + 0.88 + ], + "bBoxSW":[ + 0.0, + -0.88 + ] + }, + "noteheadPlusHalf":{ + "bBoxNE":[ + 1.136, + 0.528 + ], + "bBoxSW":[ + -0.0010076404686737135, + -0.536 + ] + }, + "noteheadPlusWhole":{ + "bBoxNE":[ + 1.436, + 0.656 + ], + "bBoxSW":[ + 0.0, + -0.656 + ] + }, + "noteheadRoundBlack":{ + "bBoxNE":[ + 0.96, + 0.516701003880988 + ], + "bBoxSW":[ + 0.0, + -0.532 + ] + }, + "noteheadRoundBlackDoubleSlashed":{ + "bBoxNE":[ + 1.1525999999999998, + 0.764 + ], + "bBoxSW":[ + -0.256, + -0.764 + ] + }, + "noteheadRoundBlackLarge":{ + "bBoxNE":[ + 2.052742365084002, + 1.02 + ], + "bBoxSW":[ + 0.0, + -1.0095 + ] + }, + "noteheadRoundBlackSlashed":{ + "bBoxNE":[ + 2.224, + 1.821569219381653 + ], + "bBoxSW":[ + -1.212, + -1.824 + ] + }, + "noteheadRoundBlackSlashedLarge":{ + "bBoxNE":[ + 2.928, + 1.9451454526457828 + ], + "bBoxSW":[ + -0.797475462815587, + -1.968 + ] + }, + "noteheadRoundWhite":{ + "bBoxNE":[ + 1.04, + 0.5799999999999998 + ], + "bBoxSW":[ + 0.0, + -0.5726327501715056 + ] + }, + "noteheadRoundWhiteDoubleSlashed":{ + "bBoxNE":[ + 1.205374471137217, + 0.772 + ], + "bBoxSW":[ + -0.2244300404257955, + -0.772 + ] + }, + "noteheadRoundWhiteLarge":{ + "bBoxNE":[ + 1.796, + 0.948 + ], + "bBoxSW":[ + -0.00010369561423623803, + -0.948 + ] + }, + "noteheadRoundWhiteSlashed":{ + "bBoxNE":[ + 2.26, + 1.8325 + ], + "bBoxSW":[ + -1.2, + -1.848 + ] + }, + "noteheadRoundWhiteSlashedLarge":{ + "bBoxNE":[ + 2.866204081632653, + 1.9567664068296704 + ], + "bBoxSW":[ + -0.824, + -1.964 + ] + }, + "noteheadRoundWhiteWithDot":{ + "bBoxNE":[ + 1.0, + 0.544 + ], + "bBoxSW":[ + 0.0, + -0.54 + ] + }, + "noteheadRoundWhiteWithDotLarge":{ + "bBoxNE":[ + 1.936, + 0.9816030954245171 + ], + "bBoxSW":[ + 0.0, + -1.008 + ] + }, + "noteheadSlashDiamondWhite":{ + "bBoxNE":[ + 1.936, + 0.996 + ], + "bBoxSW":[ + -0.00045426516935322597, + -0.996 + ] + }, + "noteheadSlashDiamondWhiteOversized":{ + "bBoxNE":[ + 2.262852961485908, + 1.056 + ], + "bBoxSW":[ + 0.0, + -1.056 + ] + }, + "noteheadSlashHorizontalEnds":{ + "bBoxNE":[ + 1.952, + 1.016 + ], + "bBoxSW":[ + 0.0, + -1.016 + ] + }, + "noteheadSlashHorizontalEndsMuted":{ + "bBoxNE":[ + 2.0891606260280597, + 1.08 + ], + "bBoxSW":[ + 0.0, + -1.08 + ] + }, + "noteheadSlashHorizontalEndsOversized":{ + "bBoxNE":[ + 2.12, + 0.836 + ], + "bBoxSW":[ + 0.0, + -0.836 + ] + }, + "noteheadSlashVerticalEnds":{ + "bBoxNE":[ + 1.5967350647362943, + 0.5800000000000001 + ], + "bBoxSW":[ + 0.0, + -0.568777418515894 + ] + }, + "noteheadSlashVerticalEndsMuted":{ + "bBoxNE":[ + 1.6068347970809915, + 1.128 + ], + "bBoxSW":[ + 0.0, + -1.128 + ] + }, + "noteheadSlashVerticalEndsOversized":{ + "bBoxNE":[ + 2.12, + 0.836 + ], + "bBoxSW":[ + 0.0, + -0.836 + ] + }, + "noteheadSlashVerticalEndsSmall":{ + "bBoxNE":[ + 0.856, + 0.412 + ], + "bBoxSW":[ + 0.0, + -0.412 + ] + }, + "noteheadSlashVerticalEndsSmallOversized":{ + "bBoxNE":[ + 1.296, + 0.616 + ], + "bBoxSW":[ + 0.0, + -0.616 + ] + }, + "noteheadSlashWhiteDoubleWhole":{ + "bBoxNE":[ + 4.764, + 1.1320000000000001 + ], + "bBoxSW":[ + 0.0, + -1.1281784535355535 + ] + }, + "noteheadSlashWhiteHalf":{ + "bBoxNE":[ + 2.92, + 0.972 + ], + "bBoxSW":[ + 0.0, + -0.972 + ] + }, + "noteheadSlashWhiteMuted":{ + "bBoxNE":[ + 2.908, + 1.364 + ], + "bBoxSW":[ + 0.0, + -1.364 + ] + }, + "noteheadSlashWhiteWhole":{ + "bBoxNE":[ + 3.8180216252989583, + 1.024 + ], + "bBoxSW":[ + 0.0, + -1.0181533300761005 + ] + }, + "noteheadSlashX":{ + "bBoxNE":[ + 2.116, + 1.02 + ], + "bBoxSW":[ + 0.0, + -1.02 + ] + }, + "noteheadSlashedBlack1":{ + "bBoxNE":[ + 1.808, + 0.76 + ], + "bBoxSW":[ + -0.44, + -0.76 + ] + }, + "noteheadSlashedBlack2":{ + "bBoxNE":[ + 1.62, + 0.756 + ], + "bBoxSW":[ + -0.336, + -0.756 + ] + }, + "noteheadSlashedDoubleWhole1":{ + "bBoxNE":[ + 2.788, + 1.16 + ], + "bBoxSW":[ + 0.0, + -1.16 + ] + }, + "noteheadSlashedDoubleWhole2":{ + "bBoxNE":[ + 2.789893390928323, + 1.18 + ], + "bBoxSW":[ + -0.0004954642256422103, + -1.18 + ] + }, + "noteheadSlashedHalf1":{ + "bBoxNE":[ + 1.884, + 0.736 + ], + "bBoxSW":[ + -0.3173740478089976, + -0.736 + ] + }, + "noteheadSlashedHalf2":{ + "bBoxNE":[ + 1.816, + 0.752 + ], + "bBoxSW":[ + -0.292, + -0.752 + ] + }, + "noteheadSlashedWhole1":{ + "bBoxNE":[ + 1.992, + 0.672 + ], + "bBoxSW":[ + -0.304, + -0.672 + ] + }, + "noteheadSlashedWhole2":{ + "bBoxNE":[ + 2.04, + 0.792 + ], + "bBoxSW":[ + -0.332, + -0.804 + ] + }, + "noteheadSquareBlack":{ + "bBoxNE":[ + 1.368, + 0.5297777777777778 + ], + "bBoxSW":[ + 0.0, + -0.5199584775086505 + ] + }, + "noteheadSquareBlackLarge":{ + "bBoxNE":[ + 1.984, + 1.0159999999999998 + ], + "bBoxSW":[ + -0.00044790075672411825, + -1.0124150079299399 + ] + }, + "noteheadSquareBlackWhite":{ + "bBoxNE":[ + 1.96, + 0.98 + ], + "bBoxSW":[ + 0.0, + -0.98 + ] + }, + "noteheadSquareWhite":{ + "bBoxNE":[ + 1.4, + 0.524 + ], + "bBoxSW":[ + 0.0, + -0.524 + ] + }, + "noteheadTriangleDownBlack":{ + "bBoxNE":[ + 1.384, + 0.596 + ], + "bBoxSW":[ + 0.0, + -0.596 + ] + }, + "noteheadTriangleDownDoubleWhole":{ + "bBoxNE":[ + 2.04, + 0.852 + ], + "bBoxSW":[ + 0.0, + -0.852 + ] + }, + "noteheadTriangleDownHalf":{ + "bBoxNE":[ + 1.364, + 0.636 + ], + "bBoxSW":[ + -0.00033325215120288477, + -0.636 + ] + }, + "noteheadTriangleDownWhite":{ + "bBoxNE":[ + 1.444, + 0.608 + ], + "bBoxSW":[ + 0.0, + -0.612 + ] + }, + "noteheadTriangleDownWhole":{ + "bBoxNE":[ + 1.464, + 0.552 + ], + "bBoxSW":[ + 0.0, + -0.58 + ] + }, + "noteheadTriangleLeftBlack":{ + "bBoxNE":[ + 1.5646216701119973, + 0.568 + ], + "bBoxSW":[ + 0.0, + -0.568 + ] + }, + "noteheadTriangleLeftWhite":{ + "bBoxNE":[ + 1.716, + 0.596 + ], + "bBoxSW":[ + -0.0005, + -0.716 + ] + }, + "noteheadTriangleRightBlack":{ + "bBoxNE":[ + 1.592, + 0.56 + ], + "bBoxSW":[ + -0.001333181265009003, + -0.556 + ] + }, + "noteheadTriangleRightWhite":{ + "bBoxNE":[ + 1.772, + 0.556 + ], + "bBoxSW":[ + 0.0, + -0.676 + ] + }, + "noteheadTriangleRoundDownBlack":{ + "bBoxNE":[ + 1.336, + 0.544 + ], + "bBoxSW":[ + 0.0, + -0.5351441635175331 + ] + }, + "noteheadTriangleRoundDownWhite":{ + "bBoxNE":[ + 1.316, + 0.548 + ], + "bBoxSW":[ + 0.0, + -0.548 + ] + }, + "noteheadTriangleUpBlack":{ + "bBoxNE":[ + 1.384, + 0.596 + ], + "bBoxSW":[ + 0.0, + -0.596 + ] + }, + "noteheadTriangleUpDoubleWhole":{ + "bBoxNE":[ + 2.04, + 0.852 + ], + "bBoxSW":[ + 0.0, + -0.852 + ] + }, + "noteheadTriangleUpHalf":{ + "bBoxNE":[ + 1.364333252151203, + 0.636 + ], + "bBoxSW":[ + 0.0, + -0.636 + ] + }, + "noteheadTriangleUpRightBlack":{ + "bBoxNE":[ + 1.564, + 0.568 + ], + "bBoxSW":[ + -0.0006216701119973081, + -0.568 + ] + }, + "noteheadTriangleUpRightWhite":{ + "bBoxNE":[ + 1.5605960588272991, + 0.596 + ], + "bBoxSW":[ + 0.0, + -0.596 + ] + }, + "noteheadTriangleUpWhite":{ + "bBoxNE":[ + 1.444, + 0.6082545192254745 + ], + "bBoxSW":[ + 0.0, + -0.612 + ] + }, + "noteheadTriangleUpWhole":{ + "bBoxNE":[ + 1.464, + 0.552 + ], + "bBoxSW":[ + 0.0, + -0.58 + ] + }, + "noteheadVoidWithX":{ + "bBoxNE":[ + 1.436, + 0.568 + ], + "bBoxSW":[ + 0.0, + -0.568 + ] + }, + "noteheadWhole":{ + "bBoxNE":[ + 1.5206659905000632, + 0.66 + ], + "bBoxSW":[ + 0.0, + -0.7446841162823719 + ] + }, + "noteheadWholeFilled":{ + "bBoxNE":[ + 1.956, + 0.52 + ], + "bBoxSW":[ + 0.0, + -0.52 + ] + }, + "noteheadWholeOversized":{ + "bBoxNE":[ + 1.5206659905000632, + 0.66 + ], + "bBoxSW":[ + 0.0, + -0.7446841162823719 + ] + }, + "noteheadWholeWithX":{ + "bBoxNE":[ + 1.904, + 0.628 + ], + "bBoxSW":[ + 0.0, + -0.628 + ] + }, + "noteheadXBlack":{ + "bBoxNE":[ + 1.156, + 0.628 + ], + "bBoxSW":[ + 0.0, + -0.624 + ] + }, + "noteheadXDoubleWhole":{ + "bBoxNE":[ + 2.92, + 1.068 + ], + "bBoxSW":[ + 0.0, + -1.064 + ] + }, + "noteheadXHalf":{ + "bBoxNE":[ + 1.684, + 0.6040000000000001 + ], + "bBoxSW":[ + 0.0, + -0.5820737931275898 + ] + }, + "noteheadXOrnate":{ + "bBoxNE":[ + 1.232, + 0.684 + ], + "bBoxSW":[ + -0.00021520562153068567, + -0.684 + ] + }, + "noteheadXOrnateEllipse":{ + "bBoxNE":[ + 1.48, + 0.996 + ], + "bBoxSW":[ + -0.32, + -0.996 + ] + }, + "noteheadXWhole":{ + "bBoxNE":[ + 2.024, + 0.5760000000000001 + ], + "bBoxSW":[ + 0.0, + -0.5723293283597172 + ] + }, + "null":{ + "bBoxNE":[ + 1.548, + 1.644 + ], + "bBoxSW":[ + -0.1, + -1.424 + ] + }, + "octaveBaselineA":{ + "bBoxNE":[ + 0.732, + 1.072 + ], + "bBoxSW":[ + 0.0, + -0.12324322347459335 + ] + }, + "octaveBaselineB":{ + "bBoxNE":[ + 0.764, + 1.5523832034148353 + ], + "bBoxSW":[ + 0.0, + 0.024 + ] + }, + "octaveBaselineM":{ + "bBoxNE":[ + 0.94, + 1.1510656273186815 + ], + "bBoxSW":[ + -0.0008187309701313268, + -0.08 + ] + }, + "octaveBaselineV":{ + "bBoxNE":[ + 0.828, + 0.984 + ], + "bBoxSW":[ + -0.0017959183673469283, + 0.07169534090968686 + ] + }, + "octaveBassa":{ + "bBoxNE":[ + 3.8163800317197594, + 1.608 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "octaveLoco":{ + "bBoxNE":[ + 3.032, + 1.539292991422187 + ], + "bBoxSW":[ + 0.0, + -0.068 + ] + }, + "octaveParensLeft":{ + "bBoxNE":[ + 0.588, + 2.0 + ], + "bBoxSW":[ + -0.0005259605882729924, + -0.08 + ] + }, + "octaveParensRight":{ + "bBoxNE":[ + 0.52, + 2.092 + ], + "bBoxSW":[ + -0.104, + -0.08 + ] + }, + "octaveSuperscriptA":{ + "bBoxNE":[ + 0.732, + 1.704 + ], + "bBoxSW":[ + 0.0, + 0.5087567765254066 + ] + }, + "octaveSuperscriptB":{ + "bBoxNE":[ + 0.764, + 2.3563832034148353 + ], + "bBoxSW":[ + 0.0, + 0.828 + ] + }, + "octaveSuperscriptM":{ + "bBoxNE":[ + 0.94, + 1.9430656273186815 + ], + "bBoxSW":[ + -0.0008187309701313268, + 0.712 + ] + }, + "octaveSuperscriptV":{ + "bBoxNE":[ + 0.828, + 1.644 + ], + "bBoxSW":[ + -0.0017959183673469283, + 0.7316953409096868 + ] + }, + "oneHandedRollStevens":{ + "bBoxNE":[ + 1.052, + 0.824 + ], + "bBoxSW":[ + -1.052, + 0.0 + ] + }, + "ornamentComma":{ + "bBoxNE":[ + 0.4645285081097107, + 0.88 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "ornamentDoubleObliqueLinesAfterNote":{ + "bBoxNE":[ + 1.924, + 2.244 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "ornamentDoubleObliqueLinesBeforeNote":{ + "bBoxNE":[ + 2.06, + 2.312 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "ornamentDownCurve":{ + "bBoxNE":[ + 1.516, + 0.544 + ], + "bBoxSW":[ + 0.0, + -0.0007497108990313563 + ] + }, + "ornamentHaydn":{ + "bBoxNE":[ + 2.0, + 1.0401897262725905 + ], + "bBoxSW":[ + 0.0, + -0.4043068391772179 + ] + }, + "ornamentHookAfterNote":{ + "bBoxNE":[ + 2.096, + 1.36 + ], + "bBoxSW":[ + -0.0009657453878187967, + 0.0 + ] + }, + "ornamentHookBeforeNote":{ + "bBoxNE":[ + 1.596, + 1.408 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "ornamentLeftFacingHalfCircle":{ + "bBoxNE":[ + 0.704, + 1.988 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "ornamentLeftFacingHook":{ + "bBoxNE":[ + 0.88, + 1.8192872536767064 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "ornamentMordent":{ + "bBoxNE":[ + 2.8, + 1.988 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "ornamentObliqueLineAfterNote":{ + "bBoxNE":[ + 1.225569219381653, + 2.068 + ], + "bBoxSW":[ + 0.004, + 0.0 + ] + }, + "ornamentObliqueLineBeforeNote":{ + "bBoxNE":[ + 1.068, + 2.216 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "ornamentObliqueLineHorizAfterNote":{ + "bBoxNE":[ + 2.0564393647890826, + 0.56 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "ornamentObliqueLineHorizBeforeNote":{ + "bBoxNE":[ + 2.192, + 0.476 + ], + "bBoxSW":[ + -0.00020338496365828007, + 0.0 + ] + }, + "ornamentPinceCouperin":{ + "bBoxNE":[ + 2.424, + 2.024 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "ornamentPortDeVoixV":{ + "bBoxNE":[ + 1.652, + 2.38 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "ornamentPrecompAppoggTrill":{ + "bBoxNE":[ + 4.264, + 2.132682580968443 + ], + "bBoxSW":[ + -0.00044268768528102245, + -0.2 + ] + }, + "ornamentPrecompAppoggTrillSuffix":{ + "bBoxNE":[ + 3.332, + 2.432 + ], + "bBoxSW":[ + 0.0, + -0.08 + ] + }, + "ornamentPrecompCadence":{ + "bBoxNE":[ + 4.268, + 1.564 + ], + "bBoxSW":[ + 0.0, + -0.012 + ] + }, + "ornamentPrecompCadenceUpperPrefix":{ + "bBoxNE":[ + 3.724, + 1.136 + ], + "bBoxSW":[ + -0.002500991495403369, + -0.08 + ] + }, + "ornamentPrecompCadenceUpperPrefixTurn":{ + "bBoxNE":[ + 4.328, + 1.92 + ], + "bBoxSW":[ + 0.0, + -0.76 + ] + }, + "ornamentPrecompCadenceWithTurn":{ + "bBoxNE":[ + 4.668, + 1.58 + ], + "bBoxSW":[ + 0.0, + -0.696 + ] + }, + "ornamentPrecompDescendingSlide":{ + "bBoxNE":[ + 4.264328157299975, + 1.088 + ], + "bBoxSW":[ + 0.0, + -0.28 + ] + }, + "ornamentPrecompDoubleCadenceLowerPrefix":{ + "bBoxNE":[ + 5.288, + 1.396 + ], + "bBoxSW":[ + 0.0, + -0.04 + ] + }, + "ornamentPrecompDoubleCadenceUpperPrefix":{ + "bBoxNE":[ + 4.984, + 1.1841211442008786 + ], + "bBoxSW":[ + 0.0, + -0.12 + ] + }, + "ornamentPrecompDoubleCadenceUpperPrefixTurn":{ + "bBoxNE":[ + 4.904, + 1.744 + ], + "bBoxSW":[ + 0.0, + -0.948 + ] + }, + "ornamentPrecompInvertedMordentUpperPrefix":{ + "bBoxNE":[ + 4.604, + 1.8882340586811532 + ], + "bBoxSW":[ + 0.0, + -0.6 + ] + }, + "ornamentPrecompMordentRelease":{ + "bBoxNE":[ + 2.944, + 2.236 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "ornamentPrecompMordentUpperPrefix":{ + "bBoxNE":[ + 4.604, + 1.7344329976120478 + ], + "bBoxSW":[ + -0.0003684300237586062, + -0.12 + ] + }, + "ornamentPrecompPortDeVoixMordent":{ + "bBoxNE":[ + 5.688, + 1.936 + ], + "bBoxSW":[ + -0.0005528108265157243, + -1.16 + ] + }, + "ornamentPrecompSlide":{ + "bBoxNE":[ + 4.168, + 1.404 + ], + "bBoxSW":[ + 0.0, + -0.048 + ] + }, + "ornamentPrecompSlideTrillBach":{ + "bBoxNE":[ + 4.74, + 1.86 + ], + "bBoxSW":[ + 0.0, + -1.52 + ] + }, + "ornamentPrecompSlideTrillDAnglebert":{ + "bBoxNE":[ + 4.352, + 1.008 + ], + "bBoxSW":[ + 0.0, + -1.52 + ] + }, + "ornamentPrecompSlideTrillMarpurg":{ + "bBoxNE":[ + 4.4042734832833, + 1.572 + ], + "bBoxSW":[ + 0.0, + -1.456 + ] + }, + "ornamentPrecompSlideTrillMuffat":{ + "bBoxNE":[ + 5.7, + 1.968 + ], + "bBoxSW":[ + 0.0, + -0.8 + ] + }, + "ornamentPrecompSlideTrillSuffixMuffat":{ + "bBoxNE":[ + 4.436, + 2.008 + ], + "bBoxSW":[ + 0.0, + -0.808 + ] + }, + "ornamentPrecompTrillLowerSuffix":{ + "bBoxNE":[ + 3.332, + 1.276 + ], + "bBoxSW":[ + 0.0, + -1.236 + ] + }, + "ornamentPrecompTrillSuffixDandrieu":{ + "bBoxNE":[ + 4.012, + 2.084 + ], + "bBoxSW":[ + 0.0, + -0.08 + ] + }, + "ornamentPrecompTrillWithMordent":{ + "bBoxNE":[ + 3.7831384387633062, + 1.908 + ], + "bBoxSW":[ + 0.0, + -0.64 + ] + }, + "ornamentPrecompTurnTrillBach":{ + "bBoxNE":[ + 5.548, + 1.768 + ], + "bBoxSW":[ + 0.0, + -0.676 + ] + }, + "ornamentPrecompTurnTrillDAnglebert":{ + "bBoxNE":[ + 6.261846338310782, + 2.075245553203368 + ], + "bBoxSW":[ + 0.0, + -0.24 + ] + }, + "ornamentRightFacingHalfCircle":{ + "bBoxNE":[ + 0.66, + 2.032 + ], + "bBoxSW":[ + 0.0, + -0.0005960588272992446 + ] + }, + "ornamentRightFacingHook":{ + "bBoxNE":[ + 0.7963810755866904, + 1.94 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "ornamentSchleifer":{ + "bBoxNE":[ + 4.224, + 2.616 + ], + "bBoxSW":[ + -0.0009144471356126474, + -0.2 + ] + }, + "ornamentShake3":{ + "bBoxNE":[ + 1.14, + 1.2 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "ornamentShakeMuffat1":{ + "bBoxNE":[ + 1.172, + 2.108 + ], + "bBoxSW":[ + -0.0001546878700493295, + 0.16 + ] + }, + "ornamentShortObliqueLineAfterNote":{ + "bBoxNE":[ + 0.8, + 1.132 + ], + "bBoxSW":[ + 0.0016229005743230137, + 0.0 + ] + }, + "ornamentShortObliqueLineBeforeNote":{ + "bBoxNE":[ + 0.804, + 1.2675764559445284 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "ornamentShortTrill":{ + "bBoxNE":[ + 2.988, + 0.972 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "ornamentTremblement":{ + "bBoxNE":[ + 3.928707658144959, + 0.896 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "ornamentTremblementCouperin":{ + "bBoxNE":[ + 2.532, + 0.728 + ], + "bBoxSW":[ + 0.0, + -0.08 + ] + }, + "ornamentTrill":{ + "bBoxNE":[ + 2.204, + 2.156 + ], + "bBoxSW":[ + 0.004, + -0.072 + ] + }, + "ornamentTurn":{ + "bBoxNE":[ + 2.296, + 1.248 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "ornamentTurnInverted":{ + "bBoxNE":[ + 2.296, + 1.248 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "ornamentTurnSlash":{ + "bBoxNE":[ + 2.296, + 1.62 + ], + "bBoxSW":[ + 0.0, + -0.424 + ] + }, + "ornamentTurnUp":{ + "bBoxNE":[ + 1.248, + 2.296 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "ornamentTurnUpS":{ + "bBoxNE":[ + 1.248, + 2.296 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "ornamentUpCurve":{ + "bBoxNE":[ + 1.592, + 0.6202680882464868 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "ornamentVerticalLine":{ + "bBoxNE":[ + 0.14, + 1.628 + ], + "bBoxSW":[ + 0.0, + 0.372 + ] + }, + "ottava":{ + "bBoxNE":[ + 0.8881493807871841, + 1.688 + ], + "bBoxSW":[ + 0.04, + 0.0 + ] + }, + "ottavaAlta":{ + "bBoxNE":[ + 2.54, + 1.704 + ], + "bBoxSW":[ + 0.04, + 0.0 + ] + }, + "ottavaBassa":{ + "bBoxNE":[ + 2.504, + 1.688 + ], + "bBoxSW":[ + 0.04, + -0.15124322347459335 + ] + }, + "ottavaBassaBa":{ + "bBoxNE":[ + 2.488431532437698, + 1.736783395588138 + ], + "bBoxSW":[ + 0.04, + -0.04 + ] + }, + "ottavaBassaVb":{ + "bBoxNE":[ + 2.452, + 1.688 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "pendereckiTremolo":{ + "bBoxNE":[ + 0.6868888888888888, + 0.668 + ], + "bBoxSW":[ + -0.6915869153542834, + -0.668 + ] + }, + "pictCenter1":{ + "bBoxNE":[ + 2.176, + 2.296 + ], + "bBoxSW":[ + 0.0, + -0.0010083867437900836 + ] + }, + "pictCenter2":{ + "bBoxNE":[ + 2.08, + 2.084 + ], + "bBoxSW":[ + -0.0010006869316823669, + 0.0 + ] + }, + "pictCenter3":{ + "bBoxNE":[ + 2.0899591563143303, + 2.224 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "pictChokeCymbal":{ + "bBoxNE":[ + 0.588, + 0.968 + ], + "bBoxSW":[ + 0.004, + 0.0 + ] + }, + "pictCrushStem":{ + "bBoxNE":[ + 0.976, + 0.32 + ], + "bBoxSW":[ + -0.976, + -0.32 + ] + }, + "pictDamp1":{ + "bBoxNE":[ + 1.448, + 1.384 + ], + "bBoxSW":[ + -0.316, + -0.384 + ] + }, + "pictDamp2":{ + "bBoxNE":[ + 3.024, + 3.544 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "pictDamp3":{ + "bBoxNE":[ + 3.12, + 3.536 + ], + "bBoxSW":[ + -0.000707658144959165, + 0.0 + ] + }, + "pictDamp4":{ + "bBoxNE":[ + 3.148, + 3.46 + ], + "bBoxSW":[ + -0.004, + 0.0 + ] + }, + "pictDeadNoteStem":{ + "bBoxNE":[ + 0.6800000000000002, + 0.6549455266367645 + ], + "bBoxSW":[ + -0.6644680944284095, + -0.672 + ] + }, + "pictHalfOpen1":{ + "bBoxNE":[ + 1.176, + 1.1720083754759065 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "pictHalfOpen2":{ + "bBoxNE":[ + 1.136, + 1.4365846160082671 + ], + "bBoxSW":[ + 0.0, + -0.4 + ] + }, + "pictLeftHandCircle":{ + "bBoxNE":[ + 0.516, + 0.7845214108375426 + ], + "bBoxSW":[ + 0.0, + 0.208 + ] + }, + "pictNormalPosition":{ + "bBoxNE":[ + 2.088, + 2.12 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "pictOnRim":{ + "bBoxNE":[ + 1.956, + 1.892 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "pictOpen":{ + "bBoxNE":[ + 1.1894623879600694, + 1.252 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "pictOpenRimShot":{ + "bBoxNE":[ + 1.204, + 1.14 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "pictRightHandSquare":{ + "bBoxNE":[ + 1.292, + 1.2813513414910684 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "pictRim1":{ + "bBoxNE":[ + 2.496, + 2.204 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "pictRim2":{ + "bBoxNE":[ + 1.992, + 2.048 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "pictRim3":{ + "bBoxNE":[ + 2.088, + 2.24 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "pictRimShotOnStem":{ + "bBoxNE":[ + 0.5, + 0.5081311840907995 + ], + "bBoxSW":[ + -0.49613118409079937, + -0.508 + ] + }, + "pictScrapeAroundRim":{ + "bBoxNE":[ + 2.98, + 3.104 + ], + "bBoxSW":[ + 0.0, + -0.0019539445125651258 + ] + }, + "pictScrapeAroundRimClockwise":{ + "bBoxNE":[ + 3.104, + 3.1539357277882796 + ], + "bBoxSW":[ + -0.004, + 0.0 + ] + }, + "pictScrapeCenterToEdge":{ + "bBoxNE":[ + 2.917146398111232, + 3.012 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "pictScrapeEdgeToCenter":{ + "bBoxNE":[ + 3.105208122457481, + 3.172 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "pictStickShot":{ + "bBoxNE":[ + 1.664, + 1.7202778188546572 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "pictSwishStem":{ + "bBoxNE":[ + 0.9921503139740662, + 1.024 + ], + "bBoxSW":[ + -1.0, + -1.024 + ] + }, + "pictTurnLeftStem":{ + "bBoxNE":[ + 1.724, + 0.5538969622721606 + ], + "bBoxSW":[ + -1.724, + -0.576631433856024 + ] + }, + "pictTurnRightLeftStem":{ + "bBoxNE":[ + 1.7, + 0.524 + ], + "bBoxSW":[ + -1.7, + -0.524 + ] + }, + "pictTurnRightStem":{ + "bBoxNE":[ + 1.776, + 0.56 + ], + "bBoxSW":[ + -1.776, + -0.56 + ] + }, + "pluckedBuzzPizzicato":{ + "bBoxNE":[ + 1.244, + 0.748 + ], + "bBoxSW":[ + 0.0, + -0.00018836337580661408 + ] + }, + "pluckedDamp":{ + "bBoxNE":[ + 1.456, + 1.264 + ], + "bBoxSW":[ + 0.0002998108460207822, + 0.0 + ] + }, + "pluckedDampAll":{ + "bBoxNE":[ + 1.4401649535129224, + 1.576 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "pluckedDampOnStem":{ + "bBoxNE":[ + 0.856, + 0.6288268138648484 + ], + "bBoxSW":[ + -0.856, + -0.632 + ] + }, + "pluckedFingernailFlick":{ + "bBoxNE":[ + 1.248, + 1.92 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "pluckedLeftHandPizzicato":{ + "bBoxNE":[ + 1.084, + 1.136 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "pluckedPlectrum":{ + "bBoxNE":[ + 1.7, + 2.041586480154521 + ], + "bBoxSW":[ + 0.004, + 0.0 + ] + }, + "pluckedSnapPizzicatoAbove":{ + "bBoxNE":[ + 0.804, + 1.3 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "pluckedSnapPizzicatoBelow":{ + "bBoxNE":[ + 0.844, + 1.228 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "pluckedWithFingernails":{ + "bBoxNE":[ + 1.645, + 1.08 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "quindicesima":{ + "bBoxNE":[ + 1.268, + 1.9141875 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "quindicesimaAlta":{ + "bBoxNE":[ + 3.136379000772445, + 1.9430656273186815 + ], + "bBoxSW":[ + 0.0, + -0.004 + ] + }, + "quindicesimaBassa":{ + "bBoxNE":[ + 3.136379000772445, + 1.9181875 + ], + "bBoxSW":[ + 0.0, + -0.08 + ] + }, + "quindicesimaBassaMb":{ + "bBoxNE":[ + 3.164, + 1.8781875 + ], + "bBoxSW":[ + 0.0, + -0.12 + ] + }, + "repeat1Bar":{ + "bBoxNE":[ + 2.3964229120659337, + 0.7 + ], + "bBoxSW":[ + 0.0, + -1.0 + ] + }, + "repeat2Bars":{ + "bBoxNE":[ + 3.1, + 1.451282729868212 + ], + "bBoxSW":[ + 3.4287673693320645e-05, + -0.9876949611646099 + ] + }, + "repeat4Bars":{ + "bBoxNE":[ + 5.496, + 1.216 + ], + "bBoxSW":[ + 0.0, + -1.216 + ] + }, + "repeatBarLowerDot":{ + "bBoxNE":[ + 0.456, + -0.22 + ], + "bBoxSW":[ + 0.0, + -0.824 + ] + }, + "repeatBarSlash":{ + "bBoxNE":[ + 2.52, + 1.0605047288494804 + ], + "bBoxSW":[ + 0.0, + -0.9007664068296704 + ] + }, + "repeatBarUpperDot":{ + "bBoxNE":[ + 0.456, + 0.852 + ], + "bBoxSW":[ + 0.0, + 0.248 + ] + }, + "repeatDot":{ + "bBoxNE":[ + 0.572, + 0.304 + ], + "bBoxSW":[ + 0.0, + -0.332 + ] + }, + "repeatDots":{ + "bBoxNE":[ + 0.576, + 2.768 + ], + "bBoxSW":[ + 0.0, + 1.164 + ] + }, + "repeatLeft":{ + "bBoxNE":[ + 2.488, + 7.024 + ], + "bBoxSW":[ + 0.0, + -3.0 + ] + }, + "repeatRight":{ + "bBoxNE":[ + 3.348177086017063, + 6.824 + ], + "bBoxSW":[ + 0.0, + -3.0 + ] + }, + "repeatRightLeft":{ + "bBoxNE":[ + 2.404, + 4.156 + ], + "bBoxSW":[ + -0.0008676304503235173, + 0.0 + ] + }, + "rest1024th":{ + "bBoxNE":[ + 2.648304659090313, + 4.913011697648486 + ], + "bBoxSW":[ + 0.0, + -3.808 + ] + }, + "rest128th":{ + "bBoxNE":[ + 1.964, + 2.876 + ], + "bBoxSW":[ + 0.0026871274316097064, + -2.844 + ] + }, + "rest16th":{ + "bBoxNE":[ + 1.332, + 0.976 + ], + "bBoxSW":[ + 0.0, + -1.3131358024691357 + ] + }, + "rest256th":{ + "bBoxNE":[ + 2.104, + 2.94 + ], + "bBoxSW":[ + 0.0, + -3.76113351302991 + ] + }, + "rest32nd":{ + "bBoxNE":[ + 1.388, + 1.932 + ], + "bBoxSW":[ + 0.0, + -1.990009566750013 + ] + }, + "rest512th":{ + "bBoxNE":[ + 2.416, + 3.756 + ], + "bBoxSW":[ + 0.0, + -4.124 + ] + }, + "rest64th":{ + "bBoxNE":[ + 1.712, + 1.8947189633555728 + ], + "bBoxSW":[ + 0.0, + -2.88 + ] + }, + "rest8th":{ + "bBoxNE":[ + 1.156, + 1.044 + ], + "bBoxSW":[ + 0.0, + -1.04 + ] + }, + "restDoubleWhole":{ + "bBoxNE":[ + 0.488, + 0.996 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "restDoubleWholeLegerLine":{ + "bBoxNE":[ + 1.388509667991878, + 1.052 + ], + "bBoxSW":[ + 0.0, + -0.084 + ] + }, + "restHBar":{ + "bBoxNE":[ + 3.112, + 1.06 + ], + "bBoxSW":[ + 0.0, + -1.0526833466336212 + ] + }, + "restHBarLeft":{ + "bBoxNE":[ + 2.944, + 0.94 + ], + "bBoxSW":[ + 0.0, + -1.0625922932705498 + ] + }, + "restHBarMiddle":{ + "bBoxNE":[ + 1.436, + 0.4081597661954643 + ], + "bBoxSW":[ + -0.064, + -0.412 + ] + }, + "restHBarRight":{ + "bBoxNE":[ + 2.86, + 1.036 + ], + "bBoxSW":[ + 0.0, + -1.036 + ] + }, + "restHalf":{ + "bBoxNE":[ + 2.0735994121873147, + 0.648 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "restHalfLegerLine":{ + "bBoxNE":[ + 1.7928227263960483, + 0.572 + ], + "bBoxSW":[ + -0.48, + -0.08 + ] + }, + "restLonga":{ + "bBoxNE":[ + 0.5562511696339463, + 0.9903538290724796 + ], + "bBoxSW":[ + 0.0, + -0.996969920458047 + ] + }, + "restMaxima":{ + "bBoxNE":[ + 1.464, + 1.02 + ], + "bBoxSW":[ + 0.0, + -1.02 + ] + }, + "restQuarter":{ + "bBoxNE":[ + 1.052, + 1.66 + ], + "bBoxSW":[ + -0.001513780997013555, + -1.66 + ] + }, + "restQuarterOld":{ + "bBoxNE":[ + 1.136, + 1.076 + ], + "bBoxSW":[ + 0.0, + -1.032 + ] + }, + "restQuarterZ":{ + "bBoxNE":[ + 1.172, + 0.904 + ], + "bBoxSW":[ + 0.0, + -0.904 + ] + }, + "restWhole":{ + "bBoxNE":[ + 2.0, + 0.056 + ], + "bBoxSW":[ + 0.003563405268615458, + -0.48 + ] + }, + "restWholeLegerLine":{ + "bBoxNE":[ + 2.74, + 0.116 + ], + "bBoxSW":[ + -0.7869077032061683, + -0.628 + ] + }, + "reversedBrace":{ + "bBoxNE":[ + 0.316, + 4.0 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "reversedBracketBottom":{ + "bBoxNE":[ + 2.181154700538379, + 0.0 + ], + "bBoxSW":[ + 0.0, + -1.68 + ] + }, + "reversedBracketTop":{ + "bBoxNE":[ + 2.064, + 1.436 + ], + "bBoxSW":[ + 0.0, + 0.0027504940885147125 + ] + }, + "rightRepeatSmall":{ + "bBoxNE":[ + 1.38, + 3.496 + ], + "bBoxSW":[ + -0.0011560329544371593, + 0.504 + ] + }, + "schaefferClef":{ + "bBoxNE":[ + 1.364, + 1.04 + ], + "bBoxSW":[ + 0.0, + -1.04 + ] + }, + "schaefferFClefToGClef":{ + "bBoxNE":[ + 2.396, + 3.104 + ], + "bBoxSW":[ + 0.0, + -1.2 + ] + }, + "schaefferGClefToFClef":{ + "bBoxNE":[ + 2.428, + 1.12 + ], + "bBoxSW":[ + 0.0, + -3.028 + ] + }, + "schaefferPreviousClef":{ + "bBoxNE":[ + 1.2643460207612456, + 2.188 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "segno":{ + "bBoxNE":[ + 3.192, + 3.224 + ], + "bBoxSW":[ + 0.0, + -0.26 + ] + }, + "segnoSerpent1":{ + "bBoxNE":[ + 1.632, + 4.004 + ], + "bBoxSW":[ + 0.0, + -0.12 + ] + }, + "segnoSerpent2":{ + "bBoxNE":[ + 1.632, + 3.984 + ], + "bBoxSW":[ + 0.0, + -0.14 + ] + }, + "semipitchedPercussionClef1":{ + "bBoxNE":[ + 0.98, + 2.556 + ], + "bBoxSW":[ + 0.0, + -2.556 + ] + }, + "semipitchedPercussionClef2":{ + "bBoxNE":[ + 2.200714908670103, + 1.144 + ], + "bBoxSW":[ + 0.0, + -1.144 + ] + }, + "spa":{ + "bBoxNE":[ + 0.0, + 0.0 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "splitBarDivider":{ + "bBoxNE":[ + 0.756, + 2.0 + ], + "bBoxSW":[ + -0.756, + 0.416 + ] + }, + "staffDivideArrowDown":{ + "bBoxNE":[ + 2.124, + 2.112 + ], + "bBoxSW":[ + 0.0, + 0.0036725957288432183 + ] + }, + "staffDivideArrowUp":{ + "bBoxNE":[ + 2.132, + 3.992919467536203 + ], + "bBoxSW":[ + 0.0, + 1.8843727980292238 + ] + }, + "staffDivideArrowUpDown":{ + "bBoxNE":[ + 2.1442705142305, + 3.992919467536203 + ], + "bBoxSW":[ + 0.0, + 0.0037038845869209395 + ] + }, + "stem":{ + "bBoxNE":[ + 0.144, + 3.604 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "stemBowOnBridge":{ + "bBoxNE":[ + 0.932, + 3.604 + ], + "bBoxSW":[ + -0.788, + 0.0 + ] + }, + "stemBowOnTailpiece":{ + "bBoxNE":[ + 0.8844229120659338, + 3.604 + ], + "bBoxSW":[ + -0.744, + 0.0 + ] + }, + "stemBuzzRoll":{ + "bBoxNE":[ + 0.7, + 3.604 + ], + "bBoxSW":[ + -0.604, + 0.0 + ] + }, + "stemDamp":{ + "bBoxNE":[ + 0.8799999999999999, + 3.604 + ], + "bBoxSW":[ + -0.8036227766016838, + 0.0 + ] + }, + "stemHarpStringNoise":{ + "bBoxNE":[ + 0.796, + 3.644 + ], + "bBoxSW":[ + -0.7, + 0.0 + ] + }, + "stemMultiphonicsBlack":{ + "bBoxNE":[ + 1.008, + 3.604 + ], + "bBoxSW":[ + -0.932, + 0.0 + ] + }, + "stemMultiphonicsBlackWhite":{ + "bBoxNE":[ + 1.04, + 3.604 + ], + "bBoxSW":[ + -0.896, + 0.0 + ] + }, + "stemMultiphonicsWhite":{ + "bBoxNE":[ + 1.044, + 3.604 + ], + "bBoxSW":[ + -0.896, + 0.0 + ] + }, + "stemPendereckiTremolo":{ + "bBoxNE":[ + 0.8429455266367645, + 3.604 + ], + "bBoxSW":[ + -0.6249600000000001, + 0.0 + ] + }, + "stemRimShot":{ + "bBoxNE":[ + 0.588, + 3.604 + ], + "bBoxSW":[ + -0.532, + 0.0 + ] + }, + "stemSprechgesang":{ + "bBoxNE":[ + 0.74, + 3.604 + ], + "bBoxSW":[ + -0.608, + 0.0 + ] + }, + "stemSulPonticello":{ + "bBoxNE":[ + 0.892, + 3.604 + ], + "bBoxSW":[ + -0.748, + 0.0 + ] + }, + "stemSussurando":{ + "bBoxNE":[ + 0.592, + 3.604 + ], + "bBoxSW":[ + -0.448, + 0.0 + ] + }, + "stemSwished":{ + "bBoxNE":[ + 0.9490311068105171, + 3.604 + ], + "bBoxSW":[ + -0.796, + 0.0 + ] + }, + "stemVibratoPulse":{ + "bBoxNE":[ + 1.016375, + 3.604 + ], + "bBoxSW":[ + -0.876, + 0.0 + ] + }, + "stockhausenTremolo":{ + "bBoxNE":[ + 1.585092411480795, + 0.38 + ], + "bBoxSW":[ + -0.56, + -0.68 + ] + }, + "stringsBowBehindBridge":{ + "bBoxNE":[ + 0.82, + 0.936 + ], + "bBoxSW":[ + -0.82, + 0.0 + ] + }, + "stringsBowBehindBridgeFourStrings":{ + "bBoxNE":[ + 0.908, + 2.468 + ], + "bBoxSW":[ + -0.908, + 0.0 + ] + }, + "stringsBowBehindBridgeOneString":{ + "bBoxNE":[ + 0.824, + 2.248100791715395 + ], + "bBoxSW":[ + -0.824, + 0.0 + ] + }, + "stringsBowBehindBridgeThreeStrings":{ + "bBoxNE":[ + 0.8771852515152518, + 2.356 + ], + "bBoxSW":[ + -0.888, + 0.0 + ] + }, + "stringsBowBehindBridgeTwoStrings":{ + "bBoxNE":[ + 0.892, + 2.328 + ], + "bBoxSW":[ + -0.892, + 0.0 + ] + }, + "stringsBowOnBridge":{ + "bBoxNE":[ + 0.86, + 0.24 + ], + "bBoxSW":[ + -0.86, + -0.24 + ] + }, + "stringsBowOnTailpiece":{ + "bBoxNE":[ + 0.8124229120659339, + 0.384 + ], + "bBoxSW":[ + -0.816, + -0.384 + ] + }, + "stringsChangeBowDirection":{ + "bBoxNE":[ + 3.548, + 1.836 + ], + "bBoxSW":[ + -0.001710461054612324, + -0.64 + ] + }, + "stringsDownBow":{ + "bBoxNE":[ + 1.224, + 1.464 + ], + "bBoxSW":[ + 0.0, + -0.00038428807805051477 + ] + }, + "stringsDownBowTurned":{ + "bBoxNE":[ + 1.192, + 1.392 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "stringsFouette":{ + "bBoxNE":[ + 0.652, + 1.836 + ], + "bBoxSW":[ + -0.0016101229340816858, + 0.0 + ] + }, + "stringsHalfHarmonic":{ + "bBoxNE":[ + 0.784, + 0.78 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "stringsHarmonic":{ + "bBoxNE":[ + 0.764, + 0.808 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "stringsJeteAbove":{ + "bBoxNE":[ + 2.904, + 1.276 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "stringsJeteBelow":{ + "bBoxNE":[ + 2.8022600935707156, + 1.224 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "stringsMuteOff":{ + "bBoxNE":[ + 1.4682902494331065, + 0.872 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "stringsMuteOn":{ + "bBoxNE":[ + 1.48, + 0.772 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "stringsOverpressureDownBow":{ + "bBoxNE":[ + 1.264, + 1.5687752591831394 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "stringsOverpressureNoDirection":{ + "bBoxNE":[ + 1.204, + 0.916 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "stringsOverpressurePossibileDownBow":{ + "bBoxNE":[ + 1.344, + 1.768 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "stringsOverpressurePossibileUpBow":{ + "bBoxNE":[ + 1.216, + 2.1498650103359918 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "stringsOverpressureUpBow":{ + "bBoxNE":[ + 0.948, + 2.084 + ], + "bBoxSW":[ + 0.0, + -0.0007489484887389418 + ] + }, + "stringsThumbPosition":{ + "bBoxNE":[ + 0.716, + 1.24 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "stringsThumbPositionTurned":{ + "bBoxNE":[ + 0.752, + 1.1496447362021243 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "stringsUpBow":{ + "bBoxNE":[ + 0.8771371232968304, + 1.956 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "stringsUpBowTurned":{ + "bBoxNE":[ + 0.872, + 2.008380031719759 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "stringsVibratoPulse":{ + "bBoxNE":[ + 0.944375, + 1.212 + ], + "bBoxSW":[ + -0.948, + -1.212 + ] + }, + "systemDivider":{ + "bBoxNE":[ + 4.292, + 4.116 + ], + "bBoxSW":[ + 0.0, + -0.116 + ] + }, + "systemDividerExtraLong":{ + "bBoxNE":[ + 9.084764265407488, + 4.1 + ], + "bBoxSW":[ + -0.0011000967980577343, + -0.1 + ] + }, + "systemDividerLong":{ + "bBoxNE":[ + 6.064, + 4.076 + ], + "bBoxSW":[ + 0.0, + -0.076 + ] + }, + "textAugmentationDot":{ + "bBoxNE":[ + 0.3960914591276332, + 0.264 + ], + "bBoxSW":[ + 0.0, + -0.14810415609761696 + ] + }, + "textBlackNoteFrac16thLongStem":{ + "bBoxNE":[ + 1.3296326530612246, + 3.356 + ], + "bBoxSW":[ + 0.0, + -0.62 + ] + }, + "textBlackNoteFrac16thShortStem":{ + "bBoxNE":[ + 1.332, + 2.624 + ], + "bBoxSW":[ + 0.0, + -0.616 + ] + }, + "textBlackNoteFrac32ndLongStem":{ + "bBoxNE":[ + 1.32832, + 3.352 + ], + "bBoxSW":[ + 0.0, + -0.62 + ] + }, + "textBlackNoteFrac8thLongStem":{ + "bBoxNE":[ + 1.328241965973535, + 3.352 + ], + "bBoxSW":[ + 0.004, + -0.62 + ] + }, + "textBlackNoteFrac8thShortStem":{ + "bBoxNE":[ + 1.3296326530612246, + 2.624 + ], + "bBoxSW":[ + 0.0, + -0.62 + ] + }, + "textBlackNoteLongStem":{ + "bBoxNE":[ + 1.2696326530612245, + 3.356 + ], + "bBoxSW":[ + 0.0, + -0.62 + ] + }, + "textBlackNoteShortStem":{ + "bBoxNE":[ + 1.2696326530612245, + 2.6042018143120296 + ], + "bBoxSW":[ + 0.0, + -0.62 + ] + }, + "textCont16thBeamLongStem":{ + "bBoxNE":[ + 1.328, + 3.352 + ], + "bBoxSW":[ + -0.0005813655204959468, + 2.12 + ] + }, + "textCont16thBeamShortStem":{ + "bBoxNE":[ + 1.324, + 2.624 + ], + "bBoxSW":[ + 0.0, + 1.412 + ] + }, + "textCont32ndBeamLongStem":{ + "bBoxNE":[ + 1.328708699270248, + 3.3485885097063264 + ], + "bBoxSW":[ + 0.004, + 1.408 + ] + }, + "textCont8thBeamLongStem":{ + "bBoxNE":[ + 1.328708699270248, + 3.352 + ], + "bBoxSW":[ + 0.004, + 2.848 + ] + }, + "textCont8thBeamShortStem":{ + "bBoxNE":[ + 1.3284954642256424, + 2.624 + ], + "bBoxSW":[ + 0.0, + 2.12 + ] + }, + "textTie":{ + "bBoxNE":[ + 1.424, + -0.72 + ], + "bBoxSW":[ + 0.0, + -1.2320836249695841 + ] + }, + "textTuplet3LongStem":{ + "bBoxNE":[ + 1.344, + 5.78 + ], + "bBoxSW":[ + 0.04, + 3.824 + ] + }, + "textTuplet3ShortStem":{ + "bBoxNE":[ + 1.344, + 4.872 + ], + "bBoxSW":[ + 0.04, + 2.916 + ] + }, + "textTupletBracketEndLongStem":{ + "bBoxNE":[ + 1.3407590293026055, + 4.9 + ], + "bBoxSW":[ + 0.0, + 4.0 + ] + }, + "textTupletBracketEndShortStem":{ + "bBoxNE":[ + 1.232, + 3.9964202037311694 + ], + "bBoxSW":[ + -0.00030100757588638773, + 3.1 + ] + }, + "textTupletBracketStartLongStem":{ + "bBoxNE":[ + 1.28, + 4.880377982426938 + ], + "bBoxSW":[ + 0.0, + 4.0 + ] + }, + "textTupletBracketStartShortStem":{ + "bBoxNE":[ + 1.284, + 4.0 + ], + "bBoxSW":[ + -0.0004315324376981477, + 3.108 + ] + }, + "timeSig0":{ + "bBoxNE":[ + 2.052, + 1.436 + ], + "bBoxSW":[ + 0.08, + -1.432638145110608 + ] + }, + "timeSig0Large":{ + "bBoxNE":[ + 0.508, + 1.016 + ], + "bBoxSW":[ + 0.018606123086601863, + -1.016 + ] + }, + "timeSig0Narrow":{ + "bBoxNE":[ + 0.84, + 1.084 + ], + "bBoxSW":[ + 0.0, + -1.084 + ] + }, + "timeSig1":{ + "bBoxNE":[ + 1.132, + 1.464 + ], + "bBoxSW":[ + 0.08, + -1.456 + ] + }, + "timeSig1Large":{ + "bBoxNE":[ + 0.3502547112051975, + 0.944 + ], + "bBoxSW":[ + 0.02, + -0.944 + ] + }, + "timeSig1Narrow":{ + "bBoxNE":[ + 0.602169130519329, + 1.016 + ], + "bBoxSW":[ + 0.0, + -1.016 + ] + }, + "timeSig2":{ + "bBoxNE":[ + 2.6418545212964117, + 1.5279999999999998 + ], + "bBoxSW":[ + 0.08, + -1.5148804926433124 + ] + }, + "timeSig2Large":{ + "bBoxNE":[ + 0.476, + 0.9959999999999999 + ], + "bBoxSW":[ + 0.02, + -0.9825759637188208 + ] + }, + "timeSig2Narrow":{ + "bBoxNE":[ + 0.816, + 0.996 + ], + "bBoxSW":[ + 0.0, + -0.996 + ] + }, + "timeSig3":{ + "bBoxNE":[ + 2.16, + 1.568 + ], + "bBoxSW":[ + 0.07929728570837671, + -1.568 + ] + }, + "timeSig3Large":{ + "bBoxNE":[ + 0.484, + 1.016 + ], + "bBoxSW":[ + 0.02, + -1.016 + ] + }, + "timeSig3Narrow":{ + "bBoxNE":[ + 0.848, + 0.904 + ], + "bBoxSW":[ + 0.0, + -0.900436154096408 + ] + }, + "timeSig4":{ + "bBoxNE":[ + 2.532314113100305, + 1.9647423650840017 + ], + "bBoxSW":[ + 0.08, + -1.958363542268675 + ] + }, + "timeSig4Large":{ + "bBoxNE":[ + 0.5564932639444778, + 0.968 + ], + "bBoxSW":[ + 0.02, + -0.968 + ] + }, + "timeSig4Narrow":{ + "bBoxNE":[ + 1.004, + 1.033997839598781 + ], + "bBoxSW":[ + 0.0, + -1.044 + ] + }, + "timeSig5":{ + "bBoxNE":[ + 2.332, + 1.556 + ], + "bBoxSW":[ + 0.07865548434161321, + -1.556 + ] + }, + "timeSig5Large":{ + "bBoxNE":[ + 0.488, + 1.024 + ], + "bBoxSW":[ + 0.02, + -1.024 + ] + }, + "timeSig5Narrow":{ + "bBoxNE":[ + 0.776, + 0.992 + ], + "bBoxSW":[ + 0.0, + -0.992 + ] + }, + "timeSig6":{ + "bBoxNE":[ + 2.26, + 1.452 + ], + "bBoxSW":[ + 0.08, + -1.452 + ] + }, + "timeSig6Large":{ + "bBoxNE":[ + 0.492, + 0.964 + ], + "bBoxSW":[ + 0.02, + -0.9602025926971914 + ] + }, + "timeSig6Narrow":{ + "bBoxNE":[ + 0.844, + 1.056 + ], + "bBoxSW":[ + 0.0, + -1.0447804797015556 + ] + }, + "timeSig7":{ + "bBoxNE":[ + 2.368, + 1.38 + ], + "bBoxSW":[ + 0.08144696303908279, + -1.38 + ] + }, + "timeSig7Large":{ + "bBoxNE":[ + 0.52, + 0.976 + ], + "bBoxSW":[ + 0.02, + -0.976 + ] + }, + "timeSig7Narrow":{ + "bBoxNE":[ + 0.952, + 0.956 + ], + "bBoxSW":[ + 0.0, + -0.952 + ] + }, + "timeSig8":{ + "bBoxNE":[ + 2.0166040612287404, + 1.712 + ], + "bBoxSW":[ + 0.08, + -1.712 + ] + }, + "timeSig8Large":{ + "bBoxNE":[ + 0.468, + 0.984 + ], + "bBoxSW":[ + 0.02, + -0.984 + ] + }, + "timeSig8Narrow":{ + "bBoxNE":[ + 0.892, + 1.088 + ], + "bBoxSW":[ + 0.0, + -1.0842121478436688 + ] + }, + "timeSig9":{ + "bBoxNE":[ + 1.976, + 1.684 + ], + "bBoxSW":[ + 0.08, + -1.684 + ] + }, + "timeSig9Large":{ + "bBoxNE":[ + 0.5019014468382152, + 0.9845999999999999 + ], + "bBoxSW":[ + 0.02, + -0.992 + ] + }, + "timeSig9Narrow":{ + "bBoxNE":[ + 0.776, + 1.056 + ], + "bBoxSW":[ + 0.0, + -1.056 + ] + }, + "timeSigBracketLeft":{ + "bBoxNE":[ + 0.5737777777777778, + 2.508 + ], + "bBoxSW":[ + 0.08, + -2.524 + ] + }, + "timeSigBracketLeftLarge":{ + "bBoxNE":[ + 0.292, + 1.956 + ], + "bBoxSW":[ + 0.0, + -1.956 + ] + }, + "timeSigBracketLeftNarrow":{ + "bBoxNE":[ + 0.49377777777777776, + 2.508 + ], + "bBoxSW":[ + 0.0, + -2.524 + ] + }, + "timeSigBracketLeftSmall":{ + "bBoxNE":[ + 0.576, + 1.5520000000000003 + ], + "bBoxSW":[ + 0.08, + -1.54535613670409 + ] + }, + "timeSigBracketLeftSmallLarge":{ + "bBoxNE":[ + 0.233196675900277, + 1.296 + ], + "bBoxSW":[ + 0.0, + -1.296 + ] + }, + "timeSigBracketLeftSmallNarrow":{ + "bBoxNE":[ + 0.496, + 1.5520000000000003 + ], + "bBoxSW":[ + 0.0, + -1.54535613670409 + ] + }, + "timeSigBracketRight":{ + "bBoxNE":[ + 0.7401975308641976, + 2.501154700538379 + ], + "bBoxSW":[ + 0.2, + -2.504 + ] + }, + "timeSigBracketRightLarge":{ + "bBoxNE":[ + 0.252, + 1.9412810252304407 + ], + "bBoxSW":[ + 0.0, + -1.9483684300237587 + ] + }, + "timeSigBracketRightNarrow":{ + "bBoxNE":[ + 0.5401975308641975, + 2.501154700538379 + ], + "bBoxSW":[ + 0.0, + -2.504 + ] + }, + "timeSigBracketRightSmall":{ + "bBoxNE":[ + 0.724, + 1.5504444958547636 + ], + "bBoxSW":[ + 0.2, + -1.5565922308261582 + ] + }, + "timeSigBracketRightSmallLarge":{ + "bBoxNE":[ + 0.220094674556213, + 1.288 + ], + "bBoxSW":[ + 0.0, + -1.288 + ] + }, + "timeSigBracketRightSmallNarrow":{ + "bBoxNE":[ + 0.524, + 1.5504444958547636 + ], + "bBoxSW":[ + 0.0, + -1.5565922308261582 + ] + }, + "timeSigCombDenominator":{ + "bBoxNE":[ + 0.0, + 0.0 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "timeSigCombNumerator":{ + "bBoxNE":[ + 0.0, + 0.0 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "timeSigComma":{ + "bBoxNE":[ + 0.8801072570152192, + 0.672 + ], + "bBoxSW":[ + 0.0, + -0.768 + ] + }, + "timeSigCommaLarge":{ + "bBoxNE":[ + 0.216, + 0.33599999999999997 + ], + "bBoxSW":[ + 0.0, + -0.33244439375500295 + ] + }, + "timeSigCommaNarrow":{ + "bBoxNE":[ + 0.428, + 0.54 + ], + "bBoxSW":[ + 0.02, + -0.536 + ] + }, + "timeSigCommon":{ + "bBoxNE":[ + 2.34, + 1.1779863237109038 + ], + "bBoxSW":[ + 0.08, + -1.192 + ] + }, + "timeSigCommonLarge":{ + "bBoxNE":[ + 0.524, + 1.032 + ], + "bBoxSW":[ + 0.02, + -1.032 + ] + }, + "timeSigCommonNarrow":{ + "bBoxNE":[ + 0.952, + 0.968 + ], + "bBoxSW":[ + 0.0, + -0.968 + ] + }, + "timeSigCut2":{ + "bBoxNE":[ + 1.536, + 1.7303635422686747 + ], + "bBoxSW":[ + 0.0013716330679700234, + -1.74 + ] + }, + "timeSigCut2Large":{ + "bBoxNE":[ + 0.492, + 1.332 + ], + "bBoxSW":[ + 0.0, + -1.332 + ] + }, + "timeSigCut2Narrow":{ + "bBoxNE":[ + 1.304, + 1.616280852084712 + ], + "bBoxSW":[ + 0.0, + -1.628 + ] + }, + "timeSigCut3":{ + "bBoxNE":[ + 1.816, + 1.7303635422686747 + ], + "bBoxSW":[ + 0.0, + -1.74 + ] + }, + "timeSigCut3Narrow":{ + "bBoxNE":[ + 0.92, + 1.616280852084712 + ], + "bBoxSW":[ + 0.0, + -1.628 + ] + }, + "timeSigCutCommon":{ + "bBoxNE":[ + 2.78, + 2.7480000000000007 + ], + "bBoxSW":[ + 0.08, + -2.748151665947625 + ] + }, + "timeSigCutCommonLarge":{ + "bBoxNE":[ + 0.608, + 1.308 + ], + "bBoxSW":[ + 0.02, + -1.3041211442008784 + ] + }, + "timeSigCutCommonNarrow":{ + "bBoxNE":[ + 0.996, + 1.58 + ], + "bBoxSW":[ + 0.004, + -1.58 + ] + }, + "timeSigEquals":{ + "bBoxNE":[ + 2.236, + 0.704 + ], + "bBoxSW":[ + 0.0, + -0.708 + ] + }, + "timeSigEqualsLarge":{ + "bBoxNE":[ + 0.4844300404257955, + 0.3401111111111111 + ], + "bBoxSW":[ + -0.004, + -0.344 + ] + }, + "timeSigEqualsNarrow":{ + "bBoxNE":[ + 1.072, + 0.576 + ], + "bBoxSW":[ + 0.0, + -0.5723987815751136 + ] + }, + "timeSigFractionHalf":{ + "bBoxNE":[ + 2.6011961524227067, + 1.536 + ], + "bBoxSW":[ + 0.07161996828024067, + -1.548 + ] + }, + "timeSigFractionHalfLarge":{ + "bBoxNE":[ + 0.6414701294725885, + 1.02 + ], + "bBoxSW":[ + 0.0, + -1.013333181265009 + ] + }, + "timeSigFractionHalfNarrow":{ + "bBoxNE":[ + 1.516, + 0.98 + ], + "bBoxSW":[ + 0.076, + -0.98 + ] + }, + "timeSigFractionOneThird":{ + "bBoxNE":[ + 2.512, + 1.596 + ], + "bBoxSW":[ + 0.08, + -1.6011844616523163 + ] + }, + "timeSigFractionOneThirdLarge":{ + "bBoxNE":[ + 0.608, + 1.024 + ], + "bBoxSW":[ + 0.0, + -1.02 + ] + }, + "timeSigFractionOneThirdNarrow":{ + "bBoxNE":[ + 1.568, + 1.0169566299021175 + ], + "bBoxSW":[ + 0.076, + -1.024 + ] + }, + "timeSigFractionQuarter":{ + "bBoxNE":[ + 2.464, + 1.532 + ], + "bBoxSW":[ + 0.07156695180110015, + -1.544 + ] + }, + "timeSigFractionQuarterLarge":{ + "bBoxNE":[ + 0.5810193359837561, + 0.9807846096908266 + ], + "bBoxSW":[ + 0.0, + -0.9810433144079492 + ] + }, + "timeSigFractionQuarterNarrow":{ + "bBoxNE":[ + 1.444, + 1.104 + ], + "bBoxSW":[ + 0.076, + -1.104 + ] + }, + "timeSigFractionThreeQuarters":{ + "bBoxNE":[ + 2.696, + 1.656653636792075 + ], + "bBoxSW":[ + 0.08, + -1.5732529244121212 + ] + }, + "timeSigFractionThreeQuartersLarge":{ + "bBoxNE":[ + 0.716, + 1.0493940184184243 + ], + "bBoxSW":[ + -0.0004848745379569025, + -1.06 + ] + }, + "timeSigFractionThreeQuartersNarrow":{ + "bBoxNE":[ + 1.596, + 1.02 + ], + "bBoxSW":[ + 0.076, + -1.0164410117168434 + ] + }, + "timeSigFractionTwoThirds":{ + "bBoxNE":[ + 2.664, + 1.7 + ], + "bBoxSW":[ + 0.064, + -1.692 + ] + }, + "timeSigFractionTwoThirdsLarge":{ + "bBoxNE":[ + 0.708, + 1.0159999999999998 + ], + "bBoxSW":[ + 0.0, + -1.0126170447970364 + ] + }, + "timeSigFractionTwoThirdsNarrow":{ + "bBoxNE":[ + 1.52, + 1.005004678535785 + ], + "bBoxSW":[ + 0.06, + -1.016 + ] + }, + "timeSigFractionalSlash":{ + "bBoxNE":[ + 1.62, + 1.692 + ], + "bBoxSW":[ + 0.0, + -1.692 + ] + }, + "timeSigFractionalSlashLarge":{ + "bBoxNE":[ + 0.31727999999999995, + 1.0608870737776461 + ], + "bBoxSW":[ + 0.0, + -1.068 + ] + }, + "timeSigFractionalSlashNarrow":{ + "bBoxNE":[ + 0.948, + 0.8560311068105171 + ], + "bBoxSW":[ + 0.0, + -0.86 + ] + }, + "timeSigMinus":{ + "bBoxNE":[ + 2.648, + 0.22 + ], + "bBoxSW":[ + 0.0, + -0.216 + ] + }, + "timeSigMinusLarge":{ + "bBoxNE":[ + 0.4604911064067352, + 0.096 + ], + "bBoxSW":[ + 0.0, + -0.096 + ] + }, + "timeSigMinusNarrow":{ + "bBoxNE":[ + 1.028, + 0.21877160923836653 + ], + "bBoxSW":[ + 0.0, + -0.228 + ] + }, + "timeSigMultiply":{ + "bBoxNE":[ + 2.296305740215077, + 1.22 + ], + "bBoxSW":[ + 0.0, + -1.22 + ] + }, + "timeSigMultiplyLarge":{ + "bBoxNE":[ + 0.368, + 0.484 + ], + "bBoxSW":[ + 0.0, + -0.484 + ] + }, + "timeSigMultiplyNarrow":{ + "bBoxNE":[ + 0.948, + 0.8880000000000001 + ], + "bBoxSW":[ + 0.0, + -0.8843420581411859 + ] + }, + "timeSigOpenPenderecki":{ + "bBoxNE":[ + 4.844, + 1.508 + ], + "bBoxSW":[ + 0.0, + -1.508 + ] + }, + "timeSigOpenPendereckiLarge":{ + "bBoxNE":[ + 0.596, + 0.728 + ], + "bBoxSW":[ + 0.0, + -0.728 + ] + }, + "timeSigOpenPendereckiNarrow":{ + "bBoxNE":[ + 2.04, + 1.052 + ], + "bBoxSW":[ + 0.0, + -1.052 + ] + }, + "timeSigParensLeft":{ + "bBoxNE":[ + 1.5984864469491868, + 2.912 + ], + "bBoxSW":[ + 0.0022222222222222222, + -2.912 + ] + }, + "timeSigParensLeftLarge":{ + "bBoxNE":[ + 0.21931495918958246, + 1.9279999999999997 + ], + "bBoxSW":[ + 0.0, + -1.9282032253758818 + ] + }, + "timeSigParensLeftNarrow":{ + "bBoxNE":[ + 0.684, + 1.9621797533149101 + ], + "bBoxSW":[ + 0.0, + -1.972 + ] + }, + "timeSigParensLeftSmall":{ + "bBoxNE":[ + 0.6938198889747161, + 1.616 + ], + "bBoxSW":[ + 0.0, + -1.62 + ] + }, + "timeSigParensLeftSmallLarge":{ + "bBoxNE":[ + 0.21731370849898476, + 1.2831918358845305 + ], + "bBoxSW":[ + 0.0, + -1.292 + ] + }, + "timeSigParensLeftSmallNarrow":{ + "bBoxNE":[ + 0.40908, + 1.088 + ], + "bBoxSW":[ + 0.0, + -1.088 + ] + }, + "timeSigParensRight":{ + "bBoxNE":[ + 1.0970593495351768, + 2.9000000000000004 + ], + "bBoxSW":[ + 0.0, + -2.890530612244898 + ] + }, + "timeSigParensRightLarge":{ + "bBoxNE":[ + 0.212, + 1.932 + ], + "bBoxSW":[ + 0.0, + -1.932 + ] + }, + "timeSigParensRightNarrow":{ + "bBoxNE":[ + 0.66, + 2.036 + ], + "bBoxSW":[ + 0.0, + -2.032 + ] + }, + "timeSigParensRightSmall":{ + "bBoxNE":[ + 0.6176101229340817, + 1.688 + ], + "bBoxSW":[ + 0.0, + -1.688 + ] + }, + "timeSigParensRightSmallLarge":{ + "bBoxNE":[ + 0.176, + 1.288 + ], + "bBoxSW":[ + -0.04, + -1.288 + ] + }, + "timeSigParensRightSmallNarrow":{ + "bBoxNE":[ + 0.384, + 1.104 + ], + "bBoxSW":[ + 0.004, + -1.104 + ] + }, + "timeSigPlus":{ + "bBoxNE":[ + 2.644, + 1.432 + ], + "bBoxSW":[ + 0.0, + -1.432 + ] + }, + "timeSigPlusLarge":{ + "bBoxNE":[ + 0.4, + 0.628 + ], + "bBoxSW":[ + 0.0, + -0.632 + ] + }, + "timeSigPlusSmall":{ + "bBoxNE":[ + 1.672, + 0.796 + ], + "bBoxSW":[ + 0.0, + -0.788 + ] + }, + "timeSigPlusSmallLarge":{ + "bBoxNE":[ + 0.525119588267111, + 0.636 + ], + "bBoxSW":[ + 0.0, + -0.636 + ] + }, + "timeSigPlusSmallNarrow":{ + "bBoxNE":[ + 1.208, + 1.032 + ], + "bBoxSW":[ + 0.0, + -1.032 + ] + }, + "timeSigSlash":{ + "bBoxNE":[ + 1.436, + 2.096 + ], + "bBoxSW":[ + 0.2, + -2.092 + ] + }, + "timeSigSlashLarge":{ + "bBoxNE":[ + 0.396, + 1.972 + ], + "bBoxSW":[ + -0.00042857142857142855, + -1.968 + ] + }, + "timeSigSlashNarrow":{ + "bBoxNE":[ + 1.236, + 2.096 + ], + "bBoxSW":[ + 0.0, + -2.092 + ] + }, + "timeSigX":{ + "bBoxNE":[ + 2.348, + 2.38 + ], + "bBoxSW":[ + 0.0, + -2.38 + ] + }, + "timeSigXLarge":{ + "bBoxNE":[ + 0.404, + 1.064 + ], + "bBoxSW":[ + 0.0, + -1.06 + ] + }, + "timeSigXNarrow":{ + "bBoxNE":[ + 0.9431194744794363, + 1.488168965650726 + ], + "bBoxSW":[ + -0.0006456770514803352, + -1.496 + ] + }, + "tremolo1":{ + "bBoxNE":[ + 0.6247752591831395, + 0.352 + ], + "bBoxSW":[ + -0.632, + -0.352 + ] + }, + "tremolo2":{ + "bBoxNE":[ + 0.596, + 0.708 + ], + "bBoxSW":[ + -0.592, + -0.708 + ] + }, + "tremolo3":{ + "bBoxNE":[ + 0.5888979591836734, + 1.012 + ], + "bBoxSW":[ + -0.5864, + -1.012 + ] + }, + "tremolo4":{ + "bBoxNE":[ + 0.636, + 1.368 + ], + "bBoxSW":[ + -0.636, + -1.368 + ] + }, + "tremolo5":{ + "bBoxNE":[ + 0.644, + 1.748 + ], + "bBoxSW":[ + -0.644, + -1.748 + ] + }, + "tremoloDivisiDots2":{ + "bBoxNE":[ + 0.968, + 0.592 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "tremoloDivisiDots3":{ + "bBoxNE":[ + 1.656, + 0.672 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "tremoloDivisiDots4":{ + "bBoxNE":[ + 2.18, + 0.68 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "tremoloDivisiDots6":{ + "bBoxNE":[ + 1.628, + 1.308 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "tremoloFingered1":{ + "bBoxNE":[ + 0.6247752591831395, + 0.352 + ], + "bBoxSW":[ + -0.632, + -0.352 + ] + }, + "tremoloFingered2":{ + "bBoxNE":[ + 0.596, + 0.708 + ], + "bBoxSW":[ + -0.592, + -0.708 + ] + }, + "tremoloFingered3":{ + "bBoxNE":[ + 0.5888979591836734, + 1.012 + ], + "bBoxSW":[ + -0.5864, + -1.012 + ] + }, + "tremoloFingered4":{ + "bBoxNE":[ + 0.636, + 1.368 + ], + "bBoxSW":[ + -0.636, + -1.368 + ] + }, + "tremoloFingered5":{ + "bBoxNE":[ + 0.644, + 1.748 + ], + "bBoxSW":[ + -0.644, + -1.748 + ] + }, + "tripleTongueAbove":{ + "bBoxNE":[ + 2.256, + 1.216 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "tripleTongueBelow":{ + "bBoxNE":[ + 2.373680814924677, + 1.212 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "tuplet0":{ + "bBoxNE":[ + 1.128, + 1.808 + ], + "bBoxSW":[ + 0.04, + 0.012 + ] + }, + "tuplet0Light":{ + "bBoxNE":[ + 1.128, + 1.808 + ], + "bBoxSW":[ + 0.04, + 0.012 + ] + }, + "tuplet1":{ + "bBoxNE":[ + 0.8820593486680444, + 1.976 + ], + "bBoxSW":[ + 0.04, + -0.16 + ] + }, + "tuplet1Light":{ + "bBoxNE":[ + 0.8820593486680444, + 1.976 + ], + "bBoxSW":[ + 0.04, + -0.16 + ] + }, + "tuplet2":{ + "bBoxNE":[ + 1.444, + 1.856 + ], + "bBoxSW":[ + 0.044, + -0.08 + ] + }, + "tuplet2Light":{ + "bBoxNE":[ + 1.444, + 1.856 + ], + "bBoxSW":[ + 0.044, + -0.08 + ] + }, + "tuplet3":{ + "bBoxNE":[ + 1.344, + 1.876 + ], + "bBoxSW":[ + 0.04, + -0.08 + ] + }, + "tuplet3Light":{ + "bBoxNE":[ + 1.344, + 1.876 + ], + "bBoxSW":[ + 0.04, + -0.08 + ] + }, + "tuplet4":{ + "bBoxNE":[ + 1.356, + 2.02477077413294 + ], + "bBoxSW":[ + 0.04, + -0.2 + ] + }, + "tuplet4Light":{ + "bBoxNE":[ + 1.356, + 2.02477077413294 + ], + "bBoxSW":[ + 0.04, + -0.2 + ] + }, + "tuplet5":{ + "bBoxNE":[ + 1.4439054029343241, + 2.052 + ], + "bBoxSW":[ + 0.04, + -0.04 + ] + }, + "tuplet5Light":{ + "bBoxNE":[ + 1.4439054029343241, + 2.052 + ], + "bBoxSW":[ + 0.04, + -0.04 + ] + }, + "tuplet6":{ + "bBoxNE":[ + 1.164, + 2.016 + ], + "bBoxSW":[ + 0.04, + -0.04 + ] + }, + "tuplet6Light":{ + "bBoxNE":[ + 1.164, + 2.016 + ], + "bBoxSW":[ + 0.04, + -0.04 + ] + }, + "tuplet7":{ + "bBoxNE":[ + 1.28, + 1.964 + ], + "bBoxSW":[ + 0.04, + -0.096 + ] + }, + "tuplet7Light":{ + "bBoxNE":[ + 1.28, + 1.964 + ], + "bBoxSW":[ + 0.04, + -0.096 + ] + }, + "tuplet8":{ + "bBoxNE":[ + 1.1097261297507925, + 2.216 + ], + "bBoxSW":[ + 0.04, + -0.16 + ] + }, + "tuplet8Light":{ + "bBoxNE":[ + 1.1097261297507925, + 2.216 + ], + "bBoxSW":[ + 0.04, + -0.16 + ] + }, + "tuplet9":{ + "bBoxNE":[ + 1.248, + 2.656 + ], + "bBoxSW":[ + 0.04, + 0.0 + ] + }, + "tuplet9Light":{ + "bBoxNE":[ + 1.248, + 2.656 + ], + "bBoxSW":[ + 0.04, + 0.0 + ] + }, + "tupletColon":{ + "bBoxNE":[ + 0.54, + 1.576 + ], + "bBoxSW":[ + 0.04, + 0.32 + ] + }, + "tupletColonLight":{ + "bBoxNE":[ + 0.54, + 1.576 + ], + "bBoxSW":[ + 0.04, + 0.32 + ] + }, + "unmeasuredTremolo":{ + "bBoxNE":[ + 0.744, + 1.224 + ], + "bBoxSW":[ + -0.744, + -1.2190656273186815 + ] + }, + "unmeasuredTremoloSimple":{ + "bBoxNE":[ + 0.836, + 1.1679999999999997 + ], + "bBoxSW":[ + -0.8443041250361926, + -1.1617775750200119 + ] + }, + "unpitchedPercussionClef1":{ + "bBoxNE":[ + 1.5165504786778123, + 1.0 + ], + "bBoxSW":[ + 0.0, + -1.0 + ] + }, + "unpitchedPercussionClef2":{ + "bBoxNE":[ + 1.1933513414910686, + 1.788 + ], + "bBoxSW":[ + 0.0, + -1.788 + ] + }, + "ventiduesima":{ + "bBoxNE":[ + 1.744, + 2.088 + ], + "bBoxSW":[ + 0.04, + -0.02 + ] + }, + "ventiduesimaAlta":{ + "bBoxNE":[ + 3.644379000772445, + 2.088 + ], + "bBoxSW":[ + 0.04, + -0.02 + ] + }, + "ventiduesimaBassa":{ + "bBoxNE":[ + 3.644379000772445, + 2.088 + ], + "bBoxSW":[ + 0.04, + -0.12155973723971816 + ] + }, + "ventiduesimaBassaMb":{ + "bBoxNE":[ + 3.424, + 2.08 + ], + "bBoxSW":[ + 0.0, + -0.068 + ] + }, + "vocalFingerClickStockhausen":{ + "bBoxNE":[ + 2.532, + 2.032 + ], + "bBoxSW":[ + 0.0, + 0.000754446796632414 + ] + }, + "vocalHalbGesungen":{ + "bBoxNE":[ + 0.332, + 0.544 + ], + "bBoxSW":[ + -0.332, + 0.0 + ] + }, + "vocalMouthClosed":{ + "bBoxNE":[ + 1.5, + 0.456 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "vocalMouthOpen":{ + "bBoxNE":[ + 1.424, + 1.488 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "vocalMouthPursed":{ + "bBoxNE":[ + 1.044, + 1.0 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "vocalMouthSlightlyOpen":{ + "bBoxNE":[ + 1.46875800154489, + 1.1004444444444443 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "vocalMouthWideOpen":{ + "bBoxNE":[ + 1.572, + 1.788431532437698 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "vocalNasalVoice":{ + "bBoxNE":[ + 1.364, + 2.0 + ], + "bBoxSW":[ + 0.0, + -0.0001677983213515688 + ] + }, + "vocalSprechgesang":{ + "bBoxNE":[ + 0.628, + 1.3 + ], + "bBoxSW":[ + -0.628, + 0.0 + ] + }, + "vocalTongueClickStockhausen":{ + "bBoxNE":[ + 2.6682016602579934, + 2.044 + ], + "bBoxSW":[ + 0.0, + 0.0004023668639053253 + ] + }, + "vocalTongueFingerClickStockhausen":{ + "bBoxNE":[ + 2.568, + 2.016 + ], + "bBoxSW":[ + 0.0, + -0.00037306941194676757 + ] + }, + "vocalsSussurando":{ + "bBoxNE":[ + 0.52, + 1.576 + ], + "bBoxSW":[ + -0.52, + -0.0006000000000000015 + ] + }, + "wiggleArpeggiatoDown":{ + "bBoxNE":[ + 1.124, + 0.704 + ], + "bBoxSW":[ + -0.164, + 0.0 + ] + }, + "wiggleArpeggiatoDownArrow":{ + "bBoxNE":[ + 2.104, + 0.804 + ], + "bBoxSW":[ + 0.0, + -0.036 + ] + }, + "wiggleArpeggiatoDownSwash":{ + "bBoxNE":[ + 2.392, + 0.7498205173439303 + ], + "bBoxSW":[ + 0.0, + -0.02 + ] + }, + "wiggleArpeggiatoUp":{ + "bBoxNE":[ + 1.2, + 0.704 + ], + "bBoxSW":[ + -0.088, + 0.0 + ] + }, + "wiggleArpeggiatoUpArrow":{ + "bBoxNE":[ + 2.016, + 0.78 + ], + "bBoxSW":[ + -0.088, + -0.06069898241168461 + ] + }, + "wiggleArpeggiatoUpSwash":{ + "bBoxNE":[ + 2.304, + 0.768 + ], + "bBoxSW":[ + -0.088, + -0.004 + ] + }, + "wiggleCircular":{ + "bBoxNE":[ + 1.892, + 1.340545082611298 + ], + "bBoxSW":[ + 0.0, + 0.016221521651928826 + ] + }, + "wiggleCircularConstant":{ + "bBoxNE":[ + 0.972, + 0.056 + ], + "bBoxSW":[ + -0.06, + -1.1052497255699523 + ] + }, + "wiggleCircularConstantFlipped":{ + "bBoxNE":[ + 0.968, + 1.1092497255699523 + ], + "bBoxSW":[ + -0.06, + -0.056 + ] + }, + "wiggleCircularConstantFlippedLarge":{ + "bBoxNE":[ + 2.0755909185779773, + 2.188 + ], + "bBoxSW":[ + -0.052, + -0.056 + ] + }, + "wiggleCircularConstantLarge":{ + "bBoxNE":[ + 2.0755909185779773, + 0.056 + ], + "bBoxSW":[ + -0.052, + -2.188 + ] + }, + "wiggleCircularEnd":{ + "bBoxNE":[ + 0.7900474315681476, + 1.1561632653061225 + ], + "bBoxSW":[ + -0.004, + 0.7983318427462659 + ] + }, + "wiggleCircularLarge":{ + "bBoxNE":[ + 2.0090308509457033, + 1.3606315789473684 + ], + "bBoxSW":[ + 0.0005959961280776937, + 0.0073174190315566535 + ] + }, + "wiggleCircularLarger":{ + "bBoxNE":[ + 2.6042727272727273, + 1.6172165001447703 + ], + "bBoxSW":[ + -0.00020150673618109845, + 0.012357358166061268 + ] + }, + "wiggleCircularLargerStill":{ + "bBoxNE":[ + 3.2565780784833835, + 1.796 + ], + "bBoxSW":[ + -0.00035609200826579014, + 0.015806545120455175 + ] + }, + "wiggleCircularLargest":{ + "bBoxNE":[ + 4.288, + 2.1521432920268153 + ], + "bBoxSW":[ + -0.001159502307147264, + 0.013348785306021915 + ] + }, + "wiggleCircularSmall":{ + "bBoxNE":[ + 1.5321492599374424, + 1.2279633434923685 + ], + "bBoxSW":[ + -0.0011035861124022688, + 0.0 + ] + }, + "wiggleCircularStart":{ + "bBoxNE":[ + 1.7677806711200468, + 1.7877446686281282 + ], + "bBoxSW":[ + 0.0014049772865945159, + 0.2350548458589979 + ] + }, + "wiggleGlissando":{ + "bBoxNE":[ + 1.452, + 0.704 + ], + "bBoxSW":[ + -0.108, + 0.0 + ] + }, + "wiggleGlissandoGroup1":{ + "bBoxNE":[ + 1.3115410851781413, + 2.417900834456272 + ], + "bBoxSW":[ + -0.0931358024691358, + 0.0 + ] + }, + "wiggleGlissandoGroup2":{ + "bBoxNE":[ + 0.616, + 3.14 + ], + "bBoxSW":[ + -0.084, + 0.0 + ] + }, + "wiggleGlissandoGroup3":{ + "bBoxNE":[ + 0.7005055963916671, + 4.1 + ], + "bBoxSW":[ + -0.0900997788815386, + 0.0 + ] + }, + "wiggleRandom1":{ + "bBoxNE":[ + 8.056566062421812, + 1.3425374441663736 + ], + "bBoxSW":[ + -0.051175267969007725, + -0.8136745031208432 + ] + }, + "wiggleRandom2":{ + "bBoxNE":[ + 7.786337557836295, + 1.4919845758269816 + ], + "bBoxSW":[ + -0.046608366463103464, + -1.0725177126636605 + ] + }, + "wiggleRandom3":{ + "bBoxNE":[ + 7.773110808145867, + 1.5612272727272725 + ], + "bBoxSW":[ + -0.04062423891752704, + -1.1301538461538463 + ] + }, + "wiggleRandom4":{ + "bBoxNE":[ + 7.759035673896274, + 2.226064671996367 + ], + "bBoxSW":[ + -0.0691299457934041, + -1.5478166853638011 + ] + }, + "wiggleSawtooth":{ + "bBoxNE":[ + 2.9531453413801243, + 1.0172765184804586 + ], + "bBoxSW":[ + -0.04095041722813605, + -1.0130227237956153 + ] + }, + "wiggleSawtoothNarrow":{ + "bBoxNE":[ + 1.9686593365148428, + 1.016565414078058 + ], + "bBoxSW":[ + -0.028, + -1.024 + ] + }, + "wiggleSawtoothWide":{ + "bBoxNE":[ + 3.87030814745958, + 1.0174907788042082 + ], + "bBoxSW":[ + -0.028060567461937667, + -1.006 + ] + }, + "wiggleSquareWave":{ + "bBoxNE":[ + 2.9881518636428996, + 0.5450000000000002 + ], + "bBoxSW":[ + -0.08018934911242605, + -0.5685210132526557 + ] + }, + "wiggleSquareWaveNarrow":{ + "bBoxNE":[ + 1.9882770071396472, + 0.5562321532384453 + ], + "bBoxSW":[ + -0.06842291206593373, + -0.556 + ] + }, + "wiggleSquareWaveWide":{ + "bBoxNE":[ + 3.9286390532544377, + 0.5802731040991893 + ], + "bBoxSW":[ + -0.1, + -0.5806399999999999 + ] + }, + "wiggleTrill":{ + "bBoxNE":[ + 1.472544964064645, + 1.1441271796433459 + ], + "bBoxSW":[ + -0.22463112897775311, + 0.4393906818193737 + ] + }, + "wiggleTrillFast":{ + "bBoxNE":[ + 1.3245071709651157, + 1.1441749614830665 + ], + "bBoxSW":[ + -0.17746438263194717, + 0.43944517672541666 + ] + }, + "wiggleTrillFaster":{ + "bBoxNE":[ + 1.1442370899374992, + 1.152007202673065 + ], + "bBoxSW":[ + -0.13271339566692783, + 0.4358486609603602 + ] + }, + "wiggleTrillFasterStill":{ + "bBoxNE":[ + 1.0373171323564987, + 1.1503356540209282 + ], + "bBoxSW":[ + -0.1188820342966031, + 0.4358486609603602 + ] + }, + "wiggleTrillFastest":{ + "bBoxNE":[ + 0.8648068043539933, + 1.1376277722226347 + ], + "bBoxSW":[ + -0.12080919593124638, + 0.43944517672541666 + ] + }, + "wiggleTrillSlow":{ + "bBoxNE":[ + 1.6946075813182355, + 1.1424519620845894 + ], + "bBoxSW":[ + -0.21634409001813168, + 0.43935938890821175 + ] + }, + "wiggleTrillSlower":{ + "bBoxNE":[ + 1.9535965214665079, + 1.1424519620845894 + ], + "bBoxSW":[ + -0.24459738244097104, + 0.43935938890821175 + ] + }, + "wiggleTrillSlowerStill":{ + "bBoxNE":[ + 2.2440535373120514, + 1.1441271796433459 + ], + "bBoxSW":[ + -0.28454919059676653, + 0.4393248654051871 + ] + }, + "wiggleTrillSlowest":{ + "bBoxNE":[ + 2.584, + 1.144 + ], + "bBoxSW":[ + -0.328, + 0.4393248654051871 + ] + }, + "wiggleVIbratoLargestSlower":{ + "bBoxNE":[ + 3.808, + 1.9955113653761178 + ], + "bBoxSW":[ + -0.10061257485876929, + -1.1405372012953225 + ] + }, + "wiggleVIbratoMediumSlower":{ + "bBoxNE":[ + 1.65512, + 0.7590769765803943 + ], + "bBoxSW":[ + -0.16480556198184546, + -0.15634746646828548 + ] + }, + "wiggleVibrato":{ + "bBoxNE":[ + 0.6165523597411976, + 0.44808075661591684 + ], + "bBoxSW":[ + -0.056, + 0.0 + ] + }, + "wiggleVibratoLargeFast":{ + "bBoxNE":[ + 1.82838538706647, + 1.277 + ], + "bBoxSW":[ + -0.11484573572230959, + -0.37365743913667315 + ] + }, + "wiggleVibratoLargeFaster":{ + "bBoxNE":[ + 1.574524799942099, + 1.4215801135774533 + ], + "bBoxSW":[ + -0.09009016994374948, + -0.37047275558976356 + ] + }, + "wiggleVibratoLargeFasterStill":{ + "bBoxNE":[ + 1.3025667738631537, + 1.3426604584846842 + ], + "bBoxSW":[ + -0.10233495365852556, + -0.3785922971816461 + ] + }, + "wiggleVibratoLargeFastest":{ + "bBoxNE":[ + 1.161393876913398, + 1.3439117136708465 + ], + "bBoxSW":[ + -0.10154285423126629, + -0.3822546686441834 + ] + }, + "wiggleVibratoLargeSlow":{ + "bBoxNE":[ + 2.2176578186679943, + 1.34 + ], + "bBoxSW":[ + -0.09466396200025304, + -0.3897546951471441 + ] + }, + "wiggleVibratoLargeSlower":{ + "bBoxNE":[ + 2.607725805480504, + 1.279222480772839 + ], + "bBoxSW":[ + -0.13190762119232474, + -0.39286609639779974 + ] + }, + "wiggleVibratoLargeSlowest":{ + "bBoxNE":[ + 3.102945094313805, + 1.335111520935608 + ], + "bBoxSW":[ + -0.11385640646055101, + -0.3963390341760225 + ] + }, + "wiggleVibratoLargestFast":{ + "bBoxNE":[ + 2.668, + 2.072899717711043 + ], + "bBoxSW":[ + -0.084, + -1.1880316220394331 + ] + }, + "wiggleVibratoLargestFaster":{ + "bBoxNE":[ + 2.2047221686195337, + 2.0111061736876903 + ], + "bBoxSW":[ + -0.104, + -1.1830723479601415 + ] + }, + "wiggleVibratoLargestFasterStill":{ + "bBoxNE":[ + 1.8672659863237109, + 2.037986446256928 + ], + "bBoxSW":[ + -0.10713843876330612, + -1.1841934548795447 + ] + }, + "wiggleVibratoLargestFastest":{ + "bBoxNE":[ + 1.6095552665832384, + 1.9951497493068306 + ], + "bBoxSW":[ + -0.09702704423780799, + -1.1773052865335083 + ] + }, + "wiggleVibratoLargestSlow":{ + "bBoxNE":[ + 3.196, + 2.009480975879019 + ], + "bBoxSW":[ + -0.07255533596066013, + -1.1566278594456114 + ] + }, + "wiggleVibratoLargestSlowest":{ + "bBoxNE":[ + 4.536, + 1.9608955951095277 + ], + "bBoxSW":[ + -0.128, + -1.188608521369866 + ] + }, + "wiggleVibratoMediumFast":{ + "bBoxNE":[ + 1.279111111111111, + 0.7503481070339773 + ], + "bBoxSW":[ + -0.14522514971753858, + -0.15875 + ] + }, + "wiggleVibratoMediumFaster":{ + "bBoxNE":[ + 1.0794285714285714, + 0.8143401685080426 + ], + "bBoxSW":[ + -0.116, + -0.19059979702309401 + ] + }, + "wiggleVibratoMediumFasterStill":{ + "bBoxNE":[ + 0.8509297436020345, + 0.7959810878489688 + ], + "bBoxSW":[ + -0.1751675703513041, + -0.15560034878715467 + ] + }, + "wiggleVibratoMediumFastest":{ + "bBoxNE":[ + 0.7939304967930241, + 0.8100284389579047 + ], + "bBoxSW":[ + -0.13243138908823068, + -0.16563692279968023 + ] + }, + "wiggleVibratoMediumSlow":{ + "bBoxNE":[ + 1.4603876295915696, + 0.7839423608464602 + ], + "bBoxSW":[ + -0.17272376297124897, + -0.1618210111083177 + ] + }, + "wiggleVibratoMediumSlowest":{ + "bBoxNE":[ + 2.023166412107586, + 0.7813529260357488 + ], + "bBoxSW":[ + -0.1202347918865763, + -0.15663758627894317 + ] + }, + "wiggleVibratoSmallFast":{ + "bBoxNE":[ + 0.9084774336238806, + 0.5762208310909096 + ], + "bBoxSW":[ + -0.11574409888683851, + -0.05287389333814795 + ] + }, + "wiggleVibratoSmallFaster":{ + "bBoxNE":[ + 0.7772961485908231, + 0.56 + ], + "bBoxSW":[ + -0.077, + -0.06071841326142683 + ] + }, + "wiggleVibratoSmallFasterStill":{ + "bBoxNE":[ + 0.651438141502079, + 0.5615452946236574 + ], + "bBoxSW":[ + -0.0574846604171203, + -0.05108610818613978 + ] + }, + "wiggleVibratoSmallFastest":{ + "bBoxNE":[ + 0.5613390341760225, + 0.5572480890957734 + ], + "bBoxSW":[ + -0.12159253602390797, + -0.054200935883370806 + ] + }, + "wiggleVibratoSmallSlow":{ + "bBoxNE":[ + 1.0779390158502506, + 0.5593017635292846 + ], + "bBoxSW":[ + -0.10395040229680892, + -0.05643615409640806 + ] + }, + "wiggleVibratoSmallSlower":{ + "bBoxNE":[ + 1.3031471274265816, + 0.564 + ], + "bBoxSW":[ + -0.09951794586075172, + -0.053158780589001225 + ] + }, + "wiggleVibratoSmallSlowest":{ + "bBoxNE":[ + 1.550269060918431, + 0.552967027657677 + ], + "bBoxSW":[ + -0.096, + -0.05220181431202935 + ] + }, + "wiggleVibratoSmallestFast":{ + "bBoxNE":[ + 0.8588340184184244, + 0.368207684706184 + ], + "bBoxSW":[ + -0.053092970448674504, + 0.0 + ] + }, + "wiggleVibratoSmallestFaster":{ + "bBoxNE":[ + 0.7396905072135712, + 0.38212476245052207 + ], + "bBoxSW":[ + -0.10551600308978006, + -0.004825440882321146 + ] + }, + "wiggleVibratoSmallestFasterStill":{ + "bBoxNE":[ + 0.6287780007982385, + 0.3700899809960418 + ], + "bBoxSW":[ + -0.07713126855573381, + 0.00026549378669114354 + ] + }, + "wiggleVibratoSmallestFastest":{ + "bBoxNE":[ + 0.5309657375660481, + 0.3324214865709795 + ], + "bBoxSW":[ + -0.07580480509820155, + -0.006726976308120782 + ] + }, + "wiggleVibratoSmallestSlow":{ + "bBoxNE":[ + 0.9839871955081858, + 0.3446131254637363 + ], + "bBoxSW":[ + -0.06703810567665798, + 0.0033234752276138694 + ] + }, + "wiggleVibratoSmallestSlower":{ + "bBoxNE":[ + 1.0393209310856364, + 0.3348822167321175 + ], + "bBoxSW":[ + -0.139, + 0.0035131272507768776 + ] + }, + "wiggleVibratoSmallestSlowest":{ + "bBoxNE":[ + 1.224, + 0.3434118539281068 + ], + "bBoxSW":[ + -0.08433325215120288, + 0.0024337847203131416 + ] + }, + "wiggleVibratoStart":{ + "bBoxNE":[ + 1.648, + 1.564 + ], + "bBoxSW":[ + 0.0014198651715398682, + 0.012617180303827216 + ] + }, + "wiggleVibratoWide":{ + "bBoxNE":[ + 0.8321975308641976, + 0.8331994113232681 + ], + "bBoxSW":[ + -0.15619555635878815, + 0.0005862068965517153 + ] + }, + "wiggleWavy":{ + "bBoxNE":[ + 2.988303595228138, + 1.0573263772144676 + ], + "bBoxSW":[ + -0.08, + -1.0362738648547782 + ] + }, + "wiggleWavyNarrow":{ + "bBoxNE":[ + 1.9810170159682992, + 1.0560000000000003 + ], + "bBoxSW":[ + -0.12064439330136723, + -1.0187741935483872 + ] + }, + "wiggleWavyWide":{ + "bBoxNE":[ + 4.0, + 1.0596860240047947 + ], + "bBoxSW":[ + -0.076, + -1.0321370282726137 + ] + }, + "windClosedHole":{ + "bBoxNE":[ + 1.104, + 1.184 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "windFlatEmbouchure":{ + "bBoxNE":[ + 1.332, + 1.512 + ], + "bBoxSW":[ + 0.0, + -0.000215766218849069 + ] + }, + "windHalfClosedHole1":{ + "bBoxNE":[ + 1.152, + 1.212 + ], + "bBoxSW":[ + 0.0, + 0.004 + ] + }, + "windHalfClosedHole2":{ + "bBoxNE":[ + 1.228, + 1.264 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "windHalfClosedHole3":{ + "bBoxNE":[ + 1.1770244449585479, + 1.22 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "windLessRelaxedEmbouchure":{ + "bBoxNE":[ + 1.824, + 1.936 + ], + "bBoxSW":[ + 0.0020187685293990834, + 0.0 + ] + }, + "windLessTightEmbouchure":{ + "bBoxNE":[ + 1.788, + 1.856 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "windMouthpiecePop":{ + "bBoxNE":[ + 1.52, + 2.364 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "windMultiphonicsBlackStem":{ + "bBoxNE":[ + 1.204, + 1.46 + ], + "bBoxSW":[ + -1.216, + -1.472 + ] + }, + "windMultiphonicsBlackWhiteStem":{ + "bBoxNE":[ + 1.204, + 1.46 + ], + "bBoxSW":[ + -1.216, + -1.472 + ] + }, + "windMultiphonicsWhiteStem":{ + "bBoxNE":[ + 1.208, + 1.46 + ], + "bBoxSW":[ + -1.216, + -1.472 + ] + }, + "windOpenHole":{ + "bBoxNE":[ + 1.200325759964629, + 1.284 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "windReedPositionIn":{ + "bBoxNE":[ + 0.8, + 1.704 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "windReedPositionNormal":{ + "bBoxNE":[ + 0.796968173675263, + 1.6981447260103097 + ], + "bBoxSW":[ + 0.0, + -0.0006025237348110579 + ] + }, + "windReedPositionOut":{ + "bBoxNE":[ + 0.86, + 1.7245619834710744 + ], + "bBoxSW":[ + -0.0006170447970363199, + 0.0 + ] + }, + "windRelaxedEmbouchure":{ + "bBoxNE":[ + 1.832, + 1.96 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "windRimOnly":{ + "bBoxNE":[ + 1.108, + 1.188 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "windSharpEmbouchure":{ + "bBoxNE":[ + 1.4462270952520055, + 1.4723299809960417 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "windStrongAirPressure":{ + "bBoxNE":[ + 2.2090901699437495, + 1.292 + ], + "bBoxSW":[ + 0.0, + -0.0005 + ] + }, + "windThreeQuartersClosedHole":{ + "bBoxNE":[ + 1.172, + 1.304 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "windTightEmbouchure":{ + "bBoxNE":[ + 1.704, + 1.848 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "windTrillKey":{ + "bBoxNE":[ + 2.48, + 1.504 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "windVeryTightEmbouchure":{ + "bBoxNE":[ + 1.864, + 1.96 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + }, + "windWeakAirPressure":{ + "bBoxNE":[ + 2.268, + 1.38 + ], + "bBoxSW":[ + 0.0, + 0.0 + ] + } + }, + "glyphsWithAlternates":{ + "4stringTabClef":{ + "alternates":[ + { + "codepoint":"U+F40C", + "name":"4stringTabClefTall" + }, + { + "codepoint":"U+F40D", + "name":"4stringTabClefSerif" + } + ] + }, + "6stringTabClef":{ + "alternates":[ + { + "codepoint":"U+F40A", + "name":"6stringTabClefTall" + }, + { + "codepoint":"U+F40B", + "name":"6stringTabClefSerif" + } + ] + }, + "accdnPush":{ + "alternates":[ + { + "codepoint":"U+F45B", + "name":"accdnPushAlt" + } + ] + }, + "accidentalDoubleFlat":{ + "alternates":[ + { + "codepoint":"U+F4A1", + "name":"accidentalDoubleFlatJoinedStems" + } + ] + }, + "accidentalFlat":{ + "alternates":[ + { + "codepoint":"U+F427", + "name":"accidentalFlatSmall" + } + ] + }, + "accidentalNatural":{ + "alternates":[ + { + "codepoint":"U+F428", + "name":"accidentalNaturalSmall" + } + ] + }, + "accidentalSharp":{ + "alternates":[ + { + "codepoint":"U+F429", + "name":"accidentalSharpSmall" + } + ] + }, + "accidentalTripleFlat":{ + "alternates":[ + { + "codepoint":"U+F4A2", + "name":"accidentalTripleFlatJoinedStems" + } + ] + }, + "analyticsHauptrhythmus":{ + "alternates":[ + { + "codepoint":"U+F4B9", + "name":"analyticsHauptrhythmusR" + } + ] + }, + "articAccentAbove":{ + "alternates":[ + { + "codepoint":"U+F42A", + "name":"articAccentAboveLarge" + }, + { + "codepoint":"U+F475", + "name":"articAccentAboveSmall" + } + ] + }, + "articAccentBelow":{ + "alternates":[ + { + "codepoint":"U+F42B", + "name":"articAccentBelowLarge" + }, + { + "codepoint":"U+F476", + "name":"articAccentBelowSmall" + } + ] + }, + "articAccentStaccatoAbove":{ + "alternates":[ + { + "codepoint":"U+F485", + "name":"articAccentStaccatoAboveSmall" + } + ] + }, + "articAccentStaccatoBelow":{ + "alternates":[ + { + "codepoint":"U+F486", + "name":"articAccentStaccatoBelowSmall" + } + ] + }, + "articMarcatoAbove":{ + "alternates":[ + { + "codepoint":"U+F481", + "name":"articMarcatoAboveSmall" + } + ] + }, + "articMarcatoBelow":{ + "alternates":[ + { + "codepoint":"U+F482", + "name":"articMarcatoBelowSmall" + } + ] + }, + "articMarcatoStaccatoAbove":{ + "alternates":[ + { + "codepoint":"U+F483", + "name":"articMarcatoStaccatoAboveSmall" + } + ] + }, + "articMarcatoStaccatoBelow":{ + "alternates":[ + { + "codepoint":"U+F484", + "name":"articMarcatoStaccatoBelowSmall" + } + ] + }, + "articStaccatissimoAbove":{ + "alternates":[ + { + "codepoint":"U+F47B", + "name":"articStaccatissimoAboveSmall" + } + ] + }, + "articStaccatissimoBelow":{ + "alternates":[ + { + "codepoint":"U+F47C", + "name":"articStaccatissimoBelowSmall" + } + ] + }, + "articStaccatissimoStrokeAbove":{ + "alternates":[ + { + "codepoint":"U+F47F", + "name":"articStaccatissimoStrokeAboveSmall" + } + ] + }, + "articStaccatissimoStrokeBelow":{ + "alternates":[ + { + "codepoint":"U+F480", + "name":"articStaccatissimoStrokeBelowSmall" + } + ] + }, + "articStaccatissimoWedgeAbove":{ + "alternates":[ + { + "codepoint":"U+F47D", + "name":"articStaccatissimoWedgeAboveSmall" + } + ] + }, + "articStaccatissimoWedgeBelow":{ + "alternates":[ + { + "codepoint":"U+F47E", + "name":"articStaccatissimoWedgeBelowSmall" + } + ] + }, + "articStaccatoAbove":{ + "alternates":[ + { + "codepoint":"U+F477", + "name":"articStaccatoAboveSmall" + } + ] + }, + "articStaccatoBelow":{ + "alternates":[ + { + "codepoint":"U+F478", + "name":"articStaccatoBelowSmall" + } + ] + }, + "articTenutoAbove":{ + "alternates":[ + { + "codepoint":"U+F479", + "name":"articTenutoAboveSmall" + } + ] + }, + "articTenutoAccentAbove":{ + "alternates":[ + { + "codepoint":"U+F489", + "name":"articTenutoAccentAboveSmall" + } + ] + }, + "articTenutoAccentBelow":{ + "alternates":[ + { + "codepoint":"U+F48A", + "name":"articTenutoAccentBelowSmall" + } + ] + }, + "articTenutoBelow":{ + "alternates":[ + { + "codepoint":"U+F47A", + "name":"articTenutoBelowSmall" + } + ] + }, + "articTenutoStaccatoAbove":{ + "alternates":[ + { + "codepoint":"U+F487", + "name":"articTenutoStaccatoAboveSmall" + } + ] + }, + "articTenutoStaccatoBelow":{ + "alternates":[ + { + "codepoint":"U+F488", + "name":"articTenutoStaccatoBelowSmall" + } + ] + }, + "brace":{ + "alternates":[ + { + "codepoint":"U+F400", + "name":"braceSmall" + }, + { + "codepoint":"U+F401", + "name":"braceLarge" + }, + { + "codepoint":"U+F402", + "name":"braceLarger" + }, + { + "codepoint":"U+F403", + "name":"braceFlat" + } + ] + }, + "cClef":{ + "alternates":[ + { + "codepoint":"U+F408", + "name":"cClefFrench" + }, + { + "codepoint":"U+F473", + "name":"cClefSmall" + }, + { + "codepoint":"U+F4BF", + "name":"cClefFrench20C" + } + ] + }, + "cClefChange":{ + "alternates":[ + { + "codepoint":"U+F4C0", + "name":"cClefFrench20CChange" + } + ] + }, + "caesura":{ + "alternates":[ + { + "codepoint":"U+F42C", + "name":"caesuraSingleStroke" + } + ] + }, + "chantCclef":{ + "alternates":[ + { + "codepoint":"U+F49E", + "name":"chantCclefHufnagel" + } + ] + }, + "chantFclef":{ + "alternates":[ + { + "codepoint":"U+F49D", + "name":"chantFclefHufnagel" + } + ] + }, + "coda":{ + "alternates":[ + { + "codepoint":"U+F405", + "name":"codaJapanese" + } + ] + }, + "csymAccidentalDoubleFlat":{ + "alternates":[ + { + "codepoint":"U+F4E0", + "name":"csymAccidentalDoubleFlatSmall" + } + ] + }, + "csymAccidentalDoubleSharp":{ + "alternates":[ + { + "codepoint":"U+F4DF", + "name":"csymAccidentalDoubleSharpSmall" + } + ] + }, + "csymAccidentalFlat":{ + "alternates":[ + { + "codepoint":"U+F4DC", + "name":"csymAccidentalFlatSmall" + } + ] + }, + "csymAccidentalNatural":{ + "alternates":[ + { + "codepoint":"U+F4DD", + "name":"csymAccidentalNaturalSmall" + } + ] + }, + "csymAccidentalSharp":{ + "alternates":[ + { + "codepoint":"U+F4DE", + "name":"csymAccidentalSharpSmall" + } + ] + }, + "csymAccidentalTripleFlat":{ + "alternates":[ + { + "codepoint":"U+F4E2", + "name":"csymAccidentalTripleFlatSmall" + } + ] + }, + "csymAccidentalTripleSharp":{ + "alternates":[ + { + "codepoint":"U+F4E1", + "name":"csymAccidentalTripleSharpSmall" + } + ] + }, + "csymAugmented":{ + "alternates":[ + { + "codepoint":"U+F4D9", + "name":"csymAugmentedSmall" + } + ] + }, + "csymDiminished":{ + "alternates":[ + { + "codepoint":"U+F4D8", + "name":"csymDiminishedSmall" + } + ] + }, + "csymHalfDiminished":{ + "alternates":[ + { + "codepoint":"U+F4D7", + "name":"csymHalfDiminishedSmall" + } + ] + }, + "csymMajorSeventh":{ + "alternates":[ + { + "codepoint":"U+F4DA", + "name":"csymMajorSeventhSmall" + } + ] + }, + "csymMinor":{ + "alternates":[ + { + "codepoint":"U+F4DB", + "name":"csymMinorSmall" + } + ] + }, + "doubleTongueAbove":{ + "alternates":[ + { + "codepoint":"U+F42D", + "name":"doubleTongueAboveNoSlur" + } + ] + }, + "doubleTongueBelow":{ + "alternates":[ + { + "codepoint":"U+F42E", + "name":"doubleTongueBelowNoSlur" + } + ] + }, + "dynamicForte":{ + "alternates":[ + { + "codepoint":"U+F46D", + "name":"dynamicForteSmall" + } + ] + }, + "dynamicMezzo":{ + "alternates":[ + { + "codepoint":"U+F46C", + "name":"dynamicMezzoSmall" + } + ] + }, + "dynamicNiente":{ + "alternates":[ + { + "codepoint":"U+F471", + "name":"dynamicNienteSmall" + } + ] + }, + "dynamicPiano":{ + "alternates":[ + { + "codepoint":"U+F46B", + "name":"dynamicPianoSmall" + } + ] + }, + "dynamicRinforzando":{ + "alternates":[ + { + "codepoint":"U+F46E", + "name":"dynamicRinforzandoSmall" + } + ] + }, + "dynamicSforzando":{ + "alternates":[ + { + "codepoint":"U+F46F", + "name":"dynamicSforzandoSmall" + } + ] + }, + "dynamicZ":{ + "alternates":[ + { + "codepoint":"U+F470", + "name":"dynamicZSmall" + } + ] + }, + "fClef":{ + "alternates":[ + { + "codepoint":"U+F406", + "name":"fClefFrench" + }, + { + "codepoint":"U+F407", + "name":"fClef19thCentury" + }, + { + "codepoint":"U+F474", + "name":"fClefSmall" + } + ] + }, + "flag1024thDown":{ + "alternates":[ + { + "codepoint":"U+F426", + "name":"flag1024thDownStraight" + }, + { + "codepoint":"U+F49A", + "name":"flag1024thDownSmall" + } + ] + }, + "flag1024thUp":{ + "alternates":[ + { + "codepoint":"U+F424", + "name":"flag1024thUpStraight" + }, + { + "codepoint":"U+F425", + "name":"flag1024thUpShort" + }, + { + "codepoint":"U+F499", + "name":"flag1024thUpSmall" + } + ] + }, + "flag128thDown":{ + "alternates":[ + { + "codepoint":"U+F41D", + "name":"flag128thDownStraight" + }, + { + "codepoint":"U+F494", + "name":"flag128thDownSmall" + } + ] + }, + "flag128thUp":{ + "alternates":[ + { + "codepoint":"U+F41B", + "name":"flag128thUpStraight" + }, + { + "codepoint":"U+F41C", + "name":"flag128thUpShort" + }, + { + "codepoint":"U+F493", + "name":"flag128thUpSmall" + } + ] + }, + "flag16thDown":{ + "alternates":[ + { + "codepoint":"U+F414", + "name":"flag16thDownStraight" + }, + { + "codepoint":"U+F48E", + "name":"flag16thDownSmall" + } + ] + }, + "flag16thUp":{ + "alternates":[ + { + "codepoint":"U+F412", + "name":"flag16thUpStraight" + }, + { + "codepoint":"U+F413", + "name":"flag16thUpShort" + }, + { + "codepoint":"U+F48D", + "name":"flag16thUpSmall" + } + ] + }, + "flag256thDown":{ + "alternates":[ + { + "codepoint":"U+F420", + "name":"flag256thDownStraight" + }, + { + "codepoint":"U+F496", + "name":"flag256thDownSmall" + } + ] + }, + "flag256thUp":{ + "alternates":[ + { + "codepoint":"U+F41E", + "name":"flag256thUpStraight" + }, + { + "codepoint":"U+F41F", + "name":"flag256thUpShort" + }, + { + "codepoint":"U+F495", + "name":"flag256thUpSmall" + } + ] + }, + "flag32ndDown":{ + "alternates":[ + { + "codepoint":"U+F417", + "name":"flag32ndDownStraight" + }, + { + "codepoint":"U+F490", + "name":"flag32ndDownSmall" + } + ] + }, + "flag32ndUp":{ + "alternates":[ + { + "codepoint":"U+F415", + "name":"flag32ndUpStraight" + }, + { + "codepoint":"U+F416", + "name":"flag32ndUpShort" + }, + { + "codepoint":"U+F48F", + "name":"flag32ndUpSmall" + } + ] + }, + "flag512thDown":{ + "alternates":[ + { + "codepoint":"U+F423", + "name":"flag512thDownStraight" + }, + { + "codepoint":"U+F498", + "name":"flag512thDownSmall" + } + ] + }, + "flag512thUp":{ + "alternates":[ + { + "codepoint":"U+F421", + "name":"flag512thUpStraight" + }, + { + "codepoint":"U+F422", + "name":"flag512thUpShort" + }, + { + "codepoint":"U+F497", + "name":"flag512thUpSmall" + } + ] + }, + "flag64thDown":{ + "alternates":[ + { + "codepoint":"U+F41A", + "name":"flag64thDownStraight" + }, + { + "codepoint":"U+F492", + "name":"flag64thDownSmall" + } + ] + }, + "flag64thUp":{ + "alternates":[ + { + "codepoint":"U+F418", + "name":"flag64thUpStraight" + }, + { + "codepoint":"U+F419", + "name":"flag64thUpShort" + }, + { + "codepoint":"U+F491", + "name":"flag64thUpSmall" + } + ] + }, + "flag8thDown":{ + "alternates":[ + { + "codepoint":"U+F411", + "name":"flag8thDownStraight" + }, + { + "codepoint":"U+F48C", + "name":"flag8thDownSmall" + } + ] + }, + "flag8thUp":{ + "alternates":[ + { + "codepoint":"U+F40F", + "name":"flag8thUpStraight" + }, + { + "codepoint":"U+F410", + "name":"flag8thUpShort" + }, + { + "codepoint":"U+F48B", + "name":"flag8thUpSmall" + } + ] + }, + "gClef":{ + "alternates":[ + { + "codepoint":"U+F472", + "name":"gClefSmall" + } + ] + }, + "guitarBarreHalf":{ + "alternates":[ + { + "codepoint":"U+F4C1", + "name":"guitarBarreHalfHorizontalFractionSlash" + } + ] + }, + "guitarGolpe":{ + "alternates":[ + { + "codepoint":"U+F4B8", + "name":"guitarGolpeFlamenco" + } + ] + }, + "harpMetalRod":{ + "alternates":[ + { + "codepoint":"U+F436", + "name":"harpMetalRodAlt" + } + ] + }, + "harpTuningKey":{ + "alternates":[ + { + "codepoint":"U+F437", + "name":"harpTuningKeyAlt" + } + ] + }, + "keyboardPedalPed":{ + "alternates":[ + { + "codepoint":"U+F434", + "name":"keyboardPedalPedNoDot" + } + ] + }, + "keyboardPedalSost":{ + "alternates":[ + { + "codepoint":"U+F435", + "name":"keyboardPedalSostNoDot" + } + ] + }, + "luteFingeringRHThird":{ + "alternates":[ + { + "codepoint":"U+F44D", + "name":"luteFingeringRHThirdAlt" + } + ] + }, + "luteFrench10thCourse":{ + "alternates":[ + { + "codepoint":"U+F457", + "name":"luteFrench10thCourseStrikethru" + }, + { + "codepoint":"U+F458", + "name":"luteFrench10thCourseUnderline" + }, + { + "codepoint":"U+F459", + "name":"luteFrench10thCourseRight" + } + ] + }, + "luteFrench7thCourse":{ + "alternates":[ + { + "codepoint":"U+F44E", + "name":"luteFrench7thCourseStrikethru" + }, + { + "codepoint":"U+F44F", + "name":"luteFrench7thCourseUnderline" + }, + { + "codepoint":"U+F450", + "name":"luteFrench7thCourseRight" + } + ] + }, + "luteFrench8thCourse":{ + "alternates":[ + { + "codepoint":"U+F451", + "name":"luteFrench8thCourseStrikethru" + }, + { + "codepoint":"U+F452", + "name":"luteFrench8thCourseUnderline" + }, + { + "codepoint":"U+F453", + "name":"luteFrench8thCourseRight" + } + ] + }, + "luteFrench9thCourse":{ + "alternates":[ + { + "codepoint":"U+F454", + "name":"luteFrench9thCourseStrikethru" + }, + { + "codepoint":"U+F455", + "name":"luteFrench9thCourseUnderline" + }, + { + "codepoint":"U+F456", + "name":"luteFrench9thCourseRight" + } + ] + }, + "luteFrenchFretC":{ + "alternates":[ + { + "codepoint":"U+F45A", + "name":"luteFrenchFretCAlt" + } + ] + }, + "medRenFlatSoftB":{ + "alternates":[ + { + "codepoint":"U+F49F", + "name":"medRenFlatSoftBOld" + }, + { + "codepoint":"U+F4A0", + "name":"medRenFlatSoftBHufnagel" + } + ] + }, + "mensuralCclef":{ + "alternates":[ + { + "codepoint":"U+F49B", + "name":"mensuralCclefVoid" + }, + { + "codepoint":"U+F49C", + "name":"mensuralCclefBlack" + } + ] + }, + "mensuralProportion4":{ + "alternates":[ + { + "codepoint":"U+F43D", + "name":"mensuralProportion4Old" + } + ] + }, + "noteDoubleWhole":{ + "alternates":[ + { + "codepoint":"U+F40E", + "name":"noteDoubleWholeAlt" + } + ] + }, + "noteheadBlack":{ + "alternates":[ + { + "codepoint":"U+F46A", + "name":"noteheadBlackSmall" + }, + { + "codepoint":"U+F4BE", + "name":"noteheadBlackOversized" + } + ] + }, + "noteheadDoubleWhole":{ + "alternates":[ + { + "codepoint":"U+F43F", + "name":"noteheadDoubleWholeAlt" + }, + { + "codepoint":"U+F467", + "name":"noteheadDoubleWholeSmall" + }, + { + "codepoint":"U+F4BA", + "name":"noteheadDoubleWholeOversized" + } + ] + }, + "noteheadDoubleWholeSquare":{ + "alternates":[ + { + "codepoint":"U+F4BB", + "name":"noteheadDoubleWholeSquareOversized" + } + ] + }, + "noteheadHalf":{ + "alternates":[ + { + "codepoint":"U+F469", + "name":"noteheadHalfSmall" + }, + { + "codepoint":"U+F4BD", + "name":"noteheadHalfOversized" + } + ] + }, + "noteheadSlashDiamondWhite":{ + "alternates":[ + { + "codepoint":"U+F4E7", + "name":"noteheadSlashDiamondWhiteOversized" + } + ] + }, + "noteheadSlashHorizontalEnds":{ + "alternates":[ + { + "codepoint":"U+F4E4", + "name":"noteheadSlashHorizontalEndsOversized" + } + ] + }, + "noteheadSlashHorizontalEndsMuted":{ + "alternates":[ + { + "codepoint":"U+F4EB", + "name":"noteheadSlashHorizontalEndsMutedOversized" + } + ] + }, + "noteheadSlashVerticalEnds":{ + "alternates":[ + { + "codepoint":"U+F4E3", + "name":"noteheadSlashVerticalEndsOversized" + } + ] + }, + "noteheadSlashVerticalEndsMuted":{ + "alternates":[ + { + "codepoint":"U+F4EA", + "name":"noteheadSlashVerticalEndsMutedOversized" + } + ] + }, + "noteheadSlashVerticalEndsSmall":{ + "alternates":[ + { + "codepoint":"U+F4E8", + "name":"noteheadSlashVerticalEndsSmallOversized" + } + ] + }, + "noteheadSlashWhiteDoubleWhole":{ + "alternates":[ + { + "codepoint":"U+F4ED", + "name":"noteheadSlashWhiteDoubleWholeOversized" + } + ] + }, + "noteheadSlashWhiteHalf":{ + "alternates":[ + { + "codepoint":"U+F4E6", + "name":"noteheadSlashWhiteHalfOversized" + } + ] + }, + "noteheadSlashWhiteMuted":{ + "alternates":[ + { + "codepoint":"U+F4EC", + "name":"noteheadSlashWhiteMutedOversized" + } + ] + }, + "noteheadSlashWhiteWhole":{ + "alternates":[ + { + "codepoint":"U+F4E5", + "name":"noteheadSlashWhiteWholeOversized" + } + ] + }, + "noteheadSlashX":{ + "alternates":[ + { + "codepoint":"U+F4E9", + "name":"noteheadSlashXOversized" + } + ] + }, + "noteheadWhole":{ + "alternates":[ + { + "codepoint":"U+F468", + "name":"noteheadWholeSmall" + }, + { + "codepoint":"U+F4BC", + "name":"noteheadWholeOversized" + } + ] + }, + "pictBassDrum":{ + "alternates":[ + { + "codepoint":"U+F4AF", + "name":"pictBassDrumPeinkofer" + } + ] + }, + "pictBongos":{ + "alternates":[ + { + "codepoint":"U+F4B0", + "name":"pictBongosPeinkofer" + } + ] + }, + "pictCastanets":{ + "alternates":[ + { + "codepoint":"U+F439", + "name":"pictCastanetsSmithBrindle" + } + ] + }, + "pictConga":{ + "alternates":[ + { + "codepoint":"U+F4B1", + "name":"pictCongaPeinkofer" + } + ] + }, + "pictCowBell":{ + "alternates":[ + { + "codepoint":"U+F43B", + "name":"pictCowBellBerio" + } + ] + }, + "pictFlexatone":{ + "alternates":[ + { + "codepoint":"U+F4B6", + "name":"pictFlexatonePeinkofer" + } + ] + }, + "pictGlsp":{ + "alternates":[ + { + "codepoint":"U+F4AA", + "name":"pictGlspPeinkofer" + } + ] + }, + "pictGuiro":{ + "alternates":[ + { + "codepoint":"U+F4B4", + "name":"pictGuiroSevsay" + }, + { + "codepoint":"U+F4B5", + "name":"pictGuiroPeinkofer" + } + ] + }, + "pictLithophone":{ + "alternates":[ + { + "codepoint":"U+F4A7", + "name":"pictLithophonePeinkofer" + } + ] + }, + "pictLotusFlute":{ + "alternates":[ + { + "codepoint":"U+F4AC", + "name":"pictLotusFlutePeinkofer" + } + ] + }, + "pictMar":{ + "alternates":[ + { + "codepoint":"U+F4AB", + "name":"pictMarPeinkofer" + } + ] + }, + "pictMaraca":{ + "alternates":[ + { + "codepoint":"U+F43C", + "name":"pictMaracaSmithBrindle" + } + ] + }, + "pictMusicalSaw":{ + "alternates":[ + { + "codepoint":"U+F4B7", + "name":"pictMusicalSawPeinkofer" + } + ] + }, + "pictSleighBell":{ + "alternates":[ + { + "codepoint":"U+F43A", + "name":"pictSleighBellSmithBrindle" + } + ] + }, + "pictTambourine":{ + "alternates":[ + { + "codepoint":"U+F438", + "name":"pictTambourineStockhausen" + } + ] + }, + "pictTimbales":{ + "alternates":[ + { + "codepoint":"U+F4B3", + "name":"pictTimbalesPeinkofer" + } + ] + }, + "pictTimpani":{ + "alternates":[ + { + "codepoint":"U+F4AE", + "name":"pictTimpaniPeinkofer" + } + ] + }, + "pictTomTom":{ + "alternates":[ + { + "codepoint":"U+F4B2", + "name":"pictTomTomPeinkofer" + } + ] + }, + "pictTomTomChinese":{ + "alternates":[ + { + "codepoint":"U+F4AD", + "name":"pictTomTomChinesePeinkofer" + } + ] + }, + "pictTubaphone":{ + "alternates":[ + { + "codepoint":"U+F4A8", + "name":"pictTubaphonePeinkofer" + } + ] + }, + "pictVib":{ + "alternates":[ + { + "codepoint":"U+F4A5", + "name":"pictVibPeinkofer" + } + ] + }, + "pictVibMotorOff":{ + "alternates":[ + { + "codepoint":"U+F4A6", + "name":"pictVibMotorOffPeinkofer" + } + ] + }, + "pictXyl":{ + "alternates":[ + { + "codepoint":"U+F4A9", + "name":"pictXylPeinkofer" + } + ] + }, + "pictXylBass":{ + "alternates":[ + { + "codepoint":"U+F4A3", + "name":"pictXylBassPeinkofer" + } + ] + }, + "pictXylTenor":{ + "alternates":[ + { + "codepoint":"U+F4A4", + "name":"pictXylTenorPeinkofer" + } + ] + }, + "pluckedSnapPizzicatoAbove":{ + "alternates":[ + { + "codepoint":"U+F433", + "name":"pluckedSnapPizzicatoAboveGerman" + } + ] + }, + "pluckedSnapPizzicatoBelow":{ + "alternates":[ + { + "codepoint":"U+F432", + "name":"pluckedSnapPizzicatoBelowGerman" + } + ] + }, + "quindicesima":{ + "alternates":[ + { + "codepoint":"U+F4C2", + "name":"sedicesima" + } + ] + }, + "quindicesimaAlta":{ + "alternates":[ + { + "codepoint":"U+F4C3", + "name":"sedicesimaAlta" + } + ] + }, + "quindicesimaBassa":{ + "alternates":[ + { + "codepoint":"U+F4C4", + "name":"sedicesimaBassa" + } + ] + }, + "quindicesimaBassaMb":{ + "alternates":[ + { + "codepoint":"U+F4C8", + "name":"sedicesimaBassaMb" + } + ] + }, + "repeatRightLeft":{ + "alternates":[ + { + "codepoint":"U+F45C", + "name":"repeatRightLeftThick" + } + ] + }, + "segno":{ + "alternates":[ + { + "codepoint":"U+F404", + "name":"segnoJapanese" + } + ] + }, + "stringsChangeBowDirection":{ + "alternates":[ + { + "codepoint":"U+F431", + "name":"stringsChangeBowDirectionLiga" + }, + { + "codepoint":"U+F43E", + "name":"stringsChangeBowDirectionImposed" + } + ] + }, + "timeSig0":{ + "alternates":[ + { + "codepoint":"U+F440", + "name":"timeSig0Large" + }, + { + "codepoint":"U+F45D", + "name":"timeSig0Small" + }, + { + "codepoint":"U+F506", + "name":"timeSig0Narrow" + } + ] + }, + "timeSig1":{ + "alternates":[ + { + "codepoint":"U+F441", + "name":"timeSig1Large" + }, + { + "codepoint":"U+F45E", + "name":"timeSig1Small" + }, + { + "codepoint":"U+F507", + "name":"timeSig1Narrow" + } + ] + }, + "timeSig2":{ + "alternates":[ + { + "codepoint":"U+F442", + "name":"timeSig2Large" + }, + { + "codepoint":"U+F45F", + "name":"timeSig2Small" + }, + { + "codepoint":"U+F508", + "name":"timeSig2Narrow" + } + ] + }, + "timeSig3":{ + "alternates":[ + { + "codepoint":"U+F443", + "name":"timeSig3Large" + }, + { + "codepoint":"U+F460", + "name":"timeSig3Small" + }, + { + "codepoint":"U+F509", + "name":"timeSig3Narrow" + } + ] + }, + "timeSig4":{ + "alternates":[ + { + "codepoint":"U+F444", + "name":"timeSig4Large" + }, + { + "codepoint":"U+F461", + "name":"timeSig4Small" + }, + { + "codepoint":"U+F50A", + "name":"timeSig4Narrow" + } + ] + }, + "timeSig5":{ + "alternates":[ + { + "codepoint":"U+F445", + "name":"timeSig5Large" + }, + { + "codepoint":"U+F462", + "name":"timeSig5Small" + }, + { + "codepoint":"U+F50B", + "name":"timeSig5Narrow" + } + ] + }, + "timeSig6":{ + "alternates":[ + { + "codepoint":"U+F446", + "name":"timeSig6Large" + }, + { + "codepoint":"U+F463", + "name":"timeSig6Small" + }, + { + "codepoint":"U+F50C", + "name":"timeSig6Narrow" + } + ] + }, + "timeSig7":{ + "alternates":[ + { + "codepoint":"U+F447", + "name":"timeSig7Large" + }, + { + "codepoint":"U+F464", + "name":"timeSig7Small" + }, + { + "codepoint":"U+F50D", + "name":"timeSig7Narrow" + } + ] + }, + "timeSig8":{ + "alternates":[ + { + "codepoint":"U+F448", + "name":"timeSig8Large" + }, + { + "codepoint":"U+F465", + "name":"timeSig8Small" + }, + { + "codepoint":"U+F50E", + "name":"timeSig8Narrow" + } + ] + }, + "timeSig9":{ + "alternates":[ + { + "codepoint":"U+F449", + "name":"timeSig9Large" + }, + { + "codepoint":"U+F466", + "name":"timeSig9Small" + }, + { + "codepoint":"U+F50F", + "name":"timeSig9Narrow" + } + ] + }, + "timeSigBracketLeft":{ + "alternates":[ + { + "codepoint":"U+F4FF", + "name":"timeSigBracketLeftLarge" + }, + { + "codepoint":"U+F524", + "name":"timeSigBracketLeftNarrow" + } + ] + }, + "timeSigBracketLeftSmall":{ + "alternates":[ + { + "codepoint":"U+F501", + "name":"timeSigBracketLeftSmallLarge" + }, + { + "codepoint":"U+F526", + "name":"timeSigBracketLeftSmallNarrow" + } + ] + }, + "timeSigBracketRight":{ + "alternates":[ + { + "codepoint":"U+F500", + "name":"timeSigBracketRightLarge" + }, + { + "codepoint":"U+F525", + "name":"timeSigBracketRightNarrow" + } + ] + }, + "timeSigBracketRightSmall":{ + "alternates":[ + { + "codepoint":"U+F502", + "name":"timeSigBracketRightSmallLarge" + }, + { + "codepoint":"U+F527", + "name":"timeSigBracketRightSmallNarrow" + } + ] + }, + "timeSigComma":{ + "alternates":[ + { + "codepoint":"U+F4F7", + "name":"timeSigCommaLarge" + }, + { + "codepoint":"U+F51C", + "name":"timeSigCommaNarrow" + } + ] + }, + "timeSigCommon":{ + "alternates":[ + { + "codepoint":"U+F44A", + "name":"timeSigCommonLarge" + }, + { + "codepoint":"U+F510", + "name":"timeSigCommonNarrow" + } + ] + }, + "timeSigCut2":{ + "alternates":[ + { + "codepoint":"U+F504", + "name":"timeSigCut2Large" + }, + { + "codepoint":"U+F529", + "name":"timeSigCut2Narrow" + } + ] + }, + "timeSigCut3":{ + "alternates":[ + { + "codepoint":"U+F505", + "name":"timeSigCut3Large" + }, + { + "codepoint":"U+F52A", + "name":"timeSigCut3Narrow" + } + ] + }, + "timeSigCutCommon":{ + "alternates":[ + { + "codepoint":"U+F44B", + "name":"timeSigCutCommonLarge" + }, + { + "codepoint":"U+F511", + "name":"timeSigCutCommonNarrow" + } + ] + }, + "timeSigEquals":{ + "alternates":[ + { + "codepoint":"U+F4F0", + "name":"timeSigEqualsLarge" + }, + { + "codepoint":"U+F515", + "name":"timeSigEqualsNarrow" + } + ] + }, + "timeSigFractionHalf":{ + "alternates":[ + { + "codepoint":"U+F4F9", + "name":"timeSigFractionHalfLarge" + }, + { + "codepoint":"U+F51E", + "name":"timeSigFractionHalfNarrow" + } + ] + }, + "timeSigFractionOneThird":{ + "alternates":[ + { + "codepoint":"U+F4FB", + "name":"timeSigFractionOneThirdLarge" + }, + { + "codepoint":"U+F520", + "name":"timeSigFractionOneThirdNarrow" + } + ] + }, + "timeSigFractionQuarter":{ + "alternates":[ + { + "codepoint":"U+F4F8", + "name":"timeSigFractionQuarterLarge" + }, + { + "codepoint":"U+F51D", + "name":"timeSigFractionQuarterNarrow" + } + ] + }, + "timeSigFractionThreeQuarters":{ + "alternates":[ + { + "codepoint":"U+F4FA", + "name":"timeSigFractionThreeQuartersLarge" + }, + { + "codepoint":"U+F51F", + "name":"timeSigFractionThreeQuartersNarrow" + } + ] + }, + "timeSigFractionTwoThirds":{ + "alternates":[ + { + "codepoint":"U+F4FC", + "name":"timeSigFractionTwoThirdsLarge" + }, + { + "codepoint":"U+F521", + "name":"timeSigFractionTwoThirdsNarrow" + } + ] + }, + "timeSigFractionalSlash":{ + "alternates":[ + { + "codepoint":"U+F4EF", + "name":"timeSigFractionalSlashLarge" + }, + { + "codepoint":"U+F514", + "name":"timeSigFractionalSlashNarrow" + } + ] + }, + "timeSigMinus":{ + "alternates":[ + { + "codepoint":"U+F4F1", + "name":"timeSigMinusLarge" + }, + { + "codepoint":"U+F516", + "name":"timeSigMinusNarrow" + } + ] + }, + "timeSigMultiply":{ + "alternates":[ + { + "codepoint":"U+F4F2", + "name":"timeSigMultiplyLarge" + }, + { + "codepoint":"U+F517", + "name":"timeSigMultiplyNarrow" + } + ] + }, + "timeSigOpenPenderecki":{ + "alternates":[ + { + "codepoint":"U+F4FE", + "name":"timeSigOpenPendereckiLarge" + }, + { + "codepoint":"U+F523", + "name":"timeSigOpenPendereckiNarrow" + } + ] + }, + "timeSigParensLeft":{ + "alternates":[ + { + "codepoint":"U+F4F5", + "name":"timeSigParensLeftLarge" + }, + { + "codepoint":"U+F51A", + "name":"timeSigParensLeftNarrow" + } + ] + }, + "timeSigParensLeftSmall":{ + "alternates":[ + { + "codepoint":"U+F4F3", + "name":"timeSigParensLeftSmallLarge" + }, + { + "codepoint":"U+F518", + "name":"timeSigParensLeftSmallNarrow" + } + ] + }, + "timeSigParensRight":{ + "alternates":[ + { + "codepoint":"U+F4F6", + "name":"timeSigParensRightLarge" + }, + { + "codepoint":"U+F51B", + "name":"timeSigParensRightNarrow" + } + ] + }, + "timeSigParensRightSmall":{ + "alternates":[ + { + "codepoint":"U+F4F4", + "name":"timeSigParensRightSmallLarge" + }, + { + "codepoint":"U+F519", + "name":"timeSigParensRightSmallNarrow" + } + ] + }, + "timeSigPlus":{ + "alternates":[ + { + "codepoint":"U+F44C", + "name":"timeSigPlusLarge" + }, + { + "codepoint":"U+F512", + "name":"timeSigPlusNarrow" + } + ] + }, + "timeSigPlusSmall":{ + "alternates":[ + { + "codepoint":"U+F4EE", + "name":"timeSigPlusSmallLarge" + }, + { + "codepoint":"U+F513", + "name":"timeSigPlusSmallNarrow" + } + ] + }, + "timeSigSlash":{ + "alternates":[ + { + "codepoint":"U+F503", + "name":"timeSigSlashLarge" + }, + { + "codepoint":"U+F528", + "name":"timeSigSlashNarrow" + } + ] + }, + "timeSigX":{ + "alternates":[ + { + "codepoint":"U+F4FD", + "name":"timeSigXLarge" + }, + { + "codepoint":"U+F522", + "name":"timeSigXNarrow" + } + ] + }, + "tripleTongueAbove":{ + "alternates":[ + { + "codepoint":"U+F42F", + "name":"tripleTongueAboveNoSlur" + } + ] + }, + "tripleTongueBelow":{ + "alternates":[ + { + "codepoint":"U+F430", + "name":"tripleTongueBelowNoSlur" + } + ] + }, + "tuplet0":{ + "alternates":[ + { + "codepoint":"U+F4CC", + "name":"tuplet0Light" + } + ] + }, + "tuplet1":{ + "alternates":[ + { + "codepoint":"U+F4CD", + "name":"tuplet1Light" + } + ] + }, + "tuplet2":{ + "alternates":[ + { + "codepoint":"U+F4CE", + "name":"tuplet2Light" + } + ] + }, + "tuplet3":{ + "alternates":[ + { + "codepoint":"U+F4CF", + "name":"tuplet3Light" + } + ] + }, + "tuplet4":{ + "alternates":[ + { + "codepoint":"U+F4D0", + "name":"tuplet4Light" + } + ] + }, + "tuplet5":{ + "alternates":[ + { + "codepoint":"U+F4D1", + "name":"tuplet5Light" + } + ] + }, + "tuplet6":{ + "alternates":[ + { + "codepoint":"U+F4D2", + "name":"tuplet6Light" + } + ] + }, + "tuplet7":{ + "alternates":[ + { + "codepoint":"U+F4D3", + "name":"tuplet7Light" + } + ] + }, + "tuplet8":{ + "alternates":[ + { + "codepoint":"U+F4D4", + "name":"tuplet8Light" + } + ] + }, + "tuplet9":{ + "alternates":[ + { + "codepoint":"U+F4D5", + "name":"tuplet9Light" + } + ] + }, + "tupletColon":{ + "alternates":[ + { + "codepoint":"U+F4D6", + "name":"tupletColonLight" + } + ] + }, + "unpitchedPercussionClef1":{ + "alternates":[ + { + "codepoint":"U+F409", + "name":"unpitchedPercussionClef1Alt" + } + ] + }, + "ventiduesima":{ + "alternates":[ + { + "codepoint":"U+F4C5", + "name":"ventiquattresima" + } + ] + }, + "ventiduesimaAlta":{ + "alternates":[ + { + "codepoint":"U+F4C6", + "name":"ventiquattresimaAlta" + } + ] + }, + "ventiduesimaBassa":{ + "alternates":[ + { + "codepoint":"U+F4C7", + "name":"ventiquattresimaBassa" + } + ] + }, + "ventiduesimaBassaMb":{ + "alternates":[ + { + "codepoint":"U+F4C9", + "name":"ventiquattresimaBassaMb" + } + ] + }, + "wiggleArpeggiatoDownSwash":{ + "alternates":[ + { + "codepoint":"U+F4CB", + "name":"wiggleArpeggiatoDownSwashCouperin" + } + ] + }, + "wiggleArpeggiatoUpSwash":{ + "alternates":[ + { + "codepoint":"U+F4CA", + "name":"wiggleArpeggiatoUpSwashCouperin" + } + ] + } + }, + "glyphsWithAnchors":{ + "accidental1CommaFlat":{ + "cutOutSE":[ + 0.5, + -0.752 + ] + }, + "accidental1CommaSharp":{ + "cutOutNW":[ + 0.504, + 0.676 + ], + "cutOutSE":[ + 1.088, + -0.744 + ], + "cutOutSW":[ + 0.428, + -0.936 + ] + }, + "accidental2CommaFlat":{ + "cutOutSE":[ + 0.524, + -0.676 + ] + }, + "accidental2CommaSharp":{ + "cutOutNW":[ + 0.42, + 0.78 + ], + "cutOutSE":[ + 1.132, + -0.844 + ], + "cutOutSW":[ + 0.428, + -0.992 + ] + }, + "accidental3CommaFlat":{ + "cutOutSE":[ + 0.52, + -0.7 + ] + }, + "accidental3CommaSharp":{ + "cutOutNW":[ + 0.396, + 0.748 + ], + "cutOutSE":[ + 1.036, + -0.74 + ], + "cutOutSW":[ + 0.428, + -0.992 + ] + }, + "accidental4CommaFlat":{ + "cutOutSE":[ + 0.564, + -0.692 + ] + }, + "accidental5CommaSharp":{ + "cutOutNW":[ + 1.412, + 0.104 + ], + "cutOutSE":[ + 1.644, + -0.544 + ], + "cutOutSW":[ + 0.624, + -2.332 + ] + }, + "accidentalArrowDown":{ + "cutOutNE":[ + 0.34, + 0.496 + ], + "cutOutNW":[ + 0.188, + 0.452 + ] + }, + "accidentalArrowUp":{ + "cutOutSE":[ + 0.36, + 0.344 + ], + "cutOutSW":[ + 0.224, + 0.34 + ] + }, + "accidentalBakiyeFlat":{ + "cutOutNE":[ + 0.648, + 1.648 + ], + "cutOutNW":[ + 0.404, + 1.272 + ], + "cutOutSE":[ + 0.676, + -0.78 + ], + "cutOutSW":[ + 0.296, + 0.64 + ] + }, + "accidentalBakiyeSharp":{ + "cutOutNE":[ + 1.088, + 1.008 + ], + "cutOutNW":[ + 0.524, + 0.732 + ], + "cutOutSE":[ + 1.076, + -0.668 + ], + "cutOutSW":[ + 0.448, + -0.936 + ] + }, + "accidentalBuyukMucennebFlat":{ + "cutOutSE":[ + 0.88, + -0.684 + ], + "cutOutSW":[ + 0.332, + 0.464 + ] + }, + "accidentalBuyukMucennebSharp":{ + "cutOutNE":[ + 1.424, + 0.904 + ], + "cutOutNW":[ + 0.592, + 0.748 + ], + "cutOutSE":[ + 1.392, + -0.932 + ], + "cutOutSW":[ + 0.592, + -1.108 + ] + }, + "accidentalDoubleFlat":{ + "cutOutNE":[ + 0.888, + 0.92 + ], + "cutOutSE":[ + 1.068, + -0.416 + ] + }, + "accidentalDoubleFlatEqualTempered":{ + "cutOutNE":[ + 1.22, + 0.7 + ], + "cutOutSE":[ + 1.352, + -0.656 + ] + }, + "accidentalDoubleFlatOneArrowDown":{ + "cutOutNE":[ + 0.888, + 0.936 + ], + "cutOutSE":[ + 0.292, + -1.992 + ], + "cutOutSW":[ + 0.372, + -0.928 + ] + }, + "accidentalDoubleFlatOneArrowUp":{ + "cutOutNE":[ + 0.86, + 0.684 + ], + "cutOutSE":[ + 0.98, + -0.74 + ] + }, + "accidentalDoubleFlatReversed":{ + "cutOutNW":[ + 0.568, + 0.772 + ], + "cutOutSW":[ + 0.476, + -0.72 + ] + }, + "accidentalDoubleFlatThreeArrowsDown":{ + "cutOutNE":[ + 0.9, + 0.904 + ], + "cutOutSE":[ + 1.016, + -0.612 + ], + "cutOutSW":[ + 0.312, + -0.948 + ] + }, + "accidentalDoubleFlatThreeArrowsUp":{ + "cutOutNE":[ + 0.396, + 1.9 + ], + "cutOutSE":[ + 0.284, + -0.724 + ] + }, + "accidentalDoubleFlatTurned":{ + "cutOutNW":[ + 0.4, + 0.46 + ], + "cutOutSW":[ + 0.564, + -0.928 + ] + }, + "accidentalDoubleFlatTwoArrowsDown":{ + "cutOutNE":[ + 0.852, + 0.884 + ], + "cutOutSE":[ + 1.036, + -0.432 + ], + "cutOutSW":[ + 0.4, + -0.912 + ] + }, + "accidentalDoubleFlatTwoArrowsUp":{ + "cutOutNE":[ + 0.932, + 0.676 + ], + "cutOutSE":[ + 0.964, + -0.864 + ] + }, + "accidentalFilledReversedFlatAndFlat":{ + "cutOutNE":[ + 0.9, + 0.896 + ], + "cutOutNW":[ + 0.632, + 0.852 + ], + "cutOutSE":[ + 1.084, + -0.612 + ], + "cutOutSW":[ + 0.476, + -0.664 + ] + }, + "accidentalFilledReversedFlatAndFlatArrowDown":{ + "cutOutNE":[ + 0.924, + 0.856 + ], + "cutOutNW":[ + 0.632, + 0.852 + ], + "cutOutSE":[ + 1.1, + -0.628 + ], + "cutOutSW":[ + 0.468, + -0.616 + ] + }, + "accidentalFilledReversedFlatAndFlatArrowUp":{ + "cutOutNE":[ + 1.1, + 0.872 + ], + "cutOutNW":[ + 0.428, + 0.892 + ], + "cutOutSE":[ + 1.116, + -0.588 + ], + "cutOutSW":[ + 0.468, + -0.624 + ] + }, + "accidentalFilledReversedFlatArrowDown":{ + "cutOutNE":[ + 0.892, + -0.844 + ], + "cutOutNW":[ + 0.528, + 0.812 + ], + "cutOutSW":[ + 0.384, + -0.628 + ] + }, + "accidentalFilledReversedFlatArrowUp":{ + "cutOutNW":[ + 0.336, + 0.76 + ], + "cutOutSE":[ + 0.772, + 1.58 + ], + "cutOutSW":[ + 0.46, + -0.82 + ] + }, + "accidentalFiveQuarterTonesFlatArrowDown":{ + "cutOutNE":[ + 0.82, + 0.74 + ], + "cutOutSE":[ + 0.372, + -0.924 + ] + }, + "accidentalFiveQuarterTonesSharpArrowUp":{ + "cutOutNW":[ + 0.532, + 0.564 + ] + }, + "accidentalFlat":{ + "cutOutNE":[ + 0.276, + 0.884 + ], + "cutOutSE":[ + 0.392, + -0.66 + ] + }, + "accidentalFlatEqualTempered":{ + "cutOutNE":[ + 0.58, + 0.82 + ], + "cutOutSE":[ + 0.396, + -0.728 + ] + }, + "accidentalFlatOneArrowDown":{ + "cutOutNE":[ + 0.28, + 0.748 + ], + "cutOutSE":[ + 0.4, + -0.692 + ] + }, + "accidentalFlatOneArrowUp":{ + "cutOutNE":[ + 0.456, + 0.7 + ], + "cutOutSE":[ + 0.344, + -0.8 + ] + }, + "accidentalFlatThreeArrowsDown":{ + "cutOutNE":[ + 0.292, + 0.72 + ], + "cutOutSE":[ + 0.44, + -0.776 + ] + }, + "accidentalFlatThreeArrowsUp":{ + "cutOutNE":[ + 0.504, + 0.828 + ], + "cutOutSE":[ + 0.172, + -0.888 + ] + }, + "accidentalFlatTurned":{ + "cutOutNW":[ + 0.428, + 0.652 + ], + "cutOutSW":[ + 0.612, + -0.852 + ] + }, + "accidentalFlatTwoArrowsDown":{ + "cutOutNE":[ + 0.28, + 0.804 + ], + "cutOutNW":[ + -0.044, + -0.988 + ], + "cutOutSE":[ + 0.412, + -0.692 + ] + }, + "accidentalFlatTwoArrowsUp":{ + "cutOutNE":[ + 0.496, + 0.888 + ], + "cutOutSE":[ + 0.284, + -0.728 + ] + }, + "accidentalHalfSharpArrowDown":{ + "cutOutNE":[ + 0.588, + 0.648 + ], + "cutOutNW":[ + 0.36, + 0.552 + ] + }, + "accidentalHalfSharpArrowUp":{ + "cutOutSE":[ + 0.636, + -0.536 + ], + "cutOutSW":[ + 0.356, + -0.676 + ] + }, + "accidentalKomaFlat":{ + "cutOutNW":[ + 0.508, + 0.8 + ], + "cutOutSW":[ + 0.452, + -0.808 + ] + }, + "accidentalKomaSharp":{ + "cutOutNE":[ + 0.72, + 0.816 + ], + "cutOutNW":[ + 0.512, + 0.684 + ], + "cutOutSE":[ + 0.66, + -0.644 + ], + "cutOutSW":[ + 0.428, + -0.832 + ] + }, + "accidentalKoron":{ + "cutOutSE":[ + 0.236, + -0.576 + ] + }, + "accidentalKucukMucennebFlat":{ + "cutOutNE":[ + 0.252, + 0.848 + ], + "cutOutSE":[ + 0.252, + -0.768 + ] + }, + "accidentalKucukMucennebSharp":{ + "cutOutNE":[ + 0.908, + 0.92 + ], + "cutOutNW":[ + 0.664, + 0.784 + ], + "cutOutSE":[ + 0.8, + -0.992 + ], + "cutOutSW":[ + 0.612, + -1.052 + ] + }, + "accidentalLowerOneSeptimalComma":{ + "cutOutNE":[ + 0.256, + 0.468 + ] + }, + "accidentalLowerOneTridecimalQuartertone":{ + "cutOutNW":[ + 0.316, + 0.8 + ], + "cutOutSW":[ + 0.46, + -0.688 + ] + }, + "accidentalLowerOneUndecimalQuartertone":{ + "cutOutNW":[ + 0.52, + 0.788 + ], + "cutOutSW":[ + 0.388, + -0.768 + ] + }, + "accidentalLowerTwoSeptimalCommas":{ + "cutOutNE":[ + 0.152, + 1.076 + ] + }, + "accidentalNarrowReversedFlat":{ + "cutOutNW":[ + 0.536, + 0.804 + ], + "cutOutSW":[ + 0.54, + -0.768 + ] + }, + "accidentalNarrowReversedFlatAndFlat":{ + "cutOutNE":[ + 0.804, + 0.808 + ], + "cutOutNW":[ + 0.268, + 0.792 + ], + "cutOutSE":[ + 0.956, + -0.696 + ], + "cutOutSW":[ + 0.22, + -0.692 + ] + }, + "accidentalNatural":{ + "cutOutNE":[ + 0.24, + 0.848 + ], + "cutOutSW":[ + 0.568, + -0.72 + ] + }, + "accidentalNaturalEqualTempered":{ + "cutOutSW":[ + 0.604, + -0.732 + ] + }, + "accidentalNaturalFlat":{ + "cutOutNE":[ + 1.22, + 0.78 + ], + "cutOutSE":[ + 0.788, + -0.876 + ], + "cutOutSW":[ + 0.568, + -0.852 + ] + }, + "accidentalNaturalOneArrowDown":{ + "cutOutNE":[ + 0.236, + 0.804 + ], + "cutOutSW":[ + 0.412, + -0.748 + ] + }, + "accidentalNaturalOneArrowUp":{ + "cutOutNE":[ + 0.42, + 0.796 + ], + "cutOutSW":[ + 0.624, + -0.78 + ] + }, + "accidentalNaturalReversed":{ + "cutOutNW":[ + 0.668, + 0.852 + ], + "cutOutSE":[ + 0.232, + -0.78 + ] + }, + "accidentalNaturalSharp":{ + "cutOutNE":[ + 1.888, + 0.824 + ], + "cutOutSE":[ + 1.924, + -0.784 + ], + "cutOutSW":[ + 0.532, + -0.872 + ] + }, + "accidentalNaturalThreeArrowsDown":{ + "cutOutNE":[ + 0.32, + 0.724 + ], + "cutOutSW":[ + 0.376, + -0.824 + ] + }, + "accidentalNaturalThreeArrowsUp":{ + "cutOutNE":[ + 0.488, + 0.804 + ], + "cutOutSW":[ + 0.572, + -0.824 + ] + }, + "accidentalNaturalTwoArrowsDown":{ + "cutOutNE":[ + 0.24, + 0.808 + ], + "cutOutSW":[ + 0.392, + -0.752 + ] + }, + "accidentalNaturalTwoArrowsUp":{ + "cutOutNE":[ + 0.444, + 0.82 + ], + "cutOutSW":[ + 0.608, + -0.736 + ] + }, + "accidentalOneAndAHalfSharpsArrowDown":{ + "cutOutNW":[ + 0.312, + 0.672 + ], + "cutOutSE":[ + 1.232, + -0.632 + ] + }, + "accidentalOneAndAHalfSharpsArrowUp":{ + "cutOutNW":[ + 0.32, + 0.916 + ], + "cutOutSE":[ + 1.216, + -0.392 + ] + }, + "accidentalQuarterFlatEqualTempered":{ + "cutOutNW":[ + 0.156, + 0.8 + ], + "cutOutSW":[ + 0.424, + -0.752 + ] + }, + "accidentalQuarterSharpEqualTempered":{ + "cutOutSE":[ + 0.712, + -0.164 + ], + "cutOutSW":[ + 0.584, + -0.344 + ] + }, + "accidentalQuarterToneFlat4":{ + "cutOutNE":[ + 0.804, + 2.192 + ], + "cutOutSE":[ + 1.076, + -0.636 + ], + "cutOutSW":[ + 0.552, + 1.36 + ] + }, + "accidentalQuarterToneFlatArrowUp":{ + "cutOutNE":[ + 0.456, + 0.7 + ], + "cutOutSE":[ + 0.344, + -0.8 + ] + }, + "accidentalQuarterToneFlatFilledReversed":{ + "cutOutNW":[ + 0.58, + 0.844 + ], + "cutOutSW":[ + 0.5, + -0.76 + ] + }, + "accidentalQuarterToneFlatNaturalArrowDown":{ + "cutOutNE":[ + 0.236, + 0.804 + ], + "cutOutSW":[ + 0.412, + -0.748 + ] + }, + "accidentalQuarterToneFlatPenderecki":{ + "cutOutNE":[ + 0.232, + 0.764 + ], + "cutOutSE":[ + 0.312, + -0.724 + ] + }, + "accidentalQuarterToneFlatStein":{ + "cutOutNW":[ + 0.532, + 0.708 + ], + "cutOutSW":[ + 0.48, + -0.844 + ] + }, + "accidentalQuarterToneFlatVanBlankenburg":{ + "cutOutNE":[ + 0.216, + 0.32 + ] + }, + "accidentalQuarterToneSharp4":{ + "cutOutNE":[ + 0.844, + 1.776 + ], + "cutOutSE":[ + 1.152, + -0.736 + ], + "cutOutSW":[ + 0.58, + -0.956 + ] + }, + "accidentalQuarterToneSharpArrowDown":{ + "cutOutNE":[ + 1.08, + 0.996 + ], + "cutOutNW":[ + 0.464, + -0.92 + ], + "cutOutSW":[ + -1.1, + -2.972 + ] + }, + "accidentalQuarterToneSharpBusotti":{ + "cutOutNE":[ + 0.66, + 0.812 + ], + "cutOutNW":[ + 0.5, + 0.612 + ], + "cutOutSE":[ + 0.668, + 0.232 + ], + "cutOutSW":[ + 0.492, + 0.092 + ] + }, + "accidentalQuarterToneSharpNaturalArrowUp":{ + "cutOutNE":[ + 0.42, + 0.796 + ], + "cutOutSW":[ + 0.624, + -0.78 + ] + }, + "accidentalQuarterToneSharpStein":{ + "cutOutNE":[ + 0.64, + 0.856 + ], + "cutOutNW":[ + 0.512, + 0.684 + ], + "cutOutSE":[ + 0.66, + -0.644 + ], + "cutOutSW":[ + 0.5, + -0.832 + ] + }, + "accidentalQuarterToneSharpWiggle":{ + "cutOutNE":[ + 2.148, + 2.492 + ], + "cutOutSE":[ + 2.156, + 0.76 + ], + "cutOutSW":[ + 1.556, + 0.54 + ] + }, + "accidentalRaiseOneSeptimalComma":{ + "cutOutSE":[ + 0.212, + 0.64 + ] + }, + "accidentalRaiseOneTridecimalQuartertone":{ + "cutOutNE":[ + 0.984, + 1.972 + ], + "cutOutNW":[ + 0.384, + 1.712 + ], + "cutOutSE":[ + 1.048, + 1.368 + ], + "cutOutSW":[ + 0.432, + 1.14 + ] + }, + "accidentalRaiseOneUndecimalQuartertone":{ + "cutOutNE":[ + 0.772, + 1.828 + ], + "cutOutNW":[ + 0.608, + 1.672 + ], + "cutOutSE":[ + 0.744, + 1.236 + ], + "cutOutSW":[ + 0.616, + 1.048 + ] + }, + "accidentalRaiseTwoSeptimalCommas":{ + "cutOutSE":[ + 0.148, + 0.64 + ] + }, + "accidentalReversedFlatAndFlatArrowDown":{ + "cutOutNE":[ + 0.9, + 0.932 + ], + "cutOutNW":[ + 0.64, + 0.928 + ], + "cutOutSE":[ + 1.1, + -0.548 + ], + "cutOutSW":[ + 0.484, + -0.588 + ] + }, + "accidentalReversedFlatAndFlatArrowUp":{ + "cutOutNE":[ + 1.108, + 0.892 + ], + "cutOutNW":[ + 0.34, + 0.904 + ], + "cutOutSE":[ + 1.212, + -0.524 + ], + "cutOutSW":[ + 0.368, + -0.552 + ] + }, + "accidentalReversedFlatArrowDown":{ + "cutOutNE":[ + 0.88, + -0.82 + ], + "cutOutNW":[ + 0.556, + 0.864 + ], + "cutOutSW":[ + 0.4, + -0.64 + ] + }, + "accidentalReversedFlatArrowUp":{ + "cutOutNW":[ + 0.312, + 0.784 + ], + "cutOutSE":[ + 0.816, + 1.516 + ], + "cutOutSW":[ + 0.488, + -0.764 + ] + }, + "accidentalSharp":{ + "cutOutNE":[ + 1.096, + 0.896 + ], + "cutOutNW":[ + 0.496, + 0.66 + ], + "cutOutSE":[ + 1.08, + -0.808 + ], + "cutOutSW":[ + 0.424, + -0.996 + ] + }, + "accidentalSharpOneArrowDown":{ + "cutOutNE":[ + 1.08, + 0.996 + ], + "cutOutNW":[ + 0.464, + -0.92 + ], + "cutOutSW":[ + -1.1, + -2.972 + ] + }, + "accidentalSharpOneArrowUp":{ + "cutOutNE":[ + 1.06, + 1.004 + ], + "cutOutSE":[ + 1.076, + -0.688 + ], + "cutOutSW":[ + 0.44, + -0.928 + ] + }, + "accidentalSharpOneHorizontalStroke":{ + "cutOutNE":[ + 1.12, + 0.816 + ], + "cutOutNW":[ + 0.5, + 0.516 + ], + "cutOutSE":[ + 1.116, + 0.268 + ], + "cutOutSW":[ + 0.476, + -0.036 + ] + }, + "accidentalSharpReversed":{ + "cutOutNE":[ + 0.984, + 0.732 + ], + "cutOutNW":[ + 0.472, + 1.068 + ], + "cutOutSE":[ + 1.06, + -0.936 + ], + "cutOutSW":[ + 0.44, + -0.652 + ] + }, + "accidentalSharpSharp":{ + "cutOutNE":[ + 2.168, + 0.82 + ], + "cutOutNW":[ + 0.48, + 0.592 + ], + "cutOutSE":[ + 2.176, + -0.704 + ], + "cutOutSW":[ + 0.412, + -0.896 + ] + }, + "accidentalSharpThreeArrowsDown":{ + "cutOutNE":[ + 1.152, + 1.064 + ], + "cutOutNW":[ + 0.528, + 0.728 + ], + "cutOutSW":[ + 0.452, + -0.94 + ] + }, + "accidentalSharpThreeArrowsUp":{ + "cutOutNE":[ + 1.076, + 0.952 + ], + "cutOutSE":[ + 1.088, + -0.864 + ], + "cutOutSW":[ + 0.372, + -1.088 + ] + }, + "accidentalSharpTwoArrowsDown":{ + "cutOutNE":[ + 1.08, + 0.94 + ], + "cutOutSW":[ + 0.46, + -1.024 + ] + }, + "accidentalSharpTwoArrowsUp":{ + "cutOutNE":[ + 1.028, + 1.048 + ], + "cutOutSE":[ + 1.096, + -0.684 + ], + "cutOutSW":[ + 0.44, + -0.956 + ] + }, + "accidentalSori":{ + "cutOutNE":[ + 1.164, + 0.324 + ], + "cutOutNW":[ + 0.376, + 0.816 + ], + "cutOutSE":[ + 1.16, + -0.316 + ], + "cutOutSW":[ + 0.38, + -0.74 + ] + }, + "accidentalTavenerFlat":{ + "cutOutNW":[ + 1.252, + 1.7 + ], + "cutOutSE":[ + 1.732, + 0.364 + ] + }, + "accidentalTavenerSharp":{ + "cutOutNE":[ + -0.76, + 4.56 + ], + "cutOutNW":[ + 1.496, + 2.156 + ], + "cutOutSE":[ + 2.08, + 0.7 + ], + "cutOutSW":[ + 1.42, + 0.484 + ] + }, + "accidentalThreeQuarterTonesFlatArrowDown":{ + "cutOutNE":[ + 0.28, + 0.748 + ], + "cutOutSE":[ + 0.4, + -0.692 + ] + }, + "accidentalThreeQuarterTonesFlatArrowUp":{ + "cutOutNE":[ + 1.04, + 0.736 + ], + "cutOutSE":[ + 1.044, + -0.572 + ] + }, + "accidentalThreeQuarterTonesFlatCouper":{ + "cutOutNE":[ + 0.948, + 0.796 + ], + "cutOutNW":[ + 0.564, + 0.792 + ], + "cutOutSE":[ + 1.08, + -0.744 + ], + "cutOutSW":[ + 0.484, + -0.764 + ] + }, + "accidentalThreeQuarterTonesFlatGrisey":{ + "cutOutNE":[ + 0.52, + 0.8 + ], + "cutOutSE":[ + 0.428, + -0.596 + ] + }, + "accidentalThreeQuarterTonesFlatTartini":{ + "cutOutNE":[ + 0.18, + 0.936 + ] + }, + "accidentalThreeQuarterTonesFlatZimmermann":{ + "cutOutNE":[ + 1.192, + 0.764 + ], + "cutOutNW":[ + 0.556, + 0.772 + ] + }, + "accidentalThreeQuarterTonesSharpArrowDown":{ + "cutOutSE":[ + 0.48, + -0.692 + ] + }, + "accidentalThreeQuarterTonesSharpArrowUp":{ + "cutOutNE":[ + 1.06, + 1.004 + ], + "cutOutSE":[ + 1.076, + -0.688 + ], + "cutOutSW":[ + 0.44, + -0.928 + ] + }, + "accidentalThreeQuarterTonesSharpBusotti":{ + "cutOutNE":[ + 1.544, + 0.868 + ], + "cutOutNW":[ + 0.504, + 0.508 + ], + "cutOutSE":[ + 1.744, + 0.148 + ], + "cutOutSW":[ + 0.484, + -0.032 + ] + }, + "accidentalThreeQuarterTonesSharpStein":{ + "cutOutNE":[ + 1.304, + 1.0 + ], + "cutOutNW":[ + 0.304, + 0.66 + ], + "cutOutSE":[ + 1.2, + -0.648 + ], + "cutOutSW":[ + 0.228, + -0.852 + ] + }, + "accidentalTripleFlat":{ + "cutOutNE":[ + 1.748, + 0.736 + ], + "cutOutSE":[ + 1.94, + -0.64 + ] + }, + "accidentalTripleSharp":{ + "cutOutNE":[ + 1.116, + 0.684 + ], + "cutOutNW":[ + 0.42, + 0.448 + ], + "cutOutSE":[ + 1.868, + -0.744 + ], + "cutOutSW":[ + 0.412, + -1.024 + ] + }, + "accidentalXenakisOneThirdToneSharp":{ + "cutOutNE":[ + 0.948, + 0.772 + ], + "cutOutNW":[ + 0.768, + 0.688 + ], + "cutOutSE":[ + 0.912, + -0.612 + ], + "cutOutSW":[ + 0.764, + -0.724 + ] + }, + "accidentalXenakisTwoThirdTonesSharp":{ + "cutOutNE":[ + 1.268, + 2.204 + ], + "cutOutNW":[ + 0.824, + 2.088 + ], + "cutOutSE":[ + 1.284, + 0.728 + ], + "cutOutSW":[ + 0.708, + 0.504 + ] + }, + "beamAccelRit1":{ + "repeatOffset":[ + 4.584, + 0.0 + ] + }, + "beamAccelRit10":{ + "repeatOffset":[ + 2.02, + 0.0 + ] + }, + "beamAccelRit11":{ + "repeatOffset":[ + 1.748, + 0.0 + ] + }, + "beamAccelRit12":{ + "repeatOffset":[ + 1.492, + 0.0 + ] + }, + "beamAccelRit13":{ + "repeatOffset":[ + 1.156, + 0.0 + ] + }, + "beamAccelRit14":{ + "repeatOffset":[ + 0.844, + 0.0 + ] + }, + "beamAccelRit15":{ + "repeatOffset":[ + 0.776, + 0.0 + ] + }, + "beamAccelRit2":{ + "repeatOffset":[ + 4.324, + 0.0 + ] + }, + "beamAccelRit3":{ + "repeatOffset":[ + 4.024, + 0.0 + ] + }, + "beamAccelRit4":{ + "repeatOffset":[ + 3.724, + 0.0 + ] + }, + "beamAccelRit5":{ + "repeatOffset":[ + 3.516, + 0.0 + ] + }, + "beamAccelRit6":{ + "repeatOffset":[ + 3.172, + 0.0 + ] + }, + "beamAccelRit7":{ + "repeatOffset":[ + 2.948, + 0.0 + ] + }, + "beamAccelRit8":{ + "repeatOffset":[ + 2.544, + 0.0 + ] + }, + "beamAccelRit9":{ + "repeatOffset":[ + 2.284, + 0.0 + ] + }, + "dynamicFF":{ + "opticalCenter":[ + 1.852, + 0.0 + ] + }, + "dynamicFFF":{ + "opticalCenter":[ + 2.472, + 0.0 + ] + }, + "dynamicFFFF":{ + "opticalCenter":[ + 2.824, + 0.0 + ] + }, + "dynamicFFFFF":{ + "opticalCenter":[ + 2.976, + 0.0 + ] + }, + "dynamicFFFFFF":{ + "opticalCenter":[ + 3.504, + 0.0 + ] + }, + "dynamicForte":{ + "opticalCenter":[ + 1.256, + 0.0 + ] + }, + "dynamicFortePiano":{ + "opticalCenter":[ + 1.5, + 0.0 + ] + }, + "dynamicForzando":{ + "opticalCenter":[ + 1.352, + 0.0 + ] + }, + "dynamicMF":{ + "opticalCenter":[ + 1.796, + 0.0 + ] + }, + "dynamicMP":{ + "opticalCenter":[ + 1.848, + 0.0 + ] + }, + "dynamicMezzo":{ + "opticalCenter":[ + 0.872, + 0.0 + ] + }, + "dynamicNiente":{ + "opticalCenter":[ + 0.616, + 0.0 + ] + }, + "dynamicPF":{ + "opticalCenter":[ + 1.68, + 0.0 + ] + }, + "dynamicPP":{ + "opticalCenter":[ + 1.708, + 0.0 + ] + }, + "dynamicPPP":{ + "opticalCenter":[ + 2.368, + 0.0 + ] + }, + "dynamicPPPP":{ + "opticalCenter":[ + 3.004, + 0.0 + ] + }, + "dynamicPPPPP":{ + "opticalCenter":[ + 3.552, + 0.0 + ] + }, + "dynamicPPPPPP":{ + "opticalCenter":[ + 4.248, + 0.0 + ] + }, + "dynamicPiano":{ + "opticalCenter":[ + 1.22, + 0.0 + ] + }, + "dynamicRinforzando":{ + "opticalCenter":[ + 0.612, + 0.0 + ] + }, + "dynamicRinforzando1":{ + "opticalCenter":[ + 1.564, + 0.0 + ] + }, + "dynamicRinforzando2":{ + "opticalCenter":[ + 2.084, + 0.0 + ] + }, + "dynamicSforzando":{ + "opticalCenter":[ + 0.444, + 0.0 + ] + }, + "dynamicSforzando1":{ + "opticalCenter":[ + 1.3, + 0.0 + ] + }, + "dynamicSforzandoPianissimo":{ + "opticalCenter":[ + 1.972, + 0.0 + ] + }, + "dynamicSforzandoPiano":{ + "opticalCenter":[ + 1.904, + 0.0 + ] + }, + "dynamicSforzato":{ + "opticalCenter":[ + 1.76, + 0.0 + ] + }, + "dynamicSforzatoFF":{ + "opticalCenter":[ + 2.276, + 0.0 + ] + }, + "dynamicSforzatoPiano":{ + "opticalCenter":[ + 1.848, + 0.0 + ] + }, + "dynamicZ":{ + "opticalCenter":[ + 0.5, + 0.0 + ] + }, + "flag1024thDown":{ + "stemDownSW":[ + 0.0, + -4.28 + ] + }, + "flag1024thDownSmall":{ + "stemDownSW":[ + 0.008, + -4.104 + ] + }, + "flag1024thUp":{ + "stemUpNW":[ + 0.0, + 3.888 + ] + }, + "flag1024thUpShort":{ + "stemUpNW":[ + 0.016, + 3.872 + ] + }, + "flag1024thUpSmall":{ + "stemUpNW":[ + 0.0, + 4.172 + ] + }, + "flag128thDown":{ + "stemDownSW":[ + 0.0, + -1.852 + ] + }, + "flag128thDownSmall":{ + "stemDownSW":[ + 0.0, + -2.016 + ] + }, + "flag128thUp":{ + "stemUpNW":[ + 0.0, + 1.76 + ] + }, + "flag128thUpShort":{ + "stemUpNW":[ + 0.0, + 1.828 + ] + }, + "flag128thUpSmall":{ + "stemUpNW":[ + 0.004, + 1.944 + ] + }, + "flag16thDown":{ + "stemDownSW":[ + 0.0, + 0.412 + ] + }, + "flag16thDownSmall":{ + "stemDownSW":[ + 0.004, + -0.28 + ] + }, + "flag16thUp":{ + "stemUpNW":[ + 0.0, + -0.472 + ] + }, + "flag16thUpShort":{ + "stemUpNW":[ + 0.0, + -0.544 + ] + }, + "flag16thUpSmall":{ + "stemUpNW":[ + 0.0, + -0.544 + ] + }, + "flag256thDown":{ + "stemDownSW":[ + 0.0, + -2.58 + ] + }, + "flag256thDownSmall":{ + "stemDownSW":[ + -0.004, + -2.728 + ] + }, + "flag256thUp":{ + "stemUpNW":[ + 0.0, + 2.572 + ] + }, + "flag256thUpShort":{ + "stemUpNW":[ + 0.0, + 2.648 + ] + }, + "flag256thUpSmall":{ + "stemUpNW":[ + 0.0, + 2.544 + ] + }, + "flag32ndDown":{ + "stemDownSW":[ + 0.0, + -0.168 + ] + }, + "flag32ndDownSmall":{ + "stemDownSW":[ + 0.0, + -1.492 + ] + }, + "flag32ndUp":{ + "stemUpNW":[ + 0.0, + 0.196 + ] + }, + "flag32ndUpShort":{ + "stemUpNW":[ + 0.0, + 0.388 + ] + }, + "flag32ndUpSmall":{ + "stemUpNW":[ + 0.0, + 0.388 + ] + }, + "flag512thDown":{ + "stemDownSW":[ + 0.004, + -3.54 + ] + }, + "flag512thDownSmall":{ + "stemDownSW":[ + 0.016, + -3.424 + ] + }, + "flag512thUp":{ + "stemUpNW":[ + 0.004, + 3.312 + ] + }, + "flag512thUpShort":{ + "stemUpNW":[ + 0.0, + 3.272 + ] + }, + "flag512thUpSmall":{ + "stemUpNW":[ + 0.0, + 3.2 + ] + }, + "flag64thDown":{ + "stemDownSW":[ + -0.008, + -0.94 + ] + }, + "flag64thDownSmall":{ + "stemDownSW":[ + 0.0, + -1.372 + ] + }, + "flag64thUp":{ + "stemUpNW":[ + -0.016, + 1.172 + ] + }, + "flag64thUpShort":{ + "stemUpNW":[ + 0.0, + 0.848 + ] + }, + "flag64thUpSmall":{ + "stemUpNW":[ + 0.0, + 0.872 + ] + }, + "flag8thDown":{ + "graceNoteSlashNW":[ + -0.596, + 2.168 + ], + "graceNoteSlashSE":[ + 1.328, + 0.628 + ], + "stemDownSW":[ + 0.0, + 0.176 + ] + }, + "flag8thDownSmall":{ + "stemDownSW":[ + -0.016, + 0.176 + ] + }, + "flag8thUp":{ + "graceNoteSlashNE":[ + 1.284, + -0.796 + ], + "graceNoteSlashSW":[ + -0.644, + -2.456 + ], + "stemUpNW":[ + 0.0, + -0.176 + ] + }, + "flag8thUpSmall":{ + "stemUpNW":[ + 0.0, + -0.452 + ] + }, + "gClefLigatedNumberAbove":{ + "numeralBottom":[ + 2.224, + 3.468 + ] + }, + "gClefLigatedNumberBelow":{ + "numeralBottom":[ + 1.052, + -2.616 + ] + }, + "guitarVibratoStroke":{ + "repeatOffset":[ + 0.548, + 0.0 + ] + }, + "guitarWideVibratoStroke":{ + "repeatOffset":[ + 0.736, + 0.0 + ] + }, + "metNoteDoubleWhole":{ + "noteheadOrigin":[ + 0.396, + 0.0 + ] + }, + "noteABlack":{ + "stemDownNW":[ + 0.0, + -0.2 + ], + "stemUpSE":[ + 1.552, + 0.224 + ] + }, + "noteAFlatBlack":{ + "stemDownNW":[ + 0.0, + -0.2 + ], + "stemUpSE":[ + 1.552, + 0.224 + ] + }, + "noteAFlatHalf":{ + "stemDownNW":[ + 0.0, + -0.416 + ], + "stemUpSE":[ + 1.82, + 0.452 + ] + }, + "noteAHalf":{ + "stemDownNW":[ + 0.0, + -0.416 + ], + "stemUpSE":[ + 1.82, + 0.452 + ] + }, + "noteASharpBlack":{ + "stemDownNW":[ + 0.0, + -0.2 + ], + "stemUpSE":[ + 1.552, + 0.224 + ] + }, + "noteASharpHalf":{ + "stemDownNW":[ + 0.0, + -0.416 + ], + "stemUpSE":[ + 1.82, + 0.452 + ] + }, + "noteBBlack":{ + "stemDownNW":[ + 0.0, + -0.2 + ], + "stemUpSE":[ + 1.552, + 0.224 + ] + }, + "noteBFlatBlack":{ + "stemDownNW":[ + 0.0, + -0.196 + ], + "stemUpSE":[ + 1.552, + 0.224 + ] + }, + "noteBFlatHalf":{ + "stemDownNW":[ + 0.0, + -0.416 + ], + "stemUpSE":[ + 1.82, + 0.452 + ] + }, + "noteBHalf":{ + "stemDownNW":[ + 0.0, + -0.416 + ], + "stemUpSE":[ + 1.82, + 0.452 + ] + }, + "noteBSharpBlack":{ + "stemDownNW":[ + 0.0, + -0.2 + ], + "stemUpSE":[ + 1.552, + 0.224 + ] + }, + "noteBSharpHalf":{ + "stemDownNW":[ + 0.0, + -0.416 + ], + "stemUpSE":[ + 1.82, + 0.452 + ] + }, + "noteCBlack":{ + "stemDownNW":[ + 0.0, + -0.2 + ], + "stemUpSE":[ + 1.552, + 0.224 + ] + }, + "noteCFlatBlack":{ + "stemDownNW":[ + 0.0, + -0.2 + ], + "stemUpSE":[ + 1.552, + 0.224 + ] + }, + "noteCFlatHalf":{ + "stemDownNW":[ + 0.0, + -0.416 + ], + "stemUpSE":[ + 1.82, + 0.452 + ] + }, + "noteCHalf":{ + "stemDownNW":[ + 0.0, + -0.416 + ], + "stemUpSE":[ + 1.82, + 0.452 + ] + }, + "noteCSharpBlack":{ + "stemDownNW":[ + 0.0, + -0.2 + ], + "stemUpSE":[ + 1.552, + 0.224 + ] + }, + "noteCSharpHalf":{ + "stemDownNW":[ + 0.0, + -0.416 + ], + "stemUpSE":[ + 1.82, + 0.452 + ] + }, + "noteDBlack":{ + "stemDownNW":[ + 0.0, + -0.2 + ], + "stemUpSE":[ + 1.552, + 0.224 + ] + }, + "noteDFlatBlack":{ + "stemDownNW":[ + 0.0, + -0.2 + ], + "stemUpSE":[ + 1.552, + 0.224 + ] + }, + "noteDFlatHalf":{ + "stemDownNW":[ + 0.0, + -0.416 + ], + "stemUpSE":[ + 1.82, + 0.452 + ] + }, + "noteDHalf":{ + "stemDownNW":[ + 0.0, + -0.416 + ], + "stemUpSE":[ + 1.82, + 0.452 + ] + }, + "noteDSharpBlack":{ + "stemDownNW":[ + 0.0, + -0.2 + ], + "stemUpSE":[ + 1.552, + 0.224 + ] + }, + "noteDSharpHalf":{ + "stemDownNW":[ + 0.0, + -0.416 + ], + "stemUpSE":[ + 1.82, + 0.452 + ] + }, + "noteDoBlack":{ + "stemDownNW":[ + 0.0, + -0.196 + ], + "stemUpSE":[ + 1.552, + 0.212 + ] + }, + "noteDoHalf":{ + "stemDownNW":[ + 0.0, + -0.42 + ], + "stemUpSE":[ + 1.824, + 0.452 + ] + }, + "noteEBlack":{ + "stemDownNW":[ + 0.0, + -0.2 + ], + "stemUpSE":[ + 1.552, + 0.224 + ] + }, + "noteEFlatBlack":{ + "stemDownNW":[ + 0.0, + -0.2 + ], + "stemUpSE":[ + 1.552, + 0.224 + ] + }, + "noteEFlatHalf":{ + "stemDownNW":[ + 0.0, + -0.416 + ], + "stemUpSE":[ + 1.82, + 0.452 + ] + }, + "noteEHalf":{ + "stemDownNW":[ + 0.0, + -0.416 + ], + "stemUpSE":[ + 1.82, + 0.452 + ] + }, + "noteESharpBlack":{ + "stemDownNW":[ + 0.0, + -0.2 + ], + "stemUpSE":[ + 1.552, + 0.224 + ] + }, + "noteESharpHalf":{ + "stemDownNW":[ + 0.0, + -0.416 + ], + "stemUpSE":[ + 1.82, + 0.452 + ] + }, + "noteEmptyBlack":{ + "stemDownNW":[ + 0.0, + -0.2 + ], + "stemUpSE":[ + 1.552, + 0.224 + ] + }, + "noteEmptyHalf":{ + "stemDownNW":[ + 0.0, + -0.416 + ], + "stemUpSE":[ + 1.82, + 0.452 + ] + }, + "noteFBlack":{ + "stemDownNW":[ + 0.0, + -0.2 + ], + "stemUpSE":[ + 1.552, + 0.224 + ] + }, + "noteFFlatBlack":{ + "stemDownNW":[ + 0.0, + -0.2 + ], + "stemUpSE":[ + 1.552, + 0.224 + ] + }, + "noteFFlatHalf":{ + "stemDownNW":[ + 0.0, + -0.416 + ], + "stemUpSE":[ + 1.82, + 0.452 + ] + }, + "noteFHalf":{ + "stemDownNW":[ + 0.0, + -0.416 + ], + "stemUpSE":[ + 1.82, + 0.452 + ] + }, + "noteFSharpBlack":{ + "stemDownNW":[ + 0.0, + -0.2 + ], + "stemUpSE":[ + 1.552, + 0.224 + ] + }, + "noteFSharpHalf":{ + "stemDownNW":[ + 0.0, + -0.416 + ], + "stemUpSE":[ + 1.82, + 0.452 + ] + }, + "noteFaBlack":{ + "stemDownNW":[ + 0.0, + -0.196 + ], + "stemUpSE":[ + 1.552, + 0.212 + ] + }, + "noteFaHalf":{ + "stemDownNW":[ + 0.0, + -0.416 + ], + "stemUpSE":[ + 1.824, + 0.452 + ] + }, + "noteGBlack":{ + "stemDownNW":[ + 0.0, + -0.2 + ], + "stemUpSE":[ + 1.552, + 0.224 + ] + }, + "noteGFlatBlack":{ + "stemDownNW":[ + 0.0, + -0.2 + ], + "stemUpSE":[ + 1.552, + 0.224 + ] + }, + "noteGFlatHalf":{ + "stemDownNW":[ + 0.0, + -0.416 + ], + "stemUpSE":[ + 1.82, + 0.452 + ] + }, + "noteGHalf":{ + "stemDownNW":[ + 0.0, + -0.416 + ], + "stemUpSE":[ + 1.82, + 0.452 + ] + }, + "noteGSharpBlack":{ + "stemDownNW":[ + 0.0, + -0.2 + ], + "stemUpSE":[ + 1.552, + 0.224 + ] + }, + "noteGSharpHalf":{ + "stemDownNW":[ + 0.0, + -0.416 + ], + "stemUpSE":[ + 1.82, + 0.452 + ] + }, + "noteHBlack":{ + "stemDownNW":[ + 0.0, + -0.2 + ], + "stemUpSE":[ + 1.552, + 0.224 + ] + }, + "noteHHalf":{ + "stemDownNW":[ + 0.0, + -0.416 + ], + "stemUpSE":[ + 1.82, + 0.452 + ] + }, + "noteHSharpBlack":{ + "stemDownNW":[ + 0.0, + -0.2 + ], + "stemUpSE":[ + 1.552, + 0.224 + ] + }, + "noteHSharpHalf":{ + "stemDownNW":[ + 0.0, + -0.416 + ], + "stemUpSE":[ + 1.82, + 0.452 + ] + }, + "noteLaBlack":{ + "stemDownNW":[ + 0.0, + -0.196 + ], + "stemUpSE":[ + 1.552, + 0.212 + ] + }, + "noteLaHalf":{ + "stemDownNW":[ + 0.0, + -0.416 + ], + "stemUpSE":[ + 1.824, + 0.456 + ] + }, + "noteMiBlack":{ + "stemDownNW":[ + 0.0, + -0.196 + ], + "stemUpSE":[ + 1.552, + 0.212 + ] + }, + "noteMiHalf":{ + "stemDownNW":[ + 0.0, + -0.416 + ], + "stemUpSE":[ + 1.824, + 0.452 + ] + }, + "noteReBlack":{ + "stemDownNW":[ + 0.0, + -0.196 + ], + "stemUpSE":[ + 1.552, + 0.212 + ] + }, + "noteReHalf":{ + "stemDownNW":[ + 0.0, + -0.42 + ], + "stemUpSE":[ + 1.824, + 0.448 + ] + }, + "noteShapeArrowheadLeftBlack":{ + "stemDownNW":[ + 0.0, + 0.036 + ], + "stemUpSE":[ + 1.168, + 0.388 + ] + }, + "noteShapeArrowheadLeftDoubleWhole":{ + "noteheadOrigin":[ + 0.52, + 0.0 + ] + }, + "noteShapeArrowheadLeftWhite":{ + "stemDownNW":[ + 0.0, + 0.036 + ], + "stemUpSE":[ + 1.172, + 0.388 + ] + }, + "noteShapeDiamondBlack":{ + "stemDownNW":[ + 0.0, + 0.14 + ], + "stemUpSE":[ + 1.608, + -0.092 + ] + }, + "noteShapeDiamondDoubleWhole":{ + "noteheadOrigin":[ + 0.356, + 0.0 + ] + }, + "noteShapeDiamondWhite":{ + "stemDownNW":[ + 0.0, + 0.104 + ], + "stemUpSE":[ + 1.52, + -0.184 + ] + }, + "noteShapeIsoscelesTriangleBlack":{ + "stemDownNW":[ + 0.0, + 0.016 + ], + "stemUpSE":[ + 1.1, + -0.064 + ] + }, + "noteShapeIsoscelesTriangleDoubleWhole":{ + "noteheadOrigin":[ + 0.556, + 0.0 + ] + }, + "noteShapeIsoscelesTriangleWhite":{ + "stemDownNW":[ + 0.0, + 0.028 + ], + "stemUpSE":[ + 1.1, + -0.02 + ] + }, + "noteShapeKeystoneBlack":{ + "stemDownNW":[ + 0.0, + 0.396 + ], + "stemUpSE":[ + 1.052, + 0.38 + ] + }, + "noteShapeKeystoneDoubleWhole":{ + "noteheadOrigin":[ + 0.54, + 0.0 + ] + }, + "noteShapeKeystoneWhite":{ + "stemDownNW":[ + 0.0, + 0.408 + ], + "stemUpSE":[ + 1.064, + 0.408 + ] + }, + "noteShapeMoonBlack":{ + "stemDownNW":[ + 0.008, + 0.396 + ], + "stemUpSE":[ + 1.436, + 0.428 + ] + }, + "noteShapeMoonDoubleWhole":{ + "noteheadOrigin":[ + 0.552, + 0.0 + ] + }, + "noteShapeMoonLeftBlack":{ + "stemDownNW":[ + 0.0, + 0.1 + ], + "stemUpSE":[ + 1.108, + -0.016 + ] + }, + "noteShapeMoonLeftDoubleWhole":{ + "noteheadOrigin":[ + 0.544, + 0.0 + ] + }, + "noteShapeMoonLeftWhite":{ + "stemDownNW":[ + -0.004, + 0.144 + ], + "stemUpSE":[ + 1.096, + -0.032 + ] + }, + "noteShapeMoonWhite":{ + "stemDownNW":[ + 0.016, + 0.448 + ], + "stemUpSE":[ + 1.384, + 0.464 + ] + }, + "noteShapeQuarterMoonBlack":{ + "stemDownNW":[ + 0.004, + -0.416 + ], + "stemUpSE":[ + 0.984, + -0.072 + ] + }, + "noteShapeQuarterMoonDoubleWhole":{ + "noteheadOrigin":[ + 0.56, + 0.0 + ] + }, + "noteShapeQuarterMoonWhite":{ + "stemDownNW":[ + 0.012, + -0.392 + ], + "stemUpSE":[ + 0.988, + -0.08 + ] + }, + "noteShapeRoundBlack":{ + "stemDownNW":[ + 0.0, + -0.168 + ], + "stemUpSE":[ + 1.448, + 0.092 + ] + }, + "noteShapeRoundDoubleWhole":{ + "noteheadOrigin":[ + 0.512, + 0.0 + ] + }, + "noteShapeRoundWhite":{ + "stemDownNW":[ + 0.0, + -0.024 + ], + "stemUpSE":[ + 1.724, + 0.04 + ] + }, + "noteShapeSquareBlack":{ + "stemDownNW":[ + 0.0, + 0.336 + ], + "stemUpSE":[ + 1.472, + -0.304 + ] + }, + "noteShapeSquareDoubleWhole":{ + "noteheadOrigin":[ + 0.648, + 0.0 + ] + }, + "noteShapeSquareWhite":{ + "stemDownNW":[ + 0.016, + 0.58 + ], + "stemUpSE":[ + 1.5, + -0.452 + ] + }, + "noteShapeTriangleLeftBlack":{ + "stemDownNW":[ + 1.436, + -0.528 + ], + "stemUpSE":[ + 0.004, + 0.496 + ] + }, + "noteShapeTriangleLeftDoubleWhole":{ + "noteheadOrigin":[ + 0.448, + 0.0 + ] + }, + "noteShapeTriangleLeftWhite":{ + "stemDownNW":[ + 0.0, + 0.508 + ], + "stemUpSE":[ + 1.404, + -0.564 + ] + }, + "noteShapeTriangleRightBlack":{ + "stemDownNW":[ + 0.0, + 0.448 + ], + "stemUpSE":[ + 1.46, + -0.496 + ] + }, + "noteShapeTriangleRightDoubleWhole":{ + "noteheadOrigin":[ + 0.564, + 0.0 + ] + }, + "noteShapeTriangleRightWhite":{ + "stemDownNW":[ + 0.052, + 0.496 + ], + "stemUpSE":[ + 1.472, + -0.508 + ] + }, + "noteShapeTriangleRoundBlack":{ + "stemDownNW":[ + 0.0, + 0.12 + ], + "stemUpSE":[ + 1.396, + 0.092 + ] + }, + "noteShapeTriangleRoundDoubleWhole":{ + "noteheadOrigin":[ + 0.524, + 0.0 + ] + }, + "noteShapeTriangleRoundLeftBlack":{ + "stemDownNW":[ + 0.0, + 0.028 + ], + "stemUpSE":[ + 1.28, + 0.0 + ] + }, + "noteShapeTriangleRoundLeftDoubleWhole":{ + "noteheadOrigin":[ + 0.516, + 0.0 + ] + }, + "noteShapeTriangleRoundLeftWhite":{ + "stemDownNW":[ + 0.0, + 0.036 + ], + "stemUpSE":[ + 1.26, + -0.032 + ] + }, + "noteShapeTriangleRoundWhite":{ + "stemDownNW":[ + 0.0, + 0.124 + ], + "stemUpSE":[ + 1.396, + 0.092 + ] + }, + "noteShapeTriangleUpBlack":{ + "stemDownNW":[ + 0.012, + -0.492 + ], + "stemUpSE":[ + 1.484, + -0.504 + ] + }, + "noteShapeTriangleUpDoubleWhole":{ + "noteheadOrigin":[ + 0.564, + 0.0 + ] + }, + "noteShapeTriangleUpWhite":{ + "stemDownNW":[ + 0.0, + -0.412 + ], + "stemUpSE":[ + 1.42, + -0.46 + ] + }, + "noteSiBlack":{ + "stemDownNW":[ + 0.0, + -0.196 + ], + "stemUpSE":[ + 1.552, + 0.212 + ] + }, + "noteSiHalf":{ + "stemDownNW":[ + 0.0, + -0.416 + ], + "stemUpSE":[ + 1.824, + 0.452 + ] + }, + "noteSoBlack":{ + "stemDownNW":[ + 0.0, + -0.196 + ], + "stemUpSE":[ + 1.552, + 0.212 + ] + }, + "noteSoHalf":{ + "stemDownNW":[ + 0.0, + -0.416 + ], + "stemUpSE":[ + 1.824, + 0.452 + ] + }, + "noteTiBlack":{ + "stemDownNW":[ + 0.0, + -0.196 + ], + "stemUpSE":[ + 1.552, + 0.212 + ] + }, + "noteTiHalf":{ + "stemDownNW":[ + 0.0, + -0.416 + ], + "stemUpSE":[ + 1.824, + 0.452 + ] + }, + "noteheadBlack":{ + "cutOutNW":[ + 0.34, + -0.152 + ], + "cutOutSE":[ + 1.12, + 0.16 + ], + "splitStemDownNE":[ + 0.992, + -0.3 + ], + "splitStemDownNW":[ + 0.12, + -0.488 + ], + "splitStemUpSE":[ + 1.12, + 0.468 + ], + "splitStemUpSW":[ + 0.364, + 0.356 + ], + "stemDownNW":[ + 0.0, + -0.236 + ], + "stemUpSE":[ + 1.336, + 0.288 + ] + }, + "noteheadCircleSlash":{ + "stemDownNW":[ + 0.0, + 0.02 + ], + "stemUpSE":[ + 1.068, + -0.02 + ] + }, + "noteheadCircleX":{ + "stemDownNW":[ + 0.0, + -0.012 + ], + "stemUpSE":[ + 1.384, + -0.008 + ] + }, + "noteheadCircleXDoubleWhole":{ + "noteheadOrigin":[ + 0.316, + -0.016 + ] + }, + "noteheadCircleXHalf":{ + "stemDownNW":[ + 0.0, + 0.032 + ], + "stemUpSE":[ + 1.132, + 0.016 + ] + }, + "noteheadCircledBlack":{ + "stemDownNW":[ + 0.008, + -0.132 + ], + "stemUpSE":[ + 1.112, + 0.22 + ] + }, + "noteheadCircledBlackLarge":{ + "stemDownNW":[ + 0.004, + -0.136 + ], + "stemUpSE":[ + 1.164, + 0.068 + ] + }, + "noteheadCircledDoubleWhole":{ + "noteheadOrigin":[ + 0.464, + 0.004 + ] + }, + "noteheadCircledDoubleWholeLarge":{ + "stemDownNW":[ + 0.004, + -0.416 + ], + "stemUpSE":[ + 1.592, + 0.336 + ] + }, + "noteheadCircledHalf":{ + "stemDownNW":[ + 0.028, + -0.14 + ], + "stemUpSE":[ + 1.388, + 0.024 + ] + }, + "noteheadCircledHalfLarge":{ + "stemDownNW":[ + 0.008, + -0.064 + ], + "stemUpSE":[ + 1.428, + 0.02 + ] + }, + "noteheadCircledWholeLarge":{ + "stemDownNW":[ + 0.028, + 0.068 + ], + "stemUpSE":[ + 1.572, + 0.02 + ] + }, + "noteheadCircledXLarge":{ + "stemDownNW":[ + 0.268, + -0.432 + ], + "stemUpSE":[ + 1.548, + 0.468 + ] + }, + "noteheadDiamondBlack":{ + "stemDownNW":[ + 0.008, + 0.0 + ], + "stemUpSE":[ + 1.24, + -0.064 + ] + }, + "noteheadDiamondBlackOld":{ + "stemDownNW":[ + 0.004, + 0.016 + ], + "stemUpSE":[ + 1.136, + 0.02 + ] + }, + "noteheadDiamondBlackWide":{ + "stemDownNW":[ + 0.0, + 0.024 + ], + "stemUpSE":[ + 2.576, + 0.008 + ] + }, + "noteheadDiamondDoubleWhole":{ + "noteheadOrigin":[ + 0.34, + -0.024 + ] + }, + "noteheadDiamondDoubleWholeOld":{ + "noteheadOrigin":[ + 0.312, + 0.0 + ] + }, + "noteheadDiamondHalf":{ + "stemDownNW":[ + 0.0, + -0.004 + ], + "stemUpSE":[ + 1.18, + -0.076 + ] + }, + "noteheadDiamondHalfFilled":{ + "stemDownNW":[ + 0.0, + -0.012 + ], + "stemUpSE":[ + 1.2, + -0.048 + ] + }, + "noteheadDiamondHalfOld":{ + "stemDownNW":[ + 0.0, + 0.064 + ], + "stemUpSE":[ + 1.112, + 0.0 + ] + }, + "noteheadDiamondHalfWide":{ + "stemDownNW":[ + 0.0, + 0.012 + ], + "stemUpSE":[ + 1.996, + -0.024 + ] + }, + "noteheadDiamondOpen":{ + "stemDownNW":[ + 0.0, + -0.08 + ], + "stemUpSE":[ + 1.524, + 0.132 + ] + }, + "noteheadDiamondWhite":{ + "stemDownNW":[ + 0.0, + 0.04 + ], + "stemUpSE":[ + 1.048, + -0.056 + ] + }, + "noteheadDiamondWhiteWide":{ + "stemDownNW":[ + 0.012, + 0.02 + ], + "stemUpSE":[ + 2.34, + -0.012 + ] + }, + "noteheadDoubleWhole":{ + "noteheadOrigin":[ + 0.516, + 0.0 + ] + }, + "noteheadDoubleWholeSquare":{ + "noteheadOrigin":[ + 0.016, + -0.028 + ] + }, + "noteheadDoubleWholeWithX":{ + "noteheadOrigin":[ + 0.344, + 0.0 + ] + }, + "noteheadHalf":{ + "cutOutNW":[ + 0.204, + -0.204 + ], + "cutOutSE":[ + 1.116, + 0.036 + ], + "splitStemDownNE":[ + 0.956, + -0.3 + ], + "splitStemDownNW":[ + 0.128, + -0.428 + ], + "splitStemUpSE":[ + 1.108, + 0.372 + ], + "splitStemUpSW":[ + 0.328, + 0.38 + ], + "stemDownNW":[ + 0.0, + -0.252 + ], + "stemUpSE":[ + 1.312, + 0.284 + ] + }, + "noteheadHalfWithX":{ + "stemDownNW":[ + 0.0, + -0.016 + ], + "stemUpSE":[ + 2.08, + 0.124 + ] + }, + "noteheadHeavyX":{ + "stemDownNW":[ + 0.0, + -0.476 + ], + "stemUpSE":[ + 1.912, + 0.436 + ] + }, + "noteheadHeavyXHat":{ + "stemDownNW":[ + 0.008, + -0.696 + ], + "stemUpSE":[ + 1.84, + 0.116 + ] + }, + "noteheadLargeArrowDownBlack":{ + "stemDownNW":[ + 0.0, + 0.688 + ], + "stemUpSE":[ + 1.404, + 0.768 + ] + }, + "noteheadLargeArrowDownDoubleWhole":{ + "noteheadOrigin":[ + 0.388, + 0.0 + ] + }, + "noteheadLargeArrowDownHalf":{ + "stemDownNW":[ + 0.0, + 0.708 + ], + "stemUpSE":[ + 1.64, + 0.78 + ] + }, + "noteheadLargeArrowUpBlack":{ + "stemDownNW":[ + 0.0, + -0.688 + ], + "stemUpSE":[ + 1.404, + -0.752 + ] + }, + "noteheadLargeArrowUpDoubleWhole":{ + "noteheadOrigin":[ + 0.424, + -0.756 + ] + }, + "noteheadLargeArrowUpHalf":{ + "stemDownNW":[ + 0.0, + -0.764 + ], + "stemUpSE":[ + 1.64, + -0.776 + ] + }, + "noteheadMoonBlack":{ + "stemDownNW":[ + 0.008, + -0.056 + ], + "stemUpSE":[ + 1.304, + 0.344 + ] + }, + "noteheadMoonWhite":{ + "stemDownNW":[ + 0.012, + 0.0 + ], + "stemUpSE":[ + 1.292, + 0.404 + ] + }, + "noteheadPlusBlack":{ + "stemDownNW":[ + 0.004, + 0.012 + ], + "stemUpSE":[ + 1.332, + -0.06 + ] + }, + "noteheadPlusDoubleWhole":{ + "noteheadOrigin":[ + 0.488, + 0.036 + ] + }, + "noteheadPlusHalf":{ + "stemDownNW":[ + 0.012, + 0.008 + ], + "stemUpSE":[ + 1.136, + 0.004 + ] + }, + "noteheadRoundBlack":{ + "stemDownNW":[ + 0.004, + 0.032 + ], + "stemUpSE":[ + 0.96, + -0.048 + ] + }, + "noteheadRoundBlackDoubleSlashed":{ + "stemDownNW":[ + 0.0, + -0.008 + ], + "stemUpSE":[ + 0.936, + -0.012 + ] + }, + "noteheadRoundBlackLarge":{ + "stemDownNW":[ + 0.0, + -0.008 + ], + "stemUpSE":[ + 2.052, + -0.128 + ] + }, + "noteheadRoundBlackSlashed":{ + "stemDownNW":[ + 0.0, + 0.0 + ], + "stemUpSE":[ + 0.996, + -0.056 + ] + }, + "noteheadRoundBlackSlashedLarge":{ + "stemDownNW":[ + 0.004, + 0.0 + ], + "stemUpSE":[ + 1.92, + 0.0 + ] + }, + "noteheadRoundWhite":{ + "stemDownNW":[ + 0.008, + -0.012 + ], + "stemUpSE":[ + 1.04, + -0.072 + ] + }, + "noteheadRoundWhiteDoubleSlashed":{ + "stemDownNW":[ + 0.004, + 0.008 + ], + "stemUpSE":[ + 0.972, + 0.0 + ] + }, + "noteheadRoundWhiteLarge":{ + "stemDownNW":[ + 0.0, + 0.0 + ], + "stemUpSE":[ + 1.796, + 0.0 + ] + }, + "noteheadRoundWhiteSlashed":{ + "stemDownNW":[ + 0.0, + 0.068 + ], + "stemUpSE":[ + 1.028, + -0.056 + ] + }, + "noteheadRoundWhiteSlashedLarge":{ + "stemDownNW":[ + 0.008, + 0.0 + ], + "stemUpSE":[ + 1.916, + 0.0 + ] + }, + "noteheadRoundWhiteWithDot":{ + "stemDownNW":[ + 0.0, + 0.024 + ], + "stemUpSE":[ + 1.0, + 0.0 + ] + }, + "noteheadRoundWhiteWithDotLarge":{ + "stemDownNW":[ + 0.0, + 0.0 + ], + "stemUpSE":[ + 1.936, + -0.044 + ] + }, + "noteheadSlashDiamondWhite":{ + "stemDownNW":[ + 0.008, + 0.108 + ], + "stemUpSE":[ + 1.936, + -0.132 + ] + }, + "noteheadSlashDiamondWhiteOversized":{ + "stemDownNW":[ + 0.0, + -0.136 + ], + "stemUpSE":[ + 2.216, + 0.0 + ] + }, + "noteheadSlashHorizontalEnds":{ + "stemDownNW":[ + 0.0, + -0.928 + ], + "stemUpSE":[ + 1.952, + 0.884 + ] + }, + "noteheadSlashHorizontalEndsMuted":{ + "stemDownNW":[ + 0.0, + -0.892 + ], + "stemUpSE":[ + 2.088, + 0.888 + ] + }, + "noteheadSlashVerticalEnds":{ + "stemDownNW":[ + 0.0, + -0.52 + ], + "stemUpSE":[ + 1.588, + 0.524 + ] + }, + "noteheadSlashVerticalEndsMuted":{ + "stemDownNW":[ + 0.092, + -0.752 + ], + "stemUpSE":[ + 1.612, + 1.028 + ] + }, + "noteheadSlashVerticalEndsOversized":{ + "stemDownNW":[ + 0.0, + -0.468 + ], + "stemUpSE":[ + 2.12, + 0.488 + ] + }, + "noteheadSlashVerticalEndsSmall":{ + "stemDownNW":[ + 0.0, + -0.356 + ], + "stemUpSE":[ + 0.856, + 0.384 + ] + }, + "noteheadSlashWhiteHalf":{ + "stemDownNW":[ + 0.0, + -0.84 + ], + "stemUpSE":[ + 2.92, + 0.836 + ] + }, + "noteheadSlashWhiteMuted":{ + "stemDownNW":[ + 0.0, + -0.816 + ], + "stemUpSE":[ + 2.908, + 0.992 + ] + }, + "noteheadSlashX":{ + "stemDownNW":[ + 0.0, + -0.864 + ], + "stemUpSE":[ + 2.116, + 0.78 + ] + }, + "noteheadSlashedBlack1":{ + "stemDownNW":[ + -0.004, + -0.172 + ], + "stemUpSE":[ + 1.352, + 0.12 + ] + }, + "noteheadSlashedBlack2":{ + "stemDownNW":[ + -0.004, + -0.096 + ], + "stemUpSE":[ + 1.388, + 0.2 + ] + }, + "noteheadSlashedDoubleWhole1":{ + "noteheadOrigin":[ + 0.524, + 0.028 + ] + }, + "noteheadSlashedDoubleWhole2":{ + "noteheadOrigin":[ + 0.424, + 0.02 + ] + }, + "noteheadSlashedHalf1":{ + "stemDownNW":[ + -0.004, + -0.052 + ], + "stemUpSE":[ + 1.78, + 0.012 + ] + }, + "noteheadSlashedHalf2":{ + "stemDownNW":[ + 0.0, + -0.068 + ], + "stemUpSE":[ + 1.708, + 0.14 + ] + }, + "noteheadSquareBlack":{ + "stemDownNW":[ + 0.0, + -0.412 + ], + "stemUpSE":[ + 1.368, + 0.404 + ] + }, + "noteheadSquareBlackLarge":{ + "stemDownNW":[ + 0.02, + 0.0 + ], + "stemUpSE":[ + 1.976, + 0.008 + ] + }, + "noteheadSquareBlackWhite":{ + "stemDownNW":[ + 0.024, + 0.012 + ], + "stemUpSE":[ + 1.952, + -0.004 + ] + }, + "noteheadSquareWhite":{ + "stemDownNW":[ + 0.0, + -0.304 + ], + "stemUpSE":[ + 1.356, + 0.376 + ] + }, + "noteheadTriangleDownBlack":{ + "stemDownNW":[ + 0.0, + 0.5 + ], + "stemUpSE":[ + 1.38, + 0.58 + ] + }, + "noteheadTriangleDownDoubleWhole":{ + "noteheadOrigin":[ + 0.384, + 0.0 + ] + }, + "noteheadTriangleDownHalf":{ + "stemDownNW":[ + 0.004, + 0.616 + ], + "stemUpSE":[ + 1.364, + 0.472 + ] + }, + "noteheadTriangleDownWhite":{ + "stemDownNW":[ + 0.0, + 0.5 + ], + "stemUpSE":[ + 1.44, + 0.564 + ] + }, + "noteheadTriangleLeftBlack":{ + "stemDownNW":[ + 0.016, + -0.416 + ], + "stemUpSE":[ + 1.564, + -0.512 + ] + }, + "noteheadTriangleLeftWhite":{ + "stemDownNW":[ + 0.0, + -0.596 + ], + "stemUpSE":[ + 1.716, + -0.668 + ] + }, + "noteheadTriangleRightBlack":{ + "stemDownNW":[ + 0.0, + -0.476 + ], + "stemUpSE":[ + 1.54, + 0.392 + ] + }, + "noteheadTriangleRightWhite":{ + "stemDownNW":[ + 0.016, + -0.56 + ], + "stemUpSE":[ + 1.728, + 0.428 + ] + }, + "noteheadTriangleRoundDownBlack":{ + "stemDownNW":[ + 0.0, + 0.228 + ], + "stemUpSE":[ + 1.336, + 0.22 + ] + }, + "noteheadTriangleRoundDownWhite":{ + "stemDownNW":[ + 0.0, + 0.264 + ], + "stemUpSE":[ + 1.316, + 0.14 + ] + }, + "noteheadTriangleUpBlack":{ + "stemDownNW":[ + 0.004, + -0.48 + ], + "stemUpSE":[ + 1.368, + -0.596 + ] + }, + "noteheadTriangleUpDoubleWhole":{ + "noteheadOrigin":[ + 0.32, + -0.584 + ] + }, + "noteheadTriangleUpHalf":{ + "stemDownNW":[ + 0.004, + -0.44 + ], + "stemUpSE":[ + 1.376, + -0.576 + ] + }, + "noteheadTriangleUpRightBlack":{ + "stemDownNW":[ + 0.0, + 0.5 + ], + "stemUpSE":[ + 1.544, + 0.488 + ] + }, + "noteheadTriangleUpRightWhite":{ + "stemDownNW":[ + 0.0, + 0.544 + ], + "stemUpSE":[ + 1.564, + 0.528 + ] + }, + "noteheadTriangleUpWhite":{ + "stemDownNW":[ + 0.008, + -0.464 + ], + "stemUpSE":[ + 1.444, + -0.584 + ] + }, + "noteheadVoidWithX":{ + "stemDownNW":[ + 0.0, + -0.04 + ], + "stemUpSE":[ + 1.436, + 0.092 + ] + }, + "noteheadWhole":{ + "cutOutNW":[ + 0.0, + -0.352 + ], + "cutOutSE":[ + 1.52, + 0.112 + ] + }, + "noteheadXBlack":{ + "stemDownNW":[ + 0.004, + -0.604 + ], + "stemUpSE":[ + 1.116, + 0.56 + ] + }, + "noteheadXDoubleWhole":{ + "noteheadOrigin":[ + 0.46, + 0.0 + ] + }, + "noteheadXHalf":{ + "stemDownNW":[ + 0.0, + -0.492 + ], + "stemUpSE":[ + 1.52, + 0.4 + ] + }, + "noteheadXOrnate":{ + "stemDownNW":[ + 0.0, + -0.608 + ], + "stemUpSE":[ + 1.208, + 0.536 + ] + }, + "noteheadXOrnateEllipse":{ + "stemDownNW":[ + 0.004, + -0.492 + ], + "stemUpSE":[ + 1.212, + 0.588 + ] + }, + "wiggleArpeggiatoDown":{ + "repeatOffset":[ + 1.036, + 0.0 + ] + }, + "wiggleArpeggiatoDownArrow":{ + "repeatOffset":[ + 2.016, + 0.0 + ] + }, + "wiggleArpeggiatoDownSwash":{ + "repeatOffset":[ + 2.304, + 0.0 + ] + }, + "wiggleArpeggiatoUp":{ + "repeatOffset":[ + 1.036, + 0.0 + ] + }, + "wiggleArpeggiatoUpArrow":{ + "repeatOffset":[ + 2.016, + 0.0 + ] + }, + "wiggleArpeggiatoUpSwash":{ + "repeatOffset":[ + 2.304, + 0.0 + ] + }, + "wiggleCircular":{ + "repeatOffset":[ + 1.94, + 0.0 + ] + }, + "wiggleCircularConstant":{ + "repeatOffset":[ + 0.9, + 0.0 + ] + }, + "wiggleCircularConstantFlipped":{ + "repeatOffset":[ + 0.9, + 0.0 + ] + }, + "wiggleCircularConstantFlippedLarge":{ + "repeatOffset":[ + 2.02, + 0.0 + ] + }, + "wiggleCircularConstantLarge":{ + "repeatOffset":[ + 2.02, + 0.0 + ] + }, + "wiggleCircularEnd":{ + "repeatOffset":[ + 0.904, + 0.0 + ] + }, + "wiggleCircularLarge":{ + "repeatOffset":[ + 2.056, + 0.0 + ] + }, + "wiggleCircularLarger":{ + "repeatOffset":[ + 2.652, + 0.0 + ] + }, + "wiggleCircularLargerStill":{ + "repeatOffset":[ + 3.304, + 0.0 + ] + }, + "wiggleCircularLargest":{ + "repeatOffset":[ + 4.4, + 0.0 + ] + }, + "wiggleCircularSmall":{ + "repeatOffset":[ + 1.58, + 0.0 + ] + }, + "wiggleCircularStart":{ + "repeatOffset":[ + 1.816, + 0.0 + ] + }, + "wiggleGlissando":{ + "repeatOffset":[ + 1.252, + 0.0 + ] + }, + "wiggleGlissandoGroup1":{ + "repeatOffset":[ + 1.216, + 0.0 + ] + }, + "wiggleGlissandoGroup2":{ + "repeatOffset":[ + 0.532, + 0.0 + ] + }, + "wiggleGlissandoGroup3":{ + "repeatOffset":[ + 0.6, + 0.0 + ] + }, + "wiggleRandom1":{ + "repeatOffset":[ + 7.98, + 0.0 + ] + }, + "wiggleRandom2":{ + "repeatOffset":[ + 7.68, + 0.0 + ] + }, + "wiggleRandom3":{ + "repeatOffset":[ + 7.692, + 0.0 + ] + }, + "wiggleRandom4":{ + "repeatOffset":[ + 7.696, + 0.0 + ] + }, + "wiggleSawtooth":{ + "repeatOffset":[ + 2.904, + 0.0 + ] + }, + "wiggleSawtoothNarrow":{ + "repeatOffset":[ + 1.916, + 0.0 + ] + }, + "wiggleSawtoothWide":{ + "repeatOffset":[ + 3.804, + 0.0 + ] + }, + "wiggleSquareWave":{ + "repeatOffset":[ + 2.876, + 0.0 + ] + }, + "wiggleSquareWaveNarrow":{ + "repeatOffset":[ + 1.912, + 0.0 + ] + }, + "wiggleSquareWaveWide":{ + "repeatOffset":[ + 3.86, + 0.0 + ] + }, + "wiggleTrill":{ + "repeatOffset":[ + 1.36, + 0.0 + ] + }, + "wiggleTrillFast":{ + "repeatOffset":[ + 1.18, + 0.0 + ] + }, + "wiggleTrillFaster":{ + "repeatOffset":[ + 1.016, + 0.0 + ] + }, + "wiggleTrillFasterStill":{ + "repeatOffset":[ + 0.904, + 0.0 + ] + }, + "wiggleTrillFastest":{ + "repeatOffset":[ + 0.768, + 0.0 + ] + }, + "wiggleTrillSlow":{ + "repeatOffset":[ + 1.564, + 0.0 + ] + }, + "wiggleTrillSlower":{ + "repeatOffset":[ + 1.808, + 0.0 + ] + }, + "wiggleTrillSlowerStill":{ + "repeatOffset":[ + 2.076, + 0.0 + ] + }, + "wiggleTrillSlowest":{ + "repeatOffset":[ + 2.388, + 0.0 + ] + }, + "wiggleVIbratoLargestSlower":{ + "repeatOffset":[ + 3.68, + 0.0 + ] + }, + "wiggleVIbratoMediumSlower":{ + "repeatOffset":[ + 1.62, + 0.0 + ] + }, + "wiggleVibrato":{ + "repeatOffset":[ + 0.548, + 0.0 + ] + }, + "wiggleVibratoLargeFast":{ + "repeatOffset":[ + 1.708, + 0.0 + ] + }, + "wiggleVibratoLargeFaster":{ + "repeatOffset":[ + 1.464, + 0.0 + ] + }, + "wiggleVibratoLargeFasterStill":{ + "repeatOffset":[ + 1.196, + 0.0 + ] + }, + "wiggleVibratoLargeFastest":{ + "repeatOffset":[ + 1.04, + 0.0 + ] + }, + "wiggleVibratoLargeSlow":{ + "repeatOffset":[ + 2.068, + 0.0 + ] + }, + "wiggleVibratoLargeSlower":{ + "repeatOffset":[ + 2.476, + 0.0 + ] + }, + "wiggleVibratoLargeSlowest":{ + "repeatOffset":[ + 2.976, + 0.0 + ] + }, + "wiggleVibratoLargestFast":{ + "repeatOffset":[ + 2.544, + 0.0 + ] + }, + "wiggleVibratoLargestFaster":{ + "repeatOffset":[ + 2.104, + 0.0 + ] + }, + "wiggleVibratoLargestFasterStill":{ + "repeatOffset":[ + 1.764, + 0.0 + ] + }, + "wiggleVibratoLargestFastest":{ + "repeatOffset":[ + 1.484, + 0.0 + ] + }, + "wiggleVibratoLargestSlow":{ + "repeatOffset":[ + 3.08, + 0.0 + ] + }, + "wiggleVibratoLargestSlowest":{ + "repeatOffset":[ + 4.384, + 0.0 + ] + }, + "wiggleVibratoMediumFast":{ + "repeatOffset":[ + 1.24, + 0.0 + ] + }, + "wiggleVibratoMediumFaster":{ + "repeatOffset":[ + 1.008, + 0.0 + ] + }, + "wiggleVibratoMediumFasterStill":{ + "repeatOffset":[ + 0.812, + 0.0 + ] + }, + "wiggleVibratoMediumFastest":{ + "repeatOffset":[ + 0.728, + 0.0 + ] + }, + "wiggleVibratoMediumSlow":{ + "repeatOffset":[ + 1.384, + 0.0 + ] + }, + "wiggleVibratoMediumSlowest":{ + "repeatOffset":[ + 1.98, + 0.0 + ] + }, + "wiggleVibratoSmallFast":{ + "repeatOffset":[ + 0.784, + 0.0 + ] + }, + "wiggleVibratoSmallFaster":{ + "repeatOffset":[ + 0.652, + 0.0 + ] + }, + "wiggleVibratoSmallFasterStill":{ + "repeatOffset":[ + 0.532, + 0.0 + ] + }, + "wiggleVibratoSmallFastest":{ + "repeatOffset":[ + 0.456, + 0.0 + ] + }, + "wiggleVibratoSmallSlow":{ + "repeatOffset":[ + 0.956, + 0.0 + ] + }, + "wiggleVibratoSmallSlower":{ + "repeatOffset":[ + 1.176, + 0.0 + ] + }, + "wiggleVibratoSmallSlowest":{ + "repeatOffset":[ + 1.428, + 0.0 + ] + }, + "wiggleVibratoSmallestFast":{ + "repeatOffset":[ + 0.692, + 0.0 + ] + }, + "wiggleVibratoSmallestFaster":{ + "repeatOffset":[ + 0.564, + 0.0 + ] + }, + "wiggleVibratoSmallestFasterStill":{ + "repeatOffset":[ + 0.476, + 0.0 + ] + }, + "wiggleVibratoSmallestFastest":{ + "repeatOffset":[ + 0.416, + 0.0 + ] + }, + "wiggleVibratoSmallestSlow":{ + "repeatOffset":[ + 0.872, + 0.0 + ] + }, + "wiggleVibratoSmallestSlower":{ + "repeatOffset":[ + 0.884, + 0.0 + ] + }, + "wiggleVibratoSmallestSlowest":{ + "repeatOffset":[ + 1.064, + 0.0 + ] + }, + "wiggleVibratoStart":{ + "repeatOffset":[ + 1.808, + 0.0 + ] + }, + "wiggleVibratoWide":{ + "repeatOffset":[ + 0.736, + 0.0 + ] + }, + "wiggleWavy":{ + "repeatOffset":[ + 2.908, + 0.0 + ] + }, + "wiggleWavyNarrow":{ + "repeatOffset":[ + 1.896, + 0.0 + ] + }, + "wiggleWavyWide":{ + "repeatOffset":[ + 3.932, + 0.0 + ] + } + }, + "ligatures":{ + "accidentalDoubleFlatParens":{ + "codepoint":"U+F5D2", + "componentGlyphs":[ + "accidentalParensLeft", + "accidentalDoubleFlat", + "accidentalParensRight" + ], + "description":"Parenthesised double flat" + }, + "accidentalDoubleSharpParens":{ + "codepoint":"U+F5D1", + "componentGlyphs":[ + "accidentalParensLeft", + "accidentalDoubleSharp", + "accidentalParensRight" + ], + "description":"Parenthesised double sharp" + }, + "accidentalFlatJohnstonDown":{ + "codepoint":"U+F5D8", + "componentGlyphs":[ + "accidentalFlat", + "accidentalJohnstonDown" + ], + "description":"Flat-down arrow" + }, + "accidentalFlatJohnstonEl":{ + "codepoint":"U+F5D6", + "componentGlyphs":[ + "accidentalFlat", + "accidentalJohnstonEl" + ], + "description":"Flat-inverted seven" + }, + "accidentalFlatJohnstonElDown":{ + "codepoint":"U+F5E4", + "componentGlyphs":[ + "accidentalFlat", + "accidentalJohnstonEl", + "accidentalJohnstonDown" + ], + "description":"Flat-inverted seven-down arrow" + }, + "accidentalFlatJohnstonUp":{ + "codepoint":"U+F5D7", + "componentGlyphs":[ + "accidentalFlat", + "accidentalJohnstonUp" + ], + "description":"Flat-up arrow" + }, + "accidentalFlatJohnstonUpEl":{ + "codepoint":"U+F5E3", + "componentGlyphs":[ + "accidentalFlat", + "accidentalJohnstonUp", + "accidentalJohnstonEl" + ], + "description":"Flat-up arrow-inverted seven" + }, + "accidentalFlatParens":{ + "codepoint":"U+F5CE", + "componentGlyphs":[ + "accidentalParensLeft", + "accidentalFlat", + "accidentalParensRight" + ], + "description":"Parenthesised flat" + }, + "accidentalJohnstonDownEl":{ + "codepoint":"U+F5DE", + "componentGlyphs":[ + "accidentalJohnstonDown", + "accidentalJohnstonEl" + ], + "description":"Down arrow-inverted seven" + }, + "accidentalJohnstonSevenDown":{ + "codepoint":"U+F5DC", + "componentGlyphs":[ + "accidentalJohnstonSeven", + "accidentalJohnstonDown" + ], + "description":"Seven-down arrow" + }, + "accidentalJohnstonSevenFlat":{ + "codepoint":"U+F5DA", + "componentGlyphs":[ + "accidentalJohnstonSeven", + "accidentalFlat" + ], + "description":"Seven-flat" + }, + "accidentalJohnstonSevenFlatDown":{ + "codepoint":"U+F5E6", + "componentGlyphs":[ + "accidentalJohnstonSeven", + "accidentalFlat", + "accidentalJohnstonDown" + ], + "description":"Seven-flat-down arrow" + }, + "accidentalJohnstonSevenFlatUp":{ + "codepoint":"U+F5E5", + "componentGlyphs":[ + "accidentalJohnstonSeven", + "accidentalFlat", + "accidentalJohnstonUp" + ], + "description":"Seven-flat-up arrow" + }, + "accidentalJohnstonSevenSharp":{ + "codepoint":"U+F5D9", + "componentGlyphs":[ + "accidentalJohnstonSeven", + "accidentalSharp" + ], + "description":"Seven-sharp" + }, + "accidentalJohnstonSevenSharpDown":{ + "codepoint":"U+F5E2", + "componentGlyphs":[ + "accidentalJohnstonSeven", + "accidentalSharp", + "accidentalJohnstonDown" + ], + "description":"Seven-sharp-down arrow" + }, + "accidentalJohnstonSevenSharpUp":{ + "codepoint":"U+F5E1", + "componentGlyphs":[ + "accidentalJohnstonSeven", + "accidentalSharp", + "accidentalJohnstonUp" + ], + "description":"Seven-sharp-up arrow" + }, + "accidentalJohnstonSevenUp":{ + "codepoint":"U+F5DB", + "componentGlyphs":[ + "accidentalJohnstonSeven", + "accidentalJohnstonUp" + ], + "description":"Seven-up arrow" + }, + "accidentalJohnstonUpEl":{ + "codepoint":"U+F5DD", + "componentGlyphs":[ + "accidentalJohnstonUp", + "accidentalJohnstonEl" + ], + "description":"Up arrow-inverted seven" + }, + "accidentalNaturalParens":{ + "codepoint":"U+F5CF", + "componentGlyphs":[ + "accidentalParensLeft", + "accidentalNatural", + "accidentalParensRight" + ], + "description":"Parenthesised natural" + }, + "accidentalSharpJohnstonDown":{ + "codepoint":"U+F5D5", + "componentGlyphs":[ + "accidentalSharp", + "accidentalJohnstonDown" + ], + "description":"Sharp-down arrow" + }, + "accidentalSharpJohnstonDownEl":{ + "codepoint":"U+F5E0", + "componentGlyphs":[ + "accidentalSharp", + "accidentalJohnstonDown", + "accidentalJohnstonEl" + ], + "description":"Sharp-down arrow-inverted seven" + }, + "accidentalSharpJohnstonEl":{ + "codepoint":"U+F5D3", + "componentGlyphs":[ + "accidentalSharp", + "accidentalJohnstonEl" + ], + "description":"Sharp-inverted seven" + }, + "accidentalSharpJohnstonUp":{ + "codepoint":"U+F5D4", + "componentGlyphs":[ + "accidentalSharp", + "accidentalJohnstonUp" + ], + "description":"Sharp-up arrow" + }, + "accidentalSharpJohnstonUpEl":{ + "codepoint":"U+F5DF", + "componentGlyphs":[ + "accidentalSharp", + "accidentalJohnstonUp", + "accidentalJohnstonEl" + ], + "description":"Sharp-up arrow-inverted seven" + }, + "accidentalSharpParens":{ + "codepoint":"U+F5D0", + "componentGlyphs":[ + "accidentalParensLeft", + "accidentalSharp", + "accidentalParensRight" + ], + "description":"Parenthesised sharp" + }, + "fClef5Below":{ + "codepoint":"U+F52B", + "componentGlyphs":[ + "fClef", + "tuplet5" + ], + "description":"F clef, 5 below" + }, + "gClef0Below":{ + "codepoint":"U+F52C", + "componentGlyphs":[ + "gClefLigatedNumberBelow", + "tuplet0" + ], + "description":"G clef, 0 below" + }, + "gClef10Below":{ + "codepoint":"U+F52D", + "componentGlyphs":[ + "gClefLigatedNumberBelow", + "tuplet1", + "tuplet0" + ], + "description":"G clef, 10 below" + }, + "gClef11Below":{ + "codepoint":"U+F52E", + "componentGlyphs":[ + "gClefLigatedNumberBelow", + "tuplet1", + "tuplet1" + ], + "description":"G clef, 11 below" + }, + "gClef12Below":{ + "codepoint":"U+F52F", + "componentGlyphs":[ + "gClefLigatedNumberBelow", + "tuplet1", + "tuplet2" + ], + "description":"G clef, 12 below" + }, + "gClef13Below":{ + "codepoint":"U+F530", + "componentGlyphs":[ + "gClefLigatedNumberBelow", + "tuplet1", + "tuplet3" + ], + "description":"G clef, 13 below" + }, + "gClef14Below":{ + "codepoint":"U+F531", + "componentGlyphs":[ + "gClefLigatedNumberBelow", + "tuplet1", + "tuplet4" + ], + "description":"G clef, 14 below" + }, + "gClef15Below":{ + "codepoint":"U+F532", + "componentGlyphs":[ + "gClefLigatedNumberBelow", + "tuplet1", + "tuplet5" + ], + "description":"G clef, 15 below" + }, + "gClef16Below":{ + "codepoint":"U+F533", + "componentGlyphs":[ + "gClefLigatedNumberBelow", + "tuplet1", + "tuplet6" + ], + "description":"G clef, 16 below" + }, + "gClef17Below":{ + "codepoint":"U+F534", + "componentGlyphs":[ + "gClefLigatedNumberBelow", + "tuplet1", + "tuplet7" + ], + "description":"G clef, 17 below" + }, + "gClef2Above":{ + "codepoint":"U+F535", + "componentGlyphs":[ + "gClefLigatedNumberAbove", + "tuplet2" + ], + "description":"G clef, 2 above" + }, + "gClef2Below":{ + "codepoint":"U+F536", + "componentGlyphs":[ + "gClefLigatedNumberBelow", + "tuplet2" + ], + "description":"G clef, 2 below" + }, + "gClef3Above":{ + "codepoint":"U+F537", + "componentGlyphs":[ + "gClefLigatedNumberAbove", + "tuplet3" + ], + "description":"G clef, 3 above" + }, + "gClef3Below":{ + "codepoint":"U+F538", + "componentGlyphs":[ + "gClefLigatedNumberBelow", + "tuplet3" + ], + "description":"G clef, 3 below" + }, + "gClef4Above":{ + "codepoint":"U+F539", + "componentGlyphs":[ + "gClefLigatedNumberAbove", + "tuplet4" + ], + "description":"G clef, 4 above" + }, + "gClef4Below":{ + "codepoint":"U+F53A", + "componentGlyphs":[ + "gClefLigatedNumberBelow", + "tuplet4" + ], + "description":"G clef, 4 below" + }, + "gClef5Above":{ + "codepoint":"U+F53B", + "componentGlyphs":[ + "gClefLigatedNumberAbove", + "tuplet5" + ], + "description":"G clef, 5 above" + }, + "gClef5Below":{ + "codepoint":"U+F53C", + "componentGlyphs":[ + "gClefLigatedNumberBelow", + "tuplet5" + ], + "description":"G clef, 5 below" + }, + "gClef6Above":{ + "codepoint":"U+F53D", + "componentGlyphs":[ + "gClefLigatedNumberAbove", + "tuplet6" + ], + "description":"G clef, 6 above" + }, + "gClef6Below":{ + "codepoint":"U+F53E", + "componentGlyphs":[ + "gClefLigatedNumberBelow", + "tuplet6" + ], + "description":"G clef, 6 below" + }, + "gClef7Above":{ + "codepoint":"U+F53F", + "componentGlyphs":[ + "gClefLigatedNumberAbove", + "tuplet7" + ], + "description":"G clef, 7 above" + }, + "gClef7Below":{ + "codepoint":"U+F540", + "componentGlyphs":[ + "gClefLigatedNumberBelow", + "tuplet7" + ], + "description":"G clef, 7 below" + }, + "gClef8Above":{ + "codepoint":"U+F541", + "componentGlyphs":[ + "gClefLigatedNumberAbove", + "tuplet8" + ], + "description":"G clef, 8 above" + }, + "gClef8Below":{ + "codepoint":"U+F542", + "componentGlyphs":[ + "gClefLigatedNumberBelow", + "tuplet8" + ], + "description":"G clef, 8 below" + }, + "gClef9Above":{ + "codepoint":"U+F543", + "componentGlyphs":[ + "gClefLigatedNumberAbove", + "tuplet9" + ], + "description":"G clef, 9 above" + }, + "gClef9Below":{ + "codepoint":"U+F544", + "componentGlyphs":[ + "gClefLigatedNumberBelow", + "tuplet9" + ], + "description":"G clef, 9 below" + }, + "gClefFlat10Below":{ + "codepoint":"U+F545", + "componentGlyphs":[ + "gClefLigatedNumberBelow", + "tuplet1", + "tuplet0", + "accidentalFlat" + ], + "description":"G clef, flat 10 below" + }, + "gClefFlat11Below":{ + "codepoint":"U+F546", + "componentGlyphs":[ + "gClefLigatedNumberBelow", + "tuplet1", + "tuplet1", + "accidentalFlat" + ], + "description":"G clef, flat 11 below" + }, + "gClefFlat13Below":{ + "codepoint":"U+F547", + "componentGlyphs":[ + "gClefLigatedNumberBelow", + "tuplet1", + "tuplet3", + "accidentalFlat" + ], + "description":"G clef, flat 13 below" + }, + "gClefFlat14Below":{ + "codepoint":"U+F548", + "componentGlyphs":[ + "gClefLigatedNumberBelow", + "tuplet1", + "tuplet4", + "accidentalFlat" + ], + "description":"G clef, flat 14 below" + }, + "gClefFlat15Below":{ + "codepoint":"U+F549", + "componentGlyphs":[ + "gClefLigatedNumberBelow", + "tuplet1", + "tuplet5", + "accidentalFlat" + ], + "description":"G clef, flat 15 below" + }, + "gClefFlat16Below":{ + "codepoint":"U+F54A", + "componentGlyphs":[ + "gClefLigatedNumberBelow", + "tuplet1", + "tuplet6", + "accidentalFlat" + ], + "description":"G clef, flat 16 below" + }, + "gClefFlat1Below":{ + "codepoint":"U+F54B", + "componentGlyphs":[ + "gClefLigatedNumberBelow", + "accidentalFlat", + "tuplet1" + ], + "description":"G clef, flat 1 below" + }, + "gClefFlat2Above":{ + "codepoint":"U+F54C", + "componentGlyphs":[ + "gClefLigatedNumberAbove", + "tuplet2", + "accidentalFlat" + ], + "description":"G clef, flat 2 above" + }, + "gClefFlat2Below":{ + "codepoint":"U+F54D", + "componentGlyphs":[ + "gClefLigatedNumberBelow", + "accidentalFlat", + "tuplet2" + ], + "description":"G clef, flat 2 below" + }, + "gClefFlat3Above":{ + "codepoint":"U+F54E", + "componentGlyphs":[ + "gClefLigatedNumberAbove", + "tuplet3", + "accidentalFlat" + ], + "description":"G clef, flat 3 above" + }, + "gClefFlat3Below":{ + "codepoint":"U+F54F", + "componentGlyphs":[ + "gClefLigatedNumberBelow", + "accidentalFlat", + "tuplet3" + ], + "description":"G clef, flat 3 below" + }, + "gClefFlat4Below":{ + "codepoint":"U+F550", + "componentGlyphs":[ + "gClefLigatedNumberBelow", + "accidentalFlat", + "tuplet4" + ], + "description":"G clef, flat 4 below" + }, + "gClefFlat5Above":{ + "codepoint":"U+F551", + "componentGlyphs":[ + "gClefLigatedNumberAbove", + "tuplet5", + "accidentalFlat" + ], + "description":"G clef, flat 5 above" + }, + "gClefFlat6Above":{ + "codepoint":"U+F552", + "componentGlyphs":[ + "gClefLigatedNumberAbove", + "tuplet6", + "accidentalFlat" + ], + "description":"G clef, flat 6 above" + }, + "gClefFlat6Below":{ + "codepoint":"U+F553", + "componentGlyphs":[ + "gClefLigatedNumberBelow", + "accidentalFlat", + "tuplet6" + ], + "description":"G clef, flat 6 below" + }, + "gClefFlat7Above":{ + "codepoint":"U+F554", + "componentGlyphs":[ + "gClefLigatedNumberAbove", + "tuplet7", + "accidentalFlat" + ], + "description":"G clef, flat 7 above" + }, + "gClefFlat7Below":{ + "codepoint":"U+F555", + "componentGlyphs":[ + "gClefLigatedNumberBelow", + "accidentalFlat", + "tuplet7" + ], + "description":"G clef, flat 7 below" + }, + "gClefFlat8Above":{ + "codepoint":"U+F556", + "componentGlyphs":[ + "gClefLigatedNumberAbove", + "tuplet8", + "accidentalFlat" + ], + "description":"G clef, flat 8 above" + }, + "gClefFlat9Above":{ + "codepoint":"U+F557", + "componentGlyphs":[ + "gClefLigatedNumberAbove", + "tuplet9", + "accidentalFlat" + ], + "description":"G clef, flat 9 above" + }, + "gClefFlat9Below":{ + "codepoint":"U+F558", + "componentGlyphs":[ + "gClefLigatedNumberBelow", + "accidentalFlat", + "tuplet9" + ], + "description":"G clef, flat 9 below" + }, + "gClefNat2Below":{ + "codepoint":"U+F559", + "componentGlyphs":[ + "gClefLigatedNumberBelow", + "accidentalNatural", + "tuplet2" + ], + "description":"G clef, natural 2 below" + }, + "gClefNatural10Below":{ + "codepoint":"U+F55A", + "componentGlyphs":[ + "gClefLigatedNumberBelow", + "tuplet1", + "tuplet0", + "accidentalNatural" + ], + "description":"G clef, natural 10 below" + }, + "gClefNatural13Below":{ + "codepoint":"U+F55B", + "componentGlyphs":[ + "gClefLigatedNumberBelow", + "tuplet1", + "tuplet3", + "accidentalNatural" + ], + "description":"G clef, natural 13 below" + }, + "gClefNatural17Below":{ + "codepoint":"U+F55C", + "componentGlyphs":[ + "gClefLigatedNumberBelow", + "tuplet1", + "tuplet7", + "accidentalNatural" + ], + "description":"G clef, natural 17 below" + }, + "gClefNatural2Above":{ + "codepoint":"U+F55D", + "componentGlyphs":[ + "gClefLigatedNumberAbove", + "tuplet2", + "accidentalNatural" + ], + "description":"G clef, natural 2 above" + }, + "gClefNatural3Above":{ + "codepoint":"U+F55E", + "componentGlyphs":[ + "gClefLigatedNumberAbove", + "tuplet3", + "accidentalNatural" + ], + "description":"G clef, natural 3 above" + }, + "gClefNatural3Below":{ + "codepoint":"U+F55F", + "componentGlyphs":[ + "gClefLigatedNumberBelow", + "accidentalNatural", + "tuplet3" + ], + "description":"G clef, natural 3 below" + }, + "gClefNatural6Above":{ + "codepoint":"U+F560", + "componentGlyphs":[ + "gClefLigatedNumberAbove", + "tuplet6", + "accidentalNatural" + ], + "description":"G clef, natural 6 above" + }, + "gClefNatural6Below":{ + "codepoint":"U+F561", + "componentGlyphs":[ + "gClefLigatedNumberBelow", + "accidentalNatural", + "tuplet6" + ], + "description":"G clef, natural 6 below" + }, + "gClefNatural7Above":{ + "codepoint":"U+F562", + "componentGlyphs":[ + "gClefLigatedNumberAbove", + "tuplet7", + "accidentalNatural" + ], + "description":"G clef, natural 7 above" + }, + "gClefNatural9Above":{ + "codepoint":"U+F563", + "componentGlyphs":[ + "gClefLigatedNumberAbove", + "tuplet9", + "accidentalNatural" + ], + "description":"G clef, natural 9 above" + }, + "gClefNatural9Below":{ + "codepoint":"U+F564", + "componentGlyphs":[ + "gClefLigatedNumberBelow", + "accidentalNatural", + "tuplet9" + ], + "description":"G clef, natural 9 below" + }, + "gClefSharp12Below":{ + "codepoint":"U+F565", + "componentGlyphs":[ + "gClefLigatedNumberBelow", + "tuplet1", + "tuplet2", + "accidentalSharp" + ], + "description":"G clef, sharp 12 below" + }, + "gClefSharp1Above":{ + "codepoint":"U+F566", + "componentGlyphs":[ + "gClefLigatedNumberAbove", + "tuplet1", + "accidentalSharp" + ], + "description":"G clef, sharp 1 above" + }, + "gClefSharp4Above":{ + "codepoint":"U+F567", + "componentGlyphs":[ + "gClefLigatedNumberAbove", + "tuplet4", + "accidentalSharp" + ], + "description":"G clef, sharp 4 above" + }, + "gClefSharp5Below":{ + "codepoint":"U+F568", + "componentGlyphs":[ + "gClefLigatedNumberBelow", + "accidentalSharp", + "tuplet5" + ], + "description":"G clef, sharp 5 below" + }, + "mensuralFusaBlackStemDown":{ + "codepoint":"U+F569", + "componentGlyphs":[ + "mensuralNoteheadSemibrevisBlack", + "mensuralCombStemDownFlagFusa" + ], + "description":"Fusa black, stem down" + }, + "mensuralFusaBlackStemUp":{ + "codepoint":"U+F56A", + "componentGlyphs":[ + "mensuralNoteheadSemibrevisBlack", + "mensuralCombStemUpFlagFusa" + ], + "description":"Fusa black, stem up" + }, + "mensuralFusaBlackVoidStemDown":{ + "codepoint":"U+F56B", + "componentGlyphs":[ + "mensuralNoteheadSemibrevisBlackVoid", + "mensuralCombStemDownFlagFusa" + ], + "description":"Fusa black and void, stem down" + }, + "mensuralFusaBlackVoidStemUp":{ + "codepoint":"U+F56C", + "componentGlyphs":[ + "mensuralNoteheadSemibrevisBlackVoid", + "mensuralCombStemUpFlagFusa" + ], + "description":"Fusa black and void, stem up" + }, + "mensuralFusaVoidStemDown":{ + "codepoint":"U+F56D", + "componentGlyphs":[ + "mensuralNoteheadSemibrevisVoid", + "mensuralCombStemDownFlagFusa" + ], + "description":"Fusa void, stem down" + }, + "mensuralFusaVoidStemUp":{ + "codepoint":"U+F56E", + "componentGlyphs":[ + "mensuralNoteheadSemibrevisVoid", + "mensuralCombStemUpFlagFusa" + ], + "description":"Fusa void, stem up" + }, + "mensuralLongaBlackStemDownLeft":{ + "codepoint":"U+F56F", + "componentGlyphs":[ + "mensuralCombStemDown", + "mensuralNoteheadLongaBlack" + ], + "description":"Longa black, stem down left" + }, + "mensuralLongaBlackStemDownRight":{ + "codepoint":"U+F570", + "componentGlyphs":[ + "mensuralNoteheadLongaBlack", + "mensuralCombStemDown" + ], + "description":"Longa black, stem down right" + }, + "mensuralLongaBlackStemUpLeft":{ + "codepoint":"U+F571", + "componentGlyphs":[ + "mensuralCombStemUp", + "mensuralNoteheadLongaBlack" + ], + "description":"Longa black, stem up left" + }, + "mensuralLongaBlackStemUpRight":{ + "codepoint":"U+F572", + "componentGlyphs":[ + "mensuralNoteheadLongaBlack", + "mensuralCombStemUp" + ], + "description":"Longa black, stem up right" + }, + "mensuralLongaBlackVoidStemDownLeft":{ + "codepoint":"U+F573", + "componentGlyphs":[ + "mensuralCombStemDown", + "mensuralNoteheadLongaBlackVoid" + ], + "description":"Longa black and void, stem down left" + }, + "mensuralLongaBlackVoidStemDownRight":{ + "codepoint":"U+F574", + "componentGlyphs":[ + "mensuralNoteheadLongaBlackVoid", + "mensuralCombStemDown" + ], + "description":"Longa black and void, stem down right" + }, + "mensuralLongaBlackVoidStemUpLeft":{ + "codepoint":"U+F575", + "componentGlyphs":[ + "mensuralCombStemUp", + "mensuralNoteheadLongaBlackVoid" + ], + "description":"Longa black and void, stem up left" + }, + "mensuralLongaBlackVoidStemUpRight":{ + "codepoint":"U+F576", + "componentGlyphs":[ + "mensuralNoteheadLongaBlackVoid", + "mensuralCombStemUp" + ], + "description":"Longa black and void, stem up right" + }, + "mensuralLongaVoidStemDownLeft":{ + "codepoint":"U+F577", + "componentGlyphs":[ + "mensuralCombStemDown", + "mensuralNoteheadLongaVoid" + ], + "description":"Longa void, stem down left" + }, + "mensuralLongaVoidStemDownRight":{ + "codepoint":"U+F578", + "componentGlyphs":[ + "mensuralNoteheadLongaVoid", + "mensuralCombStemDown" + ], + "description":"Longa void, stem down right" + }, + "mensuralLongaVoidStemUpLeft":{ + "codepoint":"U+F579", + "componentGlyphs":[ + "mensuralCombStemUp", + "mensuralNoteheadLongaVoid" + ], + "description":"Longa void, stem up left" + }, + "mensuralLongaVoidStemUpRight":{ + "codepoint":"U+F57A", + "componentGlyphs":[ + "mensuralNoteheadLongaVoid", + "mensuralCombStemUp" + ], + "description":"Longa void, stem up right" + }, + "mensuralMaximaBlackStemDownLeft":{ + "codepoint":"U+F57B", + "componentGlyphs":[ + "mensuralCombStemDown", + "mensuralNoteheadMaximaBlack" + ], + "description":"Maxima black, stem down left" + }, + "mensuralMaximaBlackStemDownRight":{ + "codepoint":"U+F57C", + "componentGlyphs":[ + "mensuralNoteheadMaximaBlack", + "mensuralCombStemDown" + ], + "description":"Maxima black, stem down right" + }, + "mensuralMaximaBlackStemUpLeft":{ + "codepoint":"U+F57D", + "componentGlyphs":[ + "mensuralCombStemUp", + "mensuralNoteheadMaximaBlack" + ], + "description":"Maxima black, stem up left" + }, + "mensuralMaximaBlackStemUpRight":{ + "codepoint":"U+F57E", + "componentGlyphs":[ + "mensuralNoteheadMaximaBlack", + "mensuralCombStemUp" + ], + "description":"Maxima black, stem up right" + }, + "mensuralMaximaBlackVoidStemDownLeft":{ + "codepoint":"U+F57F", + "componentGlyphs":[ + "mensuralCombStemDown", + "mensuralNoteheadMaximaBlackVoid" + ], + "description":"Maxima black and void, stem down left" + }, + "mensuralMaximaBlackVoidStemDownRight":{ + "codepoint":"U+F580", + "componentGlyphs":[ + "mensuralNoteheadMaximaBlackVoid", + "mensuralCombStemDown" + ], + "description":"Maxima black and void, stem down right" + }, + "mensuralMaximaBlackVoidStemUpLeft":{ + "codepoint":"U+F581", + "componentGlyphs":[ + "mensuralCombStemUp", + "mensuralNoteheadMaximaBlackVoid" + ], + "description":"Maxima black and void, stem up left" + }, + "mensuralMaximaBlackVoidStemUpRight":{ + "codepoint":"U+F582", + "componentGlyphs":[ + "mensuralNoteheadMaximaBlackVoid", + "mensuralCombStemUp" + ], + "description":"Maxima black and void, stem up right" + }, + "mensuralMaximaVoidStemDownLeft":{ + "codepoint":"U+F583", + "componentGlyphs":[ + "mensuralCombStemDown", + "mensuralNoteheadMaximaVoid" + ], + "description":"Maxima void, stem down left" + }, + "mensuralMaximaVoidStemDownRight":{ + "codepoint":"U+F584", + "componentGlyphs":[ + "mensuralNoteheadMaximaVoid", + "mensuralCombStemDown" + ], + "description":"Maxima void, stem down right" + }, + "mensuralMaximaVoidStemUpLeft":{ + "codepoint":"U+F585", + "componentGlyphs":[ + "mensuralCombStemUp", + "mensuralNoteheadMaximaVoid" + ], + "description":"Maxima void, stem up left" + }, + "mensuralMaximaVoidStemUpRight":{ + "codepoint":"U+F586", + "componentGlyphs":[ + "mensuralNoteheadMaximaVoid", + "mensuralCombStemUp" + ], + "description":"Maxima void, stem up right" + }, + "mensuralMinimaBlackStemDown":{ + "codepoint":"U+F587", + "componentGlyphs":[ + "mensuralNoteheadSemibrevisBlack", + "mensuralCombStemDown" + ], + "description":"Minima black, stem down" + }, + "mensuralMinimaBlackStemDownExtendedFlag":{ + "codepoint":"U+F588", + "componentGlyphs":[ + "mensuralNoteheadSemibrevisBlack", + "mensuralCombStemDownFlagExtended" + ], + "description":"Minima black, stem down with extended flag" + }, + "mensuralMinimaBlackStemDownFlagLeft":{ + "codepoint":"U+F589", + "componentGlyphs":[ + "mensuralNoteheadSemibrevisBlack", + "mensuralCombStemDownFlagLeft" + ], + "description":"Minima black, stem down with flag left" + }, + "mensuralMinimaBlackStemDownFlagRight":{ + "codepoint":"U+F58A", + "componentGlyphs":[ + "mensuralNoteheadSemibrevisBlack", + "mensuralCombStemDownFlagRight" + ], + "description":"Minima black, stem down with flag right" + }, + "mensuralMinimaBlackStemDownFlaredFlag":{ + "codepoint":"U+F58B", + "componentGlyphs":[ + "mensuralNoteheadSemibrevisBlack", + "mensuralCombStemDownFlagFlared" + ], + "description":"Minima black, stem down with flared flag" + }, + "mensuralMinimaBlackStemUp":{ + "codepoint":"U+F58C", + "componentGlyphs":[ + "mensuralNoteheadSemibrevisBlack", + "mensuralCombStemUp" + ], + "description":"Minima black, stem up" + }, + "mensuralMinimaBlackStemUpExtendedFlag":{ + "codepoint":"U+F58D", + "componentGlyphs":[ + "mensuralNoteheadSemibrevisBlack", + "mensuralCombStemUpFlagExtended" + ], + "description":"Minima black, stem up with extended flag" + }, + "mensuralMinimaBlackStemUpFlagLeft":{ + "codepoint":"U+F58E", + "componentGlyphs":[ + "mensuralNoteheadSemibrevisBlack", + "mensuralCombStemUpFlagLeft" + ], + "description":"Minima black, stem up with flag left" + }, + "mensuralMinimaBlackStemUpFlagRight":{ + "codepoint":"U+F58F", + "componentGlyphs":[ + "mensuralNoteheadSemibrevisBlack", + "mensuralCombStemUpFlagRight" + ], + "description":"Minima black, stem up with flag right" + }, + "mensuralMinimaBlackStemUpFlaredFlag":{ + "codepoint":"U+F590", + "componentGlyphs":[ + "mensuralNoteheadSemibrevisBlack", + "mensuralCombStemUpFlagFlared" + ], + "description":"Minima black, stem up with flared flag" + }, + "mensuralMinimaBlackVoidStemDown":{ + "codepoint":"U+F591", + "componentGlyphs":[ + "mensuralNoteheadSemibrevisBlackVoid", + "mensuralCombStemDown" + ], + "description":"Minima black and void, stem down" + }, + "mensuralMinimaBlackVoidStemDownExtendedFlag":{ + "codepoint":"U+F592", + "componentGlyphs":[ + "mensuralNoteheadSemibrevisBlackVoid", + "mensuralCombStemDownFlagExtended" + ], + "description":"Minima black and void, stem down with extended flag" + }, + "mensuralMinimaBlackVoidStemDownFlagLeft":{ + "codepoint":"U+F593", + "componentGlyphs":[ + "mensuralNoteheadSemibrevisBlackVoid", + "mensuralCombStemDownFlagLeft" + ], + "description":"Minima black and void, stem down with flag left" + }, + "mensuralMinimaBlackVoidStemDownFlagRight":{ + "codepoint":"U+F594", + "componentGlyphs":[ + "mensuralNoteheadSemibrevisBlackVoid", + "mensuralCombStemDownFlagRight" + ], + "description":"Minima black and void, stem down with flag right" + }, + "mensuralMinimaBlackVoidStemDownFlaredFlag":{ + "codepoint":"U+F595", + "componentGlyphs":[ + "mensuralNoteheadSemibrevisBlackVoid", + "mensuralCombStemDownFlagFlared" + ], + "description":"Minima black and void, stem down with flared flag" + }, + "mensuralMinimaBlackVoidStemUp":{ + "codepoint":"U+F596", + "componentGlyphs":[ + "mensuralNoteheadSemibrevisBlackVoid", + "mensuralCombStemUp" + ], + "description":"Minima black and void, stem up" + }, + "mensuralMinimaBlackVoidStemUpExtendedFlag":{ + "codepoint":"U+F597", + "componentGlyphs":[ + "mensuralNoteheadSemibrevisBlackVoid", + "mensuralCombStemUpFlagExtended" + ], + "description":"Minima black and void, stem up with extended flag" + }, + "mensuralMinimaBlackVoidStemUpFlagLeft":{ + "codepoint":"U+F598", + "componentGlyphs":[ + "mensuralNoteheadSemibrevisBlackVoid", + "mensuralCombStemUpFlagLeft" + ], + "description":"Minima black and void, stem up with flag left" + }, + "mensuralMinimaBlackVoidStemUpFlagRight":{ + "codepoint":"U+F599", + "componentGlyphs":[ + "mensuralNoteheadSemibrevisBlackVoid", + "mensuralCombStemUpFlagRight" + ], + "description":"Minima black and void, stem up with flag right" + }, + "mensuralMinimaBlackVoidStemUpFlaredFlag":{ + "codepoint":"U+F59A", + "componentGlyphs":[ + "mensuralNoteheadSemibrevisBlackVoid", + "mensuralCombStemUpFlagFlared" + ], + "description":"Minima black and void, stem up with flared flag" + }, + "mensuralMinimaVoidStemDown":{ + "codepoint":"U+F59B", + "componentGlyphs":[ + "mensuralNoteheadSemibrevisVoid", + "mensuralCombStemDown" + ], + "description":"Minima void, stem down" + }, + "mensuralMinimaVoidStemDownExtendedFlag":{ + "codepoint":"U+F59C", + "componentGlyphs":[ + "mensuralNoteheadSemibrevisVoid", + "mensuralCombStemDownFlagExtended" + ], + "description":"Minima void, stem down with extended flag" + }, + "mensuralMinimaVoidStemDownFlagLeft":{ + "codepoint":"U+F59D", + "componentGlyphs":[ + "mensuralNoteheadSemibrevisVoid", + "mensuralCombStemDownFlagLeft" + ], + "description":"Minima void, stem down with flag left" + }, + "mensuralMinimaVoidStemDownFlagRight":{ + "codepoint":"U+F59E", + "componentGlyphs":[ + "mensuralNoteheadSemibrevisVoid", + "mensuralCombStemDownFlagRight" + ], + "description":"Minima void, stem down with flag right" + }, + "mensuralMinimaVoidStemDownFlaredFlag":{ + "codepoint":"U+F59F", + "componentGlyphs":[ + "mensuralNoteheadSemibrevisVoid", + "mensuralCombStemDownFlagFlared" + ], + "description":"Minima void, stem down with flared flag" + }, + "mensuralMinimaVoidStemUp":{ + "codepoint":"U+F5A1", + "componentGlyphs":[ + "mensuralNoteheadSemibrevisVoid", + "mensuralCombStemUp" + ], + "description":"Minima void, stem up" + }, + "mensuralMinimaVoidStemUpExtendedFlag":{ + "codepoint":"U+F5A0", + "componentGlyphs":[ + "mensuralNoteheadSemibrevisVoid", + "mensuralCombStemUpFlagExtended" + ], + "description":"Minima void, stem up with extended flag" + }, + "mensuralMinimaVoidStemUpFlagLeft":{ + "codepoint":"U+F5A2", + "componentGlyphs":[ + "mensuralNoteheadSemibrevisVoid", + "mensuralCombStemUpFlagLeft" + ], + "description":"Minima void, stem up with flag left" + }, + "mensuralMinimaVoidStemUpFlagRight":{ + "codepoint":"U+F5A3", + "componentGlyphs":[ + "mensuralNoteheadSemibrevisVoid", + "mensuralCombStemUpFlagRight" + ], + "description":"Minima void, stem up with flag right" + }, + "mensuralMinimaVoidStemUpFlaredFlag":{ + "codepoint":"U+F5A4", + "componentGlyphs":[ + "mensuralNoteheadSemibrevisVoid", + "mensuralCombStemUpFlagFlared" + ], + "description":"Minima void, stem up with flared flag" + }, + "mensuralSemiminimaBlackStemDown":{ + "codepoint":"U+F5A5", + "componentGlyphs":[ + "mensuralNoteheadSemibrevisBlack", + "mensuralCombStemDownFlagSemiminima" + ], + "description":"Semiminima black, stem down" + }, + "mensuralSemiminimaBlackStemUp":{ + "codepoint":"U+F5A6", + "componentGlyphs":[ + "mensuralNoteheadSemibrevisBlack", + "mensuralCombStemUpFlagSemiminima" + ], + "description":"Semiminima black, stem up" + }, + "mensuralSemiminimaBlackVoidStemDown":{ + "codepoint":"U+F5A7", + "componentGlyphs":[ + "mensuralNoteheadSemibrevisBlackVoid", + "mensuralCombStemDownFlagSemiminima" + ], + "description":"Semiminima black and void, stem down" + }, + "mensuralSemiminimaBlackVoidStemUp":{ + "codepoint":"U+F5A8", + "componentGlyphs":[ + "mensuralNoteheadSemibrevisBlackVoid", + "mensuralCombStemUpFlagSemiminima" + ], + "description":"Semiminima black and void, stem up" + }, + "mensuralSemiminimaVoidStemDown":{ + "codepoint":"U+F5A9", + "componentGlyphs":[ + "mensuralNoteheadSemibrevisVoid", + "mensuralCombStemDownFlagSemiminima" + ], + "description":"Semiminima void, stem down" + }, + "mensuralSemiminimaVoidStemUp":{ + "codepoint":"U+F5AA", + "componentGlyphs":[ + "mensuralNoteheadSemibrevisVoid", + "mensuralCombStemUpFlagSemiminima" + ], + "description":"Semiminima void, stem up" + }, + "noteheadBlackParens":{ + "codepoint":"U+F5CA", + "componentGlyphs":[ + "noteheadParenthesisLeft", + "noteheadBlack", + "noteheadParenthesisRight" + ], + "description":"Parenthesised black notehead" + }, + "noteheadDoubleWholeParens":{ + "codepoint":"U+F5CD", + "componentGlyphs":[ + "noteheadParenthesisLeft", + "noteheadDoubleWhole", + "noteheadParenthesisRight" + ], + "description":"Parenthesised double whole (breve) notehead" + }, + "noteheadHalfParens":{ + "codepoint":"U+F5CB", + "componentGlyphs":[ + "noteheadParenthesisLeft", + "noteheadHalf", + "noteheadParenthesisRight" + ], + "description":"Parenthesised half notehead" + }, + "noteheadWholeParens":{ + "codepoint":"U+F5CC", + "componentGlyphs":[ + "noteheadParenthesisLeft", + "noteheadWhole", + "noteheadParenthesisRight" + ], + "description":"Parenthesised whole (semibreve) notehead" + }, + "ornamentTrillFlatAbove":{ + "codepoint":"U+F5AB", + "componentGlyphs":[ + "accidentalFlat", + "ornamentTrill" + ], + "description":"Trill, flat above" + }, + "ornamentTrillNaturalAbove":{ + "codepoint":"U+F5AC", + "componentGlyphs":[ + "accidentalNatural", + "ornamentTrill" + ], + "description":"Trill, natural above" + }, + "ornamentTrillSharpAbove":{ + "codepoint":"U+F5AD", + "componentGlyphs":[ + "accidentalSharp", + "ornamentTrill" + ], + "description":"Trill, sharp above" + }, + "ornamentTurnFlatAbove":{ + "codepoint":"U+F5AE", + "componentGlyphs":[ + "accidentalFlat", + "ornamentTurn" + ], + "description":"Turn, flat above" + }, + "ornamentTurnFlatAboveSharpBelow":{ + "codepoint":"U+F5AF", + "componentGlyphs":[ + "accidentalFlat", + "ornamentTurn", + "accidentalSharp" + ], + "description":"Turn, flat above, sharp below" + }, + "ornamentTurnFlatBelow":{ + "codepoint":"U+F5B0", + "componentGlyphs":[ + "ornamentTurn", + "accidentalFlat" + ], + "description":"Turn, flat below" + }, + "ornamentTurnNaturalAbove":{ + "codepoint":"U+F5B1", + "componentGlyphs":[ + "accidentalNatural", + "ornamentTurn" + ], + "description":"Turn, natural above" + }, + "ornamentTurnNaturalBelow":{ + "codepoint":"U+F5B2", + "componentGlyphs":[ + "ornamentTurn", + "accidentalNatural" + ], + "description":"Turn, natural below" + }, + "ornamentTurnSharpAbove":{ + "codepoint":"U+F5B3", + "componentGlyphs":[ + "accidentalSharp", + "ornamentTurn" + ], + "description":"Turn, sharp above" + }, + "ornamentTurnSharpAboveFlatBelow":{ + "codepoint":"U+F5B4", + "componentGlyphs":[ + "accidentalSharp", + "ornamentTurn", + "accidentalFlat" + ], + "description":"Turn, sharp above, flat below" + }, + "ornamentTurnSharpBelow":{ + "codepoint":"U+F5B5", + "componentGlyphs":[ + "ornamentTurn", + "accidentalSharp" + ], + "description":"Turn, sharp below" + }, + "timeSig0Denominator":{ + "codepoint":"U+F5B6", + "componentGlyphs":[ + "timeSigCombDenominator", + "timeSig0" + ], + "description":"Time signature 0 (denominator)" + }, + "timeSig0Numerator":{ + "codepoint":"U+F5B7", + "componentGlyphs":[ + "timeSigCombNumerator", + "timeSig0" + ], + "description":"Time signature 0 (numerator)" + }, + "timeSig12over8":{ + "codepoint":"U+F5F3", + "componentGlyphs":[ + "timeSigCombNumerator", + "timeSig1", + "timeSigCombNumerator", + "timeSig2", + "timeSigCombDenominator", + "timeSig8" + ], + "description":"12/8 time signature" + }, + "timeSig1Denominator":{ + "codepoint":"U+F5B8", + "componentGlyphs":[ + "timeSigCombDenominator", + "timeSig1" + ], + "description":"Time signature 1 (denominator)" + }, + "timeSig1Numerator":{ + "codepoint":"U+F5B9", + "componentGlyphs":[ + "timeSigCombNumerator", + "timeSig1" + ], + "description":"Time signature 1 (numerator)" + }, + "timeSig2Denominator":{ + "codepoint":"U+F5BA", + "componentGlyphs":[ + "timeSigCombDenominator", + "timeSig2" + ], + "description":"Time signature 2 (denominator)" + }, + "timeSig2Numerator":{ + "codepoint":"U+F5BB", + "componentGlyphs":[ + "timeSigCombNumerator", + "timeSig2" + ], + "description":"Time signature 2 (numerator)" + }, + "timeSig2over2":{ + "codepoint":"U+F5E8", + "componentGlyphs":[ + "timeSigCombNumerator", + "timeSig2", + "timeSigCombDenominator", + "timeSig2" + ], + "description":"2/2 time signature" + }, + "timeSig2over4":{ + "codepoint":"U+F5E7", + "componentGlyphs":[ + "timeSigCombNumerator", + "timeSig2", + "timeSigCombDenominator", + "timeSig4" + ], + "description":"2/4 time signature" + }, + "timeSig3Denominator":{ + "codepoint":"U+F5BC", + "componentGlyphs":[ + "timeSigCombDenominator", + "timeSig3" + ], + "description":"Time signature 3 (denominator)" + }, + "timeSig3Numerator":{ + "codepoint":"U+F5BD", + "componentGlyphs":[ + "timeSigCombNumerator", + "timeSig3" + ], + "description":"Time signature 3 (numerator)" + }, + "timeSig3over2":{ + "codepoint":"U+F5E9", + "componentGlyphs":[ + "timeSigCombNumerator", + "timeSig3", + "timeSigCombDenominator", + "timeSig2" + ], + "description":"3/2 time signature" + }, + "timeSig3over4":{ + "codepoint":"U+F5EA", + "componentGlyphs":[ + "timeSigCombNumerator", + "timeSig3", + "timeSigCombDenominator", + "timeSig4" + ], + "description":"3/4 time signature" + }, + "timeSig3over8":{ + "codepoint":"U+F5EB", + "componentGlyphs":[ + "timeSigCombNumerator", + "timeSig3", + "timeSigCombDenominator", + "timeSig8" + ], + "description":"3/8 time signature" + }, + "timeSig4Denominator":{ + "codepoint":"U+F5BE", + "componentGlyphs":[ + "timeSigCombDenominator", + "timeSig4" + ], + "description":"Time signature 4 (denominator)" + }, + "timeSig4Numerator":{ + "codepoint":"U+F5BF", + "componentGlyphs":[ + "timeSigCombNumerator", + "timeSig4" + ], + "description":"Time signature 4 (numerator)" + }, + "timeSig4over4":{ + "codepoint":"U+F5EC", + "componentGlyphs":[ + "timeSigCombNumerator", + "timeSig4", + "timeSigCombDenominator", + "timeSig4" + ], + "description":"4/4 time signature" + }, + "timeSig5Denominator":{ + "codepoint":"U+F5C0", + "componentGlyphs":[ + "timeSigCombDenominator", + "timeSig5" + ], + "description":"Time signature 5 (denominator)" + }, + "timeSig5Numerator":{ + "codepoint":"U+F5C1", + "componentGlyphs":[ + "timeSigCombNumerator", + "timeSig5" + ], + "description":"Time signature 5 (numerator)" + }, + "timeSig5over4":{ + "codepoint":"U+F5ED", + "componentGlyphs":[ + "timeSigCombNumerator", + "timeSig5", + "timeSigCombDenominator", + "timeSig4" + ], + "description":"5/4 time signature" + }, + "timeSig5over8":{ + "codepoint":"U+F5EE", + "componentGlyphs":[ + "timeSigCombNumerator", + "timeSig5", + "timeSigCombDenominator", + "timeSig8" + ], + "description":"5/8 time signature" + }, + "timeSig6Denominator":{ + "codepoint":"U+F5C2", + "componentGlyphs":[ + "timeSigCombDenominator", + "timeSig6" + ], + "description":"Time signature 6 (denominator)" + }, + "timeSig6Numerator":{ + "codepoint":"U+F5C3", + "componentGlyphs":[ + "timeSigCombNumerator", + "timeSig6" + ], + "description":"Time signature 6 (numerator)" + }, + "timeSig6over4":{ + "codepoint":"U+F5EF", + "componentGlyphs":[ + "timeSigCombNumerator", + "timeSig6", + "timeSigCombDenominator", + "timeSig4" + ], + "description":"6/4 time signature" + }, + "timeSig6over8":{ + "codepoint":"U+F5F0", + "componentGlyphs":[ + "timeSigCombNumerator", + "timeSig6", + "timeSigCombDenominator", + "timeSig8" + ], + "description":"6/8 time signature" + }, + "timeSig7Denominator":{ + "codepoint":"U+F5C4", + "componentGlyphs":[ + "timeSigCombDenominator", + "timeSig7" + ], + "description":"Time signature 7 (denominator)" + }, + "timeSig7Numerator":{ + "codepoint":"U+F5C5", + "componentGlyphs":[ + "timeSigCombNumerator", + "timeSig7" + ], + "description":"Time signature 7 (numerator)" + }, + "timeSig7over8":{ + "codepoint":"U+F5F1", + "componentGlyphs":[ + "timeSigCombNumerator", + "timeSig7", + "timeSigCombDenominator", + "timeSig8" + ], + "description":"7/8 time signature" + }, + "timeSig8Denominator":{ + "codepoint":"U+F5C6", + "componentGlyphs":[ + "timeSigCombDenominator", + "timeSig8" + ], + "description":"Time signature 8 (denominator)" + }, + "timeSig8Numerator":{ + "codepoint":"U+F5C7", + "componentGlyphs":[ + "timeSigCombNumerator", + "timeSig8" + ], + "description":"Time signature 8 (numerator)" + }, + "timeSig9Denominator":{ + "codepoint":"U+F5C8", + "componentGlyphs":[ + "timeSigCombDenominator", + "timeSig9" + ], + "description":"Time signature 9 (denominator)" + }, + "timeSig9Numerator":{ + "codepoint":"U+F5C9", + "componentGlyphs":[ + "timeSigCombNumerator", + "timeSig9" + ], + "description":"Time signature 9 (numerator)" + }, + "timeSig9over8":{ + "codepoint":"U+F5F2", + "componentGlyphs":[ + "timeSigCombNumerator", + "timeSig9", + "timeSigCombDenominator", + "timeSig8" + ], + "description":"9/8 time signature" + } + }, + "optionalGlyphs":{ + "4stringTabClefSerif":{ + "classes":[ + "clefs" + ], + "codepoint":"U+F40D", + "description":"4-string tab clef (serif)" + }, + "4stringTabClefTall":{ + "classes":[ + "clefs" + ], + "codepoint":"U+F40C", + "description":"4-string tab clef (tall)" + }, + "6stringTabClefSerif":{ + "classes":[ + "clefs" + ], + "codepoint":"U+F40B", + "description":"6-string tab clef (serif)" + }, + "6stringTabClefTall":{ + "classes":[ + "clefs" + ], + "codepoint":"U+F40A", + "description":"6-string tab clef (tall)" + }, + "accdnPushAlt":{ + "classes":[], + "codepoint":"U+F45B", + "description":"Push (Draugsvoll & H\u00f8jsgaard)" + }, + "accidentalDoubleFlatJoinedStems":{ + "classes":[ + "accidentals", + "accidentalsSagittalMixed", + "accidentalsStandard", + "combiningStaffPositions" + ], + "codepoint":"U+F4A1", + "description":"Double flat (joined stems)" + }, + "accidentalDoubleFlatParens":{ + "codepoint":"U+F5D2" + }, + "accidentalDoubleSharpParens":{ + "codepoint":"U+F5D1" + }, + "accidentalFlatJohnstonDown":{ + "codepoint":"U+F5D8" + }, + "accidentalFlatJohnstonEl":{ + "codepoint":"U+F5D6" + }, + "accidentalFlatJohnstonElDown":{ + "codepoint":"U+F5E4" + }, + "accidentalFlatJohnstonUp":{ + "codepoint":"U+F5D7" + }, + "accidentalFlatJohnstonUpEl":{ + "codepoint":"U+F5E3" + }, + "accidentalFlatParens":{ + "codepoint":"U+F5CE" + }, + "accidentalFlatSmall":{ + "classes":[ + "accidentals", + "accidentalsSagittalMixed", + "accidentalsStandard", + "combiningStaffPositions" + ], + "codepoint":"U+F427", + "description":"Flat (for small staves)" + }, + "accidentalJohnstonDownEl":{ + "codepoint":"U+F5DE" + }, + "accidentalJohnstonSevenDown":{ + "codepoint":"U+F5DC" + }, + "accidentalJohnstonSevenFlat":{ + "codepoint":"U+F5DA" + }, + "accidentalJohnstonSevenFlatDown":{ + "codepoint":"U+F5E6" + }, + "accidentalJohnstonSevenFlatUp":{ + "codepoint":"U+F5E5" + }, + "accidentalJohnstonSevenSharp":{ + "codepoint":"U+F5D9" + }, + "accidentalJohnstonSevenSharpDown":{ + "codepoint":"U+F5E2" + }, + "accidentalJohnstonSevenSharpUp":{ + "codepoint":"U+F5E1" + }, + "accidentalJohnstonSevenUp":{ + "codepoint":"U+F5DB" + }, + "accidentalJohnstonUpEl":{ + "codepoint":"U+F5DD" + }, + "accidentalNaturalParens":{ + "codepoint":"U+F5CF" + }, + "accidentalNaturalSmall":{ + "classes":[ + "accidentals", + "accidentalsSagittalMixed", + "accidentalsSagittalPure", + "accidentalsStandard", + "combiningStaffPositions" + ], + "codepoint":"U+F428", + "description":"Natural (for small staves)" + }, + "accidentalSharpJohnstonDown":{ + "codepoint":"U+F5D5" + }, + "accidentalSharpJohnstonDownEl":{ + "codepoint":"U+F5E0" + }, + "accidentalSharpJohnstonEl":{ + "codepoint":"U+F5D3" + }, + "accidentalSharpJohnstonUp":{ + "codepoint":"U+F5D4" + }, + "accidentalSharpJohnstonUpEl":{ + "codepoint":"U+F5DF" + }, + "accidentalSharpParens":{ + "codepoint":"U+F5D0" + }, + "accidentalSharpSmall":{ + "classes":[ + "accidentals", + "accidentalsSagittalMixed", + "accidentalsStandard", + "combiningStaffPositions" + ], + "codepoint":"U+F429", + "description":"Sharp (for small staves)" + }, + "accidentalTripleFlatJoinedStems":{ + "classes":[ + "accidentals", + "accidentalsStandard", + "combiningStaffPositions" + ], + "codepoint":"U+F4A2", + "description":"Triple flat (joined stems)" + }, + "analyticsHauptrhythmusR":{ + "classes":[], + "codepoint":"U+F4B9", + "description":"Hauptrhythmus R (Berg)" + }, + "articAccentAboveLarge":{ + "classes":[ + "articulations", + "articulationsAbove", + "combiningStaffPositions" + ], + "codepoint":"U+F42A", + "description":"Large accent above" + }, + "articAccentAboveSmall":{ + "classes":[ + "articulations", + "articulationsAbove", + "combiningStaffPositions" + ], + "codepoint":"U+F475", + "description":"Accent above (small staff)" + }, + "articAccentBelowLarge":{ + "classes":[ + "articulations", + "articulationsBelow", + "combiningStaffPositions" + ], + "codepoint":"U+F42B", + "description":"Large accent below" + }, + "articAccentBelowSmall":{ + "classes":[ + "articulations", + "articulationsBelow", + "combiningStaffPositions" + ], + "codepoint":"U+F476", + "description":"Accent below (small staff)" + }, + "articAccentStaccatoAboveSmall":{ + "classes":[ + "articulations", + "articulationsAbove", + "combiningStaffPositions" + ], + "codepoint":"U+F485", + "description":"Accent-staccato above (small staff)" + }, + "articAccentStaccatoBelowSmall":{ + "classes":[ + "articulations", + "articulationsBelow", + "combiningStaffPositions" + ], + "codepoint":"U+F486", + "description":"Accent-staccato below (small staff)" + }, + "articMarcatoAboveSmall":{ + "classes":[ + "articulations", + "articulationsAbove", + "combiningStaffPositions" + ], + "codepoint":"U+F481", + "description":"Marcato above (small staff)" + }, + "articMarcatoBelowSmall":{ + "classes":[ + "articulations", + "articulationsBelow", + "combiningStaffPositions" + ], + "codepoint":"U+F482", + "description":"Marcato below (small staff)" + }, + "articMarcatoStaccatoAboveSmall":{ + "classes":[ + "articulations", + "articulationsAbove", + "combiningStaffPositions" + ], + "codepoint":"U+F483", + "description":"Marcato-staccato above (small staff)" + }, + "articMarcatoStaccatoBelowSmall":{ + "classes":[ + "articulations", + "articulationsBelow", + "combiningStaffPositions" + ], + "codepoint":"U+F484", + "description":"Marcato-staccato below (small staff)" + }, + "articStaccatissimoAboveSmall":{ + "classes":[ + "articulations", + "articulationsAbove", + "combiningStaffPositions" + ], + "codepoint":"U+F47B", + "description":"Staccatissimo above (small staff)" + }, + "articStaccatissimoBelowSmall":{ + "classes":[ + "articulations", + "articulationsBelow", + "combiningStaffPositions" + ], + "codepoint":"U+F47C", + "description":"Staccatissimo below (small staff)" + }, + "articStaccatissimoStrokeAboveSmall":{ + "classes":[ + "articulations", + "articulationsAbove", + "combiningStaffPositions" + ], + "codepoint":"U+F47F", + "description":"Staccatissimo stroke above (small staff)" + }, + "articStaccatissimoStrokeBelowSmall":{ + "classes":[ + "articulations", + "articulationsBelow", + "combiningStaffPositions" + ], + "codepoint":"U+F480", + "description":"Staccatissimo stroke below (small staff)" + }, + "articStaccatissimoWedgeAboveSmall":{ + "classes":[ + "articulations", + "articulationsAbove", + "combiningStaffPositions" + ], + "codepoint":"U+F47D", + "description":"Staccatissimo wedge above (small staff)" + }, + "articStaccatissimoWedgeBelowSmall":{ + "classes":[ + "articulations", + "articulationsBelow", + "combiningStaffPositions" + ], + "codepoint":"U+F47E", + "description":"Staccatissimo wedge below (small staff)" + }, + "articStaccatoAboveSmall":{ + "classes":[ + "articulations", + "articulationsAbove", + "combiningStaffPositions" + ], + "codepoint":"U+F477", + "description":"Staccato above (small staff)" + }, + "articStaccatoBelowSmall":{ + "classes":[ + "articulations", + "articulationsBelow", + "combiningStaffPositions" + ], + "codepoint":"U+F478", + "description":"Staccato below (small staff)" + }, + "articTenutoAboveSmall":{ + "classes":[ + "articulations", + "articulationsAbove", + "combiningStaffPositions" + ], + "codepoint":"U+F479", + "description":"Tenuto above (small staff)" + }, + "articTenutoAccentAboveSmall":{ + "classes":[ + "articulations", + "articulationsAbove", + "combiningStaffPositions" + ], + "codepoint":"U+F489", + "description":"Tenuto-accent above (small staff)" + }, + "articTenutoAccentBelowSmall":{ + "classes":[ + "articulations", + "articulationsBelow", + "combiningStaffPositions" + ], + "codepoint":"U+F48A", + "description":"Tenuto-accent below (small staff)" + }, + "articTenutoBelowSmall":{ + "classes":[ + "articulations", + "articulationsBelow", + "combiningStaffPositions" + ], + "codepoint":"U+F47A", + "description":"Tenuto below (small staff)" + }, + "articTenutoStaccatoAboveSmall":{ + "classes":[ + "articulations", + "articulationsAbove", + "combiningStaffPositions" + ], + "codepoint":"U+F487", + "description":"Lour\u00e9 (tenuto-staccato) above (small staff)" + }, + "articTenutoStaccatoBelowSmall":{ + "classes":[ + "articulations", + "articulationsBelow", + "combiningStaffPositions" + ], + "codepoint":"U+F488", + "description":"Lour\u00e9 (tenuto-staccato) below (small staff)" + }, + "braceFlat":{ + "classes":[], + "codepoint":"U+F403", + "description":"Brace (flat)" + }, + "braceLarge":{ + "classes":[], + "codepoint":"U+F401", + "description":"Brace (large)" + }, + "braceLarger":{ + "classes":[], + "codepoint":"U+F402", + "description":"Brace (larger)" + }, + "braceSmall":{ + "classes":[], + "codepoint":"U+F400", + "description":"Brace (small)" + }, + "cClefFrench":{ + "classes":[ + "clefs", + "clefsC" + ], + "codepoint":"U+F408", + "description":"C clef (French, 18th century)" + }, + "cClefFrench20C":{ + "classes":[ + "clefs", + "clefsC" + ], + "codepoint":"U+F4BF", + "description":"C clef (French, 20th century)" + }, + "cClefFrench20CChange":{ + "classes":[ + "clefs" + ], + "codepoint":"U+F4C0", + "description":"C clef change (French, 20th century)" + }, + "cClefSmall":{ + "classes":[ + "clefs", + "clefsC" + ], + "codepoint":"U+F473", + "description":"C clef (small staff)" + }, + "caesuraSingleStroke":{ + "classes":[ + "combiningStaffPositions", + "pauses" + ], + "codepoint":"U+F42C", + "description":"Caesura (single stroke)" + }, + "chantCclefHufnagel":{ + "classes":[ + "combiningStaffPositions" + ], + "codepoint":"U+F49E", + "description":"Plainchant C clef (Hufnagel)" + }, + "chantFclefHufnagel":{ + "classes":[ + "combiningStaffPositions" + ], + "codepoint":"U+F49D", + "description":"Plainchant F clef (Hufnagel)" + }, + "codaJapanese":{ + "classes":[], + "codepoint":"U+F405", + "description":"Coda (Japanese style, serif)" + }, + "csymAccidentalDoubleFlatSmall":{ + "classes":[], + "codepoint":"U+F4E0", + "description":"Double flat (superscript or subscript)" + }, + "csymAccidentalDoubleSharpSmall":{ + "classes":[], + "codepoint":"U+F4DF", + "description":"Double sharp (superscript or subscript)" + }, + "csymAccidentalFlatSmall":{ + "classes":[], + "codepoint":"U+F4DC", + "description":"Flat (superscript or subscript)" + }, + "csymAccidentalNaturalSmall":{ + "classes":[], + "codepoint":"U+F4DD", + "description":"Natural (superscript or subscript)" + }, + "csymAccidentalSharpSmall":{ + "classes":[], + "codepoint":"U+F4DE", + "description":"Sharp (superscript or subscript)" + }, + "csymAccidentalTripleFlatSmall":{ + "classes":[], + "codepoint":"U+F4E2", + "description":"Triple flat (superscript or subscript)" + }, + "csymAccidentalTripleSharpSmall":{ + "classes":[], + "codepoint":"U+F4E1", + "description":"Triple sharp (superscript or subscript)" + }, + "csymAugmentedSmall":{ + "classes":[], + "codepoint":"U+F4D9", + "description":"Augmented (subscript or superscript)" + }, + "csymDiminishedSmall":{ + "classes":[], + "codepoint":"U+F4D8", + "description":"Diminished (subscript or superscript)" + }, + "csymHalfDiminishedSmall":{ + "classes":[], + "codepoint":"U+F4D7", + "description":"Half-diminished (subscript or superscript)" + }, + "csymMajorSeventhSmall":{ + "classes":[], + "codepoint":"U+F4DA", + "description":"Major seventh (subscript or superscript)" + }, + "csymMinorSmall":{ + "classes":[], + "codepoint":"U+F4DB", + "description":"Minor (subscript or superscript)" + }, + "doubleTongueAboveNoSlur":{ + "classes":[], + "codepoint":"U+F42D", + "description":"Double-tongue above (no slur)" + }, + "doubleTongueBelowNoSlur":{ + "classes":[], + "codepoint":"U+F42E", + "description":"Double-tongue below (no slur)" + }, + "dynamicForteSmall":{ + "classes":[ + "dynamics" + ], + "codepoint":"U+F46D", + "description":"Forte (small staff)" + }, + "dynamicMezzoSmall":{ + "classes":[ + "dynamics" + ], + "codepoint":"U+F46C", + "description":"Mezzo (small staff)" + }, + "dynamicNienteSmall":{ + "classes":[ + "dynamics" + ], + "codepoint":"U+F471", + "description":"Niente (small staff)" + }, + "dynamicPianoSmall":{ + "classes":[ + "dynamics" + ], + "codepoint":"U+F46B", + "description":"Piano (small staff)" + }, + "dynamicRinforzandoSmall":{ + "classes":[ + "dynamics" + ], + "codepoint":"U+F46E", + "description":"Rinforzando (small staff)" + }, + "dynamicSforzandoSmall":{ + "classes":[ + "dynamics" + ], + "codepoint":"U+F46F", + "description":"Sforzando (small staff)" + }, + "dynamicZSmall":{ + "classes":[ + "dynamics" + ], + "codepoint":"U+F470", + "description":"Z (small staff)" + }, + "fClef19thCentury":{ + "classes":[ + "clefs", + "clefsF" + ], + "codepoint":"U+F407", + "description":"F clef (19th century)" + }, + "fClef5Below":{ + "codepoint":"U+F52B" + }, + "fClefFrench":{ + "classes":[ + "clefs", + "clefsF" + ], + "codepoint":"U+F406", + "description":"F clef (French, 18th century)" + }, + "fClefSmall":{ + "classes":[ + "clefs", + "clefsF" + ], + "codepoint":"U+F474", + "description":"F clef (small staff)" + }, + "flag1024thDownSmall":{ + "classes":[ + "combiningStaffPositions" + ], + "codepoint":"U+F49A", + "description":"Combining flag 8 (1024th) below (small staff)" + }, + "flag1024thDownStraight":{ + "classes":[ + "combiningStaffPositions" + ], + "codepoint":"U+F426", + "description":"Combining flag 8 (1024th) below (straight)" + }, + "flag1024thUpShort":{ + "classes":[ + "combiningStaffPositions" + ], + "codepoint":"U+F425", + "description":"Combining flag 8 (1024th) above (short)" + }, + "flag1024thUpSmall":{ + "classes":[ + "combiningStaffPositions" + ], + "codepoint":"U+F499", + "description":"Combining flag 8 (1024th) above (small staff)" + }, + "flag1024thUpStraight":{ + "classes":[ + "combiningStaffPositions" + ], + "codepoint":"U+F424", + "description":"Combining flag 8 (1024th) above (straight)" + }, + "flag128thDownSmall":{ + "classes":[ + "combiningStaffPositions" + ], + "codepoint":"U+F494", + "description":"Combining flag 5 (128th) below (small staff)" + }, + "flag128thDownStraight":{ + "classes":[ + "combiningStaffPositions" + ], + "codepoint":"U+F41D", + "description":"Combining flag 5 (128th) below (straight)" + }, + "flag128thUpShort":{ + "classes":[ + "combiningStaffPositions" + ], + "codepoint":"U+F41C", + "description":"Combining flag 5 (128th) above (short)" + }, + "flag128thUpSmall":{ + "classes":[ + "combiningStaffPositions" + ], + "codepoint":"U+F493", + "description":"Combining flag 5 (128th) above (small staff)" + }, + "flag128thUpStraight":{ + "classes":[ + "combiningStaffPositions" + ], + "codepoint":"U+F41B", + "description":"Combining flag 5 (128th) above (straight)" + }, + "flag16thDownSmall":{ + "classes":[ + "combiningStaffPositions" + ], + "codepoint":"U+F48E", + "description":"Combining flag 2 (16th) below (small staff)" + }, + "flag16thDownStraight":{ + "classes":[ + "combiningStaffPositions" + ], + "codepoint":"U+F414", + "description":"Combining flag 2 (16th) below (straight)" + }, + "flag16thUpShort":{ + "classes":[ + "combiningStaffPositions" + ], + "codepoint":"U+F413", + "description":"Combining flag 2 (16th) above (short)" + }, + "flag16thUpSmall":{ + "classes":[ + "combiningStaffPositions" + ], + "codepoint":"U+F48D", + "description":"Combining flag 2 (16th) above (small staff)" + }, + "flag16thUpStraight":{ + "classes":[ + "combiningStaffPositions" + ], + "codepoint":"U+F412", + "description":"Combining flag 2 (16th) above (straight)" + }, + "flag256thDownSmall":{ + "classes":[ + "combiningStaffPositions" + ], + "codepoint":"U+F496", + "description":"Combining flag 6 (256th) below (small staff)" + }, + "flag256thDownStraight":{ + "classes":[ + "combiningStaffPositions" + ], + "codepoint":"U+F420", + "description":"Combining flag 6 (256th) below (straight)" + }, + "flag256thUpShort":{ + "classes":[ + "combiningStaffPositions" + ], + "codepoint":"U+F41F", + "description":"Combining flag 6 (256th) above (short)" + }, + "flag256thUpSmall":{ + "classes":[ + "combiningStaffPositions" + ], + "codepoint":"U+F495", + "description":"Combining flag 6 (256th) above (small staff)" + }, + "flag256thUpStraight":{ + "classes":[ + "combiningStaffPositions" + ], + "codepoint":"U+F41E", + "description":"Combining flag 6 (256th) above (straight)" + }, + "flag32ndDownSmall":{ + "classes":[ + "combiningStaffPositions" + ], + "codepoint":"U+F490", + "description":"Combining flag 3 (32nd) below (small staff)" + }, + "flag32ndDownStraight":{ + "classes":[ + "combiningStaffPositions" + ], + "codepoint":"U+F417", + "description":"Combining flag 3 (32nd) below (straight)" + }, + "flag32ndUpShort":{ + "classes":[ + "combiningStaffPositions" + ], + "codepoint":"U+F416", + "description":"Combining flag 3 (32nd) above (short)" + }, + "flag32ndUpSmall":{ + "classes":[ + "combiningStaffPositions" + ], + "codepoint":"U+F48F", + "description":"Combining flag 3 (32nd) above (small staff)" + }, + "flag32ndUpStraight":{ + "classes":[ + "combiningStaffPositions" + ], + "codepoint":"U+F415", + "description":"Combining flag 3 (32nd) above (straight)" + }, + "flag512thDownSmall":{ + "classes":[ + "combiningStaffPositions" + ], + "codepoint":"U+F498", + "description":"Combining flag 7 (512th) below (small staff)" + }, + "flag512thDownStraight":{ + "classes":[ + "combiningStaffPositions" + ], + "codepoint":"U+F423", + "description":"Combining flag 7 (512th) below (straight)" + }, + "flag512thUpShort":{ + "classes":[ + "combiningStaffPositions" + ], + "codepoint":"U+F422", + "description":"Combining flag 7 (512th) above (short)" + }, + "flag512thUpSmall":{ + "classes":[ + "combiningStaffPositions" + ], + "codepoint":"U+F497", + "description":"Combining flag 7 (512th) above (small staff)" + }, + "flag512thUpStraight":{ + "classes":[ + "combiningStaffPositions" + ], + "codepoint":"U+F421", + "description":"Combining flag 7 (512th) above (straight)" + }, + "flag64thDownSmall":{ + "classes":[ + "combiningStaffPositions" + ], + "codepoint":"U+F492", + "description":"Combining flag 4 (64th) below (small staff)" + }, + "flag64thDownStraight":{ + "classes":[ + "combiningStaffPositions" + ], + "codepoint":"U+F41A", + "description":"Combining flag 4 (64th) below (straight)" + }, + "flag64thUpShort":{ + "classes":[ + "combiningStaffPositions" + ], + "codepoint":"U+F419", + "description":"Combining flag 4 (64th) above (short)" + }, + "flag64thUpSmall":{ + "classes":[ + "combiningStaffPositions" + ], + "codepoint":"U+F491", + "description":"Combining flag 4 (64th) above (small staff)" + }, + "flag64thUpStraight":{ + "classes":[ + "combiningStaffPositions" + ], + "codepoint":"U+F418", + "description":"Combining flag 4 (64th) above (straight)" + }, + "flag8thDownSmall":{ + "classes":[ + "combiningStaffPositions" + ], + "codepoint":"U+F48C", + "description":"Combining flag 1 (8th) below (small staff)" + }, + "flag8thDownStraight":{ + "classes":[ + "combiningStaffPositions" + ], + "codepoint":"U+F411", + "description":"Combining flag 1 (8th) below (straight)" + }, + "flag8thUpShort":{ + "classes":[ + "combiningStaffPositions" + ], + "codepoint":"U+F410", + "description":"Combining flag 1 (8th) above (short)" + }, + "flag8thUpSmall":{ + "classes":[ + "combiningStaffPositions" + ], + "codepoint":"U+F48B", + "description":"Combining flag 1 (8th) above (small staff)" + }, + "flag8thUpStraight":{ + "classes":[ + "combiningStaffPositions" + ], + "codepoint":"U+F40F", + "description":"Combining flag 1 (8th) above (straight)" + }, + "gClef0Below":{ + "codepoint":"U+F52C" + }, + "gClef10Below":{ + "codepoint":"U+F52D" + }, + "gClef11Below":{ + "codepoint":"U+F52E" + }, + "gClef12Below":{ + "codepoint":"U+F52F" + }, + "gClef13Below":{ + "codepoint":"U+F530" + }, + "gClef14Below":{ + "codepoint":"U+F531" + }, + "gClef15Below":{ + "codepoint":"U+F532" + }, + "gClef16Below":{ + "codepoint":"U+F533" + }, + "gClef17Below":{ + "codepoint":"U+F534" + }, + "gClef2Above":{ + "codepoint":"U+F535" + }, + "gClef2Below":{ + "codepoint":"U+F536" + }, + "gClef3Above":{ + "codepoint":"U+F537" + }, + "gClef3Below":{ + "codepoint":"U+F538" + }, + "gClef4Above":{ + "codepoint":"U+F539" + }, + "gClef4Below":{ + "codepoint":"U+F53A" + }, + "gClef5Above":{ + "codepoint":"U+F53B" + }, + "gClef5Below":{ + "codepoint":"U+F53C" + }, + "gClef6Above":{ + "codepoint":"U+F53D" + }, + "gClef6Below":{ + "codepoint":"U+F53E" + }, + "gClef7Above":{ + "codepoint":"U+F53F" + }, + "gClef7Below":{ + "codepoint":"U+F540" + }, + "gClef8Above":{ + "codepoint":"U+F541" + }, + "gClef8Below":{ + "codepoint":"U+F542" + }, + "gClef9Above":{ + "codepoint":"U+F543" + }, + "gClef9Below":{ + "codepoint":"U+F544" + }, + "gClefFlat10Below":{ + "codepoint":"U+F545" + }, + "gClefFlat11Below":{ + "codepoint":"U+F546" + }, + "gClefFlat13Below":{ + "codepoint":"U+F547" + }, + "gClefFlat14Below":{ + "codepoint":"U+F548" + }, + "gClefFlat15Below":{ + "codepoint":"U+F549" + }, + "gClefFlat16Below":{ + "codepoint":"U+F54A" + }, + "gClefFlat1Below":{ + "codepoint":"U+F54B" + }, + "gClefFlat2Above":{ + "codepoint":"U+F54C" + }, + "gClefFlat2Below":{ + "codepoint":"U+F54D" + }, + "gClefFlat3Above":{ + "codepoint":"U+F54E" + }, + "gClefFlat3Below":{ + "codepoint":"U+F54F" + }, + "gClefFlat4Below":{ + "codepoint":"U+F550" + }, + "gClefFlat5Above":{ + "codepoint":"U+F551" + }, + "gClefFlat6Above":{ + "codepoint":"U+F552" + }, + "gClefFlat6Below":{ + "codepoint":"U+F553" + }, + "gClefFlat7Above":{ + "codepoint":"U+F554" + }, + "gClefFlat7Below":{ + "codepoint":"U+F555" + }, + "gClefFlat8Above":{ + "codepoint":"U+F556" + }, + "gClefFlat9Above":{ + "codepoint":"U+F557" + }, + "gClefFlat9Below":{ + "codepoint":"U+F558" + }, + "gClefNat2Below":{ + "codepoint":"U+F559" + }, + "gClefNatural10Below":{ + "codepoint":"U+F55A" + }, + "gClefNatural13Below":{ + "codepoint":"U+F55B" + }, + "gClefNatural17Below":{ + "codepoint":"U+F55C" + }, + "gClefNatural2Above":{ + "codepoint":"U+F55D" + }, + "gClefNatural3Above":{ + "codepoint":"U+F55E" + }, + "gClefNatural3Below":{ + "codepoint":"U+F55F" + }, + "gClefNatural6Above":{ + "codepoint":"U+F560" + }, + "gClefNatural6Below":{ + "codepoint":"U+F561" + }, + "gClefNatural7Above":{ + "codepoint":"U+F562" + }, + "gClefNatural9Above":{ + "codepoint":"U+F563" + }, + "gClefNatural9Below":{ + "codepoint":"U+F564" + }, + "gClefSharp12Below":{ + "codepoint":"U+F565" + }, + "gClefSharp1Above":{ + "codepoint":"U+F566" + }, + "gClefSharp4Above":{ + "codepoint":"U+F567" + }, + "gClefSharp5Below":{ + "codepoint":"U+F568" + }, + "gClefSmall":{ + "classes":[ + "clefs", + "clefsG" + ], + "codepoint":"U+F472", + "description":"G clef (small staff)" + }, + "guitarBarreHalfHorizontalFractionSlash":{ + "classes":[], + "codepoint":"U+F4C1", + "description":"Half barr\u00e9 (horizontal fraction separator)" + }, + "guitarGolpeFlamenco":{ + "classes":[], + "codepoint":"U+F4B8", + "description":"Golpe (tapping the pick guard) (Vounelakos)" + }, + "harpMetalRodAlt":{ + "classes":[], + "codepoint":"U+F436", + "description":"Metal rod pictogram (alternative)" + }, + "harpTuningKeyAlt":{ + "classes":[], + "codepoint":"U+F437", + "description":"Tuning key pictogram (alternative)" + }, + "keyboardPedalPedNoDot":{ + "classes":[], + "codepoint":"U+F434", + "description":"Pedal mark (no dot)" + }, + "keyboardPedalSostNoDot":{ + "classes":[], + "codepoint":"U+F435", + "description":"Sostenuto pedal mark (no dot)" + }, + "luteFingeringRHThirdAlt":{ + "classes":[], + "codepoint":"U+F44D", + "description":"Right-hand fingering, third finger (alternate)" + }, + "luteFrench10thCourseRight":{ + "classes":[], + "codepoint":"U+F459", + "description":"10th course (diapason), right" + }, + "luteFrench10thCourseStrikethru":{ + "classes":[], + "codepoint":"U+F457", + "description":"10th course (diapason), strikethrough" + }, + "luteFrench10thCourseUnderline":{ + "classes":[], + "codepoint":"U+F458", + "description":"10th course (diapason), underlined" + }, + "luteFrench7thCourseRight":{ + "classes":[], + "codepoint":"U+F450", + "description":"Seventh course (diapason), right" + }, + "luteFrench7thCourseStrikethru":{ + "classes":[], + "codepoint":"U+F44E", + "description":"Seventh course (diapason), strikethrough" + }, + "luteFrench7thCourseUnderline":{ + "classes":[], + "codepoint":"U+F44F", + "description":"Seventh course (diapason), underline" + }, + "luteFrench8thCourseRight":{ + "classes":[], + "codepoint":"U+F453", + "description":"Eighth course (diapason), right" + }, + "luteFrench8thCourseStrikethru":{ + "classes":[], + "codepoint":"U+F451", + "description":"Eighth course (diapason), strikethrough" + }, + "luteFrench8thCourseUnderline":{ + "classes":[], + "codepoint":"U+F452", + "description":"Eighth course (diapason), underlined" + }, + "luteFrench9thCourseRight":{ + "classes":[], + "codepoint":"U+F456", + "description":"Ninth course (diapason), right" + }, + "luteFrench9thCourseStrikethru":{ + "classes":[], + "codepoint":"U+F454", + "description":"Ninth course (diapason), strikethrough" + }, + "luteFrench9thCourseUnderline":{ + "classes":[], + "codepoint":"U+F455", + "description":"Ninth course (diapason), underlined" + }, + "luteFrenchFretCAlt":{ + "classes":[], + "codepoint":"U+F45A", + "description":"Second fret (c), alternate appearance" + }, + "medRenFlatSoftBHufnagel":{ + "classes":[ + "combiningStaffPositions" + ], + "codepoint":"U+F4A0", + "description":"Flat (Hufnagel)" + }, + "medRenFlatSoftBOld":{ + "classes":[ + "combiningStaffPositions" + ], + "codepoint":"U+F49F", + "description":"Flat (old)" + }, + "mensuralCclefBlack":{ + "classes":[], + "codepoint":"U+F49C", + "description":"Black mensural C clef" + }, + "mensuralCclefVoid":{ + "classes":[], + "codepoint":"U+F49B", + "description":"Void mensural C clef" + }, + "mensuralFusaBlackStemDown":{ + "codepoint":"U+F569" + }, + "mensuralFusaBlackStemUp":{ + "codepoint":"U+F56A" + }, + "mensuralFusaBlackVoidStemDown":{ + "codepoint":"U+F56B" + }, + "mensuralFusaBlackVoidStemUp":{ + "codepoint":"U+F56C" + }, + "mensuralFusaVoidStemDown":{ + "codepoint":"U+F56D" + }, + "mensuralFusaVoidStemUp":{ + "codepoint":"U+F56E" + }, + "mensuralLongaBlackStemDownLeft":{ + "codepoint":"U+F56F" + }, + "mensuralLongaBlackStemDownRight":{ + "codepoint":"U+F570" + }, + "mensuralLongaBlackStemUpLeft":{ + "codepoint":"U+F571" + }, + "mensuralLongaBlackStemUpRight":{ + "codepoint":"U+F572" + }, + "mensuralLongaBlackVoidStemDownLeft":{ + "codepoint":"U+F573" + }, + "mensuralLongaBlackVoidStemDownRight":{ + "codepoint":"U+F574" + }, + "mensuralLongaBlackVoidStemUpLeft":{ + "codepoint":"U+F575" + }, + "mensuralLongaBlackVoidStemUpRight":{ + "codepoint":"U+F576" + }, + "mensuralLongaVoidStemDownLeft":{ + "codepoint":"U+F577" + }, + "mensuralLongaVoidStemDownRight":{ + "codepoint":"U+F578" + }, + "mensuralLongaVoidStemUpLeft":{ + "codepoint":"U+F579" + }, + "mensuralLongaVoidStemUpRight":{ + "codepoint":"U+F57A" + }, + "mensuralMaximaBlackStemDownLeft":{ + "codepoint":"U+F57B" + }, + "mensuralMaximaBlackStemDownRight":{ + "codepoint":"U+F57C" + }, + "mensuralMaximaBlackStemUpLeft":{ + "codepoint":"U+F57D" + }, + "mensuralMaximaBlackStemUpRight":{ + "codepoint":"U+F57E" + }, + "mensuralMaximaBlackVoidStemDownLeft":{ + "codepoint":"U+F57F" + }, + "mensuralMaximaBlackVoidStemDownRight":{ + "codepoint":"U+F580" + }, + "mensuralMaximaBlackVoidStemUpLeft":{ + "codepoint":"U+F581" + }, + "mensuralMaximaBlackVoidStemUpRight":{ + "codepoint":"U+F582" + }, + "mensuralMaximaVoidStemDownLeft":{ + "codepoint":"U+F583" + }, + "mensuralMaximaVoidStemDownRight":{ + "codepoint":"U+F584" + }, + "mensuralMaximaVoidStemUpLeft":{ + "codepoint":"U+F585" + }, + "mensuralMaximaVoidStemUpRight":{ + "codepoint":"U+F586" + }, + "mensuralMinimaBlackStemDown":{ + "codepoint":"U+F587" + }, + "mensuralMinimaBlackStemDownExtendedFlag":{ + "codepoint":"U+F588" + }, + "mensuralMinimaBlackStemDownFlagLeft":{ + "codepoint":"U+F589" + }, + "mensuralMinimaBlackStemDownFlagRight":{ + "codepoint":"U+F58A" + }, + "mensuralMinimaBlackStemDownFlaredFlag":{ + "codepoint":"U+F58B" + }, + "mensuralMinimaBlackStemUp":{ + "codepoint":"U+F58C" + }, + "mensuralMinimaBlackStemUpExtendedFlag":{ + "codepoint":"U+F58D" + }, + "mensuralMinimaBlackStemUpFlagLeft":{ + "codepoint":"U+F58E" + }, + "mensuralMinimaBlackStemUpFlagRight":{ + "codepoint":"U+F58F" + }, + "mensuralMinimaBlackStemUpFlaredFlag":{ + "codepoint":"U+F590" + }, + "mensuralMinimaBlackVoidStemDown":{ + "codepoint":"U+F591" + }, + "mensuralMinimaBlackVoidStemDownExtendedFlag":{ + "codepoint":"U+F592" + }, + "mensuralMinimaBlackVoidStemDownFlagLeft":{ + "codepoint":"U+F593" + }, + "mensuralMinimaBlackVoidStemDownFlagRight":{ + "codepoint":"U+F594" + }, + "mensuralMinimaBlackVoidStemDownFlaredFlag":{ + "codepoint":"U+F595" + }, + "mensuralMinimaBlackVoidStemUp":{ + "codepoint":"U+F596" + }, + "mensuralMinimaBlackVoidStemUpExtendedFlag":{ + "codepoint":"U+F597" + }, + "mensuralMinimaBlackVoidStemUpFlagLeft":{ + "codepoint":"U+F598" + }, + "mensuralMinimaBlackVoidStemUpFlagRight":{ + "codepoint":"U+F599" + }, + "mensuralMinimaBlackVoidStemUpFlaredFlag":{ + "codepoint":"U+F59A" + }, + "mensuralMinimaVoidStemDown":{ + "codepoint":"U+F59B" + }, + "mensuralMinimaVoidStemDownExtendedFlag":{ + "codepoint":"U+F59C" + }, + "mensuralMinimaVoidStemDownFlagLeft":{ + "codepoint":"U+F59D" + }, + "mensuralMinimaVoidStemDownFlagRight":{ + "codepoint":"U+F59E" + }, + "mensuralMinimaVoidStemDownFlaredFlag":{ + "codepoint":"U+F59F" + }, + "mensuralMinimaVoidStemUp":{ + "codepoint":"U+F5A1" + }, + "mensuralMinimaVoidStemUpExtendedFlag":{ + "codepoint":"U+F5A0" + }, + "mensuralMinimaVoidStemUpFlagLeft":{ + "codepoint":"U+F5A2" + }, + "mensuralMinimaVoidStemUpFlagRight":{ + "codepoint":"U+F5A3" + }, + "mensuralMinimaVoidStemUpFlaredFlag":{ + "codepoint":"U+F5A4" + }, + "mensuralProportion4Old":{ + "classes":[ + "combiningStaffPositions" + ], + "codepoint":"U+F43D", + "description":"Mensural proportion 4 (old)" + }, + "mensuralSemiminimaBlackStemDown":{ + "codepoint":"U+F5A5" + }, + "mensuralSemiminimaBlackStemUp":{ + "codepoint":"U+F5A6" + }, + "mensuralSemiminimaBlackVoidStemDown":{ + "codepoint":"U+F5A7" + }, + "mensuralSemiminimaBlackVoidStemUp":{ + "codepoint":"U+F5A8" + }, + "mensuralSemiminimaVoidStemDown":{ + "codepoint":"U+F5A9" + }, + "mensuralSemiminimaVoidStemUp":{ + "codepoint":"U+F5AA" + }, + "noteDoubleWholeAlt":{ + "classes":[ + "combiningStaffPositions", + "forTextBasedApplications" + ], + "codepoint":"U+F40E", + "description":"Double whole note (breve), single vertical strokes" + }, + "noteheadBlackOversized":{ + "classes":[ + "combiningStaffPositions", + "noteheads", + "noteheadSetDefault" + ], + "codepoint":"U+F4BE", + "description":"Black notehead (oversized)" + }, + "noteheadBlackParens":{ + "codepoint":"U+F5CA" + }, + "noteheadBlackSmall":{ + "classes":[ + "combiningStaffPositions", + "noteheads", + "noteheadSetDefault" + ], + "codepoint":"U+F46A", + "description":"Black notehead (small staff)" + }, + "noteheadDoubleWholeAlt":{ + "classes":[ + "combiningStaffPositions", + "noteheads", + "noteheadSetDefault" + ], + "codepoint":"U+F43F", + "description":"Double whole note (breve), single vertical strokes" + }, + "noteheadDoubleWholeOversized":{ + "classes":[ + "combiningStaffPositions", + "noteheads", + "noteheadSetDefault" + ], + "codepoint":"U+F4BA", + "description":"Double whole note (breve) (oversized)" + }, + "noteheadDoubleWholeParens":{ + "codepoint":"U+F5CD" + }, + "noteheadDoubleWholeSmall":{ + "classes":[ + "combiningStaffPositions", + "noteheads", + "noteheadSetDefault" + ], + "codepoint":"U+F467", + "description":"Double whole note (breve) (small staff)" + }, + "noteheadDoubleWholeSquareOversized":{ + "classes":[ + "combiningStaffPositions", + "noteheads", + "noteheadSetDefault" + ], + "codepoint":"U+F4BB", + "description":"Double whole note (breve) notehead (square) (oversized)" + }, + "noteheadHalfOversized":{ + "classes":[ + "combiningStaffPositions", + "noteheads", + "noteheadSetDefault" + ], + "codepoint":"U+F4BD", + "description":"Half (minim) notehead (oversized)" + }, + "noteheadHalfParens":{ + "codepoint":"U+F5CB" + }, + "noteheadHalfSmall":{ + "classes":[ + "combiningStaffPositions", + "noteheads", + "noteheadSetDefault" + ], + "codepoint":"U+F469", + "description":"Half (minim) notehead (small staff)" + }, + "noteheadSlashDiamondWhiteOversized":{ + "classes":[ + "combiningStaffPositions", + "noteheads", + "noteheadSetSlashHorizontalEnds", + "noteheadSetSlashVerticalEnds" + ], + "codepoint":"U+F4E7", + "description":"Oversized large white diamond" + }, + "noteheadSlashHorizontalEndsMutedOversized":{ + "classes":[ + "combiningStaffPositions", + "noteheads", + "noteheadSetSlashHorizontalEnds" + ], + "codepoint":"U+F4EB", + "description":"Oversized muted slash with horizontal ends" + }, + "noteheadSlashHorizontalEndsOversized":{ + "classes":[ + "combiningStaffPositions", + "noteheads", + "noteheadSetSlashHorizontalEnds" + ], + "codepoint":"U+F4E4", + "description":"Oversized slash with horizontal ends" + }, + "noteheadSlashVerticalEndsMutedOversized":{ + "classes":[ + "combiningStaffPositions", + "noteheads", + "noteheadSetSlashVerticalEnds" + ], + "codepoint":"U+F4EA", + "description":"Oversized muted slash with vertical ends" + }, + "noteheadSlashVerticalEndsOversized":{ + "classes":[ + "combiningStaffPositions", + "noteheads", + "noteheadSetSlashVerticalEnds" + ], + "codepoint":"U+F4E3", + "description":"Oversized slash with vertical ends" + }, + "noteheadSlashVerticalEndsSmallOversized":{ + "classes":[ + "combiningStaffPositions", + "noteheads", + "noteheadSetSlashVerticalEnds" + ], + "codepoint":"U+F4E8", + "description":"Oversized small slash with vertical ends" + }, + "noteheadSlashWhiteDoubleWholeOversized":{ + "classes":[ + "noteheads", + "noteheadSetSlashHorizontalEnds" + ], + "codepoint":"U+F4ED", + "description":"Oversized white slash double whole" + }, + "noteheadSlashWhiteHalfOversized":{ + "classes":[ + "combiningStaffPositions", + "noteheads", + "noteheadSetSlashHorizontalEnds", + "noteheadSetSlashVerticalEnds" + ], + "codepoint":"U+F4E6", + "description":"Oversized white slash half" + }, + "noteheadSlashWhiteMutedOversized":{ + "classes":[ + "combiningStaffPositions", + "noteheads", + "noteheadSetSlashHorizontalEnds", + "noteheadSetSlashVerticalEnds" + ], + "codepoint":"U+F4EC", + "description":"Oversized muted white slash" + }, + "noteheadSlashWhiteWholeOversized":{ + "classes":[ + "combiningStaffPositions", + "noteheads" + ], + "codepoint":"U+F4E5", + "description":"Oversized white slash whole" + }, + "noteheadSlashXOversized":{ + "classes":[ + "combiningStaffPositions", + "noteheads", + "noteheadSetSlashHorizontalEnds" + ], + "codepoint":"U+F4E9", + "description":"Oversized large X notehead" + }, + "noteheadWholeOversized":{ + "classes":[ + "combiningStaffPositions", + "noteheads", + "noteheadSetDefault" + ], + "codepoint":"U+F4BC", + "description":"Whole notehead (oversized)" + }, + "noteheadWholeParens":{ + "codepoint":"U+F5CC" + }, + "noteheadWholeSmall":{ + "classes":[ + "combiningStaffPositions", + "noteheads", + "noteheadSetDefault" + ], + "codepoint":"U+F468", + "description":"Whole notehead (small staff)" + }, + "ornamentTrillFlatAbove":{ + "codepoint":"U+F5AB" + }, + "ornamentTrillNaturalAbove":{ + "codepoint":"U+F5AC" + }, + "ornamentTrillSharpAbove":{ + "codepoint":"U+F5AD" + }, + "ornamentTurnFlatAbove":{ + "codepoint":"U+F5AE" + }, + "ornamentTurnFlatAboveSharpBelow":{ + "codepoint":"U+F5AF" + }, + "ornamentTurnFlatBelow":{ + "codepoint":"U+F5B0" + }, + "ornamentTurnNaturalAbove":{ + "codepoint":"U+F5B1" + }, + "ornamentTurnNaturalBelow":{ + "codepoint":"U+F5B2" + }, + "ornamentTurnSharpAbove":{ + "codepoint":"U+F5B3" + }, + "ornamentTurnSharpAboveFlatBelow":{ + "codepoint":"U+F5B4" + }, + "ornamentTurnSharpBelow":{ + "codepoint":"U+F5B5" + }, + "pictBassDrumPeinkofer":{ + "classes":[], + "codepoint":"U+F4AF", + "description":"Bass drum (Peinkofer/Tannigel)" + }, + "pictBongosPeinkofer":{ + "classes":[], + "codepoint":"U+F4B0", + "description":"Bongos (Peinkofer/Tannigel)" + }, + "pictCastanetsSmithBrindle":{ + "classes":[], + "codepoint":"U+F439", + "description":"Castanets (Smith Brindle)" + }, + "pictCongaPeinkofer":{ + "classes":[], + "codepoint":"U+F4B1", + "description":"Conga (Peinkofer/Tannigel)" + }, + "pictCowBellBerio":{ + "classes":[], + "codepoint":"U+F43B", + "description":"Cow bell (Berio)" + }, + "pictFlexatonePeinkofer":{ + "classes":[], + "codepoint":"U+F4B6", + "description":"Flexatone (Peinkofer/Tannigel)" + }, + "pictGlspPeinkofer":{ + "classes":[], + "codepoint":"U+F4AA", + "description":"Glockenspiel (Peinkofer/Tannigel)" + }, + "pictGuiroPeinkofer":{ + "classes":[], + "codepoint":"U+F4B5", + "description":"Guiro (Peinkofer/Tannigel)" + }, + "pictGuiroSevsay":{ + "classes":[], + "codepoint":"U+F4B4", + "description":"Guiro (Sevsay)" + }, + "pictLithophonePeinkofer":{ + "classes":[], + "codepoint":"U+F4A7", + "description":"Lithophone (Peinkofer/Tannigel)" + }, + "pictLotusFlutePeinkofer":{ + "classes":[], + "codepoint":"U+F4AC", + "description":"Lotus flute (Peinkofer/Tannigel)" + }, + "pictMarPeinkofer":{ + "classes":[], + "codepoint":"U+F4AB", + "description":"Marimba (Peinkofer/Tannigel)" + }, + "pictMaracaSmithBrindle":{ + "classes":[], + "codepoint":"U+F43C", + "description":"Maraca (Smith Brindle)" + }, + "pictMusicalSawPeinkofer":{ + "classes":[], + "codepoint":"U+F4B7", + "description":"Musical saw (Peinkofer/Tannigel)" + }, + "pictSleighBellSmithBrindle":{ + "classes":[], + "codepoint":"U+F43A", + "description":"Sleigh bell (Smith Brindle)" + }, + "pictTambourineStockhausen":{ + "classes":[], + "codepoint":"U+F438", + "description":"Tambourine (Stockhausen)" + }, + "pictTimbalesPeinkofer":{ + "classes":[], + "codepoint":"U+F4B3", + "description":"Timbales (Peinkofer/Tannigel)" + }, + "pictTimpaniPeinkofer":{ + "classes":[], + "codepoint":"U+F4AE", + "description":"Timpani (Peinkofer/Tannigel)" + }, + "pictTomTomChinesePeinkofer":{ + "classes":[], + "codepoint":"U+F4AD", + "description":"Chinese tom-tom (Peinkofer/Tannigel)" + }, + "pictTomTomPeinkofer":{ + "classes":[], + "codepoint":"U+F4B2", + "description":"Tom-tom (Peinkofer/Tannigel)" + }, + "pictTubaphonePeinkofer":{ + "classes":[], + "codepoint":"U+F4A8", + "description":"Tubaphone (Peinkofer/Tannigel)" + }, + "pictVibMotorOffPeinkofer":{ + "classes":[], + "codepoint":"U+F4A6", + "description":"Metallophone (vibraphone motor off) (Peinkofer/Tannigel)" + }, + "pictVibPeinkofer":{ + "classes":[], + "codepoint":"U+F4A5", + "description":"Vibraphone (Peinkofer/Tannigel)" + }, + "pictXylBassPeinkofer":{ + "classes":[], + "codepoint":"U+F4A3", + "description":"Bass xylophone (Peinkofer/Tannigel)" + }, + "pictXylPeinkofer":{ + "classes":[], + "codepoint":"U+F4A9", + "description":"Xylophone (Peinkofer/Tannigel)" + }, + "pictXylTenorPeinkofer":{ + "classes":[], + "codepoint":"U+F4A4", + "description":"Tenor xylophone (Peinkofer/Tannigel)" + }, + "pluckedSnapPizzicatoAboveGerman":{ + "classes":[], + "codepoint":"U+F433", + "description":"Snap pizzicato above (German)" + }, + "pluckedSnapPizzicatoBelowGerman":{ + "classes":[], + "codepoint":"U+F432", + "description":"Snap pizzicato below (German)" + }, + "repeatRightLeftThick":{ + "classes":[ + "forTextBasedApplications" + ], + "codepoint":"U+F45C", + "description":"RIght and left repeat sign (thick-thick)" + }, + "sedicesima":{ + "classes":[ + "octaves" + ], + "codepoint":"U+F4C2", + "description":"Sedicesima (16)" + }, + "sedicesimaAlta":{ + "classes":[ + "octaves" + ], + "codepoint":"U+F4C3", + "description":"Sedicesima (16) alta" + }, + "sedicesimaBassa":{ + "classes":[ + "octaves" + ], + "codepoint":"U+F4C4", + "description":"Sedicesima (16) bassa" + }, + "sedicesimaBassaMb":{ + "classes":[ + "octaves" + ], + "codepoint":"U+F4C8", + "description":"Sedicesima (16) bassa (mb)" + }, + "segnoJapanese":{ + "classes":[], + "codepoint":"U+F404", + "description":"Segno (Japanese style, rotated)" + }, + "stringsChangeBowDirectionImposed":{ + "classes":[], + "codepoint":"U+F43E", + "description":"Change bow direction, indeterminate (Pl\u00f6tz)" + }, + "stringsChangeBowDirectionLiga":{ + "classes":[], + "codepoint":"U+F431", + "description":"Change bow direction, indeterminate (Pricope)" + }, + "timeSig0Denominator":{ + "codepoint":"U+F5B6" + }, + "timeSig0Large":{ + "classes":[], + "codepoint":"U+F440", + "description":"Time signature 0 (outside staff)" + }, + "timeSig0Narrow":{ + "classes":[], + "codepoint":"U+F506", + "description":"Time signature 0 (large, narrow)" + }, + "timeSig0Numerator":{ + "codepoint":"U+F5B7" + }, + "timeSig0Small":{ + "classes":[], + "codepoint":"U+F45D", + "description":"Time signature 0 (small staff)" + }, + "timeSig12over8":{ + "codepoint":"U+F5F3" + }, + "timeSig1Denominator":{ + "codepoint":"U+F5B8" + }, + "timeSig1Large":{ + "classes":[], + "codepoint":"U+F441", + "description":"Time signature 1 (outside staff)" + }, + "timeSig1Narrow":{ + "classes":[], + "codepoint":"U+F507", + "description":"Time signature 1 (large, narrow)" + }, + "timeSig1Numerator":{ + "codepoint":"U+F5B9" + }, + "timeSig1Small":{ + "classes":[], + "codepoint":"U+F45E", + "description":"Time signature 1 (small staff)" + }, + "timeSig2Denominator":{ + "codepoint":"U+F5BA" + }, + "timeSig2Large":{ + "classes":[], + "codepoint":"U+F442", + "description":"Time signature 2 (outside staff)" + }, + "timeSig2Narrow":{ + "classes":[], + "codepoint":"U+F508", + "description":"Time signature 2 (large, narrow)" + }, + "timeSig2Numerator":{ + "codepoint":"U+F5BB" + }, + "timeSig2Small":{ + "classes":[], + "codepoint":"U+F45F", + "description":"Time signature 2 (small staff)" + }, + "timeSig2over2":{ + "codepoint":"U+F5E8" + }, + "timeSig2over4":{ + "codepoint":"U+F5E7" + }, + "timeSig3Denominator":{ + "codepoint":"U+F5BC" + }, + "timeSig3Large":{ + "classes":[], + "codepoint":"U+F443", + "description":"Time signature 3 (outside staff)" + }, + "timeSig3Narrow":{ + "classes":[], + "codepoint":"U+F509", + "description":"Time signature 3 (large, narrow)" + }, + "timeSig3Numerator":{ + "codepoint":"U+F5BD" + }, + "timeSig3Small":{ + "classes":[], + "codepoint":"U+F460", + "description":"Time signature 3 (small staff)" + }, + "timeSig3over2":{ + "codepoint":"U+F5E9" + }, + "timeSig3over4":{ + "codepoint":"U+F5EA" + }, + "timeSig3over8":{ + "codepoint":"U+F5EB" + }, + "timeSig4Denominator":{ + "codepoint":"U+F5BE" + }, + "timeSig4Large":{ + "classes":[], + "codepoint":"U+F444", + "description":"Time signature 4 (outside staff)" + }, + "timeSig4Narrow":{ + "classes":[], + "codepoint":"U+F50A", + "description":"Time signature 4 (large, narrow)" + }, + "timeSig4Numerator":{ + "codepoint":"U+F5BF" + }, + "timeSig4Small":{ + "classes":[], + "codepoint":"U+F461", + "description":"Time signature 4 (small staff)" + }, + "timeSig4over4":{ + "codepoint":"U+F5EC" + }, + "timeSig5Denominator":{ + "codepoint":"U+F5C0" + }, + "timeSig5Large":{ + "classes":[], + "codepoint":"U+F445", + "description":"Time signature 5 (outside staff)" + }, + "timeSig5Narrow":{ + "classes":[], + "codepoint":"U+F50B", + "description":"Time signature 5 (large, narrow)" + }, + "timeSig5Numerator":{ + "codepoint":"U+F5C1" + }, + "timeSig5Small":{ + "classes":[], + "codepoint":"U+F462", + "description":"Time signature 5 (small staff)" + }, + "timeSig5over4":{ + "codepoint":"U+F5ED" + }, + "timeSig5over8":{ + "codepoint":"U+F5EE" + }, + "timeSig6Denominator":{ + "codepoint":"U+F5C2" + }, + "timeSig6Large":{ + "classes":[], + "codepoint":"U+F446", + "description":"Time signature 6 (outside staff)" + }, + "timeSig6Narrow":{ + "classes":[], + "codepoint":"U+F50C", + "description":"Time signature 6 (large, narrow)" + }, + "timeSig6Numerator":{ + "codepoint":"U+F5C3" + }, + "timeSig6Small":{ + "classes":[], + "codepoint":"U+F463", + "description":"Time signature 6 (small staff)" + }, + "timeSig6over4":{ + "codepoint":"U+F5EF" + }, + "timeSig6over8":{ + "codepoint":"U+F5F0" + }, + "timeSig7Denominator":{ + "codepoint":"U+F5C4" + }, + "timeSig7Large":{ + "classes":[], + "codepoint":"U+F447", + "description":"Time signature 7 (outside staff)" + }, + "timeSig7Narrow":{ + "classes":[], + "codepoint":"U+F50D", + "description":"Time signature 7 (large, narrow)" + }, + "timeSig7Numerator":{ + "codepoint":"U+F5C5" + }, + "timeSig7Small":{ + "classes":[], + "codepoint":"U+F464", + "description":"Time signature 7 (small staff)" + }, + "timeSig7over8":{ + "codepoint":"U+F5F1" + }, + "timeSig8Denominator":{ + "codepoint":"U+F5C6" + }, + "timeSig8Large":{ + "classes":[], + "codepoint":"U+F448", + "description":"Time signature 8 (outside staff)" + }, + "timeSig8Narrow":{ + "classes":[], + "codepoint":"U+F50E", + "description":"Time signature 8 (large, narrow)" + }, + "timeSig8Numerator":{ + "codepoint":"U+F5C7" + }, + "timeSig8Small":{ + "classes":[], + "codepoint":"U+F465", + "description":"Time signature 8 (small staff)" + }, + "timeSig9Denominator":{ + "codepoint":"U+F5C8" + }, + "timeSig9Large":{ + "classes":[], + "codepoint":"U+F449", + "description":"Time signature 9 (outside staff)" + }, + "timeSig9Narrow":{ + "classes":[], + "codepoint":"U+F50F", + "description":"Time signature 9 (large, narrow)" + }, + "timeSig9Numerator":{ + "codepoint":"U+F5C9" + }, + "timeSig9Small":{ + "classes":[], + "codepoint":"U+F466", + "description":"Time signature 9 (small staff)" + }, + "timeSig9over8":{ + "codepoint":"U+F5F2" + }, + "timeSigBracketLeftLarge":{ + "classes":[], + "codepoint":"U+F4FF", + "description":"Left bracket for whole time signature (outside staff)" + }, + "timeSigBracketLeftNarrow":{ + "classes":[], + "codepoint":"U+F524", + "description":"Left bracket for whole time signature (narrow, large)" + }, + "timeSigBracketLeftSmallLarge":{ + "classes":[], + "codepoint":"U+F501", + "description":"Left bracket for numerator only (outside staff)" + }, + "timeSigBracketLeftSmallNarrow":{ + "classes":[], + "codepoint":"U+F526", + "description":"Left bracket for numerator only (large, narrow)" + }, + "timeSigBracketRightLarge":{ + "classes":[], + "codepoint":"U+F500", + "description":"Right bracket for whole time signature (outside staff)" + }, + "timeSigBracketRightNarrow":{ + "classes":[], + "codepoint":"U+F525", + "description":"Right bracket for whole time signature (large, narrow)" + }, + "timeSigBracketRightSmallLarge":{ + "classes":[], + "codepoint":"U+F502", + "description":"Right bracket for numerator only (outside staff)" + }, + "timeSigBracketRightSmallNarrow":{ + "classes":[], + "codepoint":"U+F527", + "description":"Right bracket for numerator only (large, narrow)" + }, + "timeSigCommaLarge":{ + "classes":[], + "codepoint":"U+F4F7", + "description":"Time signature comma (outside staff)" + }, + "timeSigCommaNarrow":{ + "classes":[], + "codepoint":"U+F51C", + "description":"Time signature comma (large, narrow)" + }, + "timeSigCommonLarge":{ + "classes":[], + "codepoint":"U+F44A", + "description":"Common time (outside staff)" + }, + "timeSigCommonNarrow":{ + "classes":[], + "codepoint":"U+F510", + "description":"Common time (large, narrow)" + }, + "timeSigCut2Large":{ + "classes":[], + "codepoint":"U+F504", + "description":"Cut time (Bach) (outside staff)" + }, + "timeSigCut2Narrow":{ + "classes":[], + "codepoint":"U+F529", + "description":"Cut time (Bach) (large, narrow)" + }, + "timeSigCut3Large":{ + "classes":[], + "codepoint":"U+F505", + "description":"Cut triple time (9/8) (outside staff)" + }, + "timeSigCut3Narrow":{ + "classes":[], + "codepoint":"U+F52A", + "description":"Cut triple time (9/8) (large, narrow)" + }, + "timeSigCutCommonLarge":{ + "classes":[], + "codepoint":"U+F44B", + "description":"Cut time (outside staff)" + }, + "timeSigCutCommonNarrow":{ + "classes":[], + "codepoint":"U+F511", + "description":"Cut time (large, narrow)" + }, + "timeSigEqualsLarge":{ + "classes":[], + "codepoint":"U+F4F0", + "description":"Time signature equals (outside staff)" + }, + "timeSigEqualsNarrow":{ + "classes":[], + "codepoint":"U+F515", + "description":"Time signature equals (large, narrow)" + }, + "timeSigFractionHalfLarge":{ + "classes":[], + "codepoint":"U+F4F9", + "description":"Time signature fraction \u00bd (outside staff)" + }, + "timeSigFractionHalfNarrow":{ + "classes":[], + "codepoint":"U+F51E", + "description":"Time signature fraction \u00bd (large, narrow)" + }, + "timeSigFractionOneThirdLarge":{ + "classes":[], + "codepoint":"U+F4FB", + "description":"Time signature fraction \u2153 (outside staff)" + }, + "timeSigFractionOneThirdNarrow":{ + "classes":[], + "codepoint":"U+F520", + "description":"Time signature fraction \u2153 (large, narrow)" + }, + "timeSigFractionQuarterLarge":{ + "classes":[], + "codepoint":"U+F4F8", + "description":"Time signature fraction \u00bc (outside staff)" + }, + "timeSigFractionQuarterNarrow":{ + "classes":[], + "codepoint":"U+F51D", + "description":"Time signature fraction \u00bc (large, narrow)" + }, + "timeSigFractionThreeQuartersLarge":{ + "classes":[], + "codepoint":"U+F4FA", + "description":"Time signature fraction \u00be (outside staff)" + }, + "timeSigFractionThreeQuartersNarrow":{ + "classes":[], + "codepoint":"U+F51F", + "description":"Time signature fraction \u00be (large, narrow)" + }, + "timeSigFractionTwoThirdsLarge":{ + "classes":[], + "codepoint":"U+F4FC", + "description":"Time signature fraction \u2154 (outside staff)" + }, + "timeSigFractionTwoThirdsNarrow":{ + "classes":[], + "codepoint":"U+F521", + "description":"Time signature fraction \u2154 (large, narrow)" + }, + "timeSigFractionalSlashLarge":{ + "classes":[], + "codepoint":"U+F4EF", + "description":"Time signature fraction slash (outside staff)" + }, + "timeSigFractionalSlashNarrow":{ + "classes":[], + "codepoint":"U+F514", + "description":"Time signature fraction slash (large, narrow)" + }, + "timeSigMinusLarge":{ + "classes":[], + "codepoint":"U+F4F1", + "description":"Time signature minus (outside staff)" + }, + "timeSigMinusNarrow":{ + "classes":[], + "codepoint":"U+F516", + "description":"Time signature minus (large, narrow)" + }, + "timeSigMultiplyLarge":{ + "classes":[], + "codepoint":"U+F4F2", + "description":"Time signature multiply (outside staff)" + }, + "timeSigMultiplyNarrow":{ + "classes":[], + "codepoint":"U+F517", + "description":"Time signature multiply (large, narrow)" + }, + "timeSigOpenPendereckiLarge":{ + "classes":[], + "codepoint":"U+F4FE", + "description":"Open time signature (Penderecki) (outside staff)" + }, + "timeSigOpenPendereckiNarrow":{ + "classes":[], + "codepoint":"U+F523", + "description":"Open time signature (Penderecki) (narrow, large)" + }, + "timeSigParensLeftLarge":{ + "classes":[], + "codepoint":"U+F4F5", + "description":"Left parenthesis for whole time signature (outside staff)" + }, + "timeSigParensLeftNarrow":{ + "classes":[], + "codepoint":"U+F51A", + "description":"Left parenthesis for whole time signature (large, narrow)" + }, + "timeSigParensLeftSmallLarge":{ + "classes":[], + "codepoint":"U+F4F3", + "description":"Left parenthesis for numerator only (outside staff)" + }, + "timeSigParensLeftSmallNarrow":{ + "classes":[], + "codepoint":"U+F518", + "description":"Left parenthesis for numerator only (large, narrow)" + }, + "timeSigParensRightLarge":{ + "classes":[], + "codepoint":"U+F4F6", + "description":"Right parenthesis for whole time signature (outside staff)" + }, + "timeSigParensRightNarrow":{ + "classes":[], + "codepoint":"U+F51B", + "description":"Right parenthesis for whole time signature (large, narrow)" + }, + "timeSigParensRightSmallLarge":{ + "classes":[], + "codepoint":"U+F4F4", + "description":"Right parenthesis for numerator only (outside staff)" + }, + "timeSigParensRightSmallNarrow":{ + "classes":[], + "codepoint":"U+F519", + "description":"Right parenthesis for numerator only (large, narrow)" + }, + "timeSigPlusLarge":{ + "classes":[], + "codepoint":"U+F44C", + "description":"Time signature + (outside staff)" + }, + "timeSigPlusNarrow":{ + "classes":[], + "codepoint":"U+F512", + "description":"Time signature + (large, narrow)" + }, + "timeSigPlusSmallLarge":{ + "classes":[], + "codepoint":"U+F4EE", + "description":"Time signature + (for numerators) (outside staff)" + }, + "timeSigPlusSmallNarrow":{ + "classes":[], + "codepoint":"U+F513", + "description":"Time signature + (for numerators) (large, narrow)" + }, + "timeSigSlashLarge":{ + "classes":[], + "codepoint":"U+F503", + "description":"Time signature slash separator (outside staff)" + }, + "timeSigSlashNarrow":{ + "classes":[], + "codepoint":"U+F528", + "description":"Time signature slash separator (large, narrow)" + }, + "timeSigXLarge":{ + "classes":[], + "codepoint":"U+F4FD", + "description":"Open time signature (outside staff)" + }, + "timeSigXNarrow":{ + "classes":[], + "codepoint":"U+F522", + "description":"Open time signature (large, narrow)" + }, + "tripleTongueAboveNoSlur":{ + "classes":[], + "codepoint":"U+F42F", + "description":"Triple-tongue above (no slur)" + }, + "tripleTongueBelowNoSlur":{ + "classes":[], + "codepoint":"U+F430", + "description":"Triple-tongue below (no slur)" + }, + "tuplet0Light":{ + "classes":[], + "codepoint":"U+F4CC", + "description":"Tuplet 0 (light)" + }, + "tuplet1Light":{ + "classes":[], + "codepoint":"U+F4CD", + "description":"Tuplet 1 (light)" + }, + "tuplet2Light":{ + "classes":[], + "codepoint":"U+F4CE", + "description":"Tuplet 2 (light)" + }, + "tuplet3Light":{ + "classes":[], + "codepoint":"U+F4CF", + "description":"Tuplet 3 (light)" + }, + "tuplet4Light":{ + "classes":[], + "codepoint":"U+F4D0", + "description":"Tuplet 4 (light)" + }, + "tuplet5Light":{ + "classes":[], + "codepoint":"U+F4D1", + "description":"Tuplet 5 (light)" + }, + "tuplet6Light":{ + "classes":[], + "codepoint":"U+F4D2", + "description":"Tuplet 6 (light)" + }, + "tuplet7Light":{ + "classes":[], + "codepoint":"U+F4D3", + "description":"Tuplet 7 (light)" + }, + "tuplet8Light":{ + "classes":[], + "codepoint":"U+F4D4", + "description":"Tuplet 8 (light)" + }, + "tuplet9Light":{ + "classes":[], + "codepoint":"U+F4D5", + "description":"Tuplet 9 (light)" + }, + "tupletColonLight":{ + "classes":[], + "codepoint":"U+F4D6", + "description":"Tuplet colon (light)" + }, + "unpitchedPercussionClef1Alt":{ + "classes":[ + "clefs" + ], + "codepoint":"U+F409", + "description":"Unpitched percussion clef 1 (thick-thin)" + }, + "ventiquattresima":{ + "classes":[ + "octaves" + ], + "codepoint":"U+F4C5", + "description":"Ventiquattresima (24)" + }, + "ventiquattresimaAlta":{ + "classes":[ + "octaves" + ], + "codepoint":"U+F4C6", + "description":"Ventiquattresima (24) alta" + }, + "ventiquattresimaBassa":{ + "classes":[ + "octaves" + ], + "codepoint":"U+F4C7", + "description":"Ventiquattresima (24) bassa" + }, + "ventiquattresimaBassaMb":{ + "classes":[ + "octaves" + ], + "codepoint":"U+F4C9", + "description":"Ventiquattresima (24) bassa (mb)" + }, + "wiggleArpeggiatoDownSwashCouperin":{ + "classes":[ + "multiGlyphForms", + "wigglesArpeggiato", + "wigglesArpeggiatoDown" + ], + "codepoint":"U+F4CB", + "description":"Arpeggiato downward swash (Couperin)" + }, + "wiggleArpeggiatoUpSwashCouperin":{ + "classes":[ + "multiGlyphForms", + "wigglesArpeggiato", + "wigglesArpeggiatoUp" + ], + "codepoint":"U+F4CA", + "description":"Arpeggiato upward swash (Couperin)" + } + }, + "sets":{} +} \ No newline at end of file diff --git a/package/config/vamp.example.json b/package/config/vamp.example.json new file mode 100644 index 0000000..ed48935 --- /dev/null +++ b/package/config/vamp.example.json @@ -0,0 +1,53 @@ +{ + "modulus": { + "logging": { + "level": "info" + }, + "errors": { + "include_category": true, + "include_code": true, + "include_message": true, + "include_location": true + } + }, + "runtime": { + "hardware": "real", + "headless": false, + "exit_after_startup": false, + "assets_path": "/usr/share/product-vamp", + "heartbeat_path": "/run/product-vamp/heartbeat.json" + }, + "database": { + "path": "/var/lib/product-vamp/vamp.db", + "migrations_path": "/usr/share/product-vamp/migrations" + }, + "control": { + "endpoint": { + "name": "product-vamp-control", + "protocol": "http", + "bind": "0.0.0.0:8080", + "timeout_ms": 5000, + "http": { + "max_body_size": 65536 + } + }, + "ap_ssid": "Vamp Control", + "ap_passphrase": "vamp-control", + "ap_interface": "wlan0", + "zero_ip": "192.168.42.1", + "zero_cidr": "192.168.42.1/24" + }, + "display": { + "title": "Product Vamp", + "display": { + "width": 1024, + "height": 600, + "target_fps": 60, + "idle_fps": 15, + "fullscreen": true + }, + "touch": { + "max_points": 5 + } + } +} diff --git a/package/manifest.json.in b/package/manifest.json.in new file mode 100644 index 0000000..b884437 --- /dev/null +++ b/package/manifest.json.in @@ -0,0 +1,21 @@ +{ + "package": "product-vamp", + "version": "@PROJECT_VERSION@", + "git_sha": "@VAMP_GIT_SHA@", + "zero": { + "device": "raspberry-pi-zero-2w", + "display": "waveshare-zero-disp-7a", + "docker_archive": "zero/product-vamp-zero-linux-arm64.docker.tar", + "image_tag": "@VAMP_ZERO_IMAGE_TAG@", + "default_config": "zero/config/vamp.example.json", + "control_endpoint": "http://192.168.42.1:8080" + }, + "pico": { + "device": "raspberry-pi-pico-2w", + "display": "waveshare-2inch-capacitive-touch-lcd", + "firmware": "pico/product-vamp-pico2w.uf2", + "default_wifi_ssid": "@VAMP_PICO_WIFI_SSID@", + "default_zero_host": "@VAMP_ZERO_HOST@", + "default_zero_port": @VAMP_ZERO_PORT@ + } +} diff --git a/package/migrations/001_foundation.sql b/package/migrations/001_foundation.sql new file mode 100644 index 0000000..b33045f --- /dev/null +++ b/package/migrations/001_foundation.sql @@ -0,0 +1,18 @@ +CREATE TABLE songs ( + id TEXT PRIMARY KEY NOT NULL CHECK(length(trim(id)) BETWEEN 1 AND 120), + title TEXT NOT NULL CHECK(length(trim(title)) BETWEEN 1 AND 200), + composer TEXT NOT NULL DEFAULT '', + source_json TEXT NOT NULL CHECK(json_valid(source_json)), + created_at_ms INTEGER NOT NULL CHECK(created_at_ms >= 0), + updated_at_ms INTEGER NOT NULL CHECK(updated_at_ms >= created_at_ms) +) STRICT; +-- vamp-statement +CREATE TABLE page_state ( + id INTEGER PRIMARY KEY CHECK(id = 1), + song_id TEXT NOT NULL CHECK(length(trim(song_id)) BETWEEN 1 AND 120), + page_index INTEGER NOT NULL CHECK(page_index >= 0), + next_count INTEGER NOT NULL DEFAULT 0 CHECK(next_count >= 0), + previous_count INTEGER NOT NULL DEFAULT 0 CHECK(previous_count >= 0), + last_command TEXT NOT NULL DEFAULT '', + updated_at_ms INTEGER NOT NULL CHECK(updated_at_ms >= 0) +) STRICT; diff --git a/package/migrations/002_song_import_metadata.sql b/package/migrations/002_song_import_metadata.sql new file mode 100644 index 0000000..f398324 --- /dev/null +++ b/package/migrations/002_song_import_metadata.sql @@ -0,0 +1,5 @@ +ALTER TABLE songs ADD COLUMN part TEXT NOT NULL DEFAULT ''; +-- vamp-statement +ALTER TABLE songs ADD COLUMN source_path TEXT NOT NULL DEFAULT ''; +-- vamp-statement +CREATE INDEX idx_songs_title_part ON songs(title, part); diff --git a/package/migrations/003_practice_catalog.sql b/package/migrations/003_practice_catalog.sql new file mode 100644 index 0000000..e8acbb5 --- /dev/null +++ b/package/migrations/003_practice_catalog.sql @@ -0,0 +1,14 @@ +ALTER TABLE songs ADD COLUMN key_signature TEXT NOT NULL DEFAULT ''; +-- vamp-statement +CREATE TABLE practice_exercises ( + id TEXT PRIMARY KEY NOT NULL CHECK(length(trim(id)) BETWEEN 1 AND 120), + title TEXT NOT NULL CHECK(length(trim(title)) BETWEEN 1 AND 200), + composer TEXT NOT NULL DEFAULT '', + key_signature TEXT NOT NULL DEFAULT 'C', + source_json TEXT NOT NULL CHECK(json_valid(source_json)), + source_path TEXT NOT NULL DEFAULT '', + created_at_ms INTEGER NOT NULL CHECK(created_at_ms >= 0), + updated_at_ms INTEGER NOT NULL CHECK(updated_at_ms >= created_at_ms) +) STRICT; +-- vamp-statement +CREATE INDEX idx_practice_exercises_title ON practice_exercises(title); diff --git a/package/migrations/004_practice_hierarchy.sql b/package/migrations/004_practice_hierarchy.sql new file mode 100644 index 0000000..31d3866 --- /dev/null +++ b/package/migrations/004_practice_hierarchy.sql @@ -0,0 +1,9 @@ +ALTER TABLE practice_exercises ADD COLUMN practice_type_id TEXT NOT NULL DEFAULT 'general'; +-- vamp-statement +ALTER TABLE practice_exercises ADD COLUMN practice_type_title TEXT NOT NULL DEFAULT 'General Practice'; +-- vamp-statement +ALTER TABLE practice_exercises ADD COLUMN lesson_group_id TEXT NOT NULL DEFAULT 'general'; +-- vamp-statement +ALTER TABLE practice_exercises ADD COLUMN lesson_group_title TEXT NOT NULL DEFAULT 'General'; +-- vamp-statement +CREATE INDEX idx_practice_exercises_hierarchy ON practice_exercises(practice_type_id, lesson_group_id, source_path, title); diff --git a/package/pico/wiring.md b/package/pico/wiring.md new file mode 100644 index 0000000..25c2655 --- /dev/null +++ b/package/pico/wiring.md @@ -0,0 +1,20 @@ +# Product Vamp Pico 2 W Wiring + +The Pico firmware targets the Waveshare 2inch Capacitive Touch LCD module using the vendor default Pico pin map. + +| LCD Pin | Pico 2 W Pin | +| --- | --- | +| 3V3 | 3V3 | +| GND | GND | +| MISO | GP12 | +| MOSI | GP11 | +| SCLK | GP10 | +| SD_CS | NC | +| LCD_CS | GP9 | +| LCD_DC | GP14 | +| LCD_RST | GP13 | +| LCD_BL | GP15 | +| TP_SDA | GP6 | +| TP_SCL | GP7 | +| TP_INT | GP8 | +| TP_RST | GP5 | diff --git a/package/scripts/build_pico_firmware.sh b/package/scripts/build_pico_firmware.sh new file mode 100755 index 0000000..0b21e74 --- /dev/null +++ b/package/scripts/build_pico_firmware.sh @@ -0,0 +1,67 @@ +#!/usr/bin/env bash +set -euo pipefail + +if [ "$#" -ne 7 ]; then + echo "usage: build_pico_firmware.sh BUILD_DIR OUTPUT_UF2 SDK_VERSION WIFI_SSID WIFI_PASSPHRASE ZERO_HOST ZERO_PORT" >&2 + exit 2 +fi + +source_dir=$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd) +build_dir=$1 +output_uf2=$2 +sdk_version=$3 +wifi_ssid=$4 +wifi_passphrase=$5 +zero_host=$6 +zero_port=$7 + +pico_sdk_path=${VAMP_PICO_SDK_PATH:-${PICO_SDK_PATH:-}} +sdk_args=( + -DPICO_SDK_FETCH_FROM_GIT=ON + "-DPICO_SDK_FETCH_FROM_GIT_TAG=${sdk_version}" +) +if [ -n "$pico_sdk_path" ]; then + pico_sdk_path=$(cd "$pico_sdk_path" && pwd) + sdk_args=( + "-DPICO_SDK_PATH=${pico_sdk_path}" + -DPICO_SDK_FETCH_FROM_GIT=OFF + ) +fi + +mkdir -p "$(dirname "$output_uf2")" + +unset CC CXX CPP AS AR LD RANLIB STRIP CFLAGS CXXFLAGS CPPFLAGS LDFLAGS + +for tool in cmake ninja; do + if ! command -v "$tool" >/dev/null 2>&1; then + echo "missing required tool: $tool" >&2 + exit 1 + fi +done +if [ -z "${PICO_TOOLCHAIN_PATH:-}" ]; then + for tool in arm-none-eabi-gcc arm-none-eabi-g++; do + if ! command -v "$tool" >/dev/null 2>&1; then + echo "missing required tool: $tool, or set PICO_TOOLCHAIN_PATH" >&2 + exit 1 + fi + done +fi + +cmake -E rm -f "$build_dir/CMakeCache.txt" +cmake -E rm -rf "$build_dir/CMakeFiles" + +cmake \ + -S "$source_dir" \ + -B "$build_dir" \ + -G Ninja \ + -DVAMP_PICO_FIRMWARE_PROJECT=ON \ + -DPICO_BOARD=pico2_w \ + -DPICO_GCC_TRIPLE=arm-none-eabi \ + "${sdk_args[@]}" \ + "-DVAMP_PICO_WIFI_SSID=${wifi_ssid}" \ + "-DVAMP_PICO_WIFI_PASSPHRASE=${wifi_passphrase}" \ + "-DVAMP_ZERO_HOST=${zero_host}" \ + "-DVAMP_ZERO_PORT=${zero_port}" + +cmake --build "$build_dir" --target product-vamp-pico2w --parallel "${VAMP_BUILD_JOBS:-2}" +cmake -E copy "$build_dir/product-vamp-pico2w.uf2" "$output_uf2" diff --git a/package/scripts/build_zero_image.sh b/package/scripts/build_zero_image.sh new file mode 100755 index 0000000..f6bb2a5 --- /dev/null +++ b/package/scripts/build_zero_image.sh @@ -0,0 +1,27 @@ +#!/usr/bin/env bash +set -euo pipefail + +if [ "$#" -ne 3 ]; then + echo "usage: build_zero_image.sh CONTEXT_DIR OUTPUT_TAR IMAGE_TAG" >&2 + exit 2 +fi + +context_dir=$1 +output_tar=$2 +image_tag=$3 + +mkdir -p "$(dirname "$output_tar")" +rm -f "$output_tar" + +if docker buildx version >/dev/null 2>&1; then + docker buildx build \ + --platform linux/arm64 \ + --tag "$image_tag" \ + --load \ + "$context_dir" +else + docker build --platform linux/arm64 --tag "$image_tag" "$context_dir" +fi + +docker run --rm --platform linux/arm64 "$image_tag" /usr/bin/vamp-zero --version +docker save "$image_tag" --output "$output_tar" diff --git a/package/scripts/publish_latest_generic_package.py b/package/scripts/publish_latest_generic_package.py new file mode 100755 index 0000000..9d1b98d --- /dev/null +++ b/package/scripts/publish_latest_generic_package.py @@ -0,0 +1,218 @@ +#!/usr/bin/env python3 +import argparse +import base64 +import json +import os +import pathlib +import sys +import urllib.error +import urllib.parse +import urllib.request + +DEFAULT_REGISTRY_URL = "https://git.thyme-labs.com/api/packages/khodo/generic" +DEFAULT_VERSION = "latest" +PAGE_LIMIT = 50 + + +def read_config(path): + try: + data = json.loads(path.read_text(encoding="utf-8")) + except (OSError, json.JSONDecodeError) as error: + raise SystemExit(f"failed to read {path}: {error}") from error + package = data.get("package", {}) + if not isinstance(package, dict): + raise SystemExit(f"{path}: package must be an object") + name = package.get("name") + if not isinstance(name, str) or not name: + raise SystemExit(f"{path}: package.name must be a non-empty string") + artifact = package.get("artifact", {}) + if not isinstance(artifact, dict): + artifact = {} + registry_url = artifact.get("registry_url") + if not isinstance(registry_url, str) or not registry_url: + registry_url = DEFAULT_REGISTRY_URL + return name, registry_url + + +def parse_registry_url(registry_url): + parsed = urllib.parse.urlparse(registry_url.rstrip("/")) + parts = [urllib.parse.unquote(part) for part in parsed.path.split("/") if part] + if len(parts) < 4 or parts[-4] != "api" or parts[-3] != "packages" or parts[-1] != "generic": + raise SystemExit("package artifact registry_url must end with /api/packages/{owner}/generic") + owner = parts[-2] + prefix = "/" + "/".join(urllib.parse.quote(part, safe="") for part in parts[:-4]) if parts[:-4] else "" + return parsed, prefix, owner + + +def build_url(parsed, path, query=""): + return urllib.parse.urlunparse(( + parsed.scheme, + parsed.netloc, + path, + "", + query, + "", + )) + + +def quote_path(*parts): + return "/".join(urllib.parse.quote(part, safe="") for part in parts) + + +def version_list_url(parsed, prefix, owner, package_name, page): + path = f"{prefix}/api/v1/packages/{quote_path(owner, 'generic', package_name)}" + query = urllib.parse.urlencode({ + "page": page, + "limit": PAGE_LIMIT, + }) + return build_url(parsed, path, query) + + +def version_delete_url(parsed, prefix, owner, package_name, version): + path = f"{prefix}/api/packages/{quote_path(owner, 'generic', package_name, version)}" + return build_url(parsed, path) + + +def file_upload_url(registry_url, package_name, version, path): + return "/".join(( + registry_url.rstrip("/"), + urllib.parse.quote(package_name, safe=""), + urllib.parse.quote(version, safe=""), + urllib.parse.quote(path.name, safe=""), + )) + + +def authorization(user, token): + encoded = base64.b64encode(f"{user}:{token}".encode("utf-8")).decode("ascii") + return f"Basic {encoded}" + + +def request(method, url, auth, data=None, headers=None, missing_ok=False): + request_headers = { + "Authorization": auth, + **(headers or {}), + } + request = urllib.request.Request(url, data=data, method=method, headers=request_headers) + try: + return urllib.request.urlopen(request) + except urllib.error.HTTPError as error: + if missing_ok and error.code == 404: + return None + body = error.read().decode("utf-8", errors="replace") + message = f"{method} {url} failed with HTTP {error.code}" + if body: + message += f": {body}" + raise SystemExit(message) from error + except urllib.error.URLError as error: + raise SystemExit(f"{method} {url} failed: {error.reason}") from error + + +def list_versions(parsed, prefix, owner, package_name, auth): + versions = [] + page = 1 + while True: + response = request("GET", version_list_url(parsed, prefix, owner, package_name, page), auth, missing_ok=True) + if response is None: + return [] + with response: + data = json.loads(response.read().decode("utf-8")) + if not isinstance(data, list): + raise SystemExit("Gitea package version list response was not an array") + if not data: + break + for item in data: + if isinstance(item, dict) and isinstance(item.get("version"), str): + versions.append(item["version"]) + if len(data) < PAGE_LIMIT: + break + page += 1 + return sorted(set(versions)) + + +def delete_version(parsed, prefix, owner, package_name, version, auth): + url = version_delete_url(parsed, prefix, owner, package_name, version) + response = request("DELETE", url, auth, missing_ok=True) + if response is None: + print(f"Package version already absent: {package_name}/{version}") + return + with response: + if response.status != 204: + raise SystemExit(f"DELETE {url} returned HTTP {response.status}") + print(f"Deleted package version: {package_name}/{version}") + + +def discover_artifacts(dist_dir, package_name, version): + archives = sorted(dist_dir.glob(f"{package_name}-{version}-*.tar.gz")) + artifacts = [] + for archive in archives: + artifacts.append(archive) + checksum = archive.with_name(archive.name + ".sha256") + if checksum.is_file(): + artifacts.append(checksum) + if not artifacts: + raise SystemExit(f"no artifacts found matching {dist_dir}/{package_name}-{version}-*.tar.gz") + missing = [path for path in artifacts if not path.is_file()] + if missing: + raise SystemExit("missing artifact files: " + ", ".join(str(path) for path in missing)) + return artifacts + + +def upload_file(registry_url, package_name, version, path, auth): + url = file_upload_url(registry_url, package_name, version, path) + headers = { + "Content-Length": str(path.stat().st_size), + "Content-Type": "application/octet-stream", + } + with path.open("rb") as input_file: + response = request("PUT", url, auth, data=input_file, headers=headers) + with response: + if response.status != 201: + raise SystemExit(f"PUT {url} returned HTTP {response.status}") + print(f"Uploaded package file: {package_name}/{version}/{path.name}") + + +def parse_args(argv): + parser = argparse.ArgumentParser(description="Replace Product Vamp's rolling Gitea generic package.") + parser.add_argument("--config", type=pathlib.Path, default=pathlib.Path("modulus.json")) + parser.add_argument("--dist-dir", type=pathlib.Path, default=pathlib.Path("build/packages")) + parser.add_argument("--version", default=DEFAULT_VERSION) + parser.add_argument("--user", default=None) + parser.add_argument("--token", default=None) + return parser.parse_args(argv) + + +def main(argv): + args = parse_args(argv) + package_name, registry_url = read_config(args.config) + user = args.user or os_environ("PACKAGE_REGISTRY_USER") + token = args.token or os_environ("PACKAGE_REGISTRY_TOKEN") + auth = authorization(user, token) + parsed, prefix, owner = parse_registry_url(registry_url) + artifacts = discover_artifacts(args.dist_dir, package_name, args.version) + + existing_versions = list_versions(parsed, prefix, owner, package_name, auth) + + # Gitea rejects duplicate file names within a generic package version, so + # replacing the rolling release requires deleting the old version first. + if args.version in existing_versions: + delete_version(parsed, prefix, owner, package_name, args.version, auth) + + for artifact in artifacts: + upload_file(registry_url, package_name, args.version, artifact, auth) + + for version in existing_versions: + if version != args.version: + delete_version(parsed, prefix, owner, package_name, version, auth) + + return 0 + + +def os_environ(name): + value = os.environ.get(name) + if not value: + raise SystemExit(f"{name} is required") + return value + + +if __name__ == "__main__": + raise SystemExit(main(sys.argv[1:])) diff --git a/package/zero/Dockerfile b/package/zero/Dockerfile new file mode 100644 index 0000000..b865cdc --- /dev/null +++ b/package/zero/Dockerfile @@ -0,0 +1,26 @@ +FROM debian:trixie-slim + +ENV DEBIAN_FRONTEND=noninteractive + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libdrm2 \ + libegl1 \ + libgbm1 \ + libgl1 \ + libgles2 \ + libglvnd0 \ + libstdc++6 \ + libudev1 \ + libx11-6 \ + libxcb1 \ + sqlite3 \ + tini \ + util-linux \ + && rm -rf /var/lib/apt/lists/* + +COPY usr/ /usr/ + +ENTRYPOINT ["/usr/bin/tini", "--"] +CMD ["/usr/bin/vamp-zero", "--config", "/etc/product-vamp/vamp.json"] diff --git a/package/zero/install-zero.sh b/package/zero/install-zero.sh new file mode 100755 index 0000000..bd4b1e8 --- /dev/null +++ b/package/zero/install-zero.sh @@ -0,0 +1,75 @@ +#!/usr/bin/env bash +set -euo pipefail + +bundle_dir=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd) +zero_dir="$bundle_dir/zero" +image_tar="$zero_dir/product-vamp-zero-linux-arm64.docker.tar" +config_dir=/etc/product-vamp +state_dir=/var/lib/product-vamp +run_dir=/run/product-vamp +share_dir=/usr/share/product-vamp +required_packages=( + docker.io + docker-cli + network-manager + sqlite3 + ca-certificates + python3 +) + +if [ "$(id -u)" -ne 0 ]; then + echo "install-zero.sh must be run as root" >&2 + exit 1 +fi + +if [ ! -f "$image_tar" ]; then + echo "missing Docker archive: $image_tar" >&2 + exit 1 +fi + +missing_packages=() +for package in "${required_packages[@]}"; do + if ! dpkg-query -W -f='${Status}' "$package" 2>/dev/null | grep -qx 'install ok installed'; then + missing_packages+=("$package") + fi +done + +if [ "${#missing_packages[@]}" -eq 0 ]; then + echo "Required OS packages already installed; skipping apt." +else + echo "Installing missing OS packages: ${missing_packages[*]}" + if ! apt-get update -o APT::Update::Error-Mode=any; then + echo "Failed to refresh apt package indexes." >&2 + echo "Connect the Zero to upstream internet, then rerun sudo zero/install-zero.sh." >&2 + exit 1 + fi + if ! apt-get install -y --no-install-recommends "${missing_packages[@]}"; then + echo "Failed to install required OS packages: ${missing_packages[*]}" >&2 + echo "Connect the Zero to upstream internet, then rerun sudo zero/install-zero.sh." >&2 + exit 1 + fi +fi +systemctl enable --now docker NetworkManager + +install -d -m 0755 "$config_dir" "$state_dir" "$run_dir" "$share_dir" +cp -R "$zero_dir/share/product-vamp/." "$share_dir/" + +if [ ! -f "$config_dir/vamp.json" ]; then + cp "$zero_dir/config/vamp.example.json" "$config_dir/vamp.json" +fi + +docker load -i "$image_tar" + +install -m 0755 "$zero_dir/start-ap.sh" /usr/local/bin/product-vamp-start-ap +install -m 0755 "$zero_dir/start-zero.sh" /usr/local/bin/product-vamp-start-zero +install -m 0644 "$zero_dir/systemd/product-vamp-ap.service" /etc/systemd/system/product-vamp-ap.service +install -m 0644 "$zero_dir/systemd/product-vamp-zero.service" /etc/systemd/system/product-vamp-zero.service + +systemctl daemon-reload +systemctl disable --now getty@tty1.service >/dev/null 2>&1 || true +systemctl enable --now getty@tty2.service >/dev/null 2>&1 || true +systemctl enable --now product-vamp-ap.service +systemctl enable product-vamp-zero.service +systemctl restart product-vamp-zero.service + +echo "Product Vamp Zero installed. Control AP defaults to SSID 'Vamp Control' at http://192.168.42.1:8080." diff --git a/package/zero/product-vamp-ap.service b/package/zero/product-vamp-ap.service new file mode 100644 index 0000000..fe65d60 --- /dev/null +++ b/package/zero/product-vamp-ap.service @@ -0,0 +1,12 @@ +[Unit] +Description=Product Vamp Wi-Fi control access point +After=NetworkManager.service +Requires=NetworkManager.service + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=/usr/local/bin/product-vamp-start-ap + +[Install] +WantedBy=multi-user.target diff --git a/package/zero/product-vamp-zero.service b/package/zero/product-vamp-zero.service new file mode 100644 index 0000000..aae808e --- /dev/null +++ b/package/zero/product-vamp-zero.service @@ -0,0 +1,22 @@ +[Unit] +Description=Product Vamp Zero display and control service +After=docker.service product-vamp-ap.service getty@tty1.service +Requires=docker.service product-vamp-ap.service +Conflicts=getty@tty1.service + +[Service] +Restart=always +RestartSec=3 +TTYPath=/dev/tty1 +TTYReset=yes +TTYVHangup=yes +TTYVTDisallocate=yes +StandardInput=tty-force +StandardOutput=journal +StandardError=journal +ExecStartPre=/usr/bin/install -d -m 0755 /run/product-vamp +ExecStart=/usr/local/bin/product-vamp-start-zero +ExecStop=/bin/sh -c '/usr/bin/docker stop product-vamp-zero >/dev/null 2>&1 || true' + +[Install] +WantedBy=multi-user.target diff --git a/package/zero/start-ap.sh b/package/zero/start-ap.sh new file mode 100755 index 0000000..4958a9a --- /dev/null +++ b/package/zero/start-ap.sh @@ -0,0 +1,44 @@ +#!/usr/bin/env bash +set -euo pipefail + +config=${PRODUCT_VAMP_CONFIG:-/etc/product-vamp/vamp.json} +ssid=${PRODUCT_VAMP_AP_SSID:-Vamp Control} +passphrase=${PRODUCT_VAMP_AP_PASSPHRASE:-vamp-control} +interface=${PRODUCT_VAMP_AP_INTERFACE:-wlan0} +cidr=${PRODUCT_VAMP_ZERO_CIDR:-192.168.42.1/24} +connection=${PRODUCT_VAMP_AP_CONNECTION:-product-vamp-control} + +configure_connection() { + nmcli connection modify "$connection" \ + connection.interface-name "$interface" \ + 802-11-wireless.mode ap \ + 802-11-wireless.band bg \ + 802-11-wireless.channel 6 \ + 802-11-wireless.ssid "$ssid" \ + 802-11-wireless-security.key-mgmt wpa-psk \ + 802-11-wireless-security.proto rsn \ + 802-11-wireless-security.pairwise ccmp \ + 802-11-wireless-security.group ccmp \ + 802-11-wireless-security.pmf 1 \ + 802-11-wireless-security.psk "$passphrase" \ + ipv4.method shared \ + ipv4.addresses "$cidr" \ + ipv6.method ignore \ + connection.autoconnect yes +} + +if [ -r "$config" ]; then + ssid=$(python3 -c 'import json,sys; data=json.load(open(sys.argv[1])); print(data.get("control",{}).get("ap_ssid","Vamp Control"))' "$config") + passphrase=$(python3 -c 'import json,sys; data=json.load(open(sys.argv[1])); print(data.get("control",{}).get("ap_passphrase","vamp-control"))' "$config") + interface=$(python3 -c 'import json,sys; data=json.load(open(sys.argv[1])); print(data.get("control",{}).get("ap_interface","wlan0"))' "$config") + cidr=$(python3 -c 'import json,sys; data=json.load(open(sys.argv[1])); print(data.get("control",{}).get("zero_cidr","192.168.42.1/24"))' "$config") +fi + +if nmcli -t -f NAME connection show | grep -Fxq "$connection"; then + configure_connection +else + nmcli connection add type wifi ifname "$interface" con-name "$connection" autoconnect yes ssid "$ssid" + configure_connection +fi + +nmcli connection up "$connection" diff --git a/package/zero/start-zero.sh b/package/zero/start-zero.sh new file mode 100644 index 0000000..6aebc89 --- /dev/null +++ b/package/zero/start-zero.sh @@ -0,0 +1,42 @@ +#!/usr/bin/env bash +set -euo pipefail + +container_name=${PRODUCT_VAMP_ZERO_CONTAINER:-product-vamp-zero} +image_tag=${PRODUCT_VAMP_ZERO_IMAGE:-product-vamp-zero:dev} +config_dir=${PRODUCT_VAMP_CONFIG_DIR:-/etc/product-vamp} +state_dir=${PRODUCT_VAMP_STATE_DIR:-/var/lib/product-vamp} +run_dir=${PRODUCT_VAMP_RUN_DIR:-/run/product-vamp} +display_tty=${PRODUCT_VAMP_DISPLAY_TTY:-/dev/tty1} + +install -d -m 0755 "$run_dir" + +if command -v chvt >/dev/null 2>&1 && [ -c "$display_tty" ]; then + tty_number=${display_tty#/dev/tty} + case "$tty_number" in + ''|*[!0-9]*) + ;; + *) + chvt "$tty_number" || true + ;; + esac +fi + +if [ -c "$display_tty" ]; then + if command -v setterm >/dev/null 2>&1; then + setterm --cursor off > "$display_tty" || printf '\033[?25l' > "$display_tty" || true + else + printf '\033[?25l' > "$display_tty" || true + fi +fi + +docker rm -f "$container_name" >/dev/null 2>&1 || true + +echo "Starting Product Vamp Zero container '$container_name' from '$image_tag' on '$display_tty'" + +exec docker run --rm --name "$container_name" --network host --privileged \ + --env PRODUCT_VAMP_DISPLAY_TTY="$display_tty" \ + -v "$config_dir:/etc/product-vamp:ro" \ + -v "$state_dir:/var/lib/product-vamp" \ + -v "$run_dir:/run/product-vamp" \ + "$image_tag" \ + sh -lc 'display_tty=${PRODUCT_VAMP_DISPLAY_TTY:-/dev/tty1}; exec setsid --wait --ctty /usr/bin/vamp-zero --config /etc/product-vamp/vamp.json < "$display_tty"' diff --git a/pyrightconfig.json b/pyrightconfig.json new file mode 100644 index 0000000..17499c9 --- /dev/null +++ b/pyrightconfig.json @@ -0,0 +1,14 @@ +{ + "include": [ + "modulus.py", + "package/conanfile.py", + "build/build_tools" + ], + "extraPaths": [ + "build/build_common/modulus", + "." + ], + "typeCheckingMode": "off", + "reportMissingImports": false, + "reportMissingModuleSource": false +} diff --git a/src/vamp_pico/display.cpp b/src/vamp_pico/display.cpp new file mode 100644 index 0000000..56670d1 --- /dev/null +++ b/src/vamp_pico/display.cpp @@ -0,0 +1,293 @@ +#include + +#include +#include +#include +#include +#include + +#include + +#include "hardware/gpio.h" +#include "hardware/spi.h" +#include "pico/stdlib.h" + +namespace { + +constexpr auto pin_lcd_cs = std::uint32_t{9}; +constexpr auto pin_lcd_sclk = std::uint32_t{10}; +constexpr auto pin_lcd_mosi = std::uint32_t{11}; +constexpr auto pin_lcd_miso = std::uint32_t{12}; +constexpr auto pin_lcd_rst = std::uint32_t{13}; +constexpr auto pin_lcd_dc = std::uint32_t{14}; +constexpr auto pin_lcd_bl = std::uint32_t{15}; + +auto select() -> void { + gpio_put(pin_lcd_cs, 0); +} + +auto deselect() -> void { + gpio_put(pin_lcd_cs, 1); +} + +auto command(std::uchar_t value) -> void { + gpio_put(pin_lcd_dc, 0); + select(); + spi_write_blocking(spi1, &value, 1); + deselect(); +} + +auto data(std::uchar_t const* values, std::size_t count) -> void { + gpio_put(pin_lcd_dc, 1); + select(); + spi_write_blocking(spi1, values, count); + deselect(); +} + +auto data8(std::uchar_t value) -> void { + data(&value, 1); +} + +auto set_window(std::int32_t x0, std::int32_t y0, std::int32_t x1, std::int32_t y1) -> void { + x0 = std::clamp(x0, std::int32_t{0}, vamp_pico::display_width - std::int32_t{1}); + y0 = std::clamp(y0, std::int32_t{0}, vamp_pico::display_height - std::int32_t{1}); + x1 = std::clamp(x1, std::int32_t{0}, vamp_pico::display_width - std::int32_t{1}); + y1 = std::clamp(y1, std::int32_t{0}, vamp_pico::display_height - std::int32_t{1}); + + command(0x2a); + auto column = std::array{ + static_cast((x0 >> 8) & 0xff), + static_cast(x0 & 0xff), + static_cast((x1 >> 8) & 0xff), + static_cast(x1 & 0xff), + }; + data(column.data(), column.size()); + + command(0x2b); + auto row = std::array{ + static_cast((y0 >> 8) & 0xff), + static_cast(y0 & 0xff), + static_cast((y1 >> 8) & 0xff), + static_cast(y1 & 0xff), + }; + data(row.data(), row.size()); + command(0x2c); +} + +auto same_color(vamp_style::color left, vamp_style::color right) -> std::bool_t { + return left.r == right.r && left.g == right.g && left.b == right.b && left.a == right.a; +} + +template +auto same_text(std::array const& cached, std::char_t const* text) -> std::bool_t { + auto const* value = text == nullptr ? "" : text; + return std::strncmp(cached.data(), value, Count) == 0; +} + +template +auto copy_text(std::array& cached, std::char_t const* text) -> void { + auto const* value = text == nullptr ? "" : text; + auto count = std::min(Count - 1U, std::strlen(value)); + std::memcpy(cached.data(), value, count); + cached[count] = '\0'; +} + +auto blend_channel(std::uint8_t foreground, std::uint8_t background, std::uint8_t alpha) -> std::uint8_t { + auto fg = static_cast(foreground) * alpha; + auto bg = static_cast(background) * (15U - alpha); + return static_cast((fg + bg + 7U) / 15U); +} + +auto blend(vamp_style::color foreground, vamp_style::color background, std::uint8_t alpha) -> vamp_style::color { + if (alpha >= 15U) { + return foreground; + } + return { + .r = blend_channel(foreground.r, background.r, alpha), + .g = blend_channel(foreground.g, background.g, alpha), + .b = blend_channel(foreground.b, background.b, alpha), + .a = 255, + }; +} + +auto draw_centered_text(vamp_pico::display& display, std::int32_t y, std::char_t const* text, std::uint16_t color, std::int32_t preferred_scale, std::int32_t max_width) -> void { + if (text == nullptr || text[0] == '\0') { + return; + } + auto scale = preferred_scale; + while (scale > 1 && vamp_style::ui_text_width(text, scale) > max_width) { + --scale; + } + auto width = vamp_style::ui_text_width(text, scale); + auto x = std::max(12, (vamp_pico::display_width - width) / 2); + display.draw_text(x, y, text, color, scale); +} + +} + +auto vamp_pico::display::init() -> void { + spi_init(spi1, 62'500'000); + gpio_set_function(pin_lcd_sclk, GPIO_FUNC_SPI); + gpio_set_function(pin_lcd_mosi, GPIO_FUNC_SPI); + gpio_set_function(pin_lcd_miso, GPIO_FUNC_SPI); + gpio_init(pin_lcd_cs); + gpio_init(pin_lcd_dc); + gpio_init(pin_lcd_rst); + gpio_init(pin_lcd_bl); + gpio_set_dir(pin_lcd_cs, GPIO_OUT); + gpio_set_dir(pin_lcd_dc, GPIO_OUT); + gpio_set_dir(pin_lcd_rst, GPIO_OUT); + gpio_set_dir(pin_lcd_bl, GPIO_OUT); + deselect(); + gpio_put(pin_lcd_bl, 1); + + gpio_put(pin_lcd_rst, 0); + sleep_ms(50); + gpio_put(pin_lcd_rst, 1); + sleep_ms(120); + + command(0x01); + sleep_ms(150); + command(0x11); + sleep_ms(120); + command(0x3a); + data8(0x55); + command(0x36); + data8(0x60); + command(0x21); + command(0x13); + command(0x29); + sleep_ms(20); + fill(vamp_pico::color_black); + remote_valid_ = false; +} + +auto vamp_pico::display::fill(std::uint16_t color) -> void { + fill_rect(0, 0, vamp_pico::display_width, vamp_pico::display_height, color); +} + +auto vamp_pico::display::fill_rect(std::int32_t x, std::int32_t y, std::int32_t width, std::int32_t height, std::uint16_t color) -> void { + if (width <= 0 || height <= 0) { + return; + } + auto x0 = std::clamp(x, std::int32_t{0}, vamp_pico::display_width - std::int32_t{1}); + auto y0 = std::clamp(y, std::int32_t{0}, vamp_pico::display_height - std::int32_t{1}); + auto x1 = std::clamp(x + width - std::int32_t{1}, std::int32_t{0}, vamp_pico::display_width - std::int32_t{1}); + auto y1 = std::clamp(y + height - std::int32_t{1}, std::int32_t{0}, vamp_pico::display_height - std::int32_t{1}); + if (x1 < x0 || y1 < y0) { + return; + } + set_window(x0, y0, x1, y1); + auto hi = static_cast((color >> 8) & 0xff); + auto lo = static_cast(color & 0xff); + auto row = std::array{}; + for (auto i = std::size_t{}; i < row.size(); i += 2U) { + row[i] = hi; + row[i + 1U] = lo; + } + gpio_put(pin_lcd_dc, 1); + select(); + for (auto yy = y0; yy <= y1; ++yy) { + spi_write_blocking(spi1, row.data(), static_cast(x1 - x0 + 1) * 2U); + } + deselect(); +} + +auto vamp_pico::display::draw_text(std::int32_t x, std::int32_t y, std::char_t const* text, std::uint16_t color, std::int32_t scale) -> void { + if (text == nullptr || scale <= 0) { + return; + } + auto foreground = vamp_style::color{ + .r = static_cast(((color >> 11U) & 0x1fU) * 255U / 31U), + .g = static_cast(((color >> 5U) & 0x3fU) * 255U / 63U), + .b = static_cast((color & 0x1fU) * 255U / 31U), + .a = 255, + }; + auto cursor = x; + auto previous = std::char_t{}; + for (auto i = std::size_t{}; i < std::strlen(text); ++i) { + if (previous != std::char_t{}) { + cursor += vamp_style::ui_font_pair_adjust(previous, text[i]) * scale; + } + auto glyph = vamp_style::ui_font_glyph(text[i]); + for (auto row = 0; row < vamp_style::ui_font_height; ++row) { + auto col = std::int32_t{}; + while (col < static_cast(glyph.width)) { + auto row_offset = static_cast(row * vamp_style::ui_font_max_width); + while (col < static_cast(glyph.width) && glyph.alpha[row_offset + static_cast(col)] == 0U) { + ++col; + } + auto start = col; + auto alpha = start < static_cast(glyph.width) + ? glyph.alpha[row_offset + static_cast(start)] + : std::uint8_t{}; + while (col < static_cast(glyph.width) && glyph.alpha[row_offset + static_cast(col)] == alpha) { + ++col; + } + if (col > start) { + auto run_color = vamp_style::rgb565(blend(foreground, vamp_style::background, alpha)); + fill_rect(cursor + start * scale, y + row * scale, (col - start) * scale, scale, run_color); + } + } + } + cursor += static_cast(glyph.advance) * scale; + if (cursor >= vamp_pico::display_width) { + return; + } + previous = text[i]; + } +} + +auto vamp_pico::display::show_boot(std::char_t const* line1, std::char_t const* line2, std::uint16_t accent) -> void { + remote_valid_ = false; + fill(vamp_style::rgb565(vamp_style::background)); + fill_rect(0, 0, vamp_pico::display_width, 28, accent); + draw_text(14, 48, "VAMP", vamp_style::rgb565(vamp_style::ink), 2); + if (line1 != nullptr) { + draw_text(92, 54, line1, vamp_style::rgb565(vamp_style::ink), 1); + } + if (line2 != nullptr) { + draw_text(14, 96, line2, vamp_style::rgb565(vamp_style::muted), 1); + } +} + +auto vamp_pico::display::show_remote(vamp_style::color status, std::char_t const* title, std::char_t const* part, std::uint32_t page, std::uint32_t pages, std::bool_t active) -> void { + auto const* title_text = title == nullptr ? "" : title; + auto const* part_text = part == nullptr ? "" : part; + auto status_changed = !remote_valid_ || !same_color(last_status_, status); + auto content_changed = !remote_valid_ + || last_active_ != active + || !same_text(last_title_, title_text) + || !same_text(last_part_, part_text) + || last_page_ != page + || last_pages_ != pages; + + if (!remote_valid_) { + fill(vamp_style::rgb565(vamp_style::background)); + } + if (status_changed) { + fill_rect(0, 0, vamp_pico::display_width, 24, vamp_style::rgb565(status)); + } + if (content_changed) { + fill_rect(0, 24, vamp_pico::display_width, vamp_pico::display_height - 24, vamp_style::rgb565(vamp_style::background)); + if (active && title_text[0] != '\0') { + draw_centered_text(*this, 66, title_text, vamp_style::rgb565(vamp_style::ink), 1, vamp_pico::display_width - 24); + draw_centered_text(*this, 118, part_text, vamp_style::rgb565(vamp_style::muted), 1, vamp_pico::display_width - 24); + if (pages != 0U) { + auto page_text = std::array{}; + auto written = std::snprintf(page_text.data(), page_text.size(), "PAGE %lu/%lu", static_cast(page), static_cast(pages)); + if (written > 0) { + draw_centered_text(*this, 168, page_text.data(), vamp_style::rgb565(vamp_style::muted), 1, vamp_pico::display_width - 24); + } + } + } + } + + last_status_ = status; + last_active_ = active; + copy_text(last_title_, title_text); + copy_text(last_part_, part_text); + last_page_ = page; + last_pages_ = pages; + remote_valid_ = true; +} diff --git a/src/vamp_pico/http_client.cpp b/src/vamp_pico/http_client.cpp new file mode 100644 index 0000000..05c43a4 --- /dev/null +++ b/src/vamp_pico/http_client.cpp @@ -0,0 +1,278 @@ +#include + +#include +#include +#include +#include +#include +#include + +#include "lwip/ip_addr.h" +#include "lwip/pbuf.h" +#include "lwip/tcp.h" +#include "pico/cyw43_arch.h" +#include "pico/stdlib.h" + +namespace { + +struct request_state { + tcp_pcb* pcb{}; + std::bool_t done{}; + std::bool_t status_known{}; + std::bool_t success{}; + std::char_t request[384]{}; + std::size_t request_size{}; + std::char_t response[1024]{}; + std::size_t response_size{}; +}; + +auto response_is_success(std::char_t const* data, std::size_t size) -> std::bool_t { + return size >= 10U && (std::memcmp(data, "HTTP/1.1 2", 10U) == 0 || std::memcmp(data, "HTTP/1.0 2", 10U) == 0); +} + +auto clear_callbacks(tcp_pcb* pcb) -> void { + tcp_arg(pcb, nullptr); + tcp_recv(pcb, nullptr); + tcp_sent(pcb, nullptr); + tcp_poll(pcb, nullptr, 0); + tcp_err(pcb, nullptr); +} + +auto close_request(request_state& state, std::bool_t success) -> err_t { + state.success = success; + state.done = true; + if (state.pcb == nullptr) { + return ERR_OK; + } + + auto* pcb = state.pcb; + state.pcb = nullptr; + clear_callbacks(pcb); + if (tcp_close(pcb) == ERR_OK) { + return ERR_OK; + } + tcp_abort(pcb); + return ERR_ABRT; +} + +auto append_response(request_state& state, pbuf* buffer) -> void { + auto remaining = sizeof(state.response) - state.response_size - 1U; + if (remaining != 0U) { + auto copied = pbuf_copy_partial(buffer, state.response + state.response_size, std::min(buffer->tot_len, static_cast(remaining)), 0); + state.response_size += copied; + state.response[state.response_size] = '\0'; + } + if (!state.status_known && state.response_size >= 10U) { + state.status_known = true; + state.success = response_is_success(state.response, state.response_size); + } +} + +auto handle_receive(void* argument, tcp_pcb* pcb, pbuf* buffer, err_t error) -> err_t { + auto* state = static_cast(argument); + if (state == nullptr) { + if (buffer != nullptr) { + pbuf_free(buffer); + } + return ERR_OK; + } + if (buffer == nullptr) { + return close_request(*state, state->status_known && state->success); + } + if (error == ERR_OK) { + append_response(*state, buffer); + } + tcp_recved(pcb, buffer->tot_len); + pbuf_free(buffer); + return ERR_OK; +} + +auto handle_connected(void* argument, tcp_pcb* pcb, err_t error) -> err_t { + auto* state = static_cast(argument); + if (state == nullptr) { + return ERR_ARG; + } + if (error != ERR_OK) { + auto closed = close_request(*state, false); + return closed == ERR_ABRT ? closed : error; + } + + tcp_arg(pcb, state); + tcp_recv(pcb, handle_receive); + auto written = tcp_write(pcb, state->request, static_cast(state->request_size), TCP_WRITE_FLAG_COPY); + if (written != ERR_OK) { + auto closed = close_request(*state, false); + return closed == ERR_ABRT ? closed : written; + } + auto output = tcp_output(pcb); + if (output != ERR_OK) { + auto closed = close_request(*state, false); + return closed == ERR_ABRT ? closed : output; + } + return ERR_OK; +} + +auto handle_error(void* argument, err_t) -> void { + auto* state = static_cast(argument); + if (state == nullptr) { + return; + } + state->pcb = nullptr; + state->success = false; + state->done = true; +} + +auto run_request(std::char_t const* method, std::char_t const* path, std::char_t const* body, std::char_t* response, std::size_t response_capacity, std::uint32_t timeout_ms) -> std::bool_t { + auto state = request_state{}; + auto body_size = body == nullptr ? std::size_t{} : std::strlen(body); + auto written = std::int32_t{}; + if (body_size == 0U) { + written = std::snprintf( + state.request, + sizeof(state.request), + "%s %s HTTP/1.1\r\nHost: %s:%d\r\nConnection: close\r\n\r\n", + method, + path, + VAMP_ZERO_HOST, + VAMP_ZERO_PORT + ); + } else { + written = std::snprintf( + state.request, + sizeof(state.request), + "%s %s HTTP/1.1\r\nHost: %s:%d\r\nContent-Length: %u\r\nContent-Type: application/json\r\nConnection: close\r\n\r\n%s", + method, + path, + VAMP_ZERO_HOST, + VAMP_ZERO_PORT, + static_cast(body_size), + body + ); + } + if (written <= 0 || static_cast(written) >= sizeof(state.request)) { + return false; + } + state.request_size = static_cast(written); + + auto address = ip_addr_t{}; + if (ipaddr_aton(VAMP_ZERO_HOST, &address) == 0) { + return false; + } + + cyw43_arch_lwip_begin(); + state.pcb = tcp_new_ip_type(IPADDR_TYPE_V4); + if (state.pcb == nullptr) { + cyw43_arch_lwip_end(); + return false; + } + tcp_arg(state.pcb, &state); + tcp_err(state.pcb, handle_error); + auto connected = tcp_connect(state.pcb, &address, static_cast(VAMP_ZERO_PORT), handle_connected); + if (connected != ERR_OK) { + close_request(state, false); + } + cyw43_arch_lwip_end(); + if (connected != ERR_OK) { + return false; + } + + auto deadline = make_timeout_time_ms(timeout_ms); + while (!state.done && !time_reached(deadline)) { + sleep_ms(5); + } + if (!state.done) { + cyw43_arch_lwip_begin(); + close_request(state, false); + cyw43_arch_lwip_end(); + } + if (response != nullptr && response_capacity != 0U) { + auto count = std::min(response_capacity - 1U, state.response_size); + std::memcpy(response, state.response, count); + response[count] = '\0'; + } + return state.success; +} + +auto body_start(std::char_t const* response) -> std::char_t const* { + auto* marker = std::strstr(response, "\r\n\r\n"); + return marker == nullptr ? response : marker + 4; +} + +auto copy_value(std::char_t const* begin, std::size_t size, std::char_t* output, std::size_t capacity) -> void { + if (capacity == 0U) { + return; + } + auto count = std::min(capacity - 1U, size); + std::memcpy(output, begin, count); + output[count] = '\0'; +} + +auto parse_uint(std::char_t const* begin, std::size_t size) -> std::uint32_t { + auto buffer = std::array{}; + copy_value(begin, std::min(size, buffer.size() - 1U), buffer.data(), buffer.size()); + return static_cast(std::strtoul(buffer.data(), nullptr, 10)); +} + +auto parse_display_body(std::char_t const* body, vamp_pico::remote_display_state& state) -> std::bool_t { + auto parsed = vamp_pico::remote_display_state{}; + auto saw_version = std::bool_t{}; + auto* cursor = body; + while (cursor != nullptr && *cursor != '\0') { + auto* line_end = std::strchr(cursor, '\n'); + auto size = line_end == nullptr ? std::strlen(cursor) : static_cast(line_end - cursor); + if (size != 0U && cursor[size - 1U] == '\r') { + --size; + } + auto* equals = static_cast(std::memchr(cursor, '=', size)); + if (equals != nullptr) { + auto key_size = static_cast(equals - cursor); + auto* value = equals + 1; + auto value_size = size - key_size - 1U; + if (key_size == 7U && std::memcmp(cursor, "version", 7U) == 0) { + saw_version = true; + } else if (key_size == 6U && std::memcmp(cursor, "active", 6U) == 0) { + parsed.active = value_size != 0U && value[0] == '1'; + } else if (key_size == 5U && std::memcmp(cursor, "title", 5U) == 0) { + copy_value(value, value_size, parsed.title, sizeof(parsed.title)); + } else if (key_size == 4U && std::memcmp(cursor, "part", 4U) == 0) { + copy_value(value, value_size, parsed.part, sizeof(parsed.part)); + } else if (key_size == 4U && std::memcmp(cursor, "mode", 4U) == 0) { + copy_value(value, value_size, parsed.mode, sizeof(parsed.mode)); + } else if (key_size == 4U && std::memcmp(cursor, "page", 4U) == 0) { + parsed.page = parse_uint(value, value_size); + } else if (key_size == 5U && std::memcmp(cursor, "pages", 5U) == 0) { + parsed.pages = parse_uint(value, value_size); + } + } + cursor = line_end == nullptr ? nullptr : line_end + 1; + } + if (saw_version) { + state = parsed; + } + return saw_version; +} + +} + +auto vamp_pico::post_remote_command(vamp_protocol::page_command command, vamp_pico::remote_display_state& state) -> std::bool_t { + auto response = std::array{}; + if (!run_request("POST", vamp_protocol::page_command_path(command), "{}", response.data(), response.size(), 700)) { + return false; + } + if (parse_display_body(body_start(response.data()), state)) { + return true; + } + return vamp_pico::fetch_remote_display(state); +} + +auto vamp_pico::heartbeat() -> std::bool_t { + return run_request("POST", vamp_protocol::remote_heartbeat_path, "{}", nullptr, 0, 700); +} + +auto vamp_pico::fetch_remote_display(vamp_pico::remote_display_state& state) -> std::bool_t { + auto response = std::array{}; + if (!run_request("GET", vamp_protocol::remote_display_path, nullptr, response.data(), response.size(), 1000)) { + return false; + } + return parse_display_body(body_start(response.data()), state); +} diff --git a/src/vamp_pico/main.cpp b/src/vamp_pico/main.cpp new file mode 100644 index 0000000..bd82656 --- /dev/null +++ b/src/vamp_pico/main.cpp @@ -0,0 +1,144 @@ +#include +#include +#include +#include + +#include "pico/cyw43_arch.h" +#include "pico/stdlib.h" + +namespace { + +enum class link_status { + CONNECTING, + RETRYING, + CONNECTED, +}; + +struct gesture_state { + std::bool_t touching{}; + std::bool_t hold_sent{}; + std::bool_t pending_tap{}; + absolute_time_t down_time{}; + absolute_time_t last_up_time{}; +}; + +auto color_for(link_status status) -> vamp_style::color { + switch (status) { + case link_status::CONNECTING: + return vamp_style::connecting; + case link_status::RETRYING: + return vamp_style::retrying; + case link_status::CONNECTED: + return vamp_style::connected; + } + return vamp_style::retrying; +} + +auto render(vamp_pico::display& display, link_status status, vamp_pico::remote_display_state const& remote) -> void { + display.show_remote(color_for(status), remote.title, remote.part, remote.page, remote.pages, remote.active); +} + +auto connect_wifi(vamp_pico::display& display) -> std::bool_t { + auto empty = vamp_pico::remote_display_state{}; + render(display, link_status::CONNECTING, empty); + if (cyw43_arch_init() != 0) { + display.show_boot("WIFI", "ERROR", vamp_style::rgb565(vamp_style::danger)); + return false; + } + cyw43_arch_enable_sta_mode(); + while (cyw43_arch_wifi_connect_timeout_ms(VAMP_PICO_WIFI_SSID, VAMP_PICO_WIFI_PASSPHRASE, CYW43_AUTH_WPA2_AES_PSK, 15000) != 0) { + render(display, link_status::RETRYING, empty); + sleep_ms(2000); + render(display, link_status::CONNECTING, empty); + } + render(display, link_status::RETRYING, empty); + return true; +} + +auto send_command(vamp_protocol::page_command command, link_status& status, vamp_pico::remote_display_state& remote, vamp_pico::display& display) -> void { + if (!vamp_pico::post_remote_command(command, remote)) { + status = link_status::RETRYING; + render(display, status, remote); + return; + } + status = link_status::CONNECTED; + render(display, status, remote); +} + +auto update_gesture(gesture_state& gesture, std::bool_t touching, link_status& status, vamp_pico::remote_display_state& remote, vamp_pico::display& display) -> void { + constexpr auto hold_us = std::int64_t{700000}; + constexpr auto double_tap_us = std::int64_t{220000}; + auto now = get_absolute_time(); + + if (touching && !gesture.touching) { + gesture.touching = true; + gesture.hold_sent = false; + gesture.down_time = now; + } + + if (touching && !gesture.hold_sent && absolute_time_diff_us(gesture.down_time, now) >= hold_us) { + gesture.hold_sent = true; + gesture.pending_tap = false; + send_command(vamp_protocol::page_command::SELECT, status, remote, display); + } + + if (!touching && gesture.touching) { + gesture.touching = false; + if (!gesture.hold_sent) { + if (gesture.pending_tap && absolute_time_diff_us(gesture.last_up_time, now) <= double_tap_us) { + gesture.pending_tap = false; + send_command(vamp_protocol::page_command::PREVIOUS, status, remote, display); + } else { + gesture.pending_tap = true; + gesture.last_up_time = now; + } + } + } + + if (!touching && gesture.pending_tap && absolute_time_diff_us(gesture.last_up_time, now) > double_tap_us) { + gesture.pending_tap = false; + send_command(vamp_protocol::page_command::NEXT, status, remote, display); + } +} + +} + +auto main() -> int { + stdio_init_all(); + + auto display = vamp_pico::display{}; + auto touch = vamp_pico::touch_controller{}; + display.init(); + touch.init(); + + if (!connect_wifi(display)) { + while (true) { + sleep_ms(1000); + } + } + + auto remote = vamp_pico::remote_display_state{}; + auto status = link_status::RETRYING; + auto gesture = gesture_state{}; + auto last_poll = get_absolute_time(); + auto poll_now = true; + render(display, status, remote); + + while (true) { + auto point = vamp_pico::touch_point{}; + update_gesture(gesture, touch.read(point), status, remote, display); + + auto now = get_absolute_time(); + if (poll_now || absolute_time_diff_us(last_poll, now) >= 1000000) { + poll_now = false; + last_poll = now; + if (vamp_pico::fetch_remote_display(remote)) { + status = link_status::CONNECTED; + } else { + status = link_status::RETRYING; + } + render(display, status, remote); + } + sleep_ms(8); + } +} diff --git a/src/vamp_pico/touch.cpp b/src/vamp_pico/touch.cpp new file mode 100644 index 0000000..3e40000 --- /dev/null +++ b/src/vamp_pico/touch.cpp @@ -0,0 +1,59 @@ +#include + +#include + +#include +#include + +#include "hardware/gpio.h" +#include "hardware/i2c.h" +#include "pico/stdlib.h" + +namespace { + +constexpr auto pin_tp_rst = std::uint32_t{5}; +constexpr auto pin_tp_sda = std::uint32_t{6}; +constexpr auto pin_tp_scl = std::uint32_t{7}; +constexpr auto pin_tp_int = std::uint32_t{8}; +constexpr auto cst816_address = std::uchar_t{0x15}; + +} + +auto vamp_pico::touch_controller::init() -> void { + i2c_init(i2c1, 400'000); + gpio_set_function(pin_tp_sda, GPIO_FUNC_I2C); + gpio_set_function(pin_tp_scl, GPIO_FUNC_I2C); + gpio_pull_up(pin_tp_sda); + gpio_pull_up(pin_tp_scl); + + gpio_init(pin_tp_rst); + gpio_set_dir(pin_tp_rst, GPIO_OUT); + gpio_put(pin_tp_rst, 0); + sleep_ms(10); + gpio_put(pin_tp_rst, 1); + sleep_ms(50); + + gpio_init(pin_tp_int); + gpio_set_dir(pin_tp_int, GPIO_IN); + gpio_pull_up(pin_tp_int); +} + +auto vamp_pico::touch_controller::read(vamp_pico::touch_point& point) -> std::bool_t { + auto reg = std::uchar_t{0x02}; + auto data = std::array{}; + if (i2c_write_blocking(i2c1, cst816_address, ®, 1, true) != 1) { + return false; + } + if (i2c_read_blocking(i2c1, cst816_address, data.data(), data.size(), false) != static_cast(data.size())) { + return false; + } + auto fingers = data[0] & 0x0f; + if (fingers == 0 || fingers > 5) { + return false; + } + auto raw_x = static_cast(((data[1] & 0x0f) << 8) | data[2]); + auto raw_y = static_cast(((data[3] & 0x0f) << 8) | data[4]); + point.x = raw_y; + point.y = vamp_pico::display_height - 1 - raw_x; + return point.x >= 0 && point.x < vamp_pico::display_width && point.y >= 0 && point.y < vamp_pico::display_height; +} diff --git a/src/vamp_protocol/page_control.cpp b/src/vamp_protocol/page_control.cpp new file mode 100644 index 0000000..aca1f17 --- /dev/null +++ b/src/vamp_protocol/page_control.cpp @@ -0,0 +1,49 @@ +#include + +auto vamp_protocol::page_command_path(vamp_protocol::page_command command) -> std::char_t const* { + switch (command) { + case vamp_protocol::page_command::PREVIOUS: + return vamp_protocol::remote_previous_path; + case vamp_protocol::page_command::NEXT: + return vamp_protocol::remote_next_path; + case vamp_protocol::page_command::SELECT: + return vamp_protocol::remote_select_path; + } + return vamp_protocol::remote_next_path; +} + +auto vamp_protocol::page_command_legacy_path(vamp_protocol::page_command command) -> std::char_t const* { + switch (command) { + case vamp_protocol::page_command::PREVIOUS: + return vamp_protocol::previous_page_path; + case vamp_protocol::page_command::NEXT: + return vamp_protocol::next_page_path; + case vamp_protocol::page_command::SELECT: + return vamp_protocol::remote_select_path; + } + return vamp_protocol::next_page_path; +} + +auto vamp_protocol::page_command_name(vamp_protocol::page_command command) -> std::char_t const* { + switch (command) { + case vamp_protocol::page_command::PREVIOUS: + return "previous"; + case vamp_protocol::page_command::NEXT: + return "next"; + case vamp_protocol::page_command::SELECT: + return "select"; + } + return "next"; +} + +auto vamp_protocol::page_command_display_label(vamp_protocol::page_command command) -> std::char_t const* { + switch (command) { + case vamp_protocol::page_command::PREVIOUS: + return "PREV"; + case vamp_protocol::page_command::NEXT: + return "NEXT"; + case vamp_protocol::page_command::SELECT: + return "SELECT"; + } + return "NEXT"; +} diff --git a/src/vamp_style.cpp b/src/vamp_style.cpp new file mode 100644 index 0000000..e61f2c2 --- /dev/null +++ b/src/vamp_style.cpp @@ -0,0 +1,10 @@ +#include + +#include + +auto vamp_style::rgb565(vamp_style::color value) -> std::uint16_t { + auto r = static_cast((value.r >> 3U) & 0x1fU); + auto g = static_cast((value.g >> 2U) & 0x3fU); + auto b = static_cast((value.b >> 3U) & 0x1fU); + return static_cast((r << 11U) | (g << 5U) | b); +} diff --git a/src/vamp_style/font.cpp b/src/vamp_style/font.cpp new file mode 100644 index 0000000..7e7cc2c --- /dev/null +++ b/src/vamp_style/font.cpp @@ -0,0 +1,6110 @@ +#include + +#include +#include +#include +#include + +namespace { + +struct pair_adjustment { + std::uint16_t key{}; + std::int8_t adjustment{}; +}; + +constexpr auto pair_adjustments = std::array{{ + {0x2241, -6}, + {0x2242, -1}, + {0x2243, -3}, + {0x2244, -1}, + {0x2246, -1}, + {0x2247, -4}, + {0x2249, -2}, + {0x224a, -2}, + {0x224c, -1}, + {0x224d, -1}, + {0x224e, -1}, + {0x224f, -3}, + {0x2250, -1}, + {0x2251, -4}, + {0x2252, -1}, + {0x2253, -4}, + {0x2255, -1}, + {0x2257, -1}, + {0x2258, -1}, + {0x225a, -3}, + {0x2261, -4}, + {0x2263, -4}, + {0x2264, -4}, + {0x2265, -2}, + {0x2266, -4}, + {0x2267, -5}, + {0x2269, -1}, + {0x226a, -2}, + {0x226b, -1}, + {0x226d, -2}, + {0x226e, -2}, + {0x226f, -3}, + {0x2270, -3}, + {0x2271, -3}, + {0x2272, -1}, + {0x2273, -4}, + {0x2274, -3}, + {0x2275, -3}, + {0x2276, -2}, + {0x2277, -3}, + {0x2278, -3}, + {0x2279, -2}, + {0x227a, -4}, + {0x2761, -2}, + {0x2763, -3}, + {0x2764, -4}, + {0x2765, -2}, + {0x2766, -2}, + {0x2767, -3}, + {0x276a, -2}, + {0x276b, -1}, + {0x276c, -1}, + {0x276d, -1}, + {0x276e, -1}, + {0x276f, -3}, + {0x2770, -2}, + {0x2771, -2}, + {0x2773, -3}, + {0x2774, -1}, + {0x2775, -2}, + {0x2777, -1}, + {0x2778, -2}, + {0x2779, -2}, + {0x277a, -2}, + {0x284a, -3}, + {0x3074, -1}, + {0x3173, -1}, + {0x3230, -2}, + {0x3231, -1}, + {0x3232, -2}, + {0x3233, -2}, + {0x3234, -3}, + {0x3235, -1}, + {0x3236, -2}, + {0x3237, -1}, + {0x3238, -1}, + {0x3239, -1}, + {0x326d, -2}, + {0x326e, -2}, + {0x3274, -2}, + {0x3330, -2}, + {0x3331, -2}, + {0x3332, -3}, + {0x3333, -2}, + {0x3334, -1}, + {0x3335, -2}, + {0x3336, -2}, + {0x3337, -2}, + {0x3338, -2}, + {0x3339, -2}, + {0x3372, -1}, + {0x3374, -1}, + {0x3430, -1}, + {0x3431, -3}, + {0x3432, -4}, + {0x3433, -3}, + {0x3434, -1}, + {0x3435, -2}, + {0x3436, -1}, + {0x3437, -3}, + {0x3438, -2}, + {0x3439, -2}, + {0x3474, -1}, + {0x3530, -1}, + {0x3531, -2}, + {0x3532, -2}, + {0x3533, -2}, + {0x3534, -1}, + {0x3535, -1}, + {0x3536, -1}, + {0x3537, -1}, + {0x3539, -1}, + {0x3574, -1}, + {0x3630, -1}, + {0x3631, -2}, + {0x3632, -4}, + {0x3633, -2}, + {0x3634, -1}, + {0x3635, -2}, + {0x3636, -1}, + {0x3637, -2}, + {0x3638, -2}, + {0x3639, -1}, + {0x3674, -2}, + {0x3730, -5}, + {0x3731, -2}, + {0x3732, -4}, + {0x3733, -1}, + {0x3734, -5}, + {0x3735, -3}, + {0x3736, -5}, + {0x3737, -1}, + {0x3738, -3}, + {0x3739, -3}, + {0x3774, -4}, + {0x3830, -1}, + {0x3832, -2}, + {0x3833, -1}, + {0x3834, -1}, + {0x3835, -1}, + {0x3836, -1}, + {0x3837, -1}, + {0x3838, -1}, + {0x3839, -1}, + {0x3874, -2}, + {0x3930, -2}, + {0x3931, -1}, + {0x3932, -3}, + {0x3933, -2}, + {0x3934, -2}, + {0x3935, -1}, + {0x3936, -2}, + {0x3937, -1}, + {0x3938, -2}, + {0x3939, -1}, + {0x3974, -1}, + {0x412c, -1}, + {0x4141, -2}, + {0x4142, -1}, + {0x4143, -2}, + {0x4144, -1}, + {0x4145, -1}, + {0x4146, -1}, + {0x4147, -2}, + {0x4148, -1}, + {0x4149, -1}, + {0x414a, -1}, + {0x414b, -1}, + {0x414c, -1}, + {0x414f, -2}, + {0x4150, -1}, + {0x4151, -2}, + {0x4152, -2}, + {0x4153, -2}, + {0x4154, -2}, + {0x4155, -2}, + {0x4156, -3}, + {0x4157, -2}, + {0x4158, -2}, + {0x4159, -2}, + {0x415a, -2}, + {0x4161, -1}, + {0x4162, -1}, + {0x4163, -2}, + {0x4164, -2}, + {0x4165, -2}, + {0x4166, -1}, + {0x4167, -3}, + {0x4168, -1}, + {0x416a, -2}, + {0x416b, -2}, + {0x416c, -1}, + {0x416d, -1}, + {0x416e, -1}, + {0x416f, -2}, + {0x4170, -3}, + {0x4171, -2}, + {0x4172, -1}, + {0x4173, -2}, + {0x4174, -2}, + {0x4175, -2}, + {0x4176, -2}, + {0x4177, -2}, + {0x4178, -2}, + {0x4179, -2}, + {0x417a, -2}, + {0x422c, -2}, + {0x422e, -6}, + {0x4241, -4}, + {0x4242, -1}, + {0x4243, -1}, + {0x4244, -1}, + {0x4245, -1}, + {0x4247, -1}, + {0x4249, -2}, + {0x424a, -1}, + {0x424c, -1}, + {0x424d, -1}, + {0x424f, -1}, + {0x4250, -1}, + {0x4251, -1}, + {0x4252, -1}, + {0x4253, -1}, + {0x4254, -1}, + {0x4255, -1}, + {0x4256, -1}, + {0x4257, -2}, + {0x4258, -2}, + {0x4259, -1}, + {0x425a, -4}, + {0x4261, -2}, + {0x4262, -1}, + {0x4263, -2}, + {0x4264, -2}, + {0x4265, -2}, + {0x4266, -1}, + {0x4267, -2}, + {0x4269, -1}, + {0x426a, -2}, + {0x426b, -1}, + {0x426d, -1}, + {0x426e, -1}, + {0x426f, -2}, + {0x4270, -2}, + {0x4271, -2}, + {0x4272, -2}, + {0x4273, -2}, + {0x4274, -2}, + {0x4275, -2}, + {0x4276, -1}, + {0x4277, -1}, + {0x4278, -2}, + {0x4279, -2}, + {0x427a, -2}, + {0x432c, -3}, + {0x432e, -7}, + {0x4341, -5}, + {0x4342, -1}, + {0x4343, -1}, + {0x4344, -1}, + {0x4345, -1}, + {0x4346, -1}, + {0x4347, -2}, + {0x4348, -1}, + {0x4349, -2}, + {0x434a, -2}, + {0x434b, -1}, + {0x434c, -1}, + {0x434d, -1}, + {0x434f, -1}, + {0x4350, -1}, + {0x4351, -1}, + {0x4352, -1}, + {0x4353, -2}, + {0x4354, -1}, + {0x4355, -1}, + {0x4356, -2}, + {0x4357, -1}, + {0x4358, -2}, + {0x4359, -1}, + {0x435a, -4}, + {0x4361, -1}, + {0x4362, -1}, + {0x4363, -2}, + {0x4364, -2}, + {0x4365, -2}, + {0x4366, -2}, + {0x4367, -3}, + {0x4368, -1}, + {0x4369, -1}, + {0x436a, -2}, + {0x436b, -2}, + {0x436c, -1}, + {0x436d, -1}, + {0x436e, -1}, + {0x436f, -2}, + {0x4370, -2}, + {0x4371, -2}, + {0x4372, -1}, + {0x4373, -3}, + {0x4374, -2}, + {0x4375, -2}, + {0x4376, -2}, + {0x4377, -1}, + {0x4378, -3}, + {0x4379, -2}, + {0x437a, -3}, + {0x442c, -3}, + {0x442e, -11}, + {0x4441, -7}, + {0x4442, -1}, + {0x4443, -2}, + {0x4444, -1}, + {0x4446, -1}, + {0x4447, -2}, + {0x4448, -1}, + {0x4449, -3}, + {0x444a, -2}, + {0x444b, -1}, + {0x444c, -1}, + {0x444d, -1}, + {0x444e, -1}, + {0x444f, -3}, + {0x4450, -2}, + {0x4451, -2}, + {0x4452, -2}, + {0x4453, -3}, + {0x4455, -1}, + {0x4456, -2}, + {0x4457, -1}, + {0x4458, -3}, + {0x4459, -2}, + {0x445a, -5}, + {0x4461, -2}, + {0x4462, -1}, + {0x4463, -3}, + {0x4464, -3}, + {0x4465, -4}, + {0x4466, -2}, + {0x4467, -4}, + {0x4468, -2}, + {0x4469, -2}, + {0x446a, -3}, + {0x446b, -2}, + {0x446c, -2}, + {0x446d, -1}, + {0x446e, -2}, + {0x446f, -4}, + {0x4470, -2}, + {0x4471, -2}, + {0x4472, -2}, + {0x4473, -4}, + {0x4474, -2}, + {0x4475, -3}, + {0x4476, -1}, + {0x4477, -2}, + {0x4478, -2}, + {0x4479, -2}, + {0x447a, -3}, + {0x452c, -2}, + {0x452e, -4}, + {0x4541, -3}, + {0x4542, -2}, + {0x4543, -2}, + {0x4544, -2}, + {0x4545, -1}, + {0x4546, -1}, + {0x4547, -2}, + {0x4548, -1}, + {0x4549, -2}, + {0x454a, -2}, + {0x454c, -1}, + {0x454d, -2}, + {0x454e, -1}, + {0x454f, -2}, + {0x4550, -1}, + {0x4551, -2}, + {0x4552, -2}, + {0x4553, -2}, + {0x4554, -1}, + {0x4555, -1}, + {0x4556, -2}, + {0x4557, -2}, + {0x4558, -1}, + {0x4559, -2}, + {0x455a, -2}, + {0x4562, -2}, + {0x4563, -3}, + {0x4564, -3}, + {0x4565, -3}, + {0x4566, -3}, + {0x4567, -3}, + {0x4568, -2}, + {0x4569, -3}, + {0x456a, -6}, + {0x456b, -3}, + {0x456c, -3}, + {0x456d, -3}, + {0x456e, -3}, + {0x456f, -3}, + {0x4570, -3}, + {0x4571, -3}, + {0x4572, -3}, + {0x4573, -3}, + {0x4574, -3}, + {0x4575, -3}, + {0x4576, -2}, + {0x4577, -3}, + {0x4578, -3}, + {0x4579, -3}, + {0x457a, -3}, + {0x462c, -4}, + {0x462e, -11}, + {0x4641, -8}, + {0x4642, -2}, + {0x4643, -2}, + {0x4644, -1}, + {0x4645, -1}, + {0x4646, -2}, + {0x4647, -3}, + {0x4648, -1}, + {0x4649, -2}, + {0x464a, -2}, + {0x464b, -1}, + {0x464c, -2}, + {0x464d, -2}, + {0x464e, -1}, + {0x464f, -3}, + {0x4650, -2}, + {0x4651, -3}, + {0x4652, -2}, + {0x4653, -3}, + {0x4654, -1}, + {0x4655, -1}, + {0x4656, -1}, + {0x4657, -1}, + {0x4658, -2}, + {0x4659, -1}, + {0x465a, -3}, + {0x4661, -4}, + {0x4662, -2}, + {0x4663, -4}, + {0x4664, -4}, + {0x4665, -4}, + {0x4666, -3}, + {0x4667, -5}, + {0x4668, -1}, + {0x4669, -3}, + {0x466a, -4}, + {0x466b, -2}, + {0x466c, -2}, + {0x466d, -2}, + {0x466e, -2}, + {0x466f, -5}, + {0x4670, -3}, + {0x4671, -3}, + {0x4672, -3}, + {0x4673, -4}, + {0x4674, -2}, + {0x4675, -4}, + {0x4676, -2}, + {0x4677, -2}, + {0x4678, -4}, + {0x4679, -2}, + {0x467a, -3}, + {0x472c, -3}, + {0x472e, -7}, + {0x4741, -4}, + {0x4742, -1}, + {0x4743, -2}, + {0x4744, -1}, + {0x4745, -1}, + {0x4746, -1}, + {0x4747, -2}, + {0x4749, -2}, + {0x474a, -2}, + {0x474c, -1}, + {0x474d, -2}, + {0x474e, -1}, + {0x474f, -2}, + {0x4750, -1}, + {0x4751, -2}, + {0x4752, -2}, + {0x4753, -3}, + {0x4755, -1}, + {0x4756, -1}, + {0x4757, -1}, + {0x4758, -2}, + {0x4759, -1}, + {0x475a, -4}, + {0x4761, -2}, + {0x4762, -1}, + {0x4763, -2}, + {0x4764, -2}, + {0x4765, -4}, + {0x4766, -2}, + {0x4767, -3}, + {0x4768, -2}, + {0x4769, -2}, + {0x476a, -2}, + {0x476b, -1}, + {0x476c, -1}, + {0x476d, -2}, + {0x476e, -2}, + {0x476f, -4}, + {0x4770, -1}, + {0x4771, -2}, + {0x4772, -2}, + {0x4773, -2}, + {0x4774, -1}, + {0x4775, -2}, + {0x4776, -1}, + {0x4777, -1}, + {0x4778, -2}, + {0x4779, -1}, + {0x477a, -2}, + {0x482e, -3}, + {0x4841, -1}, + {0x4861, -2}, + {0x4865, -1}, + {0x4867, -2}, + {0x486a, -2}, + {0x486f, -2}, + {0x4873, -1}, + {0x4875, -1}, + {0x4878, -1}, + {0x4879, -1}, + {0x492c, -2}, + {0x4941, -3}, + {0x4942, -1}, + {0x4943, -4}, + {0x4944, -2}, + {0x4945, -1}, + {0x4946, -1}, + {0x4947, -3}, + {0x4948, -1}, + {0x494a, -2}, + {0x494b, -1}, + {0x494c, -1}, + {0x494d, -2}, + {0x494f, -3}, + {0x4950, -1}, + {0x4951, -3}, + {0x4952, -1}, + {0x4953, -3}, + {0x4955, -1}, + {0x4956, -1}, + {0x4957, -1}, + {0x4958, -1}, + {0x4959, -1}, + {0x495a, -3}, + {0x4961, -4}, + {0x4962, -2}, + {0x4963, -3}, + {0x4964, -4}, + {0x4965, -4}, + {0x4966, -3}, + {0x4967, -4}, + {0x4968, -1}, + {0x4969, -2}, + {0x496a, -4}, + {0x496b, -2}, + {0x496c, -1}, + {0x496d, -3}, + {0x496e, -3}, + {0x496f, -4}, + {0x4970, -4}, + {0x4971, -3}, + {0x4972, -3}, + {0x4973, -4}, + {0x4974, -3}, + {0x4975, -4}, + {0x4976, -3}, + {0x4977, -3}, + {0x4978, -3}, + {0x4979, -4}, + {0x497a, -4}, + {0x4a2c, -3}, + {0x4a2e, -8}, + {0x4a41, -8}, + {0x4a42, -2}, + {0x4a43, -3}, + {0x4a44, -2}, + {0x4a45, -2}, + {0x4a46, -2}, + {0x4a47, -4}, + {0x4a48, -1}, + {0x4a49, -2}, + {0x4a4a, -3}, + {0x4a4b, -1}, + {0x4a4c, -1}, + {0x4a4d, -2}, + {0x4a4e, -1}, + {0x4a4f, -3}, + {0x4a50, -2}, + {0x4a51, -3}, + {0x4a52, -2}, + {0x4a53, -4}, + {0x4a54, -1}, + {0x4a55, -1}, + {0x4a56, -1}, + {0x4a57, -1}, + {0x4a58, -2}, + {0x4a59, -2}, + {0x4a5a, -5}, + {0x4a61, -4}, + {0x4a62, -1}, + {0x4a63, -5}, + {0x4a64, -5}, + {0x4a65, -5}, + {0x4a66, -3}, + {0x4a67, -4}, + {0x4a68, -1}, + {0x4a69, -3}, + {0x4a6a, -2}, + {0x4a6b, -2}, + {0x4a6c, -2}, + {0x4a6d, -3}, + {0x4a6e, -3}, + {0x4a6f, -6}, + {0x4a70, -4}, + {0x4a71, -4}, + {0x4a72, -3}, + {0x4a73, -5}, + {0x4a74, -3}, + {0x4a75, -6}, + {0x4a76, -3}, + {0x4a77, -3}, + {0x4a78, -5}, + {0x4a79, -4}, + {0x4a7a, -5}, + {0x4b22, -1}, + {0x4b2c, -1}, + {0x4b41, -2}, + {0x4b42, -2}, + {0x4b43, -3}, + {0x4b44, -2}, + {0x4b45, -1}, + {0x4b46, -1}, + {0x4b47, -3}, + {0x4b48, -1}, + {0x4b49, -2}, + {0x4b4a, -2}, + {0x4b4b, -1}, + {0x4b4c, -1}, + {0x4b4d, -1}, + {0x4b4e, -1}, + {0x4b4f, -3}, + {0x4b50, -1}, + {0x4b51, -3}, + {0x4b52, -1}, + {0x4b53, -2}, + {0x4b54, -2}, + {0x4b55, -1}, + {0x4b56, -2}, + {0x4b57, -2}, + {0x4b58, -2}, + {0x4b59, -2}, + {0x4b5a, -2}, + {0x4b61, -1}, + {0x4b62, -1}, + {0x4b63, -1}, + {0x4b64, -2}, + {0x4b65, -2}, + {0x4b66, -4}, + {0x4b67, -2}, + {0x4b68, -1}, + {0x4b69, -2}, + {0x4b6a, -2}, + {0x4b6b, -2}, + {0x4b6c, -1}, + {0x4b6d, -1}, + {0x4b6e, -2}, + {0x4b6f, -2}, + {0x4b70, -2}, + {0x4b71, -2}, + {0x4b72, -1}, + {0x4b73, -2}, + {0x4b74, -3}, + {0x4b75, -2}, + {0x4b76, -3}, + {0x4b77, -2}, + {0x4b78, -2}, + {0x4b79, -3}, + {0x4b7a, -2}, + {0x4c22, -3}, + {0x4c2c, -1}, + {0x4c41, -2}, + {0x4c42, -1}, + {0x4c43, -2}, + {0x4c44, -2}, + {0x4c45, -1}, + {0x4c47, -2}, + {0x4c49, -2}, + {0x4c4a, -1}, + {0x4c4b, -1}, + {0x4c4c, -1}, + {0x4c4d, -1}, + {0x4c4e, -1}, + {0x4c4f, -3}, + {0x4c50, -2}, + {0x4c51, -3}, + {0x4c52, -1}, + {0x4c53, -2}, + {0x4c54, -6}, + {0x4c55, -2}, + {0x4c56, -5}, + {0x4c57, -3}, + {0x4c58, -3}, + {0x4c59, -5}, + {0x4c5a, -2}, + {0x4c61, -1}, + {0x4c62, -1}, + {0x4c63, -1}, + {0x4c64, -1}, + {0x4c65, -1}, + {0x4c66, -3}, + {0x4c67, -1}, + {0x4c68, -1}, + {0x4c69, -1}, + {0x4c6a, -5}, + {0x4c6b, -1}, + {0x4c6c, -1}, + {0x4c6d, -1}, + {0x4c6e, -1}, + {0x4c6f, -1}, + {0x4c70, -1}, + {0x4c71, -1}, + {0x4c72, -1}, + {0x4c73, -1}, + {0x4c74, -2}, + {0x4c75, -2}, + {0x4c76, -2}, + {0x4c77, -2}, + {0x4c78, -1}, + {0x4c79, -3}, + {0x4c7a, -1}, + {0x4d2c, -1}, + {0x4d2e, -4}, + {0x4d41, -3}, + {0x4d42, -1}, + {0x4d43, -1}, + {0x4d44, -1}, + {0x4d46, -1}, + {0x4d47, -1}, + {0x4d49, -1}, + {0x4d4a, -1}, + {0x4d4d, -1}, + {0x4d4f, -1}, + {0x4d50, -1}, + {0x4d51, -1}, + {0x4d52, -1}, + {0x4d53, -2}, + {0x4d54, -1}, + {0x4d56, -1}, + {0x4d58, -1}, + {0x4d59, -1}, + {0x4d5a, -2}, + {0x4d61, -1}, + {0x4d63, -2}, + {0x4d64, -2}, + {0x4d65, -2}, + {0x4d66, -1}, + {0x4d67, -2}, + {0x4d69, -1}, + {0x4d6a, -3}, + {0x4d6d, -1}, + {0x4d6e, -1}, + {0x4d6f, -1}, + {0x4d70, -1}, + {0x4d71, -2}, + {0x4d72, -1}, + {0x4d73, -2}, + {0x4d74, -1}, + {0x4d75, -1}, + {0x4d77, -1}, + {0x4d78, -2}, + {0x4d79, -1}, + {0x4d7a, -1}, + {0x4e2e, -2}, + {0x4e41, -2}, + {0x4e53, -1}, + {0x4e58, -1}, + {0x4e5a, -2}, + {0x4e61, -1}, + {0x4e64, -1}, + {0x4e65, -1}, + {0x4e67, -1}, + {0x4e69, -1}, + {0x4e6a, -1}, + {0x4e6f, -1}, + {0x4e71, -1}, + {0x4e73, -1}, + {0x4e75, -1}, + {0x4e78, -1}, + {0x4e79, -1}, + {0x4f22, -1}, + {0x4f2c, -3}, + {0x4f2e, -8}, + {0x4f41, -6}, + {0x4f42, -1}, + {0x4f43, -2}, + {0x4f44, -1}, + {0x4f45, -1}, + {0x4f46, -1}, + {0x4f47, -2}, + {0x4f49, -2}, + {0x4f4a, -3}, + {0x4f4b, -1}, + {0x4f4c, -1}, + {0x4f4d, -2}, + {0x4f4e, -1}, + {0x4f4f, -2}, + {0x4f50, -2}, + {0x4f51, -2}, + {0x4f52, -2}, + {0x4f53, -3}, + {0x4f54, -2}, + {0x4f55, -2}, + {0x4f56, -2}, + {0x4f57, -1}, + {0x4f58, -4}, + {0x4f59, -3}, + {0x4f5a, -5}, + {0x4f61, -2}, + {0x4f62, -2}, + {0x4f63, -2}, + {0x4f64, -4}, + {0x4f65, -3}, + {0x4f66, -2}, + {0x4f67, -5}, + {0x4f68, -1}, + {0x4f69, -1}, + {0x4f6a, -4}, + {0x4f6b, -2}, + {0x4f6c, -2}, + {0x4f6d, -1}, + {0x4f6e, -1}, + {0x4f6f, -4}, + {0x4f70, -2}, + {0x4f71, -2}, + {0x4f72, -1}, + {0x4f73, -4}, + {0x4f74, -2}, + {0x4f75, -3}, + {0x4f76, -1}, + {0x4f77, -1}, + {0x4f78, -2}, + {0x4f79, -2}, + {0x4f7a, -3}, + {0x502c, -3}, + {0x502e, -9}, + {0x5041, -8}, + {0x5043, -2}, + {0x5044, -1}, + {0x5045, -1}, + {0x5046, -1}, + {0x5047, -4}, + {0x5048, -2}, + {0x5049, -3}, + {0x504a, -2}, + {0x504b, -1}, + {0x504c, -2}, + {0x504d, -2}, + {0x504f, -3}, + {0x5050, -2}, + {0x5051, -3}, + {0x5052, -2}, + {0x5053, -5}, + {0x5055, -1}, + {0x5056, -1}, + {0x5057, -1}, + {0x5058, -3}, + {0x5059, -2}, + {0x505a, -5}, + {0x5061, -4}, + {0x5062, -1}, + {0x5063, -4}, + {0x5064, -4}, + {0x5065, -5}, + {0x5066, -2}, + {0x5067, -5}, + {0x5068, -1}, + {0x5069, -1}, + {0x506a, -3}, + {0x506b, -1}, + {0x506c, -1}, + {0x506d, -2}, + {0x506e, -2}, + {0x506f, -4}, + {0x5070, -2}, + {0x5071, -3}, + {0x5072, -2}, + {0x5073, -5}, + {0x5074, -2}, + {0x5075, -3}, + {0x5076, -1}, + {0x5077, -2}, + {0x5078, -2}, + {0x5079, -3}, + {0x507a, -2}, + {0x5129, -4}, + {0x512c, -1}, + {0x512e, -3}, + {0x5141, -3}, + {0x5154, -2}, + {0x5155, -2}, + {0x5156, -3}, + {0x5157, -2}, + {0x5159, -3}, + {0x5161, -2}, + {0x5163, -1}, + {0x5164, -2}, + {0x5165, -2}, + {0x5166, -1}, + {0x5167, -3}, + {0x5173, -2}, + {0x5174, -1}, + {0x5175, -1}, + {0x5177, -1}, + {0x5178, -1}, + {0x5179, -1}, + {0x517a, -1}, + {0x5241, -2}, + {0x5243, -2}, + {0x5244, -1}, + {0x5245, -1}, + {0x5247, -2}, + {0x5249, -1}, + {0x524a, -1}, + {0x524b, -1}, + {0x524c, -1}, + {0x524d, -1}, + {0x524f, -3}, + {0x5250, -1}, + {0x5251, -2}, + {0x5252, -1}, + {0x5253, -2}, + {0x5254, -2}, + {0x5255, -2}, + {0x5256, -3}, + {0x5257, -2}, + {0x5258, -3}, + {0x5259, -3}, + {0x525a, -2}, + {0x5261, -1}, + {0x5262, -1}, + {0x5263, -1}, + {0x5264, -1}, + {0x5265, -2}, + {0x5266, -1}, + {0x5267, -2}, + {0x5268, -1}, + {0x5269, -1}, + {0x526a, -2}, + {0x526b, -1}, + {0x526d, -1}, + {0x526e, -1}, + {0x526f, -2}, + {0x5270, -1}, + {0x5271, -2}, + {0x5273, -1}, + {0x5274, -2}, + {0x5275, -1}, + {0x5276, -1}, + {0x5277, -1}, + {0x5278, -2}, + {0x5279, -2}, + {0x527a, -1}, + {0x532c, -2}, + {0x532e, -6}, + {0x5341, -5}, + {0x5342, -1}, + {0x5343, -2}, + {0x5344, -2}, + {0x5345, -1}, + {0x5346, -2}, + {0x5347, -2}, + {0x5348, -1}, + {0x5349, -3}, + {0x534a, -3}, + {0x534b, -1}, + {0x534c, -2}, + {0x534d, -2}, + {0x534e, -1}, + {0x534f, -2}, + {0x5350, -1}, + {0x5351, -3}, + {0x5352, -2}, + {0x5353, -3}, + {0x5354, -1}, + {0x5355, -1}, + {0x5356, -2}, + {0x5357, -1}, + {0x5358, -2}, + {0x5359, -2}, + {0x535a, -4}, + {0x5361, -2}, + {0x5362, -1}, + {0x5363, -2}, + {0x5364, -2}, + {0x5365, -2}, + {0x5366, -2}, + {0x5367, -2}, + {0x5368, -1}, + {0x5369, -2}, + {0x536a, -3}, + {0x536b, -2}, + {0x536c, -2}, + {0x536d, -2}, + {0x536e, -2}, + {0x536f, -2}, + {0x5370, -3}, + {0x5371, -2}, + {0x5372, -2}, + {0x5373, -2}, + {0x5374, -4}, + {0x5375, -2}, + {0x5376, -3}, + {0x5377, -3}, + {0x5378, -4}, + {0x5379, -3}, + {0x537a, -3}, + {0x542c, -4}, + {0x542d, -6}, + {0x542e, -10}, + {0x543b, -7}, + {0x5441, -9}, + {0x5442, -2}, + {0x5443, -6}, + {0x5444, -2}, + {0x5445, -2}, + {0x5446, -2}, + {0x5447, -7}, + {0x5448, -1}, + {0x5449, -3}, + {0x544a, -3}, + {0x544b, -1}, + {0x544c, -2}, + {0x544d, -2}, + {0x544e, -1}, + {0x544f, -5}, + {0x5450, -2}, + {0x5451, -6}, + {0x5452, -2}, + {0x5453, -6}, + {0x5454, -1}, + {0x5455, -1}, + {0x5456, -1}, + {0x5457, -2}, + {0x5458, -2}, + {0x5459, -2}, + {0x545a, -4}, + {0x5461, -5}, + {0x5463, -4}, + {0x5464, -5}, + {0x5465, -7}, + {0x5466, -3}, + {0x5467, -5}, + {0x5468, -1}, + {0x5469, -1}, + {0x546a, -3}, + {0x546b, -2}, + {0x546c, -1}, + {0x546d, -4}, + {0x546e, -3}, + {0x546f, -6}, + {0x5470, -5}, + {0x5471, -6}, + {0x5472, -4}, + {0x5473, -6}, + {0x5474, -4}, + {0x5475, -5}, + {0x5476, -4}, + {0x5477, -6}, + {0x5478, -6}, + {0x5479, -5}, + {0x547a, -4}, + {0x552c, -1}, + {0x552e, -3}, + {0x5541, -2}, + {0x5547, -1}, + {0x5549, -2}, + {0x554a, -1}, + {0x5553, -1}, + {0x5558, -1}, + {0x555a, -2}, + {0x5563, -1}, + {0x5564, -1}, + {0x5566, -1}, + {0x5567, -2}, + {0x5569, -1}, + {0x556a, -2}, + {0x556d, -1}, + {0x556e, -1}, + {0x556f, -1}, + {0x5570, -1}, + {0x5571, -1}, + {0x5572, -1}, + {0x5573, -1}, + {0x5574, -1}, + {0x5575, -1}, + {0x5578, -2}, + {0x5579, -1}, + {0x557a, -1}, + {0x562c, -4}, + {0x562d, -5}, + {0x562e, -8}, + {0x563b, -6}, + {0x5641, -8}, + {0x5642, -2}, + {0x5643, -5}, + {0x5644, -2}, + {0x5645, -2}, + {0x5646, -3}, + {0x5647, -6}, + {0x5648, -1}, + {0x5649, -3}, + {0x564a, -3}, + {0x564b, -2}, + {0x564c, -2}, + {0x564d, -3}, + {0x564e, -1}, + {0x564f, -5}, + {0x5650, -3}, + {0x5651, -6}, + {0x5652, -3}, + {0x5653, -6}, + {0x5654, -1}, + {0x5655, -2}, + {0x5656, -1}, + {0x5657, -2}, + {0x5658, -2}, + {0x5659, -1}, + {0x565a, -5}, + {0x5661, -4}, + {0x5662, -1}, + {0x5663, -4}, + {0x5664, -4}, + {0x5665, -5}, + {0x5666, -3}, + {0x5667, -5}, + {0x5668, -1}, + {0x5669, -2}, + {0x566a, -4}, + {0x566b, -3}, + {0x566c, -2}, + {0x566d, -3}, + {0x566e, -3}, + {0x566f, -5}, + {0x5670, -4}, + {0x5671, -4}, + {0x5672, -3}, + {0x5673, -5}, + {0x5674, -2}, + {0x5675, -4}, + {0x5676, -2}, + {0x5677, -3}, + {0x5678, -4}, + {0x5679, -4}, + {0x567a, -4}, + {0x572c, -3}, + {0x572d, -4}, + {0x572e, -8}, + {0x573b, -5}, + {0x5741, -8}, + {0x5742, -2}, + {0x5743, -4}, + {0x5744, -2}, + {0x5745, -2}, + {0x5746, -2}, + {0x5747, -5}, + {0x5749, -2}, + {0x574a, -2}, + {0x574c, -1}, + {0x574d, -2}, + {0x574e, -1}, + {0x574f, -4}, + {0x5750, -2}, + {0x5751, -5}, + {0x5752, -2}, + {0x5753, -5}, + {0x5754, -1}, + {0x5755, -1}, + {0x5756, -1}, + {0x5758, -2}, + {0x5759, -1}, + {0x575a, -4}, + {0x5761, -3}, + {0x5763, -3}, + {0x5764, -5}, + {0x5765, -5}, + {0x5766, -2}, + {0x5767, -4}, + {0x5768, -1}, + {0x5769, -2}, + {0x576a, -3}, + {0x576b, -2}, + {0x576c, -1}, + {0x576d, -2}, + {0x576e, -2}, + {0x576f, -5}, + {0x5770, -3}, + {0x5771, -3}, + {0x5772, -2}, + {0x5773, -3}, + {0x5774, -2}, + {0x5775, -4}, + {0x5776, -2}, + {0x5778, -3}, + {0x5779, -3}, + {0x577a, -3}, + {0x582c, -2}, + {0x5841, -3}, + {0x5842, -2}, + {0x5843, -3}, + {0x5844, -2}, + {0x5845, -2}, + {0x5846, -2}, + {0x5847, -4}, + {0x5849, -2}, + {0x584a, -2}, + {0x584b, -1}, + {0x584c, -2}, + {0x584d, -1}, + {0x584e, -2}, + {0x584f, -3}, + {0x5850, -2}, + {0x5851, -3}, + {0x5852, -2}, + {0x5853, -3}, + {0x5854, -1}, + {0x5855, -2}, + {0x5856, -2}, + {0x5858, -2}, + {0x5859, -2}, + {0x585a, -3}, + {0x5861, -2}, + {0x5862, -1}, + {0x5863, -2}, + {0x5864, -2}, + {0x5865, -3}, + {0x5866, -3}, + {0x5867, -2}, + {0x5868, -1}, + {0x5869, -2}, + {0x586a, -2}, + {0x586b, -2}, + {0x586c, -2}, + {0x586d, -2}, + {0x586e, -2}, + {0x586f, -2}, + {0x5870, -2}, + {0x5871, -2}, + {0x5872, -2}, + {0x5873, -2}, + {0x5874, -3}, + {0x5875, -3}, + {0x5876, -3}, + {0x5877, -2}, + {0x5878, -3}, + {0x5879, -3}, + {0x587a, -2}, + {0x592c, -3}, + {0x592e, -8}, + {0x593b, -6}, + {0x5941, -8}, + {0x5942, -2}, + {0x5943, -5}, + {0x5944, -1}, + {0x5945, -1}, + {0x5946, -2}, + {0x5947, -6}, + {0x5948, -1}, + {0x5949, -2}, + {0x594a, -3}, + {0x594b, -1}, + {0x594c, -2}, + {0x594d, -2}, + {0x594e, -1}, + {0x594f, -5}, + {0x5950, -2}, + {0x5951, -5}, + {0x5952, -2}, + {0x5953, -6}, + {0x5954, -2}, + {0x5955, -2}, + {0x5956, -2}, + {0x5957, -2}, + {0x5958, -2}, + {0x5959, -2}, + {0x595a, -5}, + {0x5961, -5}, + {0x5962, -1}, + {0x5963, -5}, + {0x5964, -5}, + {0x5965, -6}, + {0x5966, -3}, + {0x5967, -5}, + {0x5968, -1}, + {0x5969, -2}, + {0x596a, -5}, + {0x596b, -2}, + {0x596c, -2}, + {0x596d, -3}, + {0x596e, -3}, + {0x596f, -4}, + {0x5970, -4}, + {0x5971, -5}, + {0x5972, -3}, + {0x5973, -5}, + {0x5974, -3}, + {0x5975, -5}, + {0x5976, -3}, + {0x5977, -3}, + {0x5978, -3}, + {0x5979, -4}, + {0x597a, -4}, + {0x5a2c, -1}, + {0x5a2e, -3}, + {0x5a41, -3}, + {0x5a42, -2}, + {0x5a43, -3}, + {0x5a44, -2}, + {0x5a45, -2}, + {0x5a46, -2}, + {0x5a47, -3}, + {0x5a48, -1}, + {0x5a49, -2}, + {0x5a4a, -2}, + {0x5a4b, -1}, + {0x5a4c, -2}, + {0x5a4d, -1}, + {0x5a4e, -1}, + {0x5a4f, -3}, + {0x5a50, -1}, + {0x5a51, -3}, + {0x5a52, -2}, + {0x5a53, -3}, + {0x5a54, -1}, + {0x5a55, -1}, + {0x5a56, -1}, + {0x5a57, -1}, + {0x5a58, -2}, + {0x5a59, -2}, + {0x5a5a, -3}, + {0x5a61, -2}, + {0x5a62, -1}, + {0x5a63, -2}, + {0x5a64, -3}, + {0x5a65, -2}, + {0x5a66, -2}, + {0x5a67, -2}, + {0x5a68, -1}, + {0x5a69, -2}, + {0x5a6a, -2}, + {0x5a6b, -2}, + {0x5a6c, -1}, + {0x5a6d, -1}, + {0x5a6e, -1}, + {0x5a6f, -3}, + {0x5a70, -2}, + {0x5a71, -2}, + {0x5a72, -1}, + {0x5a73, -3}, + {0x5a74, -3}, + {0x5a75, -3}, + {0x5a76, -2}, + {0x5a77, -3}, + {0x5a78, -2}, + {0x5a79, -2}, + {0x5a7a, -2}, + {0x613b, -3}, + {0x6161, -1}, + {0x6162, -1}, + {0x6163, -1}, + {0x6164, -1}, + {0x6167, -2}, + {0x616a, -1}, + {0x6170, -1}, + {0x6171, -1}, + {0x6173, -1}, + {0x6174, -2}, + {0x6175, -1}, + {0x6176, -1}, + {0x6177, -1}, + {0x6178, -1}, + {0x6179, -2}, + {0x617a, -1}, + {0x6222, -1}, + {0x622e, -7}, + {0x623b, -3}, + {0x6261, -2}, + {0x6262, -2}, + {0x6263, -1}, + {0x6264, -2}, + {0x6265, -1}, + {0x6267, -2}, + {0x626a, -2}, + {0x626b, -1}, + {0x626c, -1}, + {0x626f, -1}, + {0x6270, -1}, + {0x6271, -2}, + {0x6273, -2}, + {0x6274, -1}, + {0x6275, -1}, + {0x6277, -1}, + {0x6278, -2}, + {0x6279, -1}, + {0x627a, -1}, + {0x632c, -2}, + {0x632e, -7}, + {0x633b, -3}, + {0x6367, -2}, + {0x636a, -1}, + {0x636b, -1}, + {0x636f, -1}, + {0x6373, -1}, + {0x6374, -1}, + {0x6378, -2}, + {0x6379, -1}, + {0x637a, -1}, + {0x642c, -2}, + {0x642e, -2}, + {0x643b, -4}, + {0x6461, -1}, + {0x6463, -2}, + {0x6464, -2}, + {0x6465, -1}, + {0x6466, -1}, + {0x6467, -2}, + {0x646a, -2}, + {0x646b, -1}, + {0x646c, -1}, + {0x646d, -1}, + {0x646e, -1}, + {0x646f, -2}, + {0x6470, -1}, + {0x6471, -1}, + {0x6473, -2}, + {0x6474, -1}, + {0x6475, -2}, + {0x6476, -1}, + {0x6478, -1}, + {0x6479, -1}, + {0x647a, -2}, + {0x652c, -2}, + {0x652e, -2}, + {0x653b, -3}, + {0x6561, -1}, + {0x6562, -1}, + {0x6563, -1}, + {0x6564, -1}, + {0x6565, -1}, + {0x6566, -1}, + {0x6567, -2}, + {0x656a, -2}, + {0x656f, -1}, + {0x6570, -2}, + {0x6571, -1}, + {0x6573, -1}, + {0x6574, -1}, + {0x6575, -1}, + {0x6577, -1}, + {0x6578, -2}, + {0x6579, -1}, + {0x657a, -2}, + {0x6629, -4}, + {0x662c, -5}, + {0x662e, -4}, + {0x6661, -3}, + {0x6662, -1}, + {0x6663, -2}, + {0x6664, -2}, + {0x6665, -3}, + {0x6666, -3}, + {0x6667, -3}, + {0x6668, -1}, + {0x6669, -2}, + {0x666a, -5}, + {0x666b, -1}, + {0x666c, -2}, + {0x666d, -1}, + {0x666e, -2}, + {0x666f, -4}, + {0x6670, -3}, + {0x6671, -3}, + {0x6672, -1}, + {0x6673, -3}, + {0x6674, -2}, + {0x6675, -2}, + {0x6676, -1}, + {0x6677, -1}, + {0x6678, -3}, + {0x6679, -2}, + {0x667a, -2}, + {0x672c, -2}, + {0x672e, -2}, + {0x673b, -4}, + {0x6761, -1}, + {0x6762, -1}, + {0x6763, -2}, + {0x6764, -2}, + {0x6765, -2}, + {0x6766, -1}, + {0x6767, -3}, + {0x6768, -1}, + {0x6769, -1}, + {0x676b, -1}, + {0x676c, -1}, + {0x676d, -1}, + {0x676e, -1}, + {0x676f, -3}, + {0x6770, -1}, + {0x6771, -1}, + {0x6772, -1}, + {0x6773, -2}, + {0x6774, -1}, + {0x6775, -1}, + {0x6777, -1}, + {0x6778, -2}, + {0x6779, -1}, + {0x677a, -1}, + {0x6822, -2}, + {0x682e, -1}, + {0x683b, -2}, + {0x6867, -1}, + {0x686a, -1}, + {0x686b, -1}, + {0x686f, -1}, + {0x6870, -1}, + {0x6871, -1}, + {0x6873, -1}, + {0x6878, -1}, + {0x6879, -1}, + {0x692c, -2}, + {0x692e, -2}, + {0x693b, -3}, + {0x6961, -1}, + {0x6962, -1}, + {0x6963, -1}, + {0x6965, -1}, + {0x6966, -1}, + {0x6967, -2}, + {0x696a, -2}, + {0x696b, -1}, + {0x696c, -1}, + {0x696f, -1}, + {0x6970, -1}, + {0x6971, -1}, + {0x6972, -1}, + {0x6973, -2}, + {0x6974, -1}, + {0x6975, -1}, + {0x6977, -1}, + {0x6978, -2}, + {0x6979, -1}, + {0x697a, -2}, + {0x6a2e, -1}, + {0x6a3b, -1}, + {0x6a6f, -1}, + {0x6a70, -1}, + {0x6a71, -1}, + {0x6a73, -1}, + {0x6a74, -1}, + {0x6b22, -1}, + {0x6b2c, -3}, + {0x6b2e, -3}, + {0x6b3b, -4}, + {0x6b61, -3}, + {0x6b62, -1}, + {0x6b63, -3}, + {0x6b64, -3}, + {0x6b65, -3}, + {0x6b66, -3}, + {0x6b67, -4}, + {0x6b68, -1}, + {0x6b69, -2}, + {0x6b6a, -3}, + {0x6b6b, -2}, + {0x6b6c, -1}, + {0x6b6d, -2}, + {0x6b6e, -2}, + {0x6b6f, -3}, + {0x6b70, -3}, + {0x6b71, -3}, + {0x6b72, -2}, + {0x6b73, -3}, + {0x6b74, -2}, + {0x6b75, -2}, + {0x6b76, -2}, + {0x6b77, -2}, + {0x6b78, -2}, + {0x6b79, -3}, + {0x6b7a, -2}, + {0x6c2c, -2}, + {0x6c2e, -1}, + {0x6c3b, -3}, + {0x6c41, -3}, + {0x6c54, -2}, + {0x6c56, -2}, + {0x6c57, -2}, + {0x6c59, -2}, + {0x6c61, -1}, + {0x6c62, -1}, + {0x6c63, -1}, + {0x6c65, -1}, + {0x6c66, -2}, + {0x6c67, -2}, + {0x6c6a, -1}, + {0x6c6b, -1}, + {0x6c6d, -1}, + {0x6c6e, -1}, + {0x6c6f, -1}, + {0x6c70, -2}, + {0x6c71, -2}, + {0x6c73, -1}, + {0x6c74, -1}, + {0x6c75, -1}, + {0x6c76, -1}, + {0x6c77, -1}, + {0x6c78, -1}, + {0x6c79, -1}, + {0x6c7a, -2}, + {0x6d2c, -1}, + {0x6d2e, -1}, + {0x6d3b, -3}, + {0x6d64, -1}, + {0x6d67, -1}, + {0x6d6a, -2}, + {0x6d70, -1}, + {0x6d71, -1}, + {0x6d73, -1}, + {0x6d75, -1}, + {0x6d78, -1}, + {0x6d79, -1}, + {0x6e2c, -1}, + {0x6e2e, -2}, + {0x6e3b, -3}, + {0x6e61, -1}, + {0x6e62, -1}, + {0x6e63, -1}, + {0x6e64, -1}, + {0x6e65, -1}, + {0x6e66, -1}, + {0x6e67, -2}, + {0x6e6a, -2}, + {0x6e6d, -1}, + {0x6e6e, -1}, + {0x6e6f, -1}, + {0x6e70, -2}, + {0x6e71, -1}, + {0x6e73, -1}, + {0x6e74, -1}, + {0x6e75, -1}, + {0x6e76, -1}, + {0x6e77, -1}, + {0x6e78, -1}, + {0x6e79, -2}, + {0x6e7a, -1}, + {0x6f2c, -2}, + {0x6f2e, -3}, + {0x6f3b, -4}, + {0x6f61, -1}, + {0x6f62, -1}, + {0x6f63, -1}, + {0x6f64, -1}, + {0x6f65, -1}, + {0x6f67, -2}, + {0x6f6a, -2}, + {0x6f6b, -1}, + {0x6f6c, -1}, + {0x6f6f, -1}, + {0x6f70, -1}, + {0x6f71, -1}, + {0x6f73, -2}, + {0x6f75, -1}, + {0x6f78, -2}, + {0x6f79, -1}, + {0x6f7a, -1}, + {0x7027, -1}, + {0x702c, -2}, + {0x702e, -3}, + {0x703b, -3}, + {0x7061, -1}, + {0x7062, -1}, + {0x7063, -2}, + {0x7064, -2}, + {0x7065, -2}, + {0x7066, -1}, + {0x7067, -2}, + {0x7068, -1}, + {0x706a, -1}, + {0x706b, -1}, + {0x706c, -1}, + {0x706d, -1}, + {0x706e, -1}, + {0x706f, -2}, + {0x7070, -2}, + {0x7071, -2}, + {0x7073, -2}, + {0x7074, -1}, + {0x7075, -1}, + {0x7076, -1}, + {0x7077, -1}, + {0x7078, -2}, + {0x7079, -1}, + {0x707a, -2}, + {0x7122, -3}, + {0x7127, -3}, + {0x712e, -1}, + {0x713b, -2}, + {0x7161, -3}, + {0x7162, -2}, + {0x7163, -3}, + {0x7164, -3}, + {0x7165, -2}, + {0x7166, -3}, + {0x7167, -3}, + {0x7168, -2}, + {0x7169, -2}, + {0x716b, -1}, + {0x716c, -2}, + {0x716d, -1}, + {0x716e, -1}, + {0x716f, -3}, + {0x7170, -2}, + {0x7171, -5}, + {0x7172, -2}, + {0x7173, -4}, + {0x7174, -4}, + {0x7175, -2}, + {0x7176, -3}, + {0x7177, -2}, + {0x7178, -3}, + {0x7179, -2}, + {0x717a, -2}, + {0x7227, -1}, + {0x722c, -4}, + {0x722d, -3}, + {0x722e, -6}, + {0x723b, -4}, + {0x7261, -4}, + {0x7262, -2}, + {0x7263, -5}, + {0x7264, -6}, + {0x7265, -4}, + {0x7266, -3}, + {0x7267, -6}, + {0x7268, -2}, + {0x7269, -2}, + {0x726a, -3}, + {0x726b, -2}, + {0x726c, -3}, + {0x726d, -2}, + {0x726e, -2}, + {0x726f, -5}, + {0x7270, -3}, + {0x7271, -3}, + {0x7272, -2}, + {0x7273, -5}, + {0x7274, -2}, + {0x7275, -3}, + {0x7276, -1}, + {0x7277, -2}, + {0x7278, -3}, + {0x7279, -2}, + {0x727a, -3}, + {0x732c, -2}, + {0x732e, -3}, + {0x733b, -4}, + {0x7361, -2}, + {0x7362, -1}, + {0x7363, -2}, + {0x7364, -2}, + {0x7365, -1}, + {0x7366, -2}, + {0x7367, -3}, + {0x7368, -1}, + {0x7369, -1}, + {0x736a, -2}, + {0x736b, -1}, + {0x736c, -1}, + {0x736d, -1}, + {0x736e, -1}, + {0x736f, -2}, + {0x7370, -2}, + {0x7371, -2}, + {0x7372, -1}, + {0x7373, -2}, + {0x7374, -1}, + {0x7375, -1}, + {0x7377, -2}, + {0x7378, -2}, + {0x7379, -2}, + {0x737a, -2}, + {0x742c, -2}, + {0x742e, -2}, + {0x743b, -3}, + {0x7461, -1}, + {0x7462, -1}, + {0x7463, -1}, + {0x7464, -2}, + {0x7465, -1}, + {0x7466, -1}, + {0x7467, -2}, + {0x746a, -2}, + {0x746b, -1}, + {0x746f, -2}, + {0x7470, -1}, + {0x7471, -1}, + {0x7473, -2}, + {0x7474, -5}, + {0x7475, -1}, + {0x7477, -1}, + {0x7478, -2}, + {0x7479, -1}, + {0x747a, -2}, + {0x7522, 1}, + {0x752c, -1}, + {0x752e, -1}, + {0x753b, -3}, + {0x7563, -1}, + {0x7564, -1}, + {0x7567, -1}, + {0x756a, -1}, + {0x756f, -1}, + {0x7570, -1}, + {0x7571, -1}, + {0x7573, -2}, + {0x7575, -1}, + {0x7578, -1}, + {0x757a, -1}, + {0x762c, -3}, + {0x762e, -4}, + {0x763b, -3}, + {0x7661, -3}, + {0x7663, -2}, + {0x7664, -3}, + {0x7665, -2}, + {0x7666, -1}, + {0x7667, -3}, + {0x7669, -1}, + {0x766a, -2}, + {0x766d, -1}, + {0x766e, -1}, + {0x766f, -2}, + {0x7670, -2}, + {0x7671, -2}, + {0x7672, -1}, + {0x7673, -3}, + {0x7674, -1}, + {0x7675, -2}, + {0x7677, -1}, + {0x7678, -2}, + {0x7679, -1}, + {0x767a, -2}, + {0x772c, -3}, + {0x772e, -3}, + {0x773b, -4}, + {0x7761, -2}, + {0x7763, -2}, + {0x7764, -3}, + {0x7765, -3}, + {0x7766, -1}, + {0x7767, -4}, + {0x7768, -1}, + {0x776a, -2}, + {0x776b, -2}, + {0x776c, -1}, + {0x776f, -3}, + {0x7770, -1}, + {0x7771, -2}, + {0x7773, -2}, + {0x7775, -2}, + {0x7778, -1}, + {0x7779, -1}, + {0x777a, -2}, + {0x782c, -2}, + {0x782e, -3}, + {0x783b, -4}, + {0x7861, -2}, + {0x7862, -1}, + {0x7863, -2}, + {0x7864, -3}, + {0x7865, -2}, + {0x7866, -3}, + {0x7867, -3}, + {0x7869, -1}, + {0x786a, -3}, + {0x786b, -1}, + {0x786c, -1}, + {0x786d, -1}, + {0x786e, -1}, + {0x786f, -3}, + {0x7870, -2}, + {0x7871, -3}, + {0x7872, -1}, + {0x7873, -2}, + {0x7874, -2}, + {0x7875, -2}, + {0x7876, -2}, + {0x7877, -2}, + {0x7878, -4}, + {0x7879, -2}, + {0x787a, -2}, + {0x792c, -5}, + {0x792e, -5}, + {0x793b, -4}, + {0x7961, -4}, + {0x7962, -1}, + {0x7963, -4}, + {0x7964, -5}, + {0x7965, -4}, + {0x7966, -2}, + {0x7967, -5}, + {0x7968, -1}, + {0x7969, -1}, + {0x796a, -3}, + {0x796b, -2}, + {0x796c, -1}, + {0x796d, -2}, + {0x796e, -1}, + {0x796f, -5}, + {0x7970, -2}, + {0x7971, -3}, + {0x7972, -1}, + {0x7973, -3}, + {0x7974, -1}, + {0x7975, -2}, + {0x7976, -1}, + {0x7977, -1}, + {0x7978, -3}, + {0x7979, -2}, + {0x797a, -3}, + {0x7a2c, -2}, + {0x7a2e, -1}, + {0x7a3b, -3}, + {0x7a61, -1}, + {0x7a63, -2}, + {0x7a64, -3}, + {0x7a65, -3}, + {0x7a66, -2}, + {0x7a67, -2}, + {0x7a69, -1}, + {0x7a6a, -2}, + {0x7a6b, -1}, + {0x7a6d, -1}, + {0x7a6e, -1}, + {0x7a6f, -1}, + {0x7a70, -2}, + {0x7a71, -2}, + {0x7a73, -2}, + {0x7a74, -1}, + {0x7a75, -2}, + {0x7a78, -2}, + {0x7a79, -1}, + {0x7a7a, -3}, +}}; + +auto pair_key(std::char_t left, std::char_t right) -> std::uint16_t { + auto l = static_cast(static_cast(left)); + auto r = static_cast(static_cast(right)); + return static_cast((l << 8U) | r); +} + +auto empty_glyph() -> vamp_style::font_glyph { + return { + .alpha = {}, + .width = 0, + .advance = 8, + }; +} + +} + +auto vamp_style::ui_font_glyph(std::char_t value) -> vamp_style::font_glyph { + switch (value) { + case ' ': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 0, + .advance = 7, + }; + case '!': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x0b, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0d, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0b, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x0c, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x05, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0c, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 6, + .advance = 7, + }; + case '"': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x05, 0x05, 0x00, 0x00, 0x00, 0x04, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0b, 0x0f, 0x09, 0x00, 0x01, 0x0a, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0x0f, 0x0f, 0x0a, 0x00, 0x08, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x0f, 0x0f, 0x0a, 0x00, 0x0a, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0x0f, 0x0f, 0x09, 0x00, 0x0a, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0x0f, 0x0e, 0x02, 0x00, 0x0c, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0x09, 0x01, 0x00, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 10, + .advance = 11, + }; + case '#': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0d, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x0e, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0d, 0x00, 0x01, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x0b, 0x03, 0x04, 0x05, 0x0a, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x0c, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0d, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x06, 0x05, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0x09, 0x08, 0x0c, 0x0f, 0x0f, 0x0c, 0x03, 0x02, 0x01, 0x06, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0c, 0x05, 0x06, 0x07, 0x0b, 0x0f, 0x0f, 0x0f, 0x0d, 0x0e, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0b, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x0e, 0x0f, 0x0f, 0x0f, 0x08, 0x08, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x09, 0x08, 0x0c, 0x0f, 0x0f, 0x0a, 0x01, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0c, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 20, + .advance = 21, + }; + case '$': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x08, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x08, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0b, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x0d, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x04, 0x0f, 0x0d, 0x01, 0x02, 0x0e, 0x0d, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x0e, 0x0f, 0x07, 0x00, 0x00, 0x0d, 0x08, 0x02, 0x0b, 0x0f, 0x0e, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x0c, 0x08, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x0c, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x0b, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x0a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x0f, 0x09, 0x00, 0x0a, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x0f, 0x0f, 0x0d, 0x0d, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x0d, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0c, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x08, 0x0d, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0d, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x09, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0d, 0x0f, 0x0f, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x01, 0x0b, 0x0f, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x00, 0x01, 0x0d, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x01, 0x00, 0x09, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x08, 0x00, 0x00, 0x04, 0x0f, 0x01, 0x00, 0x09, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x0c, 0x0f, 0x0f, 0x08, 0x00, 0x03, 0x0f, 0x02, 0x00, 0x0b, 0x0f, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x0f, 0x0f, 0x0b, 0x06, 0x0f, 0x02, 0x01, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x0d, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x09, 0x09, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x09, 0x0d, 0x0f, 0x0f, 0x09, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 16, + .advance = 18, + }; + case '%': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0d, 0x0f, 0x0f, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0a, 0x08, 0x0f, 0x0f, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x05, 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x03, 0x0f, 0x0d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x0d, 0x0f, 0x0e, 0x01, 0x00, 0x00, 0x0c, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x0e, 0x0f, 0x06, 0x00, 0x00, 0x07, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x0f, 0x0a, 0x09, 0x0f, 0x07, 0x00, 0x00, 0x02, 0x0e, 0x0e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x05, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x0c, 0x0f, 0x0d, 0x08, 0x01, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0e, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0e, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x03, 0x0b, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0e, 0x01, 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x06, 0x00, 0x00, 0x08, 0x0f, 0x0b, 0x0d, 0x0f, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0c, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x06, 0x02, 0x0f, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x0e, 0x0f, 0x04, 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x03, 0x00, 0x0b, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0a, 0x00, 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x09, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x0e, 0x05, 0x0c, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x0d, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0c, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x05, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x05, 0x0f, 0x0e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x0b, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 21, + .advance = 23, + }; + case '&': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0e, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0b, 0x0f, 0x0f, 0x0f, 0x0b, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0b, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x0e, 0x0a, 0x07, 0x07, 0x0a, 0x0e, 0x0d, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x0e, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x0c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x0f, 0x0e, 0x09, 0x06, 0x06, 0x07, 0x09, 0x0d, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x06, 0x0c, 0x0e, 0x0f, 0x0f, 0x0f, 0x0b, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x0b, 0x0a, 0x05, 0x01, 0x00, 0x00, 0x00, 0x01, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x0a, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0e, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x01, 0x0a, 0x0e, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x0e, 0x07, 0x05, 0x08, 0x0e, 0x0a, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0d, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x03, 0x0b, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0d, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x09, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 15, + .advance = 16, + }; + case '\'': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 6, + .advance = 7, + }; + case '(': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x08, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0c, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x0e, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x05, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x09, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x0f, 0x0c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x09, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 10, + .advance = 10, + }; + case ')': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x09, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x0d, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x0f, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x0e, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x08, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x0e, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x0c, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 10, + .advance = 9, + }; + case '*': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0c, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x0d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x0f, 0x0c, 0x01, 0x00, 0x00, 0x07, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x0f, 0x0f, 0x0c, 0x01, 0x09, 0x0e, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x01, 0x0c, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x0f, 0x0a, 0x07, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, 0x0d, 0x0f, 0x09, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x09, 0x00, 0x03, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x02, 0x0e, 0x0e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x0e, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0b, 0x0d, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0b, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 18, + .advance = 19, + }; + case '+': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x09, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0e, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x0d, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0d, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x09, 0x09, 0x08, 0x0b, 0x0f, 0x0f, 0x0d, 0x07, 0x07, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 12, + .advance = 13, + }; + case ',': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x03, 0x0b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0c, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x09, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x0d, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 6, + .advance = 7, + }; + case '-': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x0a, 0x0b, 0x0d, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0x0d, 0x0c, 0x0a, 0x08, 0x07, 0x05, 0x04, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 13, + .advance = 14, + }; + case '.': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x0e, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x09, 0x0c, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 6, + .advance = 7, + }; + case '/': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0b, 0x0e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0e, 0x0e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0d, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0f, 0x0d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0d, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0f, 0x0d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0e, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0e, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x0e, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x0e, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x0e, 0x0d, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0a, 0x09, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 23, + .advance = 20, + }; + case '0': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x06, 0x05, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0d, 0x0f, 0x0f, 0x0f, 0x0e, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x05, 0x01, 0x06, 0x0f, 0x0f, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0c, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0d, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0e, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0c, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x01, 0x0e, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x0f, 0x0c, 0x01, 0x00, 0x00, 0x09, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x0f, 0x0d, 0x07, 0x09, 0x0e, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0b, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x07, 0x0d, 0x0e, 0x0b, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 18, + .advance = 18, + }; + case '1': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0c, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x0a, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x0e, 0x0f, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x0d, 0x05, 0x0d, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0d, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 8, + .advance = 9, + }; + case '2': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x04, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0c, 0x0c, 0x04, 0x01, 0x01, 0x04, 0x0a, 0x0f, 0x0f, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x0e, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x04, 0x0e, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x05, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0e, 0x0e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0d, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0c, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0c, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0c, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0c, 0x0f, 0x08, 0x07, 0x0b, 0x0e, 0x0b, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x0d, 0x0f, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x02, 0x0d, 0x0f, 0x0f, 0x0b, 0x07, 0x08, 0x0c, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0c, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x0d, 0x0f, 0x0d, 0x05, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0d, 0x0f, 0x0f, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0d, 0x0d, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x08, 0x0e, 0x0d, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 19, + .advance = 20, + }; + case '3': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x06, 0x05, 0x03, 0x01, 0x01, 0x00, 0x01, 0x01, 0x02, 0x03, 0x05, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x03, 0x05, 0x06, 0x06, 0x06, 0x05, 0x04, 0x03, 0x02, 0x07, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0e, 0x0c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0d, 0x0e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0e, 0x0a, 0x07, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0b, 0x0d, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0a, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0d, 0x0d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x08, 0x0e, 0x0c, 0x09, 0x07, 0x06, 0x06, 0x08, 0x0d, 0x0c, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0c, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x08, 0x0b, 0x0d, 0x0e, 0x0f, 0x0d, 0x0b, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 17, + .advance = 19, + }; + case '4': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0d, 0x0f, 0x0a, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x07, 0x06, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0b, 0x00, 0x06, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0d, 0x01, 0x00, 0x07, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x0d, 0x0f, 0x03, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0d, 0x0f, 0x08, 0x07, 0x07, 0x07, 0x07, 0x0b, 0x0f, 0x0f, 0x0d, 0x06, 0x06, 0x05, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x09, 0x02, 0x02, 0x03, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0a, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 19, + .advance = 20, + }; + case '5': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x08, 0x0a, 0x09, 0x08, 0x08, 0x07, 0x07, 0x06, 0x06, 0x06, 0x07, 0x08, 0x0a, 0x0b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x04, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0d, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x0e, 0x0e, 0x0e, 0x0f, 0x0f, 0x0f, 0x0e, 0x0d, 0x0c, 0x0a, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x06, 0x03, 0x07, 0x0b, 0x0d, 0x0f, 0x0e, 0x0c, 0x08, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x09, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0e, 0x0f, 0x0e, 0x0b, 0x09, 0x07, 0x07, 0x09, 0x0c, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0a, 0x0e, 0x0f, 0x0f, 0x0f, 0x0e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0e, 0x0f, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x08, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x0d, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x0f, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x0f, 0x0b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x0c, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0b, 0x08, 0x06, 0x07, 0x0a, 0x0e, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x0a, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x09, 0x0d, 0x0e, 0x0e, 0x0c, 0x09, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 20, + .advance = 21, + }; + case '6': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x05, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0a, 0x0e, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0b, 0x0f, 0x0f, 0x0f, 0x0b, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0e, 0x09, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0b, 0x0d, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0b, 0x0c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0b, 0x0d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0a, 0x0c, 0x0f, 0x0d, 0x09, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x01, 0x07, 0x0d, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x00, 0x00, 0x04, 0x0d, 0x0d, 0x09, 0x07, 0x08, 0x0d, 0x0f, 0x0f, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x0f, 0x0f, 0x0d, 0x00, 0x08, 0x0e, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x05, 0x0f, 0x0f, 0x0d, 0x0c, 0x0d, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x0f, 0x0f, 0x0f, 0x0e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x0f, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x0f, 0x0e, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0c, 0x07, 0x06, 0x07, 0x09, 0x0c, 0x0e, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x05, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x09, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x09, 0x0d, 0x0f, 0x0e, 0x0d, 0x0a, 0x05, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 20, + .advance = 21, + }; + case '7': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x05, 0x0b, 0x0a, 0x07, 0x03, 0x02, 0x01, 0x00, 0x00, 0x01, 0x02, 0x04, 0x06, 0x08, 0x0b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x0b, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0d, 0x0e, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x03, 0x04, 0x05, 0x05, 0x05, 0x05, 0x04, 0x02, 0x00, 0x02, 0x0e, 0x0e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0e, 0x0e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0e, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0e, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0e, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x0f, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x0e, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x09, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x0f, 0x0c, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 19, + .advance = 19, + }; + case '8': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x05, 0x05, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x09, 0x0e, 0x0f, 0x0f, 0x0f, 0x0e, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0e, 0x0a, 0x03, 0x00, 0x02, 0x06, 0x0d, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0d, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0d, 0x0d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x0f, 0x0f, 0x0d, 0x05, 0x00, 0x00, 0x05, 0x0d, 0x0b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x0d, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x0e, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x07, 0x0d, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0b, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x0a, 0x0f, 0x0d, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x03, 0x0d, 0x0b, 0x03, 0x00, 0x02, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x0e, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0d, 0x0f, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0d, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0d, 0x0f, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x05, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x0f, 0x0f, 0x0f, 0x0e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0f, 0x0c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0b, 0x07, 0x06, 0x08, 0x0b, 0x0f, 0x09, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x06, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0a, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x09, 0x0d, 0x0f, 0x0e, 0x0a, 0x07, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 18, + .advance = 19, + }; + case '9': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0x05, 0x05, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0c, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x02, 0x0c, 0x0c, 0x05, 0x02, 0x01, 0x01, 0x02, 0x05, 0x09, 0x0e, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x0d, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0b, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0d, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0d, 0x0d, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x0f, 0x0f, 0x0f, 0x0d, 0x01, 0x00, 0x00, 0x03, 0x0d, 0x0a, 0x05, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x0a, 0x0b, 0x0e, 0x08, 0x00, 0x06, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0b, 0x02, 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x0b, 0x0b, 0x08, 0x03, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 18, + .advance = 19, + }; + case ':': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x04, 0x0d, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x0d, 0x0f, 0x0f, 0x0d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0b, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x03, 0x0d, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x0d, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 8, + .advance = 10, + }; + case ';': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0x0d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x0e, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0d, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x0b, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x0d, 0x0d, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0c, 0x0d, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x0c, 0x0b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 10, + .advance = 11, + }; + case '<': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0d, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0e, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0b, 0x0d, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0d, 0x0b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0e, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x08, 0x0e, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x0b, 0x0d, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x0d, 0x0f, 0x0d, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0e, 0x0f, 0x0f, 0x0f, 0x0e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x0d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x09, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 14, + .advance = 15, + }; + case '=': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x07, 0x07, 0x07, 0x07, 0x08, 0x08, 0x09, 0x0a, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x0e, 0x0d, 0x0d, 0x0c, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0e, 0x0f, 0x0e, 0x0c, 0x0d, 0x0e, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x09, 0x0d, 0x0b, 0x0a, 0x09, 0x09, 0x08, 0x08, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 13, + .advance = 14, + }; + case '>': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x0d, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0c, 0x0f, 0x0f, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x0c, 0x0f, 0x0f, 0x0f, 0x0f, 0x0b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x0c, 0x0f, 0x0f, 0x0f, 0x0f, 0x0c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x0b, 0x0f, 0x0f, 0x0f, 0x0f, 0x0d, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x0e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0b, 0x0e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x0c, 0x0d, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x0c, 0x0d, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x0c, 0x0d, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0c, 0x0d, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 14, + .advance = 15, + }; + case '?': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x05, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x0d, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x0a, 0x0d, 0x06, 0x02, 0x00, 0x02, 0x05, 0x0c, 0x0f, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x0c, 0x0d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0c, 0x0f, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x0c, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x0f, 0x0c, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x05, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0d, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0a, 0x0d, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0c, 0x0a, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0e, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0e, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0d, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0c, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0d, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 18, + .advance = 19, + }; + case '@': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x08, 0x0c, 0x0f, 0x0e, 0x0c, 0x08, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0c, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x09, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0a, 0x0e, 0x09, 0x07, 0x06, 0x08, 0x0c, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0c, 0x0c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0c, 0x0f, 0x0f, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0d, 0x0d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x0c, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0e, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x05, 0x04, 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0d, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x07, 0x02, 0x07, 0x0f, 0x0f, 0x0c, 0x00, 0x02, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0c, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0c, 0x00, 0x04, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x02, 0x0e, 0x0f, 0x09, 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x0c, 0x00, 0x09, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x0d, 0x00, 0x0d, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x0a, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x0f, 0x03, 0x0f, 0x0e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x0e, 0x01, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0d, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x0f, 0x0c, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x0f, 0x0b, 0x02, 0x0e, 0x0f, 0x0b, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0d, 0x06, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x08, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0e, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0d, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x0f, 0x0f, 0x0b, 0x05, 0x02, 0x01, 0x02, 0x05, 0x09, 0x0e, 0x0d, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x0c, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0c, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x08, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x0a, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x05, 0x05, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 24, + .advance = 25, + }; + case 'A': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0a, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0e, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0e, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x07, 0x0f, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0c, 0x00, 0x0f, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x04, 0x00, 0x0e, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0b, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0f, 0x0f, 0x0e, 0x0e, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0c, 0x0a, 0x09, 0x09, 0x08, 0x07, 0x07, 0x06, 0x0e, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x04, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0c, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x05, 0x0f, 0x0c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0e, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0b, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 18, + .advance = 20, + }; + case 'B': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0b, 0x0d, 0x0e, 0x0f, 0x0e, 0x0d, 0x0b, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x0d, 0x0c, 0x0d, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x0e, 0x0f, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0e, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0f, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0e, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x03, 0x08, 0x0d, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x0b, 0x0b, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0d, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x01, 0x03, 0x06, 0x0b, 0x0f, 0x0f, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x05, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x01, 0x03, 0x06, 0x0b, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x0f, 0x0f, 0x0e, 0x0c, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x09, 0x0e, 0x0e, 0x0d, 0x0c, 0x0b, 0x0a, 0x07, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 17, + .advance = 19, + }; + case 'C': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x09, 0x0c, 0x0c, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0d, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0d, 0x0c, 0x09, 0x0d, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0d, 0x0d, 0x01, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0f, 0x0e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0d, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x04, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0d, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x09, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0b, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0c, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x0f, 0x0f, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0d, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x0e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0e, 0x0f, 0x0f, 0x0f, 0x0e, 0x04, 0x00, 0x00, 0x00, 0x02, 0x0e, 0x0a, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0b, 0x07, 0x07, 0x0e, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x09, 0x0d, 0x0e, 0x0c, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 19, + .advance = 20, + }; + case 'D': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x0b, 0x0d, 0x0f, 0x0e, 0x0c, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0d, 0x09, 0x0d, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x02, 0x09, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0d, 0x0f, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0c, 0x0f, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0d, 0x0d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x05, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x05, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0c, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x01, 0x0a, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0f, 0x0f, 0x0e, 0x00, 0x05, 0x0d, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x0c, 0x0b, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0f, 0x0f, 0x0c, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x05, 0x0d, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 17, + .advance = 19, + }; + case 'E': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x05, 0x0c, 0x0d, 0x0d, 0x0e, 0x0e, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x0a, 0x09, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x0c, 0x0d, 0x0d, 0x0e, 0x0e, 0x0e, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x07, 0x07, 0x07, 0x07, 0x06, 0x06, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x05, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x05, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x0f, 0x0f, 0x0e, 0x0a, 0x0a, 0x0a, 0x0a, 0x09, 0x09, 0x09, 0x08, 0x08, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x0e, 0x0e, 0x0f, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 17, + .advance = 19, + }; + case 'F': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x04, 0x06, 0x07, 0x07, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x07, 0x0c, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x0b, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0d, 0x06, 0x05, 0x04, 0x02, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x02, 0x04, 0x05, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x0d, 0x0c, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x0d, 0x09, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x05, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x05, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x0f, 0x0c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 15, + .advance = 16, + }; + case 'G': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x09, 0x0b, 0x0e, 0x0e, 0x0c, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0b, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0e, 0x0a, 0x07, 0x07, 0x09, 0x0d, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0e, 0x0f, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0d, 0x0e, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0c, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0d, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0e, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x07, 0x08, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0f, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0f, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0d, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x0f, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x0f, 0x0e, 0x05, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0e, 0x0d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0c, 0x08, 0x06, 0x07, 0x0d, 0x0b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x05, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x0d, 0x0f, 0x0d, 0x0b, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 19, + .advance = 20, + }; + case 'H': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x05, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x0c, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0c, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x09, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x09, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x09, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x09, 0x0f, 0x0f, 0x0c, 0x05, 0x07, 0x09, 0x0b, 0x0d, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x0c, 0x0a, 0x08, 0x06, 0x03, 0x0a, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x0f, 0x0f, 0x0d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 16, + .advance = 17, + }; + case 'I': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x08, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x0d, 0x0d, 0x0e, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x06, 0x08, 0x09, 0x0d, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x0e, 0x0d, 0x0c, 0x0b, 0x0a, 0x09, 0x08, 0x08, 0x08, 0x08, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 16, + .advance = 17, + }; + case 'J': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x03, 0x05, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x0b, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0b, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x04, 0x06, 0x05, 0x05, 0x05, 0x04, 0x08, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x09, 0x0f, 0x08, 0x00, 0x00, 0x04, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x0c, 0x0f, 0x0e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0c, 0x0f, 0x0f, 0x0f, 0x0f, 0x0c, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x0c, 0x0f, 0x0d, 0x09, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 17, + .advance = 18, + }; + case 'K': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x09, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0a, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x0d, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x06, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0f, 0x0f, 0x0e, 0x00, 0x06, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0f, 0x0f, 0x0e, 0x05, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0f, 0x0f, 0x0e, 0x0a, 0x0f, 0x0f, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0f, 0x0f, 0x0e, 0x01, 0x0c, 0x0f, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0f, 0x0f, 0x0e, 0x00, 0x02, 0x0e, 0x0f, 0x0f, 0x0f, 0x0e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x0f, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0e, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x0b, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0d, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 17, + .advance = 18, + }; + case 'L': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x04, 0x0a, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x06, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0e, 0x0e, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x02, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 15, + .advance = 16, + }; + case 'M': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x0a, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0b, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0d, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x0a, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0c, 0x0f, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0a, 0x08, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x0a, 0x0b, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x04, 0x09, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x08, 0x07, 0x0f, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0c, 0x00, 0x09, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x07, 0x02, 0x0f, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x06, 0x00, 0x0a, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x05, 0x00, 0x0d, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x09, 0x0f, 0x0e, 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x04, 0x00, 0x0a, 0x0f, 0x0f, 0x0f, 0x02, 0x01, 0x0e, 0x0f, 0x08, 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x06, 0x07, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x09, 0x0d, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x05, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x09, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x0f, 0x0d, 0x01, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0c, 0x09, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 23, + .advance = 24, + }; + case 'N': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x09, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0e, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x0e, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0c, 0x0f, 0x0f, 0x0f, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0c, 0x0f, 0x0f, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0d, 0x01, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x0f, 0x0f, 0x0b, 0x0f, 0x0f, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x0f, 0x0f, 0x09, 0x08, 0x0f, 0x0f, 0x0f, 0x0e, 0x01, 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x0f, 0x0f, 0x08, 0x01, 0x0e, 0x0f, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x0f, 0x0f, 0x08, 0x00, 0x07, 0x0f, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x0f, 0x09, 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x0f, 0x03, 0x05, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x0f, 0x0b, 0x05, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x0f, 0x08, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0c, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0d, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0c, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0d, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0d, 0x0f, 0x0d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0c, 0x09, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0b, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 18, + .advance = 19, + }; + case 'O': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x04, 0x05, 0x05, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0b, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0d, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0e, 0x04, 0x01, 0x01, 0x03, 0x09, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0d, 0x0f, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0d, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x09, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0e, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0c, 0x0e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x0f, 0x0b, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x0d, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0d, 0x08, 0x06, 0x0c, 0x0b, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0d, 0x0e, 0x0c, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 20, + .advance = 21, + }; + case 'P': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0a, 0x0b, 0x0a, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x03, 0x0a, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x0a, 0x03, 0x01, 0x01, 0x06, 0x0e, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x04, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x08, 0x00, 0x02, 0x09, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x0b, 0x0b, 0x0f, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0a, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x0d, 0x07, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x0d, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 15, + .advance = 16, + }; + case 'Q': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0b, 0x0d, 0x0f, 0x0d, 0x0a, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0d, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x09, 0x07, 0x07, 0x0a, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0e, 0x0f, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x0e, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0e, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x05, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0d, 0x0e, 0x03, 0x00, 0x00, 0x0d, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x0d, 0x00, 0x02, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x0f, 0x06, 0x07, 0x0f, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x0f, 0x0c, 0x0d, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x0f, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0d, 0x07, 0x05, 0x0e, 0x0f, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x03, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0b, 0x0f, 0x0f, 0x0f, 0x0e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x08, 0x0c, 0x0f, 0x0d, 0x09, 0x02, 0x00, 0x0d, 0x0f, 0x0f, 0x0f, 0x0e, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x0d, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0a, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 20, + .advance = 21, + }; + case 'R': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x06, 0x09, 0x0b, 0x0a, 0x08, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x0b, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x0b, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x0c, 0x03, 0x01, 0x02, 0x06, 0x0d, 0x0f, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0e, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x01, 0x09, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x04, 0x00, 0x03, 0x09, 0x0e, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x09, 0x0c, 0x0f, 0x0f, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x0d, 0x08, 0x04, 0x0f, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x05, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0e, 0x0f, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x0f, 0x0d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x09, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0e, 0x0f, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0d, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x0d, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0d, 0x09, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 16, + .advance = 17, + }; + case 'S': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x09, 0x0b, 0x09, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0d, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0d, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x08, 0x01, 0x03, 0x0a, 0x0f, 0x0f, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0e, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x0d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x0e, 0x0f, 0x0f, 0x0f, 0x0d, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0c, 0x0f, 0x0f, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x0d, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0d, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0c, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x07, 0x01, 0x01, 0x08, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0c, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x0b, 0x0a, 0x07, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 18, + .advance = 19, + }; + case 'T': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x0f, 0x0f, 0x0f, 0x08, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0f, 0x0e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0a, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 21, + .advance = 23, + }; + case 'U': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0b, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0c, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0d, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x05, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x09, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x09, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x09, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x09, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x0e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0e, 0x0f, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0e, 0x0f, 0x0f, 0x0f, 0x0e, 0x0a, 0x07, 0x08, 0x0c, 0x0b, 0x03, 0x0e, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0d, 0x05, 0x00, 0x00, 0x0e, 0x0f, 0x0e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x04, 0x0b, 0x0e, 0x0d, 0x0a, 0x06, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0a, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 17, + .advance = 18, + }; + case 'V': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x03, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0c, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0d, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x04, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x03, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x08, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x06, 0x00, 0x0c, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x09, 0x02, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x0b, 0x06, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x0e, 0x0b, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0b, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 17, + .advance = 18, + }; + case 'W': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x0a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x01, 0x00, 0x00, + 0x00, 0x02, 0x0d, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0c, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0c, 0x0f, 0x01, 0x00, 0x00, + 0x00, 0x08, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0d, 0x0f, 0x0e, 0x00, 0x00, 0x00, + 0x00, 0x09, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, + 0x00, 0x09, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, + 0x00, 0x09, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0c, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0a, 0x08, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x04, 0x0f, 0x0f, 0x04, 0x07, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x04, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x0b, 0x0f, 0x0c, 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x03, 0x0f, 0x0f, 0x05, 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x0e, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x0a, 0x0f, 0x0d, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x04, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x05, 0x02, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x06, 0x00, 0x09, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x06, 0x08, 0x0f, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x08, 0x01, 0x0e, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x07, 0x0e, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x09, 0x06, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0d, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x0a, 0x0c, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x0e, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0x0f, 0x0e, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x09, 0x0b, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 26, + .advance = 27, + }; + case 'X': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x02, 0x0a, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x0f, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0d, 0x0e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x0e, 0x0f, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x0f, 0x0d, 0x01, 0x00, 0x02, 0x0e, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x0f, 0x08, 0x00, 0x0c, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x0f, 0x0f, 0x0a, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x0f, 0x0f, 0x0d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0d, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x07, 0x0c, 0x0f, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0c, 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0e, 0x0f, 0x03, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x01, 0x0e, 0x0f, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x0e, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x09, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x0f, 0x0d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0d, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0x09, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0e, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 21, + .advance = 22, + }; + case 'Y': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x0c, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0e, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x02, 0x0e, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x0b, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0d, 0x05, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0e, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 17, + .advance = 17, + }; + case 'Z': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0e, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x0e, 0x0e, 0x0d, 0x0d, 0x0c, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x09, 0x09, 0x09, 0x0c, 0x0f, 0x0d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0d, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0d, 0x0e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0d, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0e, 0x0e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x0d, 0x0e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0e, 0x06, 0x07, 0x07, 0x08, 0x08, 0x09, 0x09, 0x0a, 0x0a, 0x0a, 0x0a, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x0f, 0x0f, 0x0f, 0x0e, 0x0e, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0e, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 19, + .advance = 20, + }; + case '[': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x04, 0x05, 0x06, 0x07, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x0d, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x0f, 0x0f, 0x0f, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x0e, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x09, 0x08, 0x08, 0x08, 0x08, 0x08, 0x09, 0x09, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 12, + .advance = 9, + }; + case '\\': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x09, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x0f, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0c, 0x0f, 0x0f, 0x0f, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x0d, 0x0f, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x0f, 0x0d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0d, 0x0f, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x0f, 0x0d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0e, 0x0f, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x0f, 0x0d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x0f, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0e, 0x0f, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0e, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 20, + .advance = 21, + }; + case ']': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x05, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x07, 0x07, 0x07, 0x07, 0x09, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x05, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0c, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x08, 0x08, 0x07, 0x07, 0x07, 0x07, 0x07, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 11, + .advance = 10, + }; + case '^': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0d, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x0e, 0x0f, 0x0e, 0x0f, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x08, 0x06, 0x0f, 0x0f, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0d, 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x0f, 0x0e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x0d, 0x0f, 0x04, 0x00, 0x00, 0x02, 0x0e, 0x0f, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x09, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 14, + .advance = 15, + }; + case '_': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0d, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 18, + .advance = 19, + }; + case '`': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x0e, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x0f, 0x0c, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0c, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0e, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 11, + .advance = 12, + }; + case 'a': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x09, 0x0d, 0x0e, 0x0c, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0e, 0x09, 0x0b, 0x0f, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0e, 0x02, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x0e, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0d, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x04, 0x0f, 0x0f, 0x0c, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0d, 0x04, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x06, 0x0f, 0x0f, 0x03, 0x02, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x0f, 0x0f, 0x0f, 0x0b, 0x08, 0x0f, 0x0f, 0x06, 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x04, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x0d, 0x0f, 0x0c, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x09, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 15, + .advance = 16, + }; + case 'b': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x0d, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x05, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x09, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x06, 0x0c, 0x0f, 0x0f, 0x0c, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x0f, 0x0f, 0x0d, 0x00, 0x04, 0x0d, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x0f, 0x0f, 0x0d, 0x08, 0x0f, 0x0f, 0x0d, 0x0b, 0x0f, 0x0f, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x0f, 0x0f, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x0f, 0x0f, 0x0e, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0e, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x09, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x02, 0x0d, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x09, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x06, 0x0e, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0x0f, 0x0f, 0x0c, 0x09, 0x0e, 0x0f, 0x0e, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0a, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x0f, 0x0d, 0x0b, 0x07, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 15, + .advance = 16, + }; + case 'c': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x07, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0d, 0x0f, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0a, 0x0f, 0x0f, 0x0f, 0x0f, 0x0d, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x0d, 0x0e, 0x04, 0x05, 0x0a, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x0c, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x05, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0b, 0x0e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x09, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0c, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0c, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0d, 0x0f, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x07, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x0f, 0x0f, 0x0f, 0x0f, 0x0c, 0x0b, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0b, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x08, 0x0e, 0x0e, 0x0a, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 15, + .advance = 15, + }; + case 'd': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0d, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x05, 0x0a, 0x0c, 0x0e, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0d, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0e, 0x0c, 0x0d, 0x0f, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x0b, 0x0f, 0x0e, 0x05, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0e, 0x03, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x01, 0x0e, 0x0f, 0x0d, 0x0b, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x0f, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x09, 0x0f, 0x0e, 0x03, 0x0b, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x0f, 0x08, 0x08, 0x0f, 0x0f, 0x05, 0x00, 0x0d, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x0c, 0x0f, 0x0f, 0x0f, 0x0b, 0x03, 0x00, 0x00, 0x01, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x05, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0d, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 17, + .advance = 18, + }; + case 'e': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0e, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x0c, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x02, 0x0e, 0x0f, 0x0e, 0x0e, 0x0f, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x05, 0x05, 0x0f, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0e, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x08, 0x01, 0x08, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x0e, 0x0f, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x0f, 0x0f, 0x0e, 0x0a, 0x05, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0c, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0d, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0e, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x01, 0x0e, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0d, 0x0f, 0x0f, 0x0f, 0x08, 0x00, 0x0a, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x0b, 0x0f, 0x0d, 0x09, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 12, + .advance = 13, + }; + case 'f': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0a, 0x0e, 0x0d, 0x0a, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0a, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x0b, 0x0f, 0x0a, 0x0c, 0x0f, 0x0f, 0x0e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x02, 0x00, 0x03, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x0e, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x01, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x07, 0x0b, 0x0f, 0x0f, 0x0f, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0c, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0d, 0x0e, 0x0e, 0x0f, 0x0f, 0x0e, 0x07, 0x06, 0x05, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x0b, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 14, + .advance = 14, + }; + case 'g': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0c, 0x0e, 0x0e, 0x0b, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0d, 0x0d, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x02, 0x0a, 0x0f, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x0e, 0x0f, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x0e, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0e, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x04, 0x0f, 0x0f, 0x0b, 0x0b, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x02, 0x0e, 0x0f, 0x0c, 0x01, 0x0e, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x0f, 0x02, 0x02, 0x0d, 0x0f, 0x0d, 0x01, 0x02, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x0f, 0x0e, 0x0e, 0x0f, 0x0d, 0x02, 0x00, 0x04, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0b, 0x01, 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x05, 0x0d, 0x0f, 0x0c, 0x05, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0e, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x0e, 0x0f, 0x0c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x0f, 0x0f, 0x0a, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0d, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 18, + .advance = 20, + }; + case 'h': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x08, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0f, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0e, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0e, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0e, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0d, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0d, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0d, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0c, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0c, 0x0e, 0x0a, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0c, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x05, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0c, 0x0f, 0x0f, 0x09, 0x00, 0x07, 0x0f, 0x0c, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0c, 0x0f, 0x0f, 0x09, 0x06, 0x0f, 0x0d, 0x01, 0x02, 0x0e, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0c, 0x0f, 0x0f, 0x0b, 0x0e, 0x0f, 0x06, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0c, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0c, 0x0f, 0x0f, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0c, 0x0f, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0c, 0x0f, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x0f, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0x0f, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x09, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x09, 0x0b, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0e, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 15, + .advance = 16, + }; + case 'i': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x08, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x05, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x05, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x05, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x0b, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 6, + .advance = 7, + }; + case 'j': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0e, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0a, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x09, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0d, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x09, 0x0f, 0x0d, 0x03, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0c, 0x0f, 0x0f, 0x0f, 0x0f, 0x0b, 0x05, 0x02, 0x04, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x0a, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 14, + .advance = 10, + }; + case 'k': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x06, 0x0e, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0e, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x01, 0x0d, 0x0e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x08, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x05, 0x00, 0x06, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x04, 0x04, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x07, 0x0e, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x07, 0x0e, 0x0f, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x0f, 0x0f, 0x0e, 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x05, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x0f, 0x0d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x09, 0x0f, 0x0e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0b, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0x0a, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 15, + .advance = 16, + }; + case 'l': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x0d, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 6, + .advance = 7, + }; + case 'm': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x0a, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x03, 0x06, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0a, 0x0f, 0x0e, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x0e, 0x0f, 0x0f, 0x00, 0x01, 0x08, 0x0e, 0x0f, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x02, 0x0a, 0x0f, 0x0f, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0x0f, 0x0f, 0x0e, 0x06, 0x0e, 0x0d, 0x0f, 0x0f, 0x0f, 0x0f, 0x0d, 0x00, 0x04, 0x0e, 0x0b, 0x0b, 0x0f, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x0f, 0x0f, 0x0f, 0x0b, 0x02, 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x0f, 0x07, 0x0f, 0x08, 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x0b, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0b, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 22, + .advance = 23, + }; + case 'n': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x0e, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0a, 0x0b, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x02, 0x0b, 0x0f, 0x0f, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x03, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x01, 0x02, 0x0e, 0x0f, 0x0c, 0x02, 0x0e, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x02, 0x0b, 0x0f, 0x0e, 0x01, 0x00, 0x07, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x08, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0f, 0x0f, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0d, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 16, + .advance = 17, + }; + case 'o': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x09, 0x0e, 0x0f, 0x0e, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0d, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x09, 0x0a, 0x0f, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0c, 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x04, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x04, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x04, 0x0f, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0x0f, 0x0f, 0x0f, 0x06, 0x00, 0x01, 0x0c, 0x0e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x0f, 0x0f, 0x0f, 0x0f, 0x0a, 0x0d, 0x0d, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x09, 0x0e, 0x0d, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 14, + .advance = 14, + }; + case 'p': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x05, 0x0d, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x08, 0x0b, 0x0a, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x03, 0x0c, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x09, 0x01, 0x08, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x0a, 0x0c, 0x0f, 0x0e, 0x07, 0x01, 0x01, 0x09, 0x0f, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x0f, 0x0e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x0e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0e, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x05, 0x0b, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x09, 0x0b, 0x0e, 0x0f, 0x0f, 0x0d, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0d, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x0d, 0x09, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x09, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0c, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0e, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 17, + .advance = 18, + }; + case 'q': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x08, 0x09, 0x06, 0x01, 0x01, 0x0a, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x0d, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x04, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x0e, 0x0f, 0x0c, 0x01, 0x05, 0x0b, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x05, 0x0e, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0e, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0e, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x01, 0x0d, 0x0f, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x01, 0x0b, 0x0f, 0x0f, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x0f, 0x0e, 0x0b, 0x0f, 0x0f, 0x0d, 0x0b, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x09, 0x01, 0x09, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x02, 0x0c, 0x0e, 0x0c, 0x07, 0x01, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x03, 0x09, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0a, 0x00, 0x07, 0x0c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0b, 0x09, 0x0d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 20, + .advance = 20, + }; + case 'r': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x0c, 0x05, 0x00, 0x00, 0x00, 0x02, 0x05, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x0f, 0x0f, 0x06, 0x00, 0x03, 0x0b, 0x0f, 0x0f, 0x0f, 0x0e, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0e, 0x0f, 0x0f, 0x07, 0x06, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0e, 0x0f, 0x0f, 0x0e, 0x0f, 0x05, 0x01, 0x06, 0x0e, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0d, 0x0f, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0d, 0x0f, 0x0f, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0d, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0c, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0c, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0c, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0c, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0c, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0c, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0c, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0d, 0x0f, 0x0c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0c, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 13, + .advance = 15, + }; + case 's': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0b, 0x0e, 0x0c, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0c, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x0d, 0x0f, 0x0e, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x02, 0x01, 0x0a, 0x0f, 0x0e, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0f, 0x0f, 0x09, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x0d, 0x0f, 0x0f, 0x0f, 0x0f, 0x0c, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x0c, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0a, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x0c, 0x0d, 0x02, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x0e, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x0f, 0x06, 0x00, 0x0a, 0x0f, 0x0e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x0f, 0x0f, 0x0c, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x03, 0x0c, 0x0f, 0x0d, 0x09, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 14, + .advance = 15, + }; + case 't': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0b, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x0b, 0x0c, 0x0c, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0d, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0e, 0x0f, 0x0f, 0x0e, 0x0f, 0x0f, 0x0f, 0x0d, 0x0b, 0x0b, 0x0b, 0x0b, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x06, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x08, 0x01, 0x0b, 0x0e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x0e, 0x0c, 0x0c, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x0f, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0e, 0x0a, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 15, + .advance = 15, + }; + case 'u': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0e, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x09, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x01, 0x0d, 0x0f, 0x06, 0x0f, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x07, 0x00, 0x09, 0x0f, 0x07, 0x01, 0x0f, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x0f, 0x0f, 0x0f, 0x0f, 0x0a, 0x0f, 0x07, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x0f, 0x0d, 0x03, 0x00, 0x00, 0x01, 0x0f, 0x0f, 0x0d, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x09, 0x0f, 0x0c, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x09, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 16, + .advance = 16, + }; + case 'v': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x0a, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x0e, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x0f, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x0f, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0c, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x01, 0x0e, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x0f, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x0c, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x0f, 0x01, 0x03, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x05, 0x09, 0x0f, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x0a, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x08, 0x0c, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 15, + .advance = 15, + }; + case 'w': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x06, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0b, 0x06, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0e, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x0d, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x01, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x04, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x01, 0x0e, 0x0f, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x0c, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x02, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0b, 0x00, 0x02, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x0a, 0x0f, 0x0a, 0x0b, 0x0f, 0x0f, 0x0d, 0x00, 0x07, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x0f, 0x0f, 0x0c, 0x00, 0x04, 0x0f, 0x0e, 0x01, 0x0a, 0x0f, 0x0f, 0x0e, 0x00, 0x0d, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x0f, 0x0f, 0x0d, 0x01, 0x0d, 0x0f, 0x05, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x05, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0x0f, 0x0f, 0x0e, 0x09, 0x0f, 0x0b, 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x0f, 0x0d, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x02, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x0f, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x0f, 0x0f, 0x0b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x0f, 0x0e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x0e, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0a, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 21, + .advance = 21, + }; + case 'x': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x03, 0x0b, 0x0e, 0x0a, 0x01, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x0a, 0x0f, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x03, 0x0e, 0x0d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x0f, 0x04, 0x01, 0x0d, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x08, 0x09, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x0e, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x0f, 0x0d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x0e, 0x0f, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0d, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x02, 0x09, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x08, 0x0f, 0x07, 0x06, 0x0f, 0x0f, 0x0f, 0x0e, 0x09, 0x0e, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x0f, 0x0a, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x0e, 0x0c, 0x01, 0x00, 0x00, 0x05, 0x0c, 0x0c, 0x09, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x0d, 0x0b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 17, + .advance = 17, + }; + case 'y': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0e, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0c, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0e, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0e, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x03, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x0a, 0x00, 0x0a, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x0e, 0x02, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x0f, 0x0c, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0e, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x0d, 0x0e, 0x0e, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0x0f, 0x0f, 0x0e, 0x09, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 20, + .advance = 18, + }; + case 'z': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x0a, 0x0c, 0x0e, 0x0e, 0x0f, 0x0f, 0x0e, 0x0d, 0x0d, 0x0c, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x0f, 0x0e, 0x0d, 0x0e, 0x0e, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0d, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x0d, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x0e, 0x0d, 0x0c, 0x0b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0e, 0x0f, 0x0e, 0x0d, 0x0e, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 16, + .advance = 16, + }; + case '{': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 0, + .advance = 10, + }; + case '|': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 0, + .advance = 10, + }; + case '}': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 0, + .advance = 10, + }; + case '~': + return { + .alpha = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + .width = 0, + .advance = 10, + }; + default: + return empty_glyph(); + } +} + +auto vamp_style::ui_font_pair_adjust(std::char_t left, std::char_t right) -> std::int32_t { + auto key = pair_key(left, right); + auto found = std::lower_bound(pair_adjustments.begin(), pair_adjustments.end(), key, [](pair_adjustment const& item, std::uint16_t value) { + return item.key < value; + }); + if (found == pair_adjustments.end() || found->key != key) { + return 0; + } + return found->adjustment; +} + +auto vamp_style::ui_text_width(std::string_view text, std::int32_t scale) -> std::int32_t { + if (text.empty() || scale <= 0) { + return 0; + } + auto width = std::int32_t{}; + auto previous = std::char_t{}; + for (auto ch : text) { + if (previous != std::char_t{}) { + width += vamp_style::ui_font_pair_adjust(previous, ch) * scale; + } + width += static_cast(vamp_style::ui_font_glyph(ch).advance) * scale; + previous = ch; + } + return std::max(std::int32_t{}, width); +} diff --git a/src/vamp_zero/app.cpp b/src/vamp_zero/app.cpp new file mode 100644 index 0000000..288b84b --- /dev/null +++ b/src/vamp_zero/app.cpp @@ -0,0 +1,321 @@ +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +namespace { + +auto invalid(std::string message) -> modulus::error { + return vamp_zero::make_error(vamp_zero::error_code::INVALID_ARGUMENT, std::move(message)); +} + +auto usage() -> std::string { + return "usage: vamp-zero [--config PATH] [--check-config] [--health-check] [--version] [--once] [--migrate]"; +} + +auto bind_port(vamp_zero::config const& config) -> std::uint16_t { + auto endpoint = ligo::http::server_endpoint_from_config(config.control.endpoint); + if (!endpoint) { + return 8080; + } + return endpoint->port == 0 ? 8080 : endpoint->port; +} + +auto write_text_atomic(std::filesystem::path const& destination, std::string const& text) -> std::expected { + auto error = std::error_code{}; + if (!destination.parent_path().empty()) { + std::filesystem::create_directories(destination.parent_path(), error); + if (error) { + return std::unexpected(vamp_zero::make_error(vamp_zero::error_code::UNAVAILABLE, "failed to create runtime directory: " + error.message())); + } + } + auto temporary = destination; + temporary += ".tmp"; + auto output = std::ofstream{temporary, std::ios::binary | std::ios::trunc}; + if (!output) { + return std::unexpected(vamp_zero::make_error(vamp_zero::error_code::UNAVAILABLE, "failed to create heartbeat: " + temporary.string())); + } + output << text; + output.close(); + if (!output) { + return std::unexpected(vamp_zero::make_error(vamp_zero::error_code::UNAVAILABLE, "failed to write heartbeat: " + temporary.string())); + } + std::filesystem::rename(temporary, destination, error); + if (error) { + std::filesystem::remove(temporary, error); + return std::unexpected(vamp_zero::make_error(vamp_zero::error_code::UNAVAILABLE, "failed to publish heartbeat: " + error.message())); + } + return {}; +} + +auto write_heartbeat(vamp_zero::config const& config) -> std::expected { + auto heartbeat = boost::json::object{}; + heartbeat["version"] = VAMP_VERSION; + heartbeat["git_sha"] = VAMP_GIT_SHA; + heartbeat["status"] = "ok"; + heartbeat["endpoint"] = "http://" + config.control.zero_ip + ":" + std::to_string(bind_port(config)); + return write_text_atomic(config.runtime.heartbeat_path, boost::json::serialize(heartbeat)); +} + +auto migrate(vamp_zero::config const& config) -> std::expected { + auto io = boost::asio::io_context{}; + auto future = boost::asio::co_spawn(io, vamp_zero::async_migrate_database(io.get_executor(), config.database), boost::asio::use_future); + io.run(); + return future.get(); +} + +auto make_server_endpoint(vamp_zero::config const& config) -> std::expected { + auto endpoint = ligo::http::server_endpoint_from_config(config.control.endpoint); + if (!endpoint) { + return std::unexpected(endpoint.error()); + } + if (endpoint->port == 0) { + endpoint->port = 8080; + } + return endpoint; +} + +auto import_library(vamp_zero::config const& config) -> std::expected { + auto io = boost::asio::io_context{}; + auto future = boost::asio::co_spawn(io, vamp_zero::async_import_catalogs(io.get_executor(), config.database, config.runtime.assets_path), boost::asio::use_future); + io.run(); + return future.get(); +} + +auto load_initial_state(vamp_zero::config const& config) -> std::expected { + auto io = boost::asio::io_context{}; + auto performance_future = boost::asio::co_spawn(io, vamp_zero::async_load_performance_library(io.get_executor(), config.database), boost::asio::use_future); + auto practice_future = boost::asio::co_spawn(io, vamp_zero::async_load_practice_library(io.get_executor(), config.database), boost::asio::use_future); + io.run(); + auto performance = performance_future.get(); + if (!performance) { + return std::unexpected(performance.error()); + } + auto practice = practice_future.get(); + if (!practice) { + return std::unexpected(practice.error()); + } + auto state = vamp_zero::app_state{ + .performance = std::move(*performance), + .practice = std::move(*practice), + }; + if (auto valid = vamp_zero::validate_app_state(state); !valid) { + return std::unexpected(valid.error()); + } + return state; +} + +auto run_headless(vamp_zero::config const& config, vamp_zero::control_state& state) -> std::expected { + auto io = boost::asio::io_context{}; + auto endpoint = make_server_endpoint(config); + if (!endpoint) { + return std::unexpected(endpoint.error()); + } + auto server = ligo::http::server{io, *endpoint, vamp_zero::make_router(state), ligo::http::server_options_from_config(config.control.endpoint)}; + auto started = server.start(); + if (!started) { + return std::unexpected(started.error()); + } + auto heartbeat = write_heartbeat(config); + if (!heartbeat) { + server.stop(); + return std::unexpected(heartbeat.error()); + } + auto signals = boost::asio::signal_set{io, SIGINT, SIGTERM}; + signals.async_wait([&](auto const&, int) { + server.stop(); + io.stop(); + }); + std::cout << "vamp-zero listening on " << server.selected_port() << '\n'; + io.run(); + return {}; +} + +auto run_display(vamp_zero::config const& config, vamp_zero::control_state& state) -> std::expected { + auto io = boost::asio::io_context{}; + auto endpoint = make_server_endpoint(config); + if (!endpoint) { + return std::unexpected(endpoint.error()); + } + auto ui = vamp_zero::zero_ui{io.get_executor(), config.display}; + state.set_observer([&ui, &config](vamp_zero::app_state app) { + auto status = ui.publish(vamp_zero::make_ui_state(config, std::move(app))); + if (!status) { + modulus::log_error("failed to publish UI state: " + status.error().describe()); + } + }); + auto published = ui.publish(vamp_zero::make_ui_state(config, state.snapshot())); + if (!published) { + return std::unexpected(published.error()); + } + auto server = ligo::http::server{io, *endpoint, vamp_zero::make_router(state), ligo::http::server_options_from_config(config.control.endpoint)}; + auto started = server.start(); + if (!started) { + return std::unexpected(started.error()); + } + auto heartbeat = write_heartbeat(config); + if (!heartbeat) { + server.stop(); + return std::unexpected(heartbeat.error()); + } + auto connection_timer = boost::asio::steady_timer{io}; + auto schedule_connection_refresh = std::function{}; + schedule_connection_refresh = [&] { + connection_timer.expires_after(std::chrono::milliseconds{500}); + connection_timer.async_wait([&](auto const& error) { + if (error) { + return; + } + static_cast(state.refresh_connection()); + schedule_connection_refresh(); + }); + }; + schedule_connection_refresh(); + auto signals = boost::asio::signal_set{io, SIGINT, SIGTERM}; + signals.async_wait([&](auto const&, int) { + connection_timer.cancel(); + server.stop(); + ui.stop(); + io.stop(); + }); + auto io_thread = std::thread{[&io] { + io.run(); + }}; + auto ui_status = ui.run(); + server.stop(); + connection_timer.cancel(); + io.stop(); + if (io_thread.joinable()) { + io_thread.join(); + } + return ui_status; +} + +} + +auto vamp_zero::parse_command_line(std::int32_t argc, std::char_t** argv) -> std::expected { + if (argc < 1 || argv == nullptr) { + return std::unexpected(invalid("process arguments are invalid")); + } + auto result = vamp_zero::command_line{}; + auto require_value = [&](std::int32_t& index, std::string_view option) -> std::expected { + ++index; + if (index >= argc) { + return std::unexpected(invalid(std::string{option} + " requires a value")); + } + auto value = std::string_view{argv[index]}; + if (value.empty()) { + return std::unexpected(invalid(std::string{option} + " value must not be empty")); + } + return value; + }; + for (auto index = std::int32_t{1}; index < argc; ++index) { + auto argument = std::string_view{argv[index]}; + if (argument == "--config") { + auto value = require_value(index, "--config"); + if (!value) { + return std::unexpected(value.error()); + } + result.config_path = *value; + } else if (argument == "--check-config") { + result.check_config = true; + } else if (argument == "--health-check") { + result.health_check = true; + } else if (argument == "--version") { + result.print_version = true; + } else if (argument == "--once") { + result.exit_after_startup = true; + } else if (argument == "--migrate") { + result.migrate = true; + } else if (argument == "--help" || argument == "-h") { + return std::unexpected(invalid(usage())); + } else { + return std::unexpected(invalid("unknown argument: " + std::string{argument})); + } + } + auto command_count = static_cast(result.check_config ? 1 : 0) + + static_cast(result.health_check ? 1 : 0) + + static_cast(result.print_version ? 1 : 0) + + static_cast(result.exit_after_startup ? 1 : 0) + + static_cast(result.migrate ? 1 : 0); + if (command_count > 1U) { + return std::unexpected(invalid("only one command flag may be selected")); + } + return result; +} + +auto vamp_zero::run(vamp_zero::command_line command) -> std::expected { + if (command.print_version) { + std::cout << VAMP_VERSION << " " << VAMP_GIT_SHA << '\n'; + return {}; + } + auto config = vamp_zero::load_config(command.config_path); + if (!config) { + return std::unexpected(config.error()); + } + modulus::configure(config->modulus); + if (command.check_config) { + std::cout << "ok\n"; + return {}; + } + if (command.health_check) { + std::cout << "ok\n"; + return {}; + } + if (command.migrate) { + return migrate(*config); + } + if (command.exit_after_startup || config->runtime.exit_after_startup) { + std::cout << "ok\n"; + return {}; + } + + auto migrated = migrate(*config); + if (!migrated) { + return migrated; + } + auto imported = import_library(*config); + if (!imported) { + return imported; + } + auto initial = load_initial_state(*config); + if (!initial) { + return std::unexpected(initial.error()); + } + auto state = vamp_zero::control_state{*config, std::move(*initial)}; + if (config->runtime.headless) { + return run_headless(*config, state); + } + return run_display(*config, state); +} diff --git a/src/vamp_zero/color.cpp b/src/vamp_zero/color.cpp new file mode 100644 index 0000000..23834a9 --- /dev/null +++ b/src/vamp_zero/color.cpp @@ -0,0 +1,10 @@ +#include + +auto vamp_zero::to_luma(vamp_style::color value) -> luma::color { + return { + .r = value.r, + .g = value.g, + .b = value.b, + .a = value.a, + }; +} diff --git a/src/vamp_zero/config.cpp b/src/vamp_zero/config.cpp new file mode 100644 index 0000000..e7dc0bf --- /dev/null +++ b/src/vamp_zero/config.cpp @@ -0,0 +1,207 @@ +#include + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include + +namespace { + +constexpr auto json_options = modulus::json_config::options{ + .category = "product-vamp.config", + .invalid_argument_code = static_cast(vamp_zero::error_code::INVALID_ARGUMENT), + .not_found_code = static_cast(vamp_zero::error_code::NOT_FOUND), +}; + +auto invalid(std::string message) -> modulus::error { + return vamp_zero::make_error(vamp_zero::error_code::INVALID_ARGUMENT, std::move(message)); +} + +auto require_object(boost::json::value const& value, std::string_view name) -> std::expected { + if (!value.is_object()) { + return std::unexpected(invalid(std::string{name} + " must be an object")); + } + return &value.as_object(); +} + +auto optional_object(boost::json::object const& object, std::string_view field) -> std::expected { + auto found = object.find(field); + if (found == object.end()) { + return nullptr; + } + return require_object(found->value(), field); +} + +auto optional_string(boost::json::object const& object, std::string_view field, std::string fallback) -> std::expected { + auto found = object.find(field); + if (found == object.end()) { + return fallback; + } + if (!found->value().is_string()) { + return std::unexpected(invalid(std::string{field} + " must be a string")); + } + auto value = std::string{found->value().as_string()}; + if (value.empty()) { + return std::unexpected(invalid(std::string{field} + " must not be empty")); + } + return value; +} + +auto optional_bool(boost::json::object const& object, std::string_view field, std::bool_t fallback) -> std::expected { + auto found = object.find(field); + if (found == object.end()) { + return fallback; + } + if (!found->value().is_bool()) { + return std::unexpected(invalid(std::string{field} + " must be a boolean")); + } + return found->value().as_bool(); +} + +auto parse_hardware(std::string const& value) -> std::expected { + if (value == "fake") { + return vamp_zero::hardware_mode::FAKE; + } + if (value == "real") { + return vamp_zero::hardware_mode::REAL; + } + return std::unexpected(invalid("runtime.hardware must be fake or real")); +} + +auto parse_runtime(boost::json::object const& root, vamp_zero::runtime_config fallback) -> std::expected { + auto object = optional_object(root, "runtime"); + if (!object) { + return std::unexpected(object.error()); + } + if (*object == nullptr) { + return fallback; + } + auto hardware_text = optional_string(**object, "hardware", vamp_zero::to_string(fallback.hardware)); + auto headless = optional_bool(**object, "headless", fallback.headless); + auto exit_after_startup = optional_bool(**object, "exit_after_startup", fallback.exit_after_startup); + auto assets_path = optional_string(**object, "assets_path", fallback.assets_path); + auto heartbeat_path = optional_string(**object, "heartbeat_path", fallback.heartbeat_path); + if (!hardware_text || !headless || !exit_after_startup || !assets_path || !heartbeat_path) { + return std::unexpected(!hardware_text ? hardware_text.error() : (!headless ? headless.error() : (!exit_after_startup ? exit_after_startup.error() : (!assets_path ? assets_path.error() : heartbeat_path.error())))); + } + auto hardware = parse_hardware(*hardware_text); + if (!hardware) { + return std::unexpected(hardware.error()); + } + return vamp_zero::runtime_config{ + .hardware = *hardware, + .headless = *headless, + .exit_after_startup = *exit_after_startup, + .assets_path = std::move(*assets_path), + .heartbeat_path = std::move(*heartbeat_path), + }; +} + +auto parse_database(boost::json::object const& root, vamp_zero::database_config fallback) -> std::expected { + auto object = optional_object(root, "database"); + if (!object) { + return std::unexpected(object.error()); + } + if (*object == nullptr) { + return fallback; + } + auto path = optional_string(**object, "path", fallback.path); + auto migrations_path = optional_string(**object, "migrations_path", fallback.migrations_path); + if (!path || !migrations_path) { + return std::unexpected(!path ? path.error() : migrations_path.error()); + } + return vamp_zero::database_config{ + .path = std::move(*path), + .migrations_path = std::move(*migrations_path), + }; +} + +auto parse_control(boost::json::object const& root, vamp_zero::control_config fallback) -> std::expected { + auto object = optional_object(root, "control"); + if (!object) { + return std::unexpected(object.error()); + } + if (*object == nullptr) { + return fallback; + } + auto result = fallback; + if (auto found = (*object)->find("endpoint"); found != (*object)->end()) { + auto endpoint = ligo::parse_endpoint_config(found->value()); + if (!endpoint) { + return std::unexpected(endpoint.error()); + } + if (endpoint->protocol != ligo::protocol::HTTP || endpoint->bind.empty()) { + return std::unexpected(invalid("control.endpoint must be an HTTP bind endpoint")); + } + result.endpoint = std::move(*endpoint); + } + auto ap_ssid = optional_string(**object, "ap_ssid", result.ap_ssid); + auto ap_passphrase = optional_string(**object, "ap_passphrase", result.ap_passphrase); + auto ap_interface = optional_string(**object, "ap_interface", result.ap_interface); + auto zero_ip = optional_string(**object, "zero_ip", result.zero_ip); + auto zero_cidr = optional_string(**object, "zero_cidr", result.zero_cidr); + if (!ap_ssid || !ap_passphrase || !ap_interface || !zero_ip || !zero_cidr) { + return std::unexpected(!ap_ssid ? ap_ssid.error() : (!ap_passphrase ? ap_passphrase.error() : (!ap_interface ? ap_interface.error() : (!zero_ip ? zero_ip.error() : zero_cidr.error())))); + } + if (ap_passphrase->size() < 8U) { + return std::unexpected(invalid("control.ap_passphrase must be at least 8 characters")); + } + result.ap_ssid = std::move(*ap_ssid); + result.ap_passphrase = std::move(*ap_passphrase); + result.ap_interface = std::move(*ap_interface); + result.zero_ip = std::move(*zero_ip); + result.zero_cidr = std::move(*zero_cidr); + return result; +} + +} + +auto vamp_zero::parse_config(boost::json::value const& value) -> std::expected { + auto root = require_object(value, "Product Vamp config root"); + if (!root) { + return std::unexpected(root.error()); + } + auto result = vamp_zero::config{}; + if (auto found = (*root)->find("modulus"); found != (*root)->end()) { + auto parsed = modulus::parse_config(found->value()); + if (!parsed) { + return std::unexpected(parsed.error()); + } + result.modulus = *parsed; + } + auto runtime = parse_runtime(**root, result.runtime); + auto database = parse_database(**root, result.database); + auto control = parse_control(**root, result.control); + if (!runtime || !database || !control) { + return std::unexpected(!runtime ? runtime.error() : (!database ? database.error() : control.error())); + } + result.runtime = std::move(*runtime); + result.database = std::move(*database); + result.control = std::move(*control); + if (auto found = (*root)->find("display"); found != (*root)->end()) { + auto display = luma::parse_application_config(found->value()); + if (!display) { + return std::unexpected(display.error()); + } + result.display = std::move(*display); + } + return result; +} + +auto vamp_zero::load_config(std::string const& path) -> std::expected { + auto value = modulus::json_config::load_value(path, json_options); + if (!value) { + return std::unexpected(value.error()); + } + return vamp_zero::parse_config(*value); +} diff --git a/src/vamp_zero/database.cpp b/src/vamp_zero/database.cpp new file mode 100644 index 0000000..0376aaa --- /dev/null +++ b/src/vamp_zero/database.cpp @@ -0,0 +1,454 @@ +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include + +#include +#include + +namespace { + +constexpr auto application_id = std::int64_t{0x56414D50}; +constexpr auto statement_delimiter = std::string_view{"-- vamp-statement"}; + +auto trim(std::string value) -> std::string { + auto first = value.find_first_not_of(" \t\r\n"); + if (first == std::string::npos) { + return {}; + } + auto last = value.find_last_not_of(" \t\r\n"); + return value.substr(first, last - first + 1U); +} + +auto read_text(std::string const& path) -> std::expected { + auto input = std::ifstream{path, std::ios::binary}; + if (!input) { + return std::unexpected(vamp_zero::make_error(vamp_zero::error_code::NOT_FOUND, "failed to open migration: " + path)); + } + auto text = std::string{std::istreambuf_iterator{input}, std::istreambuf_iterator{}}; + if (!input.good() && !input.eof()) { + return std::unexpected(vamp_zero::make_error(vamp_zero::error_code::UNAVAILABLE, "failed to read migration: " + path)); + } + return text; +} + +auto execute_statements(noto::connection& connection, std::vector statements) -> boost::asio::awaitable> { + for (auto& statement : statements) { + auto result = co_await connection.async_execute(std::move(statement)); + if (!result) { + co_return std::unexpected(result.error()); + } + } + co_return std::expected{}; +} + +auto connection_config(vamp_zero::database_config const& config) -> noto::connection_config { + auto result = config.path == ":memory:" ? noto::memory_connection_config("product-vamp") : noto::file_connection_config(config.path, "product-vamp"); + result.busy_timeout = std::chrono::seconds{5}; + result.foreign_keys = true; + result.pragmas = { + {.name = "synchronous", .value = std::string{"NORMAL"}}, + {.name = "temp_store", .value = std::string{"MEMORY"}}, + }; + return result; +} + +auto read_migration(vamp_zero::database_config const& config, std::string filename) -> std::expected, modulus::error> { + auto migration_text = read_text(config.migrations_path + "/" + filename); + if (!migration_text) { + return std::unexpected(migration_text.error()); + } + return vamp_zero::split_migration_statements(*migration_text); +} + +auto text_value(noto::sqlite_value const& value) -> std::string { + auto text = std::get_if(&value.value); + return text == nullptr ? std::string{} : *text; +} + +auto path_parts(std::filesystem::path const& path) -> std::vector { + auto parts = std::vector{}; + for (auto const& part : path) { + parts.push_back(part.string()); + } + return parts; +} + +auto logical_practice_exercise_id(std::string const& type_id, std::string const& lesson_id, std::string const& source_path, std::string const& fallback) -> std::string { + auto parts = path_parts(std::filesystem::path{source_path}); + for (auto index = std::size_t{}; index + 3U < parts.size(); ++index) { + if (parts[index] == "practice" && parts[index + 1U] == type_id && parts[index + 2U] == lesson_id) { + return type_id + "-" + lesson_id + "-" + parts[index + 3U]; + } + } + auto stem = std::filesystem::path{source_path}.parent_path().filename().string(); + if (stem.empty()) { + stem = fallback; + } + return type_id + "-" + lesson_id + "-" + stem; +} + +auto now_ms() -> std::int64_t { + return std::chrono::duration_cast(std::chrono::system_clock::now().time_since_epoch()).count(); +} + +} + +auto vamp_zero::split_migration_statements(std::string const& input) -> std::expected, modulus::error> { + auto statements = std::vector{}; + auto current = std::string{}; + auto stream = std::istringstream{input}; + auto line = std::string{}; + while (std::getline(stream, line)) { + if (trim(line) == statement_delimiter) { + current = trim(std::move(current)); + if (current.empty()) { + return std::unexpected(vamp_zero::make_error(vamp_zero::error_code::INVALID_ARGUMENT, "migration contains an empty statement")); + } + statements.push_back(std::move(current)); + current.clear(); + continue; + } + current += line; + current.push_back('\n'); + } + current = trim(std::move(current)); + if (!current.empty()) { + statements.push_back(std::move(current)); + } + if (statements.empty()) { + return std::unexpected(vamp_zero::make_error(vamp_zero::error_code::INVALID_ARGUMENT, "migration must contain at least one statement")); + } + for (auto const& statement : statements) { + if (statement.empty() || statement.back() != ';') { + return std::unexpected(vamp_zero::make_error(vamp_zero::error_code::INVALID_ARGUMENT, "every migration statement must end with a semicolon")); + } + } + return statements; +} + +auto vamp_zero::async_migrate_database(boost::asio::any_io_executor executor, vamp_zero::database_config config) -> boost::asio::awaitable> { + if (config.path.empty() || config.migrations_path.empty()) { + co_return std::unexpected(vamp_zero::make_error(vamp_zero::error_code::INVALID_ARGUMENT, "database paths must not be empty")); + } + if (config.path != ":memory:") { + auto parent = std::filesystem::path{config.path}.parent_path(); + if (!parent.empty()) { + auto error = std::error_code{}; + std::filesystem::create_directories(parent, error); + if (error) { + co_return std::unexpected(vamp_zero::make_error(vamp_zero::error_code::UNAVAILABLE, "failed to create database directory: " + error.message())); + } + } + } + + auto connection = noto::connection{executor, connection_config(config)}; + auto connected = co_await connection.async_connect(); + if (!connected) { + co_return std::unexpected(connected.error()); + } + if (config.path != ":memory:") { + auto journal = co_await connection.async_journal_mode("WAL"); + if (!journal || *journal != "wal") { + auto close = co_await connection.async_close(); + if (!close) { + modulus::log_error("database close failed after WAL error: " + close.error().describe()); + } + co_return std::unexpected(journal ? vamp_zero::make_error(vamp_zero::error_code::PERSISTENCE, "SQLite did not enter WAL mode") : journal.error()); + } + } + auto current_application_id = co_await connection.async_application_id(); + if (!current_application_id) { + co_return std::unexpected(current_application_id.error()); + } + if (*current_application_id != 0 && *current_application_id != application_id) { + co_return std::unexpected(vamp_zero::make_error(vamp_zero::error_code::PERSISTENCE, "database application id does not belong to Product Vamp")); + } + if (*current_application_id == 0) { + auto set = co_await connection.async_set_application_id(application_id); + if (!set) { + co_return std::unexpected(set.error()); + } + } + + auto foundation_statements = read_migration(config, "001_foundation.sql"); + if (!foundation_statements) { + co_return std::unexpected(foundation_statements.error()); + } + auto import_statements = read_migration(config, "002_song_import_metadata.sql"); + if (!import_statements) { + co_return std::unexpected(import_statements.error()); + } + auto practice_statements = read_migration(config, "003_practice_catalog.sql"); + if (!practice_statements) { + co_return std::unexpected(practice_statements.error()); + } + auto practice_hierarchy_statements = read_migration(config, "004_practice_hierarchy.sql"); + if (!practice_hierarchy_statements) { + co_return std::unexpected(practice_hierarchy_statements.error()); + } + auto migrator = noto::migrator{connection}; + auto migrations = std::vector{}; + auto foundation = noto::migration{}; + foundation.id = "001_foundation"; + foundation.description = "initial Product Vamp appliance tables"; + foundation.checksum = "001_foundation_v1"; + foundation.up = [statements = std::move(*foundation_statements)](noto::connection& connection) -> boost::asio::awaitable> { + co_return co_await execute_statements(connection, statements); + }; + migrations.push_back(std::move(foundation)); + auto import = noto::migration{}; + import.id = "002_song_import_metadata"; + import.description = "song import metadata"; + import.checksum = "002_song_import_metadata_v1"; + import.up = [statements = std::move(*import_statements)](noto::connection& connection) -> boost::asio::awaitable> { + co_return co_await execute_statements(connection, statements); + }; + migrations.push_back(std::move(import)); + auto practice = noto::migration{}; + practice.id = "003_practice_catalog"; + practice.description = "practice exercise catalog"; + practice.checksum = "003_practice_catalog_v1"; + practice.up = [statements = std::move(*practice_statements)](noto::connection& connection) -> boost::asio::awaitable> { + co_return co_await execute_statements(connection, statements); + }; + migrations.push_back(std::move(practice)); + auto practice_hierarchy = noto::migration{}; + practice_hierarchy.id = "004_practice_hierarchy"; + practice_hierarchy.description = "practice type and lesson hierarchy"; + practice_hierarchy.checksum = "004_practice_hierarchy_v1"; + practice_hierarchy.up = [statements = std::move(*practice_hierarchy_statements)](noto::connection& connection) -> boost::asio::awaitable> { + co_return co_await execute_statements(connection, statements); + }; + migrations.push_back(std::move(practice_hierarchy)); + + auto migrated = co_await migrator.async_migrate(std::move(migrations)); + if (!migrated) { + co_return std::unexpected(migrated.error()); + } + auto version = co_await connection.async_set_user_version(4); + if (!version) { + co_return std::unexpected(version.error()); + } + co_return co_await connection.async_close(); +} + +auto vamp_zero::async_import_catalogs(boost::asio::any_io_executor executor, vamp_zero::database_config config, std::string assets_path) -> boost::asio::awaitable> { + auto performance = vamp_zero::load_performance_library(assets_path); + if (!performance) { + co_return std::unexpected(performance.error()); + } + auto practice = vamp_zero::load_practice_library(assets_path); + if (!practice) { + co_return std::unexpected(practice.error()); + } + auto connection = noto::connection{executor, connection_config(config)}; + auto connected = co_await connection.async_connect(); + if (!connected) { + co_return std::unexpected(connected.error()); + } + auto begin = co_await connection.async_execute("BEGIN IMMEDIATE"); + if (!begin) { + co_return std::unexpected(begin.error()); + } + auto imported = std::expected{}; + auto cleared = co_await connection.async_execute("DELETE FROM songs"); + if (!cleared) { + imported = std::unexpected(cleared.error()); + } + if (imported) { + auto cleared_practice = co_await connection.async_execute("DELETE FROM practice_exercises"); + if (!cleared_practice) { + imported = std::unexpected(cleared_practice.error()); + } + } + auto timestamp = now_ms(); + for (auto const& part : performance->parts) { + if (!imported) { + break; + } + auto params = std::vector{ + noto::sqlite_value{part.id}, + noto::sqlite_value{part.title}, + noto::sqlite_value{part.composer}, + noto::sqlite_value{part.source_json}, + noto::sqlite_value{timestamp}, + noto::sqlite_value{timestamp}, + noto::sqlite_value{part.part}, + noto::sqlite_value{part.source_path}, + noto::sqlite_value{part.key_signature}, + }; + auto inserted = co_await connection.async_execute("INSERT INTO songs(id, title, composer, source_json, created_at_ms, updated_at_ms, part, source_path, key_signature) VALUES(?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9)", std::move(params)); + if (!inserted) { + imported = std::unexpected(inserted.error()); + } + } + for (auto const& exercise : practice->exercises) { + if (!imported) { + break; + } + for (auto const& variant : exercise.variants) { + auto params = std::vector{ + noto::sqlite_value{variant.id}, + noto::sqlite_value{exercise.practice_type_id}, + noto::sqlite_value{exercise.practice_type_title}, + noto::sqlite_value{exercise.lesson_group_id}, + noto::sqlite_value{exercise.lesson_group_title}, + noto::sqlite_value{exercise.title}, + noto::sqlite_value{exercise.composer}, + noto::sqlite_value{variant.key_signature}, + noto::sqlite_value{variant.source_json}, + noto::sqlite_value{variant.source_path}, + noto::sqlite_value{timestamp}, + noto::sqlite_value{timestamp}, + }; + auto inserted = co_await connection.async_execute("INSERT INTO practice_exercises(id, practice_type_id, practice_type_title, lesson_group_id, lesson_group_title, title, composer, key_signature, source_json, source_path, created_at_ms, updated_at_ms) VALUES(?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12)", std::move(params)); + if (!inserted) { + imported = std::unexpected(inserted.error()); + break; + } + } + } + if (imported) { + auto committed = co_await connection.async_execute("COMMIT"); + if (!committed) { + imported = std::unexpected(committed.error()); + } + } else { + static_cast(co_await connection.async_execute("ROLLBACK")); + } + if (!imported) { + auto close = co_await connection.async_close(); + if (!close) { + modulus::log_error("database close failed after import error: " + close.error().describe()); + } + co_return std::unexpected(imported.error()); + } + co_return co_await connection.async_close(); +} + +auto vamp_zero::async_load_performance_library(boost::asio::any_io_executor executor, vamp_zero::database_config config) -> boost::asio::awaitable> { + auto connection = noto::connection{executor, connection_config(config)}; + auto connected = co_await connection.async_connect(); + if (!connected) { + co_return std::unexpected(connected.error()); + } + auto selected = co_await connection.async_execute("SELECT id, title, composer, part, source_path, source_json, key_signature FROM songs ORDER BY title COLLATE NOCASE, part COLLATE NOCASE"); + if (!selected) { + auto close = co_await connection.async_close(); + if (!close) { + modulus::log_error("database close failed after load error: " + close.error().describe()); + } + co_return std::unexpected(selected.error()); + } + auto parts = std::vector{}; + for (auto const& row : selected->rows) { + if (row.size() < 7U) { + continue; + } + auto source_json = text_value(row[5]); + auto parsed = vamp_zero::parse_score_document(source_json, text_value(row[4])); + if (!parsed) { + auto close = co_await connection.async_close(); + if (!close) { + modulus::log_error("database close failed after parse error: " + close.error().describe()); + } + co_return std::unexpected(parsed.error()); + } + parts.push_back({ + .id = text_value(row[0]), + .title = text_value(row[1]), + .composer = text_value(row[2]), + .key_signature = text_value(row[6]), + .part = text_value(row[3]), + .source_path = text_value(row[4]), + .source_json = std::move(source_json), + .measure_count = parsed->measures.size(), + .total_pages = parsed->measures.empty() ? 1U : (parsed->measures.size() + 11U) / 12U, + }); + } + auto closed = co_await connection.async_close(); + if (!closed) { + co_return std::unexpected(closed.error()); + } + co_return vamp_zero::group_library_parts(std::move(parts)); +} + +auto vamp_zero::async_load_practice_library(boost::asio::any_io_executor executor, vamp_zero::database_config config) -> boost::asio::awaitable> { + auto connection = noto::connection{executor, connection_config(config)}; + auto connected = co_await connection.async_connect(); + if (!connected) { + co_return std::unexpected(connected.error()); + } + auto selected = co_await connection.async_execute("SELECT id, practice_type_id, practice_type_title, lesson_group_id, lesson_group_title, title, composer, key_signature, source_path, source_json FROM practice_exercises ORDER BY practice_type_id COLLATE NOCASE, lesson_group_id COLLATE NOCASE, source_path COLLATE NOCASE, title COLLATE NOCASE, id COLLATE NOCASE"); + if (!selected) { + auto close = co_await connection.async_close(); + if (!close) { + modulus::log_error("database close failed after practice load error: " + close.error().describe()); + } + co_return std::unexpected(selected.error()); + } + auto exercises = std::vector{}; + for (auto const& row : selected->rows) { + if (row.size() < 10U) { + continue; + } + auto source_json = text_value(row[9]); + auto parsed = vamp_zero::parse_score_document(source_json, text_value(row[8])); + if (!parsed) { + auto close = co_await connection.async_close(); + if (!close) { + modulus::log_error("database close failed after practice parse error: " + close.error().describe()); + } + co_return std::unexpected(parsed.error()); + } + auto type_id = text_value(row[1]); + auto lesson_id = text_value(row[3]); + auto source_path = text_value(row[8]); + auto key_signature = text_value(row[7]).empty() ? std::string{"C"} : text_value(row[7]); + auto variant = vamp_zero::practice_exercise::score_variant{ + .id = text_value(row[0]), + .key_signature = key_signature, + .source_path = source_path, + .source_json = source_json, + .measure_count = parsed->measures.size(), + .total_pages = parsed->measures.empty() ? 1U : (parsed->measures.size() + 11U) / 12U, + }; + exercises.push_back({ + .id = logical_practice_exercise_id(type_id, lesson_id, source_path, text_value(row[5])), + .practice_type_id = std::move(type_id), + .practice_type_title = text_value(row[2]), + .lesson_group_id = std::move(lesson_id), + .lesson_group_title = text_value(row[4]), + .title = text_value(row[5]), + .composer = text_value(row[6]), + .key_signature = variant.key_signature, + .source_path = variant.source_path, + .source_json = variant.source_json, + .measure_count = variant.measure_count, + .total_pages = variant.total_pages, + .variants = {std::move(variant)}, + }); + } + auto closed = co_await connection.async_close(); + if (!closed) { + co_return std::unexpected(closed.error()); + } + co_return vamp_zero::group_practice_exercises(std::move(exercises)); +} diff --git a/src/vamp_zero/errors.cpp b/src/vamp_zero/errors.cpp new file mode 100644 index 0000000..a486b0c --- /dev/null +++ b/src/vamp_zero/errors.cpp @@ -0,0 +1,11 @@ +#include + +#include + +auto vamp_zero::make_error(vamp_zero::error_code code, std::string message, modulus::source_location location) -> modulus::error { + return modulus::make_error("product-vamp", static_cast(code), std::move(message), location); +} + +auto vamp_zero::fail_void(vamp_zero::error_code code, std::string message, modulus::source_location location) -> std::expected { + return modulus::fail(vamp_zero::make_error(code, std::move(message), location)); +} diff --git a/src/vamp_zero/library.cpp b/src/vamp_zero/library.cpp new file mode 100644 index 0000000..a2c99f9 --- /dev/null +++ b/src/vamp_zero/library.cpp @@ -0,0 +1,587 @@ +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include + +namespace { + +auto invalid(std::string message) -> modulus::error { + return vamp_zero::make_error(vamp_zero::error_code::INVALID_ARGUMENT, std::move(message)); +} + +auto required_string(boost::json::object const& object, std::char_t const* field) -> std::expected { + auto found = object.find(field); + if (found == object.end() || !found->value().is_string()) { + return std::unexpected(invalid(std::string{field} + " must be a string")); + } + auto value = std::string{found->value().as_string()}; + if (value.empty()) { + return std::unexpected(invalid(std::string{field} + " must not be empty")); + } + return value; +} + +auto optional_string_value(boost::json::object const& object, std::char_t const* field, std::string fallback = {}) -> std::expected { + auto found = object.find(field); + if (found == object.end()) { + return fallback; + } + if (!found->value().is_string()) { + return std::unexpected(invalid(std::string{field} + " must be a string")); + } + return std::string{found->value().as_string()}; +} + +auto optional_bool_value(boost::json::object const& object, std::char_t const* field, std::bool_t fallback = false) -> std::expected { + auto found = object.find(field); + if (found == object.end()) { + return fallback; + } + if (!found->value().is_bool()) { + return std::unexpected(invalid(std::string{field} + " must be a boolean")); + } + return found->value().as_bool(); +} + +auto optional_int64_value(boost::json::object const& object, std::char_t const* field, std::int64_t fallback = 0) -> std::expected { + auto found = object.find(field); + if (found == object.end()) { + return fallback; + } + if (found->value().is_int64()) { + return found->value().as_int64(); + } + if (found->value().is_uint64()) { + auto value = found->value().as_uint64(); + if (value <= static_cast(std::numeric_limits::max())) { + return static_cast(value); + } + } + return std::unexpected(invalid(std::string{field} + " must be an integer")); +} + +auto require_object(boost::json::value const& value, std::string_view label) -> std::expected { + if (!value.is_object()) { + return std::unexpected(invalid(std::string{label} + " must be an object")); + } + return &value.as_object(); +} + +auto require_array(boost::json::object const& object, std::char_t const* field) -> std::expected { + auto found = object.find(field); + if (found == object.end() || !found->value().is_array()) { + return std::unexpected(invalid(std::string{field} + " must be an array")); + } + return &found->value().as_array(); +} + +auto human_label(std::string value) -> std::string { + if (value.empty()) { + return "Score"; + } + auto capitalize_next = true; + for (auto& ch : value) { + if (ch == '-' || ch == '_') { + ch = ' '; + capitalize_next = true; + continue; + } + if (capitalize_next && ch >= 'a' && ch <= 'z') { + ch = static_cast(ch - ('a' - 'A')); + } + capitalize_next = false; + } + return value; +} + +auto practice_type_label(std::string const& value) -> std::string { + return human_label(value) + " Practice"; +} + +auto generated_source_id(std::string const& source_path, std::string const& title, std::string const& part) -> std::string { + if (!source_path.empty()) { + auto stem = std::filesystem::path{source_path}.stem().string(); + if (!stem.empty()) { + return stem; + } + } + auto value = title + "-" + part; + for (auto& ch : value) { + if (ch >= 'A' && ch <= 'Z') { + ch = static_cast(ch + ('a' - 'A')); + } else if (!((ch >= 'a' && ch <= 'z') || (ch >= '0' && ch <= '9'))) { + ch = '-'; + } + } + return value.empty() ? "score" : value; +} + +auto parse_pitch(boost::json::value const& value) -> std::expected { + auto object = require_object(value, "pitch"); + if (!object) { + return std::unexpected(object.error()); + } + auto letter = optional_string_value(**object, "letter", "c"); + auto octave = optional_int64_value(**object, "octave", 4); + auto accidental = optional_string_value(**object, "accidental", {}); + if (!letter || !octave || !accidental) { + return std::unexpected(!letter ? letter.error() : (!octave ? octave.error() : accidental.error())); + } + return vamp_zero::score_pitch{ + .letter = letter->empty() ? 'c' : (*letter)[0], + .octave = static_cast(*octave), + .accidental = std::move(*accidental), + }; +} + +auto parse_note(boost::json::value const& value) -> std::expected { + auto object = require_object(value, "note"); + if (!object) { + return std::unexpected(object.error()); + } + auto id = optional_string_value(**object, "id", {}); + auto kind = optional_string_value(**object, "kind", "note"); + auto hidden = optional_bool_value(**object, "hidden", false); + auto duration = optional_int64_value(**object, "duration_ticks", 0); + auto display = std::expected{0}; + if (duration) { + display = optional_int64_value(**object, "display_ticks", *duration); + } + auto notehead = optional_string_value(**object, "notehead", {}); + auto chord = optional_string_value(**object, "chord_symbol", {}); + auto lyric = optional_string_value(**object, "lyric", {}); + auto tie_to_next = optional_bool_value(**object, "tie_to_next", false); + auto tie_from_previous = optional_bool_value(**object, "tie_from_previous", false); + if (!id || !kind || !hidden || !duration || !display || !notehead || !chord || !lyric || !tie_to_next || !tie_from_previous) { + return std::unexpected(!id ? id.error() : (!kind ? kind.error() : (!hidden ? hidden.error() : (!duration ? duration.error() : (!display ? display.error() : (!notehead ? notehead.error() : (!chord ? chord.error() : (!lyric ? lyric.error() : (!tie_to_next ? tie_to_next.error() : tie_from_previous.error()))))))))); + } + auto note = vamp_zero::score_note{ + .id = std::move(*id), + .kind = std::move(*kind), + .hidden = *hidden, + .duration_ticks = *duration, + .display_ticks = *display, + .notehead = std::move(*notehead), + .chord_symbol = std::move(*chord), + .lyric = std::move(*lyric), + .tie_to_next = *tie_to_next, + .tie_from_previous = *tie_from_previous, + }; + if (auto found = (*object)->find("pitches"); found != (*object)->end()) { + if (!found->value().is_array()) { + return std::unexpected(invalid("pitches must be an array")); + } + for (auto const& pitch_value : found->value().as_array()) { + auto pitch = parse_pitch(pitch_value); + if (!pitch) { + return std::unexpected(pitch.error()); + } + note.pitches.push_back(std::move(*pitch)); + } + } + return note; +} + +auto parse_measure(boost::json::value const& value) -> std::expected { + auto object = require_object(value, "measure"); + if (!object) { + return std::unexpected(object.error()); + } + auto id = optional_string_value(**object, "id", {}); + auto section = optional_string_value(**object, "section_label", {}); + auto time = optional_string_value(**object, "time_signature", {}); + auto key = optional_string_value(**object, "key_signature", {}); + if (!id || !section || !time || !key) { + return std::unexpected(!id ? id.error() : (!section ? section.error() : (!time ? time.error() : key.error()))); + } + auto measure = vamp_zero::score_measure{ + .id = std::move(*id), + .section_label = std::move(*section), + .time_signature = std::move(*time), + .key_signature = std::move(*key), + }; + auto voices = require_array(**object, "voices"); + if (!voices) { + return std::unexpected(voices.error()); + } + for (auto const& voice_value : **voices) { + auto voice = require_object(voice_value, "voice"); + if (!voice) { + return std::unexpected(voice.error()); + } + auto notes = require_array(**voice, "notes"); + if (!notes) { + return std::unexpected(notes.error()); + } + for (auto const& note_value : **notes) { + auto note = parse_note(note_value); + if (!note) { + return std::unexpected(note.error()); + } + measure.notes.push_back(std::move(*note)); + } + } + return measure; +} + +auto score_page_count(std::size_t measure_count) -> std::size_t { + constexpr auto measures_per_page = std::size_t{12}; + return measure_count == 0U ? 1U : (measure_count + measures_per_page - 1U) / measures_per_page; +} + +auto load_score_documents(std::filesystem::path const& directory, std::bool_t required) -> std::expected, modulus::error> { + auto error = std::error_code{}; + if (!std::filesystem::exists(directory, error)) { + if (required) { + return std::unexpected(vamp_zero::make_error(vamp_zero::error_code::NOT_FOUND, "score asset directory not found: " + directory.string())); + } + return std::vector{}; + } + + auto paths = std::vector{}; + for (auto const& entry : std::filesystem::directory_iterator{directory, error}) { + if (error) { + return std::unexpected(vamp_zero::make_error(vamp_zero::error_code::UNAVAILABLE, "failed to scan score assets: " + error.message())); + } + if (!entry.is_regular_file() || entry.path().extension() != ".json") { + continue; + } + paths.push_back(entry.path()); + } + std::sort(paths.begin(), paths.end()); + + auto documents = std::vector{}; + for (auto const& path : paths) { + auto input = std::ifstream{path, std::ios::binary}; + if (!input) { + return std::unexpected(vamp_zero::make_error(vamp_zero::error_code::NOT_FOUND, "failed to open score JSON: " + path.string())); + } + auto text = std::string{std::istreambuf_iterator{input}, std::istreambuf_iterator{}}; + auto document = vamp_zero::parse_score_document(text, path.string()); + if (!document) { + return std::unexpected(document.error()); + } + documents.push_back(std::move(*document)); + } + return documents; +} + +auto path_parts(std::filesystem::path const& path) -> std::vector { + auto parts = std::vector{}; + for (auto const& part : path) { + parts.push_back(part.string()); + } + return parts; +} + +auto key_rank(std::string const& key) -> std::size_t { + static auto const keys = std::vector{ + "C", + "Db", + "D", + "Eb", + "E", + "F", + "Gb", + "G", + "Ab", + "A", + "Bb", + "B", + }; + auto found = std::find(keys.begin(), keys.end(), key); + return found == keys.end() ? keys.size() : static_cast(std::distance(keys.begin(), found)); +} + +auto sync_primary_variant(vamp_zero::practice_exercise& exercise) -> void { + std::sort(exercise.variants.begin(), exercise.variants.end(), [](auto const& left, auto const& right) { + auto left_rank = key_rank(left.key_signature); + auto right_rank = key_rank(right.key_signature); + if (left_rank != right_rank) { + return left_rank < right_rank; + } + return left.id < right.id; + }); + if (exercise.variants.empty()) { + return; + } + auto const& primary = exercise.variants.front(); + exercise.key_signature = primary.key_signature; + exercise.source_path = primary.source_path; + exercise.source_json = primary.source_json; + exercise.measure_count = primary.measure_count; + exercise.total_pages = primary.total_pages; +} + +auto same_practice_exercise(vamp_zero::practice_exercise const& left, vamp_zero::practice_exercise const& right) -> std::bool_t { + return left.id == right.id + && left.practice_type_id == right.practice_type_id + && left.lesson_group_id == right.lesson_group_id; +} + +} + +auto vamp_zero::parse_score_document(std::string_view json, std::string source_path) -> std::expected { + auto error = boost::system::error_code{}; + auto parsed = boost::json::parse(json, error); + if (error) { + return std::unexpected(invalid("score JSON is invalid: " + error.message())); + } + auto root = require_object(parsed, "score root"); + if (!root) { + return std::unexpected(root.error()); + } + auto metadata_value = (*root)->find("metadata"); + if (metadata_value == (*root)->end()) { + return std::unexpected(invalid("score metadata is required")); + } + auto metadata = require_object(metadata_value->value(), "metadata"); + if (!metadata) { + return std::unexpected(metadata.error()); + } + auto title = required_string(**metadata, "title"); + auto composer = optional_string_value(**metadata, "composer", {}); + auto key = optional_string_value(**metadata, "key_signature", {}); + if (!title || !composer || !key) { + return std::unexpected(!title ? title.error() : (!composer ? composer.error() : key.error())); + } + + auto staves = require_array(**root, "staves"); + if (!staves) { + return std::unexpected(staves.error()); + } + if ((*staves)->empty() || !(*staves)->front().is_object()) { + return std::unexpected(invalid("score must contain at least one staff")); + } + auto const& staff = (*staves)->front().as_object(); + auto part = optional_string_value(staff, "arrangement_part_type", {}); + if (!part || part->empty()) { + part = optional_string_value(staff, "role", {}); + } + if (!part || part->empty()) { + part = optional_string_value(staff, "name", "score"); + } + if (!part) { + return std::unexpected(part.error()); + } + + auto measures = require_array(staff, "measures"); + if (!measures) { + return std::unexpected(measures.error()); + } + auto document = vamp_zero::score_document{ + .id = generated_source_id(source_path, *title, *part), + .title = std::move(*title), + .composer = std::move(*composer), + .key_signature = std::move(*key), + .part = human_label(*part), + .arrangement_part_type = std::move(*part), + .source_path = std::move(source_path), + .source_json = std::string{json}, + }; + for (auto const& measure_value : **measures) { + auto measure = parse_measure(measure_value); + if (!measure) { + return std::unexpected(measure.error()); + } + document.measures.push_back(std::move(*measure)); + } + return document; +} + +auto vamp_zero::group_library_parts(std::vector parts) -> vamp_zero::library_state { + std::sort(parts.begin(), parts.end(), [](auto const& left, auto const& right) { + if (left.title != right.title) { + return left.title < right.title; + } + return left.part < right.part; + }); + + auto groups = std::vector{}; + for (auto const& part : parts) { + if (groups.empty() || groups.back().title != part.title || groups.back().composer != part.composer) { + groups.push_back({ + .title = part.title, + .composer = part.composer, + }); + } + groups.back().parts.push_back(part); + } + return vamp_zero::library_state{ + .parts = std::move(parts), + .groups = std::move(groups), + }; +} + +auto vamp_zero::group_practice_exercises(std::vector exercises) -> vamp_zero::practice_library { + std::sort(exercises.begin(), exercises.end(), [](auto const& left, auto const& right) { + if (left.practice_type_id != right.practice_type_id) { + return left.practice_type_id < right.practice_type_id; + } + if (left.lesson_group_id != right.lesson_group_id) { + return left.lesson_group_id < right.lesson_group_id; + } + if (left.id != right.id) { + return left.id < right.id; + } + if (key_rank(left.key_signature) != key_rank(right.key_signature)) { + return key_rank(left.key_signature) < key_rank(right.key_signature); + } + return left.source_path < right.source_path; + }); + + auto merged = std::vector{}; + for (auto& exercise : exercises) { + if (!merged.empty() && same_practice_exercise(merged.back(), exercise)) { + merged.back().variants.insert( + merged.back().variants.end(), + std::make_move_iterator(exercise.variants.begin()), + std::make_move_iterator(exercise.variants.end()) + ); + sync_primary_variant(merged.back()); + continue; + } + sync_primary_variant(exercise); + merged.push_back(std::move(exercise)); + } + + auto types = std::vector{}; + for (auto const& exercise : merged) { + auto type = std::find_if(types.begin(), types.end(), [&](auto const& item) { + return item.id == exercise.practice_type_id; + }); + if (type == types.end()) { + types.push_back({ + .id = exercise.practice_type_id, + .title = exercise.practice_type_title, + }); + type = std::prev(types.end()); + } + auto lesson = std::find_if(type->lesson_groups.begin(), type->lesson_groups.end(), [&](auto const& item) { + return item.id == exercise.lesson_group_id; + }); + if (lesson == type->lesson_groups.end()) { + type->lesson_groups.push_back({ + .id = exercise.lesson_group_id, + .title = exercise.lesson_group_title, + }); + lesson = std::prev(type->lesson_groups.end()); + } + lesson->exercises.push_back(exercise); + } + return vamp_zero::practice_library{ + .exercises = std::move(merged), + .types = std::move(types), + }; +} + +auto vamp_zero::load_performance_library(std::string const& assets_path) -> std::expected { + auto documents = load_score_documents(std::filesystem::path{assets_path} / "songs", true); + if (!documents) { + return std::unexpected(documents.error()); + } + auto parts = std::vector{}; + for (auto& document : *documents) { + parts.push_back({ + .id = document.id, + .title = document.title, + .composer = document.composer, + .key_signature = document.key_signature, + .part = document.part, + .source_path = document.source_path, + .source_json = std::move(document.source_json), + .measure_count = document.measures.size(), + .total_pages = score_page_count(document.measures.size()), + }); + } + return vamp_zero::group_library_parts(std::move(parts)); +} + +auto vamp_zero::load_practice_library(std::string const& assets_path) -> std::expected { + auto root = std::filesystem::path{assets_path} / "practice"; + auto error = std::error_code{}; + if (!std::filesystem::exists(root, error)) { + return vamp_zero::practice_library{}; + } + + auto paths = std::vector{}; + for (auto const& entry : std::filesystem::recursive_directory_iterator{root, error}) { + if (error) { + return std::unexpected(vamp_zero::make_error(vamp_zero::error_code::UNAVAILABLE, "failed to scan practice assets: " + error.message())); + } + if (!entry.is_regular_file() || entry.path().extension() != ".json") { + continue; + } + paths.push_back(entry.path()); + } + std::sort(paths.begin(), paths.end()); + + auto exercises = std::vector{}; + for (auto const& path : paths) { + auto relative = std::filesystem::relative(path, root, error); + if (error) { + return std::unexpected(vamp_zero::make_error(vamp_zero::error_code::UNAVAILABLE, "failed to inspect practice asset path: " + error.message())); + } + auto parts = path_parts(relative); + if (parts.size() != 4U) { + return std::unexpected(invalid("practice JSON must be stored as practice////.json: " + path.string())); + } + + auto input = std::ifstream{path, std::ios::binary}; + if (!input) { + return std::unexpected(vamp_zero::make_error(vamp_zero::error_code::NOT_FOUND, "failed to open practice JSON: " + path.string())); + } + auto text = std::string{std::istreambuf_iterator{input}, std::istreambuf_iterator{}}; + auto document = vamp_zero::parse_score_document(text, path.string()); + if (!document) { + return std::unexpected(document.error()); + } + auto type_id = std::move(parts[0]); + auto lesson_id = std::move(parts[1]); + auto exercise_slug = std::move(parts[2]); + auto key = document->key_signature.empty() ? std::string{"C"} : document->key_signature; + auto exercise_id = type_id + "-" + lesson_id + "-" + exercise_slug; + auto variant_id = exercise_id + "-" + std::filesystem::path{parts[3]}.stem().string(); + auto variant = vamp_zero::practice_exercise::score_variant{ + .id = std::move(variant_id), + .key_signature = key, + .source_path = document->source_path, + .source_json = document->source_json, + .measure_count = document->measures.size(), + .total_pages = score_page_count(document->measures.size()), + }; + exercises.push_back({ + .id = std::move(exercise_id), + .practice_type_id = type_id, + .practice_type_title = practice_type_label(type_id), + .lesson_group_id = lesson_id, + .lesson_group_title = human_label(lesson_id), + .title = document->title, + .composer = document->composer, + .key_signature = variant.key_signature, + .source_path = variant.source_path, + .source_json = variant.source_json, + .measure_count = variant.measure_count, + .total_pages = variant.total_pages, + .variants = {std::move(variant)}, + }); + } + return vamp_zero::group_practice_exercises(std::move(exercises)); +} diff --git a/src/vamp_zero/main.cpp b/src/vamp_zero/main.cpp new file mode 100644 index 0000000..fefa1aa --- /dev/null +++ b/src/vamp_zero/main.cpp @@ -0,0 +1,28 @@ +#include + +#include +#include +#include +#include + +auto main(std::int32_t argc, std::char_t** argv) -> std::int32_t { + try { + auto command = vamp_zero::parse_command_line(argc, argv); + if (!command) { + std::cerr << command.error().describe() << '\n'; + return 2; + } + auto status = vamp_zero::run(std::move(*command)); + if (!status) { + std::cerr << status.error().describe() << '\n'; + return 1; + } + return 0; + } catch (std::exception const& error) { + std::cerr << "vamp-zero: unhandled exception: " << error.what() << '\n'; + return 1; + } catch (...) { + std::cerr << "vamp-zero: unhandled unknown exception\n"; + return 1; + } +} diff --git a/src/vamp_zero/page_control.cpp b/src/vamp_zero/page_control.cpp new file mode 100644 index 0000000..4b17a05 --- /dev/null +++ b/src/vamp_zero/page_control.cpp @@ -0,0 +1,768 @@ +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include + +namespace { + +constexpr auto main_menu_count = std::size_t{2}; + +auto wrap_next(std::size_t value, std::size_t count) -> std::size_t { + if (count == 0U) { + return 0U; + } + return (value + 1U) % count; +} + +auto wrap_previous(std::size_t value, std::size_t count) -> std::size_t { + if (count == 0U) { + return 0U; + } + return value == 0U ? count - 1U : value - 1U; +} + +auto menu_row_count(std::size_t item_count) -> std::size_t { + return item_count + 1U; +} + +auto selected_group(vamp_zero::app_state const& state) -> vamp_zero::song_group const* { + if (state.selected_song_index == 0U || state.performance.groups.empty()) { + return nullptr; + } + auto index = state.selected_song_index - 1U; + if (index >= state.performance.groups.size()) { + return nullptr; + } + return &state.performance.groups[index]; +} + +auto selected_part(vamp_zero::app_state const& state) -> vamp_zero::library_part const* { + auto const* group = selected_group(state); + if (state.selected_part_index == 0U || group == nullptr || group->parts.empty()) { + return nullptr; + } + auto index = state.selected_part_index - 1U; + if (index >= group->parts.size()) { + return nullptr; + } + return &group->parts[index]; +} + +auto active_part(vamp_zero::app_state const& state) -> vamp_zero::library_part const* { + if (state.active_part_id.empty()) { + return nullptr; + } + auto found = std::find_if(state.performance.parts.begin(), state.performance.parts.end(), [&](auto const& part) { + return part.id == state.active_part_id; + }); + return found == state.performance.parts.end() ? nullptr : &*found; +} + +auto selected_practice_type(vamp_zero::app_state const& state) -> vamp_zero::practice_type_group const* { + if (state.selected_practice_type_index == 0U || state.practice.types.empty()) { + return nullptr; + } + auto index = state.selected_practice_type_index - 1U; + if (index >= state.practice.types.size()) { + return nullptr; + } + return &state.practice.types[index]; +} + +auto selected_practice_lesson(vamp_zero::app_state const& state) -> vamp_zero::practice_lesson_group const* { + auto const* type = selected_practice_type(state); + if (state.selected_practice_lesson_index == 0U || type == nullptr || type->lesson_groups.empty()) { + return nullptr; + } + auto index = state.selected_practice_lesson_index - 1U; + if (index >= type->lesson_groups.size()) { + return nullptr; + } + return &type->lesson_groups[index]; +} + +auto selected_practice_exercise(vamp_zero::app_state const& state) -> vamp_zero::practice_exercise const* { + auto const* lesson = selected_practice_lesson(state); + if (state.selected_practice_exercise_index == 0U || lesson == nullptr || lesson->exercises.empty()) { + return nullptr; + } + auto index = state.selected_practice_exercise_index - 1U; + if (index >= lesson->exercises.size()) { + return nullptr; + } + return &lesson->exercises[index]; +} + +auto active_practice(vamp_zero::app_state const& state) -> vamp_zero::practice_exercise const* { + if (state.active_practice_id.empty()) { + return nullptr; + } + auto found = std::find_if(state.practice.exercises.begin(), state.practice.exercises.end(), [&](auto const& exercise) { + return exercise.id == state.active_practice_id; + }); + return found == state.practice.exercises.end() ? nullptr : &*found; +} + +auto supports_key_selection(vamp_zero::practice_exercise const& exercise) -> std::bool_t { + return vamp_zero::practice_type_supports_key_selection(exercise.practice_type_id); +} + +auto selected_practice_variant(vamp_zero::app_state const& state, vamp_zero::practice_exercise const& exercise) -> vamp_zero::practice_exercise::score_variant const* { + if (exercise.variants.empty()) { + return nullptr; + } + if (!supports_key_selection(exercise)) { + return &exercise.variants.front(); + } + if (state.selected_practice_key_index == 0U) { + return nullptr; + } + auto index = state.selected_practice_key_index - 1U; + if (index >= exercise.variants.size()) { + return nullptr; + } + return &exercise.variants[index]; +} + +auto selected_practice_key(vamp_zero::app_state const& state, vamp_zero::practice_exercise const& exercise) -> std::optional { + auto const* variant = selected_practice_variant(state, exercise); + if (variant == nullptr) { + return std::nullopt; + } + return variant->key_signature; +} + +auto practice_key_row_count(vamp_zero::app_state const& state) -> std::size_t { + auto const* exercise = selected_practice_exercise(state); + if (exercise == nullptr || !supports_key_selection(*exercise)) { + return 1U; + } + return menu_row_count(exercise->variants.size()); +} + +auto effective_practice_key(vamp_zero::app_state const& state, vamp_zero::practice_exercise const& exercise) -> std::string { + if (auto const* variant = selected_practice_variant(state, exercise); variant != nullptr && !variant->key_signature.empty()) { + return variant->key_signature; + } + return exercise.key_signature.empty() ? std::string{"C"} : exercise.key_signature; +} + +auto active_pages(vamp_zero::app_state const& state) -> std::size_t { + if (state.mode == vamp_zero::app_mode::PERFORMANCE_SCORE) { + auto const* part = active_part(state); + return part == nullptr ? 0U : part->total_pages; + } + if (state.mode == vamp_zero::app_mode::PRACTICE_SCORE) { + auto const* exercise = active_practice(state); + auto const* variant = exercise == nullptr ? nullptr : selected_practice_variant(state, *exercise); + return variant == nullptr ? 0U : variant->total_pages; + } + return 0U; +} + +auto practice_fallback_menu(vamp_zero::app_state const& state) -> vamp_zero::app_mode { + if (selected_practice_lesson(state) != nullptr) { + return vamp_zero::app_mode::PRACTICE_EXERCISE_MENU; + } + if (selected_practice_type(state) != nullptr) { + return vamp_zero::app_mode::PRACTICE_LESSON_MENU; + } + return vamp_zero::app_mode::PRACTICE_TYPE_MENU; +} + +auto clamp_state(vamp_zero::app_state state) -> vamp_zero::app_state { + state.selected_main_menu_index = std::min(state.selected_main_menu_index, main_menu_count - 1U); + state.selected_song_index = std::min(state.selected_song_index, menu_row_count(state.performance.groups.size()) - 1U); + if (auto const* group = selected_group(state); group != nullptr) { + state.selected_part_index = std::min(state.selected_part_index, menu_row_count(group->parts.size()) - 1U); + } else { + state.selected_part_index = 0U; + } + + state.selected_practice_type_index = std::min(state.selected_practice_type_index, menu_row_count(state.practice.types.size()) - 1U); + if (auto const* type = selected_practice_type(state); type != nullptr) { + state.selected_practice_lesson_index = std::min(state.selected_practice_lesson_index, menu_row_count(type->lesson_groups.size()) - 1U); + } else { + state.selected_practice_lesson_index = 0U; + } + if (auto const* lesson = selected_practice_lesson(state); lesson != nullptr) { + state.selected_practice_exercise_index = std::min(state.selected_practice_exercise_index, menu_row_count(lesson->exercises.size()) - 1U); + } else { + state.selected_practice_exercise_index = 0U; + } + state.selected_practice_key_index = std::min(state.selected_practice_key_index, practice_key_row_count(state) - 1U); + + if (state.mode == vamp_zero::app_mode::PERFORMANCE_PART_MENU && selected_group(state) == nullptr) { + state.mode = vamp_zero::app_mode::PERFORMANCE_SONG_MENU; + } + if (state.mode == vamp_zero::app_mode::PRACTICE_LESSON_MENU && selected_practice_type(state) == nullptr) { + state.mode = vamp_zero::app_mode::PRACTICE_TYPE_MENU; + } + if (state.mode == vamp_zero::app_mode::PRACTICE_EXERCISE_MENU && selected_practice_lesson(state) == nullptr) { + state.mode = selected_practice_type(state) == nullptr ? vamp_zero::app_mode::PRACTICE_TYPE_MENU : vamp_zero::app_mode::PRACTICE_LESSON_MENU; + } + if (state.mode == vamp_zero::app_mode::PRACTICE_KEY_MENU) { + auto const* exercise = selected_practice_exercise(state); + if (exercise == nullptr) { + state.mode = practice_fallback_menu(state); + } else if (!supports_key_selection(*exercise) || exercise->variants.empty()) { + state.mode = vamp_zero::app_mode::PRACTICE_EXERCISE_MENU; + state.selected_practice_key_index = 0U; + } + } + + if (state.mode == vamp_zero::app_mode::PERFORMANCE_SCORE && active_part(state) == nullptr) { + state.mode = selected_group(state) == nullptr ? vamp_zero::app_mode::PERFORMANCE_SONG_MENU : vamp_zero::app_mode::PERFORMANCE_PART_MENU; + state.active_part_id.clear(); + state.page_index = 0; + } else if (state.mode == vamp_zero::app_mode::PRACTICE_SCORE) { + auto const* exercise = active_practice(state); + if (exercise == nullptr) { + state.mode = practice_fallback_menu(state); + state.active_practice_id.clear(); + state.page_index = 0; + } else if (selected_practice_variant(state, *exercise) == nullptr) { + state.mode = vamp_zero::app_mode::PRACTICE_KEY_MENU; + state.active_practice_id.clear(); + state.page_index = 0; + } + } + + if (auto pages = active_pages(state); pages != 0U) { + state.page_index = std::min(state.page_index, pages - 1U); + } else if (state.mode != vamp_zero::app_mode::PERFORMANCE_SCORE && state.mode != vamp_zero::app_mode::PRACTICE_SCORE) { + state.page_index = 0; + } + return state; +} + +auto command_json(vamp_zero::app_state const& state) -> boost::json::object { + auto commands = boost::json::object{}; + commands["last"] = state.last_command; + commands["next_count"] = state.next_count; + commands["previous_count"] = state.previous_count; + commands["select_count"] = state.select_count; + commands["heartbeat_count"] = state.heartbeat_count; + return commands; +} + +auto part_json(vamp_zero::library_part const& part) -> boost::json::object { + auto result = boost::json::object{}; + result["id"] = part.id; + result["title"] = part.title; + result["composer"] = part.composer; + result["key_signature"] = part.key_signature; + result["part"] = part.part; + result["source_path"] = part.source_path; + result["measures"] = static_cast(part.measure_count); + result["pages"] = static_cast(part.total_pages); + return result; +} + +auto exercise_json(vamp_zero::practice_exercise const& exercise) -> boost::json::object { + auto variants = boost::json::array{}; + for (auto const& variant : exercise.variants) { + auto item = boost::json::object{}; + item["id"] = variant.id; + item["key_signature"] = variant.key_signature; + item["source_path"] = variant.source_path; + item["measures"] = static_cast(variant.measure_count); + item["pages"] = static_cast(variant.total_pages); + variants.push_back(std::move(item)); + } + auto result = boost::json::object{}; + result["id"] = exercise.id; + result["practice_type_id"] = exercise.practice_type_id; + result["practice_type_title"] = exercise.practice_type_title; + result["lesson_group_id"] = exercise.lesson_group_id; + result["lesson_group_title"] = exercise.lesson_group_title; + result["supports_key_selection"] = supports_key_selection(exercise); + result["title"] = exercise.title; + result["composer"] = exercise.composer; + result["key_signature"] = exercise.key_signature; + result["source_path"] = exercise.source_path; + result["measures"] = static_cast(exercise.measure_count); + result["pages"] = static_cast(exercise.total_pages); + result["variant_count"] = static_cast(exercise.variants.size()); + result["variants"] = std::move(variants); + return result; +} + +auto lesson_json(vamp_zero::practice_lesson_group const& lesson) -> boost::json::object { + auto exercises = boost::json::array{}; + for (auto const& exercise : lesson.exercises) { + exercises.push_back(exercise_json(exercise)); + } + auto result = boost::json::object{}; + result["id"] = lesson.id; + result["title"] = lesson.title; + result["exercise_count"] = static_cast(lesson.exercises.size()); + result["exercises"] = std::move(exercises); + return result; +} + +auto practice_type_exercise_count(vamp_zero::practice_type_group const& type) -> std::size_t { + auto count = std::size_t{}; + for (auto const& lesson : type.lesson_groups) { + count += lesson.exercises.size(); + } + return count; +} + +auto type_json(vamp_zero::practice_type_group const& type) -> boost::json::object { + auto lessons = boost::json::array{}; + for (auto const& lesson : type.lesson_groups) { + lessons.push_back(lesson_json(lesson)); + } + auto result = boost::json::object{}; + result["id"] = type.id; + result["title"] = type.title; + result["lesson_group_count"] = static_cast(type.lesson_groups.size()); + result["exercise_count"] = static_cast(practice_type_exercise_count(type)); + result["lesson_groups"] = std::move(lessons); + return result; +} + +auto performance_json(vamp_zero::app_state const& state) -> boost::json::object { + auto groups = boost::json::array{}; + for (auto const& group : state.performance.groups) { + auto parts = boost::json::array{}; + for (auto const& part : group.parts) { + parts.push_back(part_json(part)); + } + auto item = boost::json::object{}; + item["title"] = group.title; + item["composer"] = group.composer; + item["parts"] = std::move(parts); + groups.push_back(std::move(item)); + } + + auto library = boost::json::object{}; + library["song_count"] = static_cast(state.performance.groups.size()); + library["part_count"] = static_cast(state.performance.parts.size()); + library["groups"] = std::move(groups); + return library; +} + +auto practice_json(vamp_zero::app_state const& state) -> boost::json::object { + auto types = boost::json::array{}; + for (auto const& type : state.practice.types) { + types.push_back(type_json(type)); + } + auto exercises = boost::json::array{}; + for (auto const& exercise : state.practice.exercises) { + exercises.push_back(exercise_json(exercise)); + } + auto keys = boost::json::array{}; + for (auto key : vamp_zero::practice_key_names()) { + keys.push_back(boost::json::value{std::string{key}}); + } + + auto selection = boost::json::object{}; + selection["type_row_index"] = static_cast(state.selected_practice_type_index); + selection["lesson_row_index"] = static_cast(state.selected_practice_lesson_index); + selection["exercise_row_index"] = static_cast(state.selected_practice_exercise_index); + selection["key_row_index"] = static_cast(state.selected_practice_key_index); + if (auto const* type = selected_practice_type(state); type != nullptr) { + selection["type"] = type_json(*type); + } + if (auto const* lesson = selected_practice_lesson(state); lesson != nullptr) { + selection["lesson_group"] = lesson_json(*lesson); + } + if (auto const* exercise = selected_practice_exercise(state); exercise != nullptr) { + selection["exercise"] = exercise_json(*exercise); + auto variant = selected_practice_variant(state, *exercise); + if (variant != nullptr) { + auto item = boost::json::object{}; + item["id"] = variant->id; + item["key_signature"] = variant->key_signature; + item["source_path"] = variant->source_path; + item["measures"] = static_cast(variant->measure_count); + item["pages"] = static_cast(variant->total_pages); + selection["variant"] = std::move(item); + } + } + if (auto const* exercise = selected_practice_exercise(state); exercise != nullptr) { + if (auto key = selected_practice_key(state, *exercise)) { + selection["key"] = std::string{*key}; + } + } + + auto practice = boost::json::object{}; + practice["type_count"] = static_cast(state.practice.types.size()); + practice["exercise_count"] = static_cast(state.practice.exercises.size()); + practice["types"] = std::move(types); + practice["exercises"] = std::move(exercises); + practice["key_count"] = static_cast(vamp_zero::practice_key_names().size()); + practice["keys"] = std::move(keys); + practice["selection"] = std::move(selection); + return practice; +} + +auto sanitize_line_value(std::string value) -> std::string { + for (auto& ch : value) { + if (ch == '\r' || ch == '\n') { + ch = ' '; + } + } + return value; +} + +} + +auto vamp_zero::apply_app_command(vamp_zero::app_state state, vamp_protocol::page_command command) -> vamp_zero::app_state { + state = clamp_state(std::move(state)); + if (command == vamp_protocol::page_command::NEXT) { + ++state.next_count; + } else if (command == vamp_protocol::page_command::PREVIOUS) { + ++state.previous_count; + } else { + ++state.select_count; + } + state.last_command = vamp_protocol::page_command_name(command); + + switch (state.mode) { + case vamp_zero::app_mode::MAIN_MENU: + if (command == vamp_protocol::page_command::NEXT) { + state.selected_main_menu_index = wrap_next(state.selected_main_menu_index, main_menu_count); + } else if (command == vamp_protocol::page_command::PREVIOUS) { + state.selected_main_menu_index = wrap_previous(state.selected_main_menu_index, main_menu_count); + } else if (state.selected_main_menu_index == 0U) { + state.mode = vamp_zero::app_mode::PERFORMANCE_SONG_MENU; + state.selected_song_index = 0; + state.selected_part_index = 0; + state.active_part_id.clear(); + state.page_index = 0; + } else { + state.mode = vamp_zero::app_mode::PRACTICE_TYPE_MENU; + state.selected_practice_type_index = 0; + state.selected_practice_lesson_index = 0; + state.selected_practice_exercise_index = 0; + state.selected_practice_key_index = 0; + state.active_practice_id.clear(); + state.page_index = 0; + } + return clamp_state(std::move(state)); + + case vamp_zero::app_mode::PERFORMANCE_SONG_MENU: + if (command == vamp_protocol::page_command::NEXT) { + state.selected_song_index = wrap_next(state.selected_song_index, menu_row_count(state.performance.groups.size())); + state.selected_part_index = 0; + } else if (command == vamp_protocol::page_command::PREVIOUS) { + state.selected_song_index = wrap_previous(state.selected_song_index, menu_row_count(state.performance.groups.size())); + state.selected_part_index = 0; + } else if (state.selected_song_index == 0U) { + state.mode = vamp_zero::app_mode::MAIN_MENU; + } else { + state.mode = vamp_zero::app_mode::PERFORMANCE_PART_MENU; + state.selected_part_index = 0; + } + return clamp_state(std::move(state)); + + case vamp_zero::app_mode::PERFORMANCE_PART_MENU: + if (auto const* group = selected_group(state); group != nullptr) { + if (command == vamp_protocol::page_command::NEXT) { + state.selected_part_index = wrap_next(state.selected_part_index, menu_row_count(group->parts.size())); + } else if (command == vamp_protocol::page_command::PREVIOUS) { + state.selected_part_index = wrap_previous(state.selected_part_index, menu_row_count(group->parts.size())); + } else if (state.selected_part_index == 0U) { + state.mode = vamp_zero::app_mode::PERFORMANCE_SONG_MENU; + state.active_part_id.clear(); + state.page_index = 0; + } else if (auto const* part = selected_part(state); part != nullptr) { + state.active_part_id = part->id; + state.active_practice_id.clear(); + state.page_index = 0; + state.mode = vamp_zero::app_mode::PERFORMANCE_SCORE; + } + } + return clamp_state(std::move(state)); + + case vamp_zero::app_mode::PERFORMANCE_SCORE: + if (auto const* part = active_part(state); part != nullptr) { + if (command == vamp_protocol::page_command::NEXT) { + state.page_index = std::min(state.page_index + 1U, part->total_pages == 0U ? 0U : part->total_pages - 1U); + } else if (command == vamp_protocol::page_command::PREVIOUS) { + state.page_index = state.page_index == 0U ? 0U : state.page_index - 1U; + } else { + state.mode = vamp_zero::app_mode::PERFORMANCE_PART_MENU; + state.active_part_id.clear(); + state.page_index = 0; + } + } + return clamp_state(std::move(state)); + + case vamp_zero::app_mode::PRACTICE_TYPE_MENU: + if (command == vamp_protocol::page_command::NEXT) { + state.selected_practice_type_index = wrap_next(state.selected_practice_type_index, menu_row_count(state.practice.types.size())); + state.selected_practice_lesson_index = 0; + state.selected_practice_exercise_index = 0; + state.selected_practice_key_index = 0; + } else if (command == vamp_protocol::page_command::PREVIOUS) { + state.selected_practice_type_index = wrap_previous(state.selected_practice_type_index, menu_row_count(state.practice.types.size())); + state.selected_practice_lesson_index = 0; + state.selected_practice_exercise_index = 0; + state.selected_practice_key_index = 0; + } else if (state.selected_practice_type_index == 0U) { + state.mode = vamp_zero::app_mode::MAIN_MENU; + } else { + state.mode = vamp_zero::app_mode::PRACTICE_LESSON_MENU; + state.selected_practice_lesson_index = 0; + state.selected_practice_exercise_index = 0; + state.selected_practice_key_index = 0; + } + return clamp_state(std::move(state)); + + case vamp_zero::app_mode::PRACTICE_LESSON_MENU: + if (auto const* type = selected_practice_type(state); type != nullptr) { + if (command == vamp_protocol::page_command::NEXT) { + state.selected_practice_lesson_index = wrap_next(state.selected_practice_lesson_index, menu_row_count(type->lesson_groups.size())); + state.selected_practice_exercise_index = 0; + state.selected_practice_key_index = 0; + } else if (command == vamp_protocol::page_command::PREVIOUS) { + state.selected_practice_lesson_index = wrap_previous(state.selected_practice_lesson_index, menu_row_count(type->lesson_groups.size())); + state.selected_practice_exercise_index = 0; + state.selected_practice_key_index = 0; + } else if (state.selected_practice_lesson_index == 0U) { + state.mode = vamp_zero::app_mode::PRACTICE_TYPE_MENU; + state.active_practice_id.clear(); + state.page_index = 0; + } else { + state.mode = vamp_zero::app_mode::PRACTICE_EXERCISE_MENU; + state.selected_practice_exercise_index = 0; + state.selected_practice_key_index = 0; + } + } + return clamp_state(std::move(state)); + + case vamp_zero::app_mode::PRACTICE_EXERCISE_MENU: + if (auto const* lesson = selected_practice_lesson(state); lesson != nullptr) { + if (command == vamp_protocol::page_command::NEXT) { + state.selected_practice_exercise_index = wrap_next(state.selected_practice_exercise_index, menu_row_count(lesson->exercises.size())); + state.selected_practice_key_index = 0; + } else if (command == vamp_protocol::page_command::PREVIOUS) { + state.selected_practice_exercise_index = wrap_previous(state.selected_practice_exercise_index, menu_row_count(lesson->exercises.size())); + state.selected_practice_key_index = 0; + } else if (state.selected_practice_exercise_index == 0U) { + state.mode = vamp_zero::app_mode::PRACTICE_LESSON_MENU; + state.active_practice_id.clear(); + state.page_index = 0; + } else if (auto const* exercise = selected_practice_exercise(state); exercise != nullptr) { + state.active_part_id.clear(); + state.active_practice_id.clear(); + state.page_index = 0; + if (supports_key_selection(*exercise) && !exercise->variants.empty()) { + state.mode = vamp_zero::app_mode::PRACTICE_KEY_MENU; + state.selected_practice_key_index = 0; + } else { + state.active_practice_id = exercise->id; + state.selected_practice_key_index = 0; + state.mode = vamp_zero::app_mode::PRACTICE_SCORE; + } + } + } + return clamp_state(std::move(state)); + + case vamp_zero::app_mode::PRACTICE_KEY_MENU: + if (auto const* exercise = selected_practice_exercise(state); exercise != nullptr && supports_key_selection(*exercise)) { + if (command == vamp_protocol::page_command::NEXT) { + state.selected_practice_key_index = wrap_next(state.selected_practice_key_index, menu_row_count(exercise->variants.size())); + } else if (command == vamp_protocol::page_command::PREVIOUS) { + state.selected_practice_key_index = wrap_previous(state.selected_practice_key_index, menu_row_count(exercise->variants.size())); + } else if (state.selected_practice_key_index == 0U) { + state.mode = vamp_zero::app_mode::PRACTICE_EXERCISE_MENU; + state.active_practice_id.clear(); + state.page_index = 0; + } else if (selected_practice_variant(state, *exercise) != nullptr) { + state.active_practice_id = exercise->id; + state.active_part_id.clear(); + state.page_index = 0; + state.mode = vamp_zero::app_mode::PRACTICE_SCORE; + } + } + return clamp_state(std::move(state)); + + case vamp_zero::app_mode::PRACTICE_SCORE: + if (auto const* exercise = active_practice(state); exercise != nullptr) { + auto const* variant = selected_practice_variant(state, *exercise); + if (command == vamp_protocol::page_command::NEXT) { + auto pages = variant == nullptr ? 0U : variant->total_pages; + state.page_index = std::min(state.page_index + 1U, pages == 0U ? 0U : pages - 1U); + } else if (command == vamp_protocol::page_command::PREVIOUS) { + state.page_index = state.page_index == 0U ? 0U : state.page_index - 1U; + } else { + state.mode = supports_key_selection(*exercise) ? vamp_zero::app_mode::PRACTICE_KEY_MENU : vamp_zero::app_mode::PRACTICE_EXERCISE_MENU; + state.active_practice_id.clear(); + state.page_index = 0; + } + } + return clamp_state(std::move(state)); + } + return clamp_state(std::move(state)); +} + +auto vamp_zero::app_status_json(vamp_zero::app_state const& state) -> boost::json::value { + auto selection = boost::json::object{}; + selection["main_menu_index"] = static_cast(state.selected_main_menu_index); + selection["song_row_index"] = static_cast(state.selected_song_index); + selection["part_row_index"] = static_cast(state.selected_part_index); + if (auto const* group = selected_group(state); group != nullptr) { + selection["title"] = group->title; + selection["composer"] = group->composer; + } + if (auto const* part = selected_part(state); part != nullptr) { + selection["part"] = part_json(*part); + } + + auto active = boost::json::object{}; + if (state.mode == vamp_zero::app_mode::PERFORMANCE_SCORE) { + if (auto const* part = active_part(state); part != nullptr) { + active["selected"] = true; + active["kind"] = "performance"; + active["part"] = part_json(*part); + active["page_index"] = static_cast(state.page_index); + active["page_number"] = static_cast(state.page_index + 1U); + active["page_total"] = static_cast(part->total_pages); + } + } else if (state.mode == vamp_zero::app_mode::PRACTICE_SCORE) { + if (auto const* exercise = active_practice(state); exercise != nullptr) { + auto const* variant = selected_practice_variant(state, *exercise); + active["selected"] = true; + active["kind"] = "practice"; + active["exercise"] = exercise_json(*exercise); + active["key"] = effective_practice_key(state, *exercise); + active["page_index"] = static_cast(state.page_index); + active["page_number"] = static_cast(state.page_index + 1U); + active["page_total"] = static_cast(variant == nullptr ? 0U : variant->total_pages); + } + } + if (active.empty()) { + active["selected"] = false; + active["page_index"] = 0; + active["page_number"] = 0; + active["page_total"] = 0; + } + + auto remote = boost::json::object{}; + remote["pico_connected"] = state.pico_connected; + remote["heartbeat_count"] = state.heartbeat_count; + + auto performance = performance_json(state); + auto root = boost::json::object{}; + root["mode"] = vamp_zero::to_string(state.mode); + root["library"] = performance; + root["performance"] = std::move(performance); + root["practice"] = practice_json(state); + root["selection"] = std::move(selection); + root["active"] = std::move(active); + root["commands"] = command_json(state); + root["remote"] = std::move(remote); + return root; +} + +auto vamp_zero::remote_display_text(vamp_zero::app_state const& state) -> std::string { + auto title = std::string{}; + auto part = std::string{}; + auto page = std::size_t{}; + auto pages = std::size_t{}; + auto active = false; + if (state.mode == vamp_zero::app_mode::PERFORMANCE_SCORE) { + if (auto const* selected = active_part(state); selected != nullptr) { + active = true; + title = selected->title; + part = selected->part; + page = state.page_index + 1U; + pages = selected->total_pages; + } + } else if (state.mode == vamp_zero::app_mode::PRACTICE_SCORE) { + if (auto const* selected = active_practice(state); selected != nullptr) { + auto const* variant = selected_practice_variant(state, *selected); + active = true; + title = selected->title; + part = "Key: " + effective_practice_key(state, *selected); + page = state.page_index + 1U; + pages = variant == nullptr ? 0U : variant->total_pages; + } + } + + auto output = std::ostringstream{}; + output << "version=1\n"; + output << "mode=" << vamp_zero::to_string(state.mode) << "\n"; + output << "active=" << (active ? "1" : "0") << "\n"; + output << "title=" << sanitize_line_value(title) << "\n"; + output << "part=" << sanitize_line_value(part) << "\n"; + output << "page=" << page << "\n"; + output << "pages=" << pages << "\n"; + return output.str(); +} + +auto vamp_zero::validate_app_state(vamp_zero::app_state const& state) -> std::expected { + if (state.selected_main_menu_index >= main_menu_count) { + return std::unexpected(vamp_zero::make_error(vamp_zero::error_code::INVALID_ARGUMENT, "selected main menu index is out of range")); + } + if (state.selected_song_index >= menu_row_count(state.performance.groups.size())) { + return std::unexpected(vamp_zero::make_error(vamp_zero::error_code::INVALID_ARGUMENT, "selected performance song row is out of range")); + } + if (auto const* group = selected_group(state); group != nullptr && state.selected_part_index >= menu_row_count(group->parts.size())) { + return std::unexpected(vamp_zero::make_error(vamp_zero::error_code::INVALID_ARGUMENT, "selected performance part row is out of range")); + } + if (state.selected_practice_type_index >= menu_row_count(state.practice.types.size())) { + return std::unexpected(vamp_zero::make_error(vamp_zero::error_code::INVALID_ARGUMENT, "selected practice type row is out of range")); + } + if (auto const* type = selected_practice_type(state); type != nullptr && state.selected_practice_lesson_index >= menu_row_count(type->lesson_groups.size())) { + return std::unexpected(vamp_zero::make_error(vamp_zero::error_code::INVALID_ARGUMENT, "selected practice lesson row is out of range")); + } + if (auto const* lesson = selected_practice_lesson(state); lesson != nullptr && state.selected_practice_exercise_index >= menu_row_count(lesson->exercises.size())) { + return std::unexpected(vamp_zero::make_error(vamp_zero::error_code::INVALID_ARGUMENT, "selected practice exercise row is out of range")); + } + if (state.selected_practice_key_index >= practice_key_row_count(state)) { + return std::unexpected(vamp_zero::make_error(vamp_zero::error_code::INVALID_ARGUMENT, "selected practice key row is out of range")); + } + if (state.mode == vamp_zero::app_mode::PRACTICE_LESSON_MENU && selected_practice_type(state) == nullptr) { + return std::unexpected(vamp_zero::make_error(vamp_zero::error_code::INVALID_ARGUMENT, "practice lesson mode requires a selected practice type")); + } + if (state.mode == vamp_zero::app_mode::PRACTICE_EXERCISE_MENU && selected_practice_lesson(state) == nullptr) { + return std::unexpected(vamp_zero::make_error(vamp_zero::error_code::INVALID_ARGUMENT, "practice exercise mode requires a selected lesson group")); + } + if (state.mode == vamp_zero::app_mode::PRACTICE_KEY_MENU) { + auto const* exercise = selected_practice_exercise(state); + if (exercise == nullptr || !supports_key_selection(*exercise)) { + return std::unexpected(vamp_zero::make_error(vamp_zero::error_code::INVALID_ARGUMENT, "practice key mode requires a melody exercise")); + } + } + if (state.mode == vamp_zero::app_mode::PERFORMANCE_SCORE) { + auto const* part = active_part(state); + if (part == nullptr) { + return std::unexpected(vamp_zero::make_error(vamp_zero::error_code::INVALID_ARGUMENT, "performance score mode requires an active part")); + } + if (part->total_pages == 0U || state.page_index >= part->total_pages) { + return std::unexpected(vamp_zero::make_error(vamp_zero::error_code::INVALID_ARGUMENT, "performance score page index is out of range")); + } + } + if (state.mode == vamp_zero::app_mode::PRACTICE_SCORE) { + auto const* exercise = active_practice(state); + if (exercise == nullptr) { + return std::unexpected(vamp_zero::make_error(vamp_zero::error_code::INVALID_ARGUMENT, "practice score mode requires an active exercise")); + } + auto const* variant = selected_practice_variant(state, *exercise); + if (variant == nullptr) { + return std::unexpected(vamp_zero::make_error(vamp_zero::error_code::INVALID_ARGUMENT, "practice score mode requires a selected generated variant")); + } + if (variant->total_pages == 0U || state.page_index >= variant->total_pages) { + return std::unexpected(vamp_zero::make_error(vamp_zero::error_code::INVALID_ARGUMENT, "practice score page index is out of range")); + } + } + return {}; +} diff --git a/src/vamp_zero/portal.cpp b/src/vamp_zero/portal.cpp new file mode 100644 index 0000000..c2d303b --- /dev/null +++ b/src/vamp_zero/portal.cpp @@ -0,0 +1,178 @@ +#include + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +namespace { + +auto portal_html() -> std::string { + return R"html(Product Vamp

Product Vamp

Loading...

)html"; +} + +auto endpoint_port(std::string const& endpoint) -> std::string { + auto separator = endpoint.rfind(':'); + if (separator == std::string::npos || separator + 1U >= endpoint.size()) { + return "8080"; + } + return endpoint.substr(separator + 1U); +} + +auto remote_response(vamp_zero::app_state const& state) -> ligo::service_response { + return ligo::text_response("text/plain; charset=utf-8", vamp_zero::remote_display_text(state)); +} + +} + +vamp_zero::control_state::control_state(vamp_zero::config config, vamp_zero::app_state state) : config_{std::move(config)}, state_{std::move(state)} {} + +auto vamp_zero::control_state::config() const -> vamp_zero::config { + auto lock = std::scoped_lock{mutex_}; + return config_; +} + +auto vamp_zero::control_state::pico_connected_locked() const -> std::bool_t { + return last_heartbeat_ != std::chrono::steady_clock::time_point{} && std::chrono::steady_clock::now() - last_heartbeat_ < std::chrono::seconds{3}; +} + +auto vamp_zero::control_state::snapshot_locked() const -> vamp_zero::app_state { + auto copy = state_; + copy.pico_connected = pico_connected_locked(); + return copy; +} + +auto vamp_zero::control_state::snapshot() const -> vamp_zero::app_state { + auto lock = std::scoped_lock{mutex_}; + return snapshot_locked(); +} + +auto vamp_zero::control_state::apply(vamp_protocol::page_command command) -> vamp_zero::app_state { + auto observer = vamp_zero::control_state::observer{}; + auto updated = vamp_zero::app_state{}; + { + auto lock = std::scoped_lock{mutex_}; + state_ = vamp_zero::apply_app_command(std::move(state_), command); + state_.pico_connected = pico_connected_locked(); + updated = state_; + observer = observer_; + } + if (observer) { + observer(updated); + } + return updated; +} + +auto vamp_zero::control_state::heartbeat() -> vamp_zero::app_state { + auto observer = vamp_zero::control_state::observer{}; + auto updated = vamp_zero::app_state{}; + { + auto lock = std::scoped_lock{mutex_}; + last_heartbeat_ = std::chrono::steady_clock::now(); + ++state_.heartbeat_count; + auto notify = !state_.pico_connected; + state_.pico_connected = true; + updated = state_; + if (notify) { + observer = observer_; + } + } + if (observer) { + observer(updated); + } + return updated; +} + +auto vamp_zero::control_state::refresh_connection() -> std::optional { + auto observer = vamp_zero::control_state::observer{}; + auto updated = vamp_zero::app_state{}; + { + auto lock = std::scoped_lock{mutex_}; + auto connected = pico_connected_locked(); + if (connected == state_.pico_connected) { + return std::nullopt; + } + state_.pico_connected = connected; + updated = state_; + observer = observer_; + } + if (observer) { + observer(updated); + } + return updated; +} + +auto vamp_zero::control_state::set_observer(vamp_zero::control_state::observer observer) -> void { + auto lock = std::scoped_lock{mutex_}; + observer_ = std::move(observer); +} + +auto vamp_zero::portal_status_json(vamp_zero::config const& config, vamp_zero::app_state const& state) -> boost::json::value { + auto control = boost::json::object{}; + control["ap_ssid"] = config.control.ap_ssid; + control["zero_ip"] = config.control.zero_ip; + control["endpoint"] = "http://" + config.control.zero_ip + ":" + endpoint_port(config.control.endpoint.bind); + + auto root = boost::json::object{}; + root["device"] = "zero"; + root["version"] = VAMP_VERSION; + root["git_sha"] = VAMP_GIT_SHA; + root["control"] = std::move(control); + root["state"] = vamp_zero::app_status_json(state); + return root; +} + +auto vamp_zero::make_router(vamp_zero::control_state& state) -> ligo::service_router { + auto router = ligo::service_router{}; + router.add_response_route("GET", vamp_protocol::root_path, [](ligo::request_context, boost::json::value) -> boost::asio::awaitable> { + co_return ligo::text_response("text/html; charset=utf-8", portal_html()); + }); + router.add_route("GET", vamp_protocol::status_path, [&state](ligo::request_context, boost::json::value) -> boost::asio::awaitable> { + co_return vamp_zero::portal_status_json(state.config(), state.snapshot()); + }); + router.add_response_route("GET", vamp_protocol::remote_display_path, [&state](ligo::request_context, boost::json::value) -> boost::asio::awaitable> { + auto updated = state.heartbeat(); + co_return remote_response(updated); + }); + router.add_response_route("POST", vamp_protocol::remote_heartbeat_path, [&state](ligo::request_context, boost::json::value) -> boost::asio::awaitable> { + auto updated = state.heartbeat(); + co_return remote_response(updated); + }); + router.add_response_route("POST", vamp_protocol::remote_next_path, [&state](ligo::request_context, boost::json::value) -> boost::asio::awaitable> { + auto updated = state.apply(vamp_protocol::page_command::NEXT); + co_return remote_response(updated); + }); + router.add_response_route("POST", vamp_protocol::remote_previous_path, [&state](ligo::request_context, boost::json::value) -> boost::asio::awaitable> { + auto updated = state.apply(vamp_protocol::page_command::PREVIOUS); + co_return remote_response(updated); + }); + router.add_response_route("POST", vamp_protocol::remote_select_path, [&state](ligo::request_context, boost::json::value) -> boost::asio::awaitable> { + auto updated = state.apply(vamp_protocol::page_command::SELECT); + co_return remote_response(updated); + }); + router.add_route("POST", vamp_protocol::next_page_path, [&state](ligo::request_context, boost::json::value) -> boost::asio::awaitable> { + auto updated = state.apply(vamp_protocol::page_command::NEXT); + co_return vamp_zero::portal_status_json(state.config(), updated); + }); + router.add_route("POST", vamp_protocol::previous_page_path, [&state](ligo::request_context, boost::json::value) -> boost::asio::awaitable> { + auto updated = state.apply(vamp_protocol::page_command::PREVIOUS); + co_return vamp_zero::portal_status_json(state.config(), updated); + }); + return router; +} diff --git a/src/vamp_zero/score.cpp b/src/vamp_zero/score.cpp new file mode 100644 index 0000000..69cb22c --- /dev/null +++ b/src/vamp_zero/score.cpp @@ -0,0 +1,632 @@ +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include + +namespace { + +constexpr auto whole_note_ticks = std::int64_t{16384}; +constexpr auto half_note_ticks = std::int64_t{8192}; +constexpr auto quarter_note_ticks = std::int64_t{4096}; +constexpr auto eighth_note_ticks = std::int64_t{2048}; + +enum class duration_base { + WHOLE, + HALF, + QUARTER, + EIGHTH, +}; + +struct duration_shape { + duration_base base{duration_base::QUARTER}; + std::int32_t dots{}; + std::int64_t ticks{quarter_note_ticks}; +}; + +struct smufl_box { + std::float32_t west{}; + std::float32_t south{}; + std::float32_t east{}; + std::float32_t north{}; +}; + +struct smufl_anchor { + std::float32_t x{}; + std::float32_t y{}; +}; + +struct notehead_instance { + std::float32_t center_y{}; + luma::point origin{}; +}; + +constexpr auto glyph_notehead_whole = std::int32_t{0xe0a2}; +constexpr auto glyph_notehead_half = std::int32_t{0xe0a3}; +constexpr auto glyph_notehead_black = std::int32_t{0xe0a4}; +constexpr auto glyph_notehead_slash = std::int32_t{0xe101}; +constexpr auto glyph_rest_whole = std::int32_t{0xe4e3}; +constexpr auto glyph_rest_half = std::int32_t{0xe4e4}; +constexpr auto glyph_rest_quarter = std::int32_t{0xe4e5}; +constexpr auto glyph_rest_eighth = std::int32_t{0xe4e6}; +constexpr auto glyph_flag_eighth_up = std::int32_t{0xe240}; +constexpr auto glyph_flag_eighth_down = std::int32_t{0xe241}; +constexpr auto glyph_augmentation_dot = std::int32_t{0xe1e7}; +constexpr auto glyph_accidental_flat = std::int32_t{0xe260}; +constexpr auto glyph_accidental_natural = std::int32_t{0xe261}; +constexpr auto glyph_accidental_sharp = std::int32_t{0xe262}; + +auto to_raylib(luma::color color) -> Color { + return { + .r = color.r, + .g = color.g, + .b = color.b, + .a = color.a, + }; +} + +auto encode_utf8(std::int32_t codepoint) -> std::string { + auto output = std::string{}; + if (codepoint <= 0x7f) { + output.push_back(static_cast(codepoint)); + } else if (codepoint <= 0x7ff) { + output.push_back(static_cast(0xc0 | ((codepoint >> 6) & 0x1f))); + output.push_back(static_cast(0x80 | (codepoint & 0x3f))); + } else if (codepoint <= 0xffff) { + output.push_back(static_cast(0xe0 | ((codepoint >> 12) & 0x0f))); + output.push_back(static_cast(0x80 | ((codepoint >> 6) & 0x3f))); + output.push_back(static_cast(0x80 | (codepoint & 0x3f))); + } else { + output.push_back(static_cast(0xf0 | ((codepoint >> 18) & 0x07))); + output.push_back(static_cast(0x80 | ((codepoint >> 12) & 0x3f))); + output.push_back(static_cast(0x80 | ((codepoint >> 6) & 0x3f))); + output.push_back(static_cast(0x80 | (codepoint & 0x3f))); + } + return output; +} + +auto music_font(std::float32_t size) -> Font { + auto const key = std::max(std::int32_t{1}, static_cast(std::ceil(size))); + static auto fonts = std::unordered_map{}; + if (auto found = fonts.find(key); found != fonts.end()) { + return found->second; + } + + auto codepoints = std::vector{ + glyph_notehead_whole, + glyph_notehead_half, + glyph_notehead_black, + glyph_notehead_slash, + glyph_rest_whole, + glyph_rest_half, + glyph_rest_quarter, + glyph_rest_eighth, + glyph_flag_eighth_up, + glyph_flag_eighth_down, + glyph_augmentation_dot, + glyph_accidental_flat, + glyph_accidental_natural, + glyph_accidental_sharp, + }; + auto path = std::string{vamp_style::score_music_font_path}; + auto loaded = LoadFontEx(path.c_str(), key, codepoints.data(), static_cast(codepoints.size())); + if (loaded.texture.id == 0) { + return GetFontDefault(); + } + auto inserted = fonts.emplace(key, loaded); + return inserted.first->second; +} + +auto glyph_box(std::int32_t codepoint) -> smufl_box { + switch (codepoint) { + case glyph_notehead_whole: + return {.west = 0.0F, .south = -0.744684F, .east = 1.520666F, .north = 0.66F}; + case glyph_notehead_half: + return {.west = 0.0F, .south = -0.696F, .east = 1.336F, .north = 0.7F}; + case glyph_notehead_black: + return {.west = 0.0F, .south = -0.656F, .east = 1.336186F, .north = 0.656F}; + case glyph_notehead_slash: + return {.west = 0.0F, .south = -1.016F, .east = 1.952F, .north = 1.016F}; + case glyph_rest_whole: + return {.west = 0.003563F, .south = -0.48F, .east = 2.0F, .north = 0.056F}; + case glyph_rest_half: + return {.west = 0.0F, .south = 0.0F, .east = 2.073599F, .north = 0.648F}; + case glyph_rest_quarter: + return {.west = -0.001514F, .south = -1.66F, .east = 1.052F, .north = 1.66F}; + case glyph_rest_eighth: + return {.west = 0.0F, .south = -1.04F, .east = 1.156F, .north = 1.044F}; + case glyph_flag_eighth_up: + return {.west = 0.0F, .south = -3.276F, .east = 1.044F, .north = 0.0F}; + case glyph_flag_eighth_down: + return {.west = 0.0F, .south = 0.0F, .east = 1.044F, .north = 3.276F}; + case glyph_augmentation_dot: + return {.west = 0.0F, .south = -0.228F, .east = 0.384F, .north = 0.228F}; + case glyph_accidental_flat: + return {.west = 0.004F, .south = -0.832F, .east = 0.836F, .north = 1.888F}; + case glyph_accidental_natural: + return {.west = 0.0F, .south = -1.824F, .east = 0.854F, .north = 1.848F}; + case glyph_accidental_sharp: + return {.west = -0.088F, .south = -1.536F, .east = 1.56F, .north = 1.532F}; + default: + return {}; + } +} + +auto glyph_center_x(std::int32_t codepoint) -> std::float32_t { + auto box = glyph_box(codepoint); + return (box.west + box.east) * 0.5F; +} + +auto glyph_center_y(std::int32_t codepoint) -> std::float32_t { + auto box = glyph_box(codepoint); + return (box.south + box.north) * 0.5F; +} + +auto glyph_width(std::int32_t codepoint, std::float32_t staff_spacing) -> std::float32_t { + auto box = glyph_box(codepoint); + return (box.east - box.west) * staff_spacing; +} + +auto draw_music_origin(std::int32_t codepoint, luma::point origin, std::float32_t staff_spacing, luma::color color) -> void { + auto font_size = staff_spacing * 4.0F; + auto font = music_font(font_size); + auto glyph = GetGlyphInfo(font, codepoint); + auto scale = font_size / std::max(1.0F, static_cast(font.baseSize)); + auto box = glyph_box(codepoint); + auto screen_left = origin.x + box.west * staff_spacing; + auto screen_top = origin.y - box.north * staff_spacing; + auto draw_x = screen_left - static_cast(glyph.offsetX) * scale + static_cast(font.glyphPadding) * scale; + auto draw_y = screen_top - static_cast(glyph.offsetY) * scale + static_cast(font.glyphPadding) * scale; + auto text = encode_utf8(codepoint); + DrawTextEx(font, text.c_str(), {.x = draw_x, .y = draw_y}, font_size, 0.0F, to_raylib(color)); +} + +auto origin_for_center(std::int32_t codepoint, std::float32_t center_x, std::float32_t center_y, std::float32_t staff_spacing) -> luma::point { + return { + .x = center_x - glyph_center_x(codepoint) * staff_spacing, + .y = center_y + glyph_center_y(codepoint) * staff_spacing, + }; +} + +auto draw_music_centered(std::int32_t codepoint, std::float32_t center_x, std::float32_t center_y, std::float32_t staff_spacing, luma::color color) -> void { + draw_music_origin(codepoint, origin_for_center(codepoint, center_x, center_y, staff_spacing), staff_spacing, color); +} + +auto draw_music_centered_at_origin_y(std::int32_t codepoint, std::float32_t center_x, std::float32_t origin_y, std::float32_t staff_spacing, luma::color color) -> void { + draw_music_origin(codepoint, {.x = center_x - glyph_center_x(codepoint) * staff_spacing, .y = origin_y}, staff_spacing, color); +} + +auto draw_music_left_of(std::int32_t codepoint, std::float32_t right_x, std::float32_t center_y, std::float32_t staff_spacing, luma::color color) -> void { + auto box = glyph_box(codepoint); + auto origin = luma::point{ + .x = right_x - box.east * staff_spacing, + .y = center_y + glyph_center_y(codepoint) * staff_spacing, + }; + draw_music_origin(codepoint, origin, staff_spacing, color); +} + +auto anchor_point(luma::point origin, smufl_anchor anchor, std::float32_t staff_spacing) -> luma::point { + return { + .x = origin.x + anchor.x * staff_spacing, + .y = origin.y - anchor.y * staff_spacing, + }; +} + +auto stem_up_anchor(std::int32_t notehead) -> smufl_anchor { + switch (notehead) { + case glyph_notehead_half: + return {.x = 1.312F, .y = 0.284F}; + case glyph_notehead_slash: + return {.x = 1.952F, .y = 0.884F}; + case glyph_notehead_black: + default: + return {.x = 1.336F, .y = 0.288F}; + } +} + +auto stem_down_anchor(std::int32_t notehead) -> smufl_anchor { + switch (notehead) { + case glyph_notehead_half: + return {.x = 0.0F, .y = -0.252F}; + case glyph_notehead_slash: + return {.x = 0.0F, .y = -0.928F}; + case glyph_notehead_black: + default: + return {.x = 0.0F, .y = -0.236F}; + } +} + +auto draw_eighth_flag(std::bool_t stem_up, std::float32_t stem_x, std::float32_t stem_tip_y, std::float32_t staff_spacing, luma::color color) -> void { + auto codepoint = stem_up ? glyph_flag_eighth_up : glyph_flag_eighth_down; + auto anchor = stem_up ? smufl_anchor{.x = 0.0F, .y = -0.176F} : smufl_anchor{.x = 0.0F, .y = 0.176F}; + auto origin = luma::point{ + .x = stem_x - anchor.x * staff_spacing, + .y = stem_tip_y + anchor.y * staff_spacing, + }; + draw_music_origin(codepoint, origin, staff_spacing, color); +} + +auto text_style(std::int32_t scale) -> luma::text_style { + auto size = 14.0F; + if (scale == 2) { + size = 22.0F; + } else if (scale >= 3) { + size = 30.0F; + } + return { + .font = std::string{vamp_style::score_text_font_path}, + .size = size, + .line_height = size + 5.0F, + }; +} + +auto draw_text(luma::draw_context& context, std::float32_t x, std::float32_t y, std::string const& text, std::int32_t scale, vamp_style::color color, std::float32_t max_width) -> void { + if (text.empty() || max_width <= 0.0F) { + return; + } + auto style = text_style(scale); + context.push_clip({.x = x, .y = y, .width = max_width, .height = style.line_height}); + context.draw_text(text, {.x = x, .y = y}, style, vamp_zero::to_luma(color)); + context.pop_clip(); +} + +auto duration_for(std::int64_t ticks) -> duration_shape { + if (ticks >= whole_note_ticks) { + return {.base = duration_base::WHOLE, .dots = 0, .ticks = whole_note_ticks}; + } + if (ticks >= half_note_ticks + quarter_note_ticks) { + return {.base = duration_base::HALF, .dots = 1, .ticks = half_note_ticks + quarter_note_ticks}; + } + if (ticks >= half_note_ticks) { + return {.base = duration_base::HALF, .dots = 0, .ticks = half_note_ticks}; + } + if (ticks >= quarter_note_ticks + eighth_note_ticks) { + return {.base = duration_base::QUARTER, .dots = 1, .ticks = quarter_note_ticks + eighth_note_ticks}; + } + if (ticks >= quarter_note_ticks) { + return {.base = duration_base::QUARTER, .dots = 0, .ticks = quarter_note_ticks}; + } + return {.base = duration_base::EIGHTH, .dots = 0, .ticks = eighth_note_ticks}; +} + +auto spacing_ticks(vamp_zero::score_note const& note) -> std::int64_t { + return std::max(1, note.duration_ticks); +} + +auto display_ticks(vamp_zero::score_note const& note) -> std::int64_t { + return note.display_ticks <= 0 ? note.duration_ticks : note.display_ticks; +} + +auto measure_ticks(vamp_zero::score_measure const& measure) -> std::int64_t { + auto total = std::int64_t{}; + for (auto const& note : measure.notes) { + total += spacing_ticks(note); + } + return std::max(whole_note_ticks, total); +} + +auto has_stem(duration_shape duration) -> std::bool_t { + return duration.base != duration_base::WHOLE; +} + +auto has_flag(duration_shape duration) -> std::bool_t { + return duration.base == duration_base::EIGHTH; +} + +auto letter_index(std::char_t letter) -> std::int32_t { + switch (letter) { + case 'c': + case 'C': + return 0; + case 'd': + case 'D': + return 1; + case 'e': + case 'E': + return 2; + case 'f': + case 'F': + return 3; + case 'g': + case 'G': + return 4; + case 'a': + case 'A': + return 5; + case 'b': + case 'B': + return 6; + default: + return 0; + } +} + +auto pitch_y(vamp_zero::score_pitch const& pitch, std::float32_t staff_top, std::float32_t staff_spacing) -> std::float32_t { + constexpr auto e4_index = std::int32_t{30}; + auto pitch_index = pitch.octave * 7 + letter_index(pitch.letter); + auto bottom_line = staff_top + staff_spacing * 4.0F; + return bottom_line - static_cast(pitch_index - e4_index) * (staff_spacing * 0.5F); +} + +auto accidental_glyph(std::string const& accidental) -> std::optional { + if (accidental == "#" || accidental == "sharp") { + return glyph_accidental_sharp; + } + if (accidental == "b" || accidental == "flat") { + return glyph_accidental_flat; + } + if (accidental == "natural" || accidental == "n") { + return glyph_accidental_natural; + } + return std::nullopt; +} + +auto draw_curve(luma::draw_context& context, luma::point start, luma::point control, luma::point end, std::float32_t thickness, luma::color color) -> void { + constexpr auto segments = std::int32_t{10}; + auto previous = start; + for (auto index = std::int32_t{1}; index <= segments; ++index) { + auto t = static_cast(index) / static_cast(segments); + auto omt = 1.0F - t; + auto current = luma::point{ + .x = omt * omt * start.x + 2.0F * omt * t * control.x + t * t * end.x, + .y = omt * omt * start.y + 2.0F * omt * t * control.y + t * t * end.y, + }; + context.stroke_line(previous, current, thickness, color); + previous = current; + } +} + +auto draw_staff(luma::draw_context& context, std::float32_t x, std::float32_t y, std::float32_t width, std::float32_t spacing) -> void { + auto ink = vamp_zero::to_luma(vamp_style::paper_ink); + for (auto line = std::int32_t{}; line < 5; ++line) { + auto yy = y + static_cast(line) * spacing; + context.stroke_line({.x = x, .y = yy}, {.x = x + width, .y = yy}, 1.15F, ink); + } +} + +auto draw_duration_dot(luma::draw_context& context, std::float32_t x, std::float32_t y, std::float32_t spacing, luma::color ink) -> void { + static_cast(context); + draw_music_centered(glyph_augmentation_dot, x, y, spacing, ink); +} + +auto dot_y_for(std::float32_t note_y, std::float32_t staff_top, std::float32_t spacing) -> std::float32_t { + auto half_step = (note_y - staff_top) / (spacing * 0.5F); + auto rounded = std::round(half_step); + if (std::abs(half_step - rounded) < 0.08F && static_cast(rounded) % 2 == 0) { + return note_y - spacing * 0.5F; + } + return note_y; +} + +auto draw_ledger_lines(luma::draw_context& context, std::float32_t x, std::float32_t note_y, std::float32_t staff_top, std::float32_t spacing, luma::color ink) -> void { + auto bottom = staff_top + spacing * 4.0F; + if (note_y < staff_top) { + for (auto yy = staff_top - spacing; yy >= note_y - 0.1F; yy -= spacing) { + context.stroke_line({.x = x - 12.0F, .y = yy}, {.x = x + 12.0F, .y = yy}, 1.1F, ink); + } + } else if (note_y > bottom) { + for (auto yy = bottom + spacing; yy <= note_y + 0.1F; yy += spacing) { + context.stroke_line({.x = x - 12.0F, .y = yy}, {.x = x + 12.0F, .y = yy}, 1.1F, ink); + } + } +} + +auto draw_rest(luma::draw_context& context, duration_shape duration, std::float32_t x, std::float32_t staff_top, std::float32_t spacing) -> void { + static_cast(context); + auto ink = vamp_zero::to_luma(vamp_style::paper_ink); + auto center = staff_top + spacing * 2.0F; + auto codepoint = glyph_rest_quarter; + auto origin_y = center; + auto centered = false; + switch (duration.base) { + case duration_base::WHOLE: + codepoint = glyph_rest_whole; + origin_y = staff_top + spacing; + break; + case duration_base::HALF: + codepoint = glyph_rest_half; + origin_y = staff_top + spacing * 2.0F; + break; + case duration_base::QUARTER: + codepoint = glyph_rest_quarter; + centered = true; + break; + case duration_base::EIGHTH: + codepoint = glyph_rest_eighth; + centered = true; + break; + } + if (centered) { + draw_music_centered(codepoint, x, center, spacing, ink); + } else { + draw_music_centered_at_origin_y(codepoint, x, origin_y, spacing, ink); + } + if (duration.dots != 0) { + draw_duration_dot(context, x + glyph_width(codepoint, spacing) * 0.5F + spacing, center, spacing, ink); + } +} + +auto notehead_codepoint(duration_shape duration, std::bool_t slash) -> std::int32_t { + if (slash) { + return glyph_notehead_slash; + } + switch (duration.base) { + case duration_base::WHOLE: + return glyph_notehead_whole; + case duration_base::HALF: + return glyph_notehead_half; + case duration_base::QUARTER: + case duration_base::EIGHTH: + return glyph_notehead_black; + } + return glyph_notehead_black; +} + +auto draw_notehead(duration_shape duration, std::bool_t slash, std::float32_t x, std::float32_t y, std::float32_t spacing, luma::color ink) -> notehead_instance { + auto codepoint = notehead_codepoint(duration, slash); + auto origin = origin_for_center(codepoint, x, y, spacing); + draw_music_origin(codepoint, origin, spacing, ink); + return {.center_y = y, .origin = origin}; +} + +auto draw_note(luma::draw_context& context, vamp_zero::score_note const& note, std::float32_t x, std::float32_t staff_top, std::float32_t spacing, std::float32_t next_x, std::bool_t slash) -> void { + if (note.hidden) { + return; + } + + auto duration = duration_for(display_ticks(note)); + if (note.kind == "rest") { + draw_rest(context, duration, x, staff_top, spacing); + return; + } + + auto ink = vamp_zero::to_luma(vamp_style::paper_ink); + auto center = staff_top + spacing * 2.0F; + auto bottom = staff_top + spacing * 4.0F; + auto low_y = center; + auto high_y = center; + auto heads = std::vector{}; + if (slash || note.pitches.empty()) { + heads.push_back(draw_notehead(duration, slash, x, center, spacing, ink)); + low_y = center; + high_y = center; + } + if (!slash) { + for (auto const& pitch : note.pitches) { + auto yy = std::clamp(pitch_y(pitch, staff_top, spacing), staff_top - spacing * 2.0F, bottom + spacing * 2.0F); + low_y = std::max(low_y, yy); + high_y = std::min(high_y, yy); + } + for (auto const& pitch : note.pitches) { + auto yy = std::clamp(pitch_y(pitch, staff_top, spacing), staff_top - spacing * 2.0F, bottom + spacing * 2.0F); + draw_ledger_lines(context, x, yy, staff_top, spacing, ink); + if (auto accidental = accidental_glyph(pitch.accidental)) { + auto head_origin = origin_for_center(notehead_codepoint(duration, false), x, yy, spacing); + auto head_left = head_origin.x + glyph_box(notehead_codepoint(duration, false)).west * spacing; + draw_music_left_of(*accidental, head_left - spacing * 0.65F, yy, spacing, ink); + } + heads.push_back(draw_notehead(duration, false, x, yy, spacing, ink)); + } + } + + auto notehead = notehead_codepoint(duration, slash); + if (has_stem(duration) && !heads.empty()) { + auto stem_up = (low_y + high_y) * 0.5F >= center; + if (stem_up) { + auto base_origin = origin_for_center(notehead, x, low_y, spacing); + auto base = anchor_point(base_origin, stem_up_anchor(notehead), spacing); + auto stem_top = std::min(high_y, center) - spacing * 3.6F; + context.stroke_line(base, {.x = base.x, .y = stem_top}, 1.6F, ink); + if (has_flag(duration)) { + draw_eighth_flag(true, base.x, stem_top, spacing, ink); + } + } else { + auto base_origin = origin_for_center(notehead, x, high_y, spacing); + auto base = anchor_point(base_origin, stem_down_anchor(notehead), spacing); + auto stem_bottom = std::max(low_y, center) + spacing * 3.6F; + context.stroke_line(base, {.x = base.x, .y = stem_bottom}, 1.6F, ink); + if (has_flag(duration)) { + draw_eighth_flag(false, base.x, stem_bottom, spacing, ink); + } + } + } + + if (duration.dots != 0) { + auto dot_origin = origin_for_center(notehead, x, low_y, spacing); + auto dot_x = dot_origin.x + glyph_box(notehead).east * spacing + spacing * 0.85F; + draw_duration_dot(context, dot_x, dot_y_for(low_y, staff_top, spacing), spacing, ink); + } + if (note.tie_to_next) { + draw_curve(context, {.x = x + 7.0F, .y = low_y + 9.0F}, {.x = (x + next_x) * 0.5F, .y = low_y + 19.0F}, {.x = next_x - 7.0F, .y = low_y + 9.0F}, 1.4F, ink); + } +} + +auto note_x(std::float32_t start_x, std::float32_t width, std::int64_t total_ticks, std::int64_t elapsed_ticks, std::int64_t duration_ticks) -> std::float32_t { + auto center_ticks = static_cast(elapsed_ticks) + static_cast(duration_ticks) * 0.5F; + auto ratio = std::clamp(center_ticks / static_cast(total_ticks), 0.0F, 1.0F); + return start_x + width * ratio; +} + +auto draw_measure(luma::draw_context& context, vamp_zero::score_measure const& measure, luma::rect bounds, std::size_t measure_number) -> void { + constexpr auto spacing = std::float32_t{8.0F}; + auto staff_top = bounds.y + 52.0F; + draw_text(context, bounds.x + 5.0F, bounds.y + 1.0F, std::to_string(measure_number), 1, vamp_style::muted, 42.0F); + if (!measure.section_label.empty()) { + draw_text(context, bounds.x + 28.0F, bounds.y - 2.0F, measure.section_label, 2, vamp_style::selection, bounds.width - 32.0F); + } + if (!measure.time_signature.empty() && measure_number == 1U) { + draw_text(context, bounds.x + 8.0F, staff_top + 2.0F, measure.time_signature, 1, vamp_style::paper_ink, 42.0F); + } + + auto notation_x = bounds.x + (measure_number == 1U ? 43.0F : 24.0F); + auto notation_width = std::max(24.0F, bounds.width - (notation_x - bounds.x) - 16.0F); + auto total_ticks = measure_ticks(measure); + auto elapsed = std::int64_t{}; + auto previous_chord = std::string{}; + for (auto index = std::size_t{}; index < measure.notes.size(); ++index) { + auto const& note = measure.notes[index]; + auto duration_ticks = spacing_ticks(note); + auto x = note_x(notation_x, notation_width, total_ticks, elapsed, duration_ticks); + auto next_duration = index + 1U < measure.notes.size() ? spacing_ticks(measure.notes[index + 1U]) : duration_ticks; + auto next_x = note_x(notation_x, notation_width, total_ticks, elapsed + duration_ticks, next_duration); + if (!note.hidden && !note.chord_symbol.empty() && note.chord_symbol != previous_chord) { + draw_text(context, x - 18.0F, bounds.y + 24.0F, note.chord_symbol, 2, vamp_style::paper_ink, std::min(92.0F, bounds.width - (x - bounds.x))); + previous_chord = note.chord_symbol; + } + draw_note(context, note, x, staff_top, spacing, next_x, note.notehead == "slash"); + if (!note.hidden && !note.lyric.empty()) { + draw_text(context, x - 12.0F, staff_top + 46.0F, note.lyric, 1, vamp_style::muted, 66.0F); + } + elapsed += duration_ticks; + } +} + +} + +auto vamp_zero::draw_score_page(luma::draw_context& context, luma::rect bounds, vamp_zero::score_document const& score, std::size_t page_index) -> void { + context.fill_rect(bounds, vamp_zero::to_luma(vamp_style::paper)); + context.stroke_rect(bounds, 2.0F, vamp_zero::to_luma(vamp_style::rule)); + context.push_clip(bounds); + + auto margin = std::float32_t{28.0F}; + auto header_y = bounds.y + 16.0F; + draw_text(context, bounds.x + margin, header_y, score.title, 3, vamp_style::paper_ink, bounds.width * 0.55F); + draw_text(context, bounds.x + bounds.width - 220.0F, header_y + 2.0F, score.part, 3, vamp_style::selection, 190.0F); + draw_text(context, bounds.x + margin, header_y + 34.0F, score.composer, 1, vamp_style::muted, bounds.width * 0.6F); + draw_text(context, bounds.x + bounds.width - 122.0F, header_y + 39.0F, "PAGE " + std::to_string(page_index + 1U), 1, vamp_style::muted, 110.0F); + + auto content_x = bounds.x + margin; + auto content_y = bounds.y + 84.0F; + auto content_width = bounds.width - margin * 2.0F; + auto system_height = (bounds.height - 108.0F) / static_cast(vamp_zero::score_systems_per_page); + auto measure_width = content_width / static_cast(vamp_zero::score_measures_per_system); + auto first_measure = page_index * vamp_zero::score_measures_per_page; + + for (auto system = std::size_t{}; system < vamp_zero::score_systems_per_page; ++system) { + auto system_y = content_y + static_cast(system) * system_height; + auto staff_top = system_y + 52.0F; + draw_staff(context, content_x, staff_top, content_width, 8.0F); + for (auto measure = std::size_t{}; measure < vamp_zero::score_measures_per_system; ++measure) { + auto measure_index = first_measure + system * vamp_zero::score_measures_per_system + measure; + auto x = content_x + static_cast(measure) * measure_width; + context.stroke_line({.x = x, .y = staff_top}, {.x = x, .y = staff_top + 32.0F}, 1.2F, vamp_zero::to_luma(vamp_style::paper_ink)); + if (measure_index < score.measures.size()) { + draw_measure(context, score.measures[measure_index], {.x = x, .y = system_y, .width = measure_width, .height = system_height}, measure_index + 1U); + } + } + context.stroke_line({.x = content_x + content_width, .y = staff_top}, {.x = content_x + content_width, .y = staff_top + 32.0F}, 2.0F, vamp_zero::to_luma(vamp_style::paper_ink)); + } + + context.pop_clip(); +} diff --git a/src/vamp_zero/types.cpp b/src/vamp_zero/types.cpp new file mode 100644 index 0000000..6493f5d --- /dev/null +++ b/src/vamp_zero/types.cpp @@ -0,0 +1,60 @@ +#include + +#include +#include + +auto vamp_zero::to_string(vamp_zero::hardware_mode value) -> std::string { + switch (value) { + case vamp_zero::hardware_mode::FAKE: + return "fake"; + case vamp_zero::hardware_mode::REAL: + return "real"; + } + return "fake"; +} + +auto vamp_zero::to_string(vamp_zero::app_mode value) -> std::string { + switch (value) { + case vamp_zero::app_mode::MAIN_MENU: + return "main_menu"; + case vamp_zero::app_mode::PERFORMANCE_SONG_MENU: + return "performance_song_menu"; + case vamp_zero::app_mode::PERFORMANCE_PART_MENU: + return "performance_part_menu"; + case vamp_zero::app_mode::PERFORMANCE_SCORE: + return "performance_score"; + case vamp_zero::app_mode::PRACTICE_TYPE_MENU: + return "practice_type_menu"; + case vamp_zero::app_mode::PRACTICE_LESSON_MENU: + return "practice_lesson_menu"; + case vamp_zero::app_mode::PRACTICE_EXERCISE_MENU: + return "practice_exercise_menu"; + case vamp_zero::app_mode::PRACTICE_KEY_MENU: + return "practice_key_menu"; + case vamp_zero::app_mode::PRACTICE_SCORE: + return "practice_score"; + } + return "main_menu"; +} + +auto vamp_zero::practice_key_names() -> std::vector const& { + static auto const keys = std::vector{ + "C", + "Db", + "D", + "Eb", + "E", + "F", + "Gb", + "G", + "Ab", + "A", + "Bb", + "B", + }; + return keys; +} + +auto vamp_zero::practice_type_supports_key_selection(std::string_view practice_type_id) -> std::bool_t { + return practice_type_id == "melody"; +} diff --git a/src/vamp_zero/ui.cpp b/src/vamp_zero/ui.cpp new file mode 100644 index 0000000..e4d66d5 --- /dev/null +++ b/src/vamp_zero/ui.cpp @@ -0,0 +1,495 @@ +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include + +#include +#include +#include +#include +#include + +namespace { + +auto bind_port(vamp_zero::config const& config) -> std::uint16_t { + auto const& bind = config.control.endpoint.bind; + auto colon = bind.rfind(':'); + if (colon == std::string::npos) { + return 8080; + } + try { + return static_cast(std::stoul(bind.substr(colon + 1U))); + } catch (...) { + return 8080; + } +} + +auto active_part(vamp_zero::app_state const& state) -> vamp_zero::library_part const* { + auto found = std::find_if(state.performance.parts.begin(), state.performance.parts.end(), [&](auto const& part) { + return part.id == state.active_part_id; + }); + return found == state.performance.parts.end() ? nullptr : &*found; +} + +auto selected_group(vamp_zero::app_state const& state) -> vamp_zero::song_group const* { + if (state.selected_song_index == 0U || state.performance.groups.empty()) { + return nullptr; + } + auto index = state.selected_song_index - 1U; + if (index >= state.performance.groups.size()) { + return nullptr; + } + return &state.performance.groups[index]; +} + +auto active_practice(vamp_zero::app_state const& state) -> vamp_zero::practice_exercise const* { + auto found = std::find_if(state.practice.exercises.begin(), state.practice.exercises.end(), [&](auto const& exercise) { + return exercise.id == state.active_practice_id; + }); + return found == state.practice.exercises.end() ? nullptr : &*found; +} + +auto selected_practice_type(vamp_zero::app_state const& state) -> vamp_zero::practice_type_group const* { + if (state.selected_practice_type_index == 0U || state.practice.types.empty()) { + return nullptr; + } + auto index = state.selected_practice_type_index - 1U; + if (index >= state.practice.types.size()) { + return nullptr; + } + return &state.practice.types[index]; +} + +auto selected_practice_lesson(vamp_zero::app_state const& state) -> vamp_zero::practice_lesson_group const* { + auto const* type = selected_practice_type(state); + if (state.selected_practice_lesson_index == 0U || type == nullptr || type->lesson_groups.empty()) { + return nullptr; + } + auto index = state.selected_practice_lesson_index - 1U; + if (index >= type->lesson_groups.size()) { + return nullptr; + } + return &type->lesson_groups[index]; +} + +auto selected_practice_exercise(vamp_zero::app_state const& state) -> vamp_zero::practice_exercise const* { + auto const* lesson = selected_practice_lesson(state); + if (state.selected_practice_exercise_index == 0U || lesson == nullptr || lesson->exercises.empty()) { + return nullptr; + } + auto index = state.selected_practice_exercise_index - 1U; + if (index >= lesson->exercises.size()) { + return nullptr; + } + return &lesson->exercises[index]; +} + +auto supports_key_selection(vamp_zero::practice_exercise const& exercise) -> std::bool_t { + return vamp_zero::practice_type_supports_key_selection(exercise.practice_type_id); +} + +auto selected_practice_variant(vamp_zero::app_state const& state, vamp_zero::practice_exercise const& exercise) -> vamp_zero::practice_exercise::score_variant const* { + if (exercise.variants.empty()) { + return nullptr; + } + if (!supports_key_selection(exercise)) { + return &exercise.variants.front(); + } + if (state.selected_practice_key_index == 0U) { + return nullptr; + } + auto index = state.selected_practice_key_index - 1U; + if (index >= exercise.variants.size()) { + return nullptr; + } + return &exercise.variants[index]; +} + +auto selected_practice_key(vamp_zero::app_state const& state, vamp_zero::practice_exercise const& exercise) -> std::optional { + auto const* variant = selected_practice_variant(state, exercise); + if (variant == nullptr) { + return std::nullopt; + } + return variant->key_signature; +} + +auto effective_practice_key(vamp_zero::app_state const& state, vamp_zero::practice_exercise const& exercise) -> std::string { + if (auto const* variant = selected_practice_variant(state, exercise); variant != nullptr && !variant->key_signature.empty()) { + return variant->key_signature; + } + return exercise.key_signature.empty() ? std::string{"C"} : exercise.key_signature; +} + +auto status_color(vamp_zero::app_state const& state) -> vamp_style::color { + return state.pico_connected ? vamp_style::connected : vamp_style::retrying; +} + +auto text_style(std::int32_t scale) -> luma::text_style { + auto size = 13.0F; + if (scale == 2) { + size = 20.0F; + } else if (scale == 3) { + size = 26.0F; + } else if (scale >= 4) { + size = 34.0F; + } + return { + .font = std::string{vamp_style::ui_font_path}, + .size = size, + .line_height = size + 5.0F, + }; +} + +auto draw_text(luma::draw_context& context, std::float32_t x, std::float32_t y, std::string const& text, std::int32_t scale, vamp_style::color color, std::float32_t max_width) -> void { + if (text.empty() || max_width <= 0.0F) { + return; + } + auto style = text_style(scale); + context.push_clip({.x = x, .y = y, .width = max_width, .height = style.line_height}); + context.draw_text(text, {.x = x, .y = y}, style, vamp_zero::to_luma(color)); + context.pop_clip(); +} + +auto draw_header(luma::draw_context& context, luma::rect bounds, vamp_zero::ui_state const& state) -> void { + context.fill_rect({.x = bounds.x, .y = bounds.y, .width = bounds.width, .height = 80.0F}, vamp_zero::to_luma(vamp_style::panel)); + context.fill_rect({.x = bounds.x, .y = bounds.y + 78.0F, .width = bounds.width, .height = 2.0F}, vamp_zero::to_luma(vamp_style::accent)); + draw_text(context, bounds.x + 28.0F, bounds.y + 18.0F, "PRODUCT VAMP", 4, vamp_style::ink, 360.0F); + draw_text(context, bounds.x + 30.0F, bounds.y + 55.0F, "AP " + state.ap_ssid + " " + state.zero_ip + ":" + std::to_string(state.port), 1, vamp_style::muted, 520.0F); + + auto indicator = status_color(state.app); + auto x = bounds.x + bounds.width - 148.0F; + context.fill_rect({.x = x, .y = bounds.y + 22.0F, .width = 24.0F, .height = 24.0F}, vamp_zero::to_luma(indicator)); + draw_text(context, x + 36.0F, bounds.y + 26.0F, "PICO", 2, vamp_style::ink, 88.0F); +} + +auto draw_row(luma::draw_context& context, luma::rect row, std::string const& primary, std::string const& secondary, std::bool_t selected) -> void { + if (selected) { + context.fill_rect(row, vamp_zero::to_luma(vamp_style::selection)); + } + context.stroke_line({.x = row.x, .y = row.y + row.height}, {.x = row.x + row.width, .y = row.y + row.height}, 1.0F, vamp_zero::to_luma(vamp_style::rule)); + draw_text(context, row.x + 16.0F, row.y + 10.0F, primary, 2, vamp_style::ink, row.width * 0.62F); + if (!secondary.empty()) { + draw_text(context, row.x + row.width - 250.0F, row.y + 17.0F, secondary, 1, selected ? vamp_style::ink : vamp_style::muted, 230.0F); + } +} + +auto first_visible_row(std::size_t selected, std::size_t total, std::size_t max_rows) -> std::size_t { + if (total <= max_rows || selected < max_rows) { + return 0U; + } + return selected - max_rows + 1U; +} + +auto draw_main_menu(luma::draw_context& context, luma::rect bounds, vamp_zero::app_state const& state) -> void { + draw_text(context, bounds.x + 36.0F, bounds.y + 28.0F, "MODE", 4, vamp_style::ink, 260.0F); + draw_text(context, bounds.x + 38.0F, bounds.y + 66.0F, "SELECT WORKFLOW", 1, vamp_style::muted, 320.0F); + auto list_y = bounds.y + 112.0F; + auto row_height = std::float32_t{54.0F}; + auto row_width = bounds.width - 72.0F; + draw_row(context, {.x = bounds.x + 36.0F, .y = list_y, .width = row_width, .height = row_height}, "Performance Mode", std::to_string(state.performance.groups.size()) + " SONGS", state.selected_main_menu_index == 0U); + draw_row(context, {.x = bounds.x + 36.0F, .y = list_y + row_height, .width = row_width, .height = row_height}, "Practice Mode", std::to_string(state.practice.exercises.size()) + " EXERCISES", state.selected_main_menu_index == 1U); +} + +auto draw_performance_song_menu(luma::draw_context& context, luma::rect bounds, vamp_zero::app_state const& state) -> void { + draw_text(context, bounds.x + 36.0F, bounds.y + 28.0F, "PERFORMANCE", 4, vamp_style::ink, 360.0F); + draw_text(context, bounds.x + 38.0F, bounds.y + 66.0F, std::to_string(state.performance.groups.size()) + " SONGS " + std::to_string(state.performance.parts.size()) + " PARTS", 1, vamp_style::muted, 320.0F); + + auto list_y = bounds.y + 112.0F; + auto row_height = std::float32_t{54.0F}; + auto row_width = bounds.width - 72.0F; + auto total_rows = state.performance.groups.size() + 1U; + auto max_rows = std::min(total_rows, 7U); + auto first = first_visible_row(state.selected_song_index, total_rows, max_rows); + for (auto row = std::size_t{}; row < max_rows; ++row) { + auto index = first + row; + if (index == 0U) { + draw_row(context, {.x = bounds.x + 36.0F, .y = list_y + static_cast(row) * row_height, .width = row_width, .height = row_height}, "BACK", "", state.selected_song_index == 0U); + continue; + } + auto const& group = state.performance.groups[index - 1U]; + draw_row(context, {.x = bounds.x + 36.0F, .y = list_y + static_cast(row) * row_height, .width = row_width, .height = row_height}, group.title, std::to_string(group.parts.size()) + " PARTS", index == state.selected_song_index); + } + if (state.performance.groups.empty()) { + draw_text(context, bounds.x + 38.0F, list_y + row_height + 28.0F, "NO SONGS FOUND", 3, vamp_style::retrying, 420.0F); + } +} + +auto draw_performance_part_menu(luma::draw_context& context, luma::rect bounds, vamp_zero::app_state const& state) -> void { + auto const* group = selected_group(state); + draw_text(context, bounds.x + 36.0F, bounds.y + 28.0F, group == nullptr ? std::string{"PARTS"} : group->title, 4, vamp_style::ink, bounds.width - 72.0F); + if (group == nullptr) { + draw_text(context, bounds.x + 38.0F, bounds.y + 118.0F, "NO PARTS FOUND", 3, vamp_style::retrying, 420.0F); + return; + } + draw_text(context, bounds.x + 38.0F, bounds.y + 66.0F, group->composer, 1, vamp_style::muted, bounds.width - 72.0F); + + auto list_y = bounds.y + 112.0F; + auto row_height = std::float32_t{54.0F}; + auto row_width = bounds.width - 72.0F; + auto total_rows = group->parts.size() + 1U; + auto max_rows = std::min(total_rows, 7U); + auto first = first_visible_row(state.selected_part_index, total_rows, max_rows); + for (auto row = std::size_t{}; row < max_rows; ++row) { + auto index = first + row; + if (index == 0U) { + draw_row(context, {.x = bounds.x + 36.0F, .y = list_y + static_cast(row) * row_height, .width = row_width, .height = row_height}, "BACK", "", state.selected_part_index == 0U); + continue; + } + auto const& part = group->parts[index - 1U]; + draw_row(context, {.x = bounds.x + 36.0F, .y = list_y + static_cast(row) * row_height, .width = row_width, .height = row_height}, part.part, std::to_string(part.total_pages) + " PAGES", index == state.selected_part_index); + } +} + +auto draw_practice_type_menu(luma::draw_context& context, luma::rect bounds, vamp_zero::app_state const& state) -> void { + draw_text(context, bounds.x + 36.0F, bounds.y + 28.0F, "PRACTICE", 4, vamp_style::ink, 300.0F); + draw_text(context, bounds.x + 38.0F, bounds.y + 66.0F, std::to_string(state.practice.types.size()) + " TYPES " + std::to_string(state.practice.exercises.size()) + " EXERCISES", 1, vamp_style::muted, 420.0F); + + auto list_y = bounds.y + 112.0F; + auto row_height = std::float32_t{54.0F}; + auto row_width = bounds.width - 72.0F; + auto total_rows = state.practice.types.size() + 1U; + auto max_rows = std::min(total_rows, 7U); + auto first = first_visible_row(state.selected_practice_type_index, total_rows, max_rows); + for (auto row = std::size_t{}; row < max_rows; ++row) { + auto index = first + row; + if (index == 0U) { + draw_row(context, {.x = bounds.x + 36.0F, .y = list_y + static_cast(row) * row_height, .width = row_width, .height = row_height}, "BACK", "", state.selected_practice_type_index == 0U); + continue; + } + auto const& type = state.practice.types[index - 1U]; + auto exercise_count = std::size_t{}; + for (auto const& lesson : type.lesson_groups) { + exercise_count += lesson.exercises.size(); + } + draw_row(context, {.x = bounds.x + 36.0F, .y = list_y + static_cast(row) * row_height, .width = row_width, .height = row_height}, type.title, std::to_string(exercise_count) + " EXERCISES", index == state.selected_practice_type_index); + } + if (state.practice.types.empty()) { + draw_text(context, bounds.x + 38.0F, list_y + row_height + 28.0F, "NO PRACTICE EXERCISES FOUND", 3, vamp_style::retrying, 560.0F); + } +} + +auto draw_practice_lesson_menu(luma::draw_context& context, luma::rect bounds, vamp_zero::app_state const& state) -> void { + auto const* type = selected_practice_type(state); + draw_text(context, bounds.x + 36.0F, bounds.y + 28.0F, type == nullptr ? std::string{"PRACTICE"} : type->title, 4, vamp_style::ink, bounds.width - 72.0F); + draw_text(context, bounds.x + 38.0F, bounds.y + 66.0F, "SELECT LESSON GROUP", 1, vamp_style::muted, 360.0F); + if (type == nullptr) { + draw_text(context, bounds.x + 38.0F, bounds.y + 118.0F, "NO LESSON GROUPS FOUND", 3, vamp_style::retrying, 520.0F); + return; + } + + auto list_y = bounds.y + 112.0F; + auto row_height = std::float32_t{54.0F}; + auto row_width = bounds.width - 72.0F; + auto total_rows = type->lesson_groups.size() + 1U; + auto max_rows = std::min(total_rows, 7U); + auto first = first_visible_row(state.selected_practice_lesson_index, total_rows, max_rows); + for (auto row = std::size_t{}; row < max_rows; ++row) { + auto index = first + row; + if (index == 0U) { + draw_row(context, {.x = bounds.x + 36.0F, .y = list_y + static_cast(row) * row_height, .width = row_width, .height = row_height}, "BACK", "", state.selected_practice_lesson_index == 0U); + continue; + } + auto const& lesson = type->lesson_groups[index - 1U]; + draw_row(context, {.x = bounds.x + 36.0F, .y = list_y + static_cast(row) * row_height, .width = row_width, .height = row_height}, lesson.title, std::to_string(lesson.exercises.size()) + " EXERCISES", index == state.selected_practice_lesson_index); + } +} + +auto draw_practice_exercise_menu(luma::draw_context& context, luma::rect bounds, vamp_zero::app_state const& state) -> void { + auto const* lesson = selected_practice_lesson(state); + draw_text(context, bounds.x + 36.0F, bounds.y + 28.0F, lesson == nullptr ? std::string{"EXERCISES"} : lesson->title, 4, vamp_style::ink, bounds.width - 72.0F); + draw_text(context, bounds.x + 38.0F, bounds.y + 66.0F, "SELECT EXERCISE", 1, vamp_style::muted, 320.0F); + if (lesson == nullptr) { + draw_text(context, bounds.x + 38.0F, bounds.y + 118.0F, "NO EXERCISES FOUND", 3, vamp_style::retrying, 440.0F); + return; + } + + auto list_y = bounds.y + 112.0F; + auto row_height = std::float32_t{54.0F}; + auto row_width = bounds.width - 72.0F; + auto total_rows = lesson->exercises.size() + 1U; + auto max_rows = std::min(total_rows, 7U); + auto first = first_visible_row(state.selected_practice_exercise_index, total_rows, max_rows); + for (auto row = std::size_t{}; row < max_rows; ++row) { + auto index = first + row; + if (index == 0U) { + draw_row(context, {.x = bounds.x + 36.0F, .y = list_y + static_cast(row) * row_height, .width = row_width, .height = row_height}, "BACK", "", state.selected_practice_exercise_index == 0U); + continue; + } + auto const& exercise = lesson->exercises[index - 1U]; + auto secondary = supports_key_selection(exercise) ? std::string{"KEY SELECT"} : "KEY " + effective_practice_key(state, exercise); + draw_row(context, {.x = bounds.x + 36.0F, .y = list_y + static_cast(row) * row_height, .width = row_width, .height = row_height}, exercise.title, secondary, index == state.selected_practice_exercise_index); + } +} + +auto draw_practice_key_menu(luma::draw_context& context, luma::rect bounds, vamp_zero::app_state const& state) -> void { + auto const* exercise = selected_practice_exercise(state); + draw_text(context, bounds.x + 36.0F, bounds.y + 28.0F, exercise == nullptr ? std::string{"KEY"} : exercise->title, 4, vamp_style::ink, bounds.width - 72.0F); + draw_text(context, bounds.x + 38.0F, bounds.y + 66.0F, "SELECT PRACTICE KEY", 1, vamp_style::muted, 360.0F); + + auto list_y = bounds.y + 112.0F; + auto row_height = std::float32_t{54.0F}; + auto row_width = bounds.width - 72.0F; + auto total_rows = (exercise == nullptr ? 0U : exercise->variants.size()) + 1U; + auto max_rows = std::min(total_rows, 7U); + auto first = first_visible_row(state.selected_practice_key_index, total_rows, max_rows); + for (auto row = std::size_t{}; row < max_rows; ++row) { + auto index = first + row; + if (index == 0U) { + draw_row(context, {.x = bounds.x + 36.0F, .y = list_y + static_cast(row) * row_height, .width = row_width, .height = row_height}, "BACK", "", state.selected_practice_key_index == 0U); + continue; + } + auto key = exercise == nullptr ? std::string{"C"} : exercise->variants[index - 1U].key_signature; + auto source = exercise == nullptr || exercise->key_signature.empty() ? std::string{"SOURCE C"} : "SOURCE " + exercise->key_signature; + draw_row(context, {.x = bounds.x + 36.0F, .y = list_y + static_cast(row) * row_height, .width = row_width, .height = row_height}, key, source, index == state.selected_practice_key_index); + } +} + +auto draw_score(luma::draw_context& context, luma::rect bounds, vamp_zero::app_state const& state) -> void { + auto source_json = std::string{}; + auto source_path = std::string{}; + if (state.mode == vamp_zero::app_mode::PERFORMANCE_SCORE) { + auto const* part = active_part(state); + if (part == nullptr) { + draw_performance_song_menu(context, bounds, state); + return; + } + source_json = part->source_json; + source_path = part->source_path; + } else { + auto const* exercise = active_practice(state); + if (exercise == nullptr) { + draw_practice_type_menu(context, bounds, state); + return; + } + auto const* variant = selected_practice_variant(state, *exercise); + if (variant == nullptr) { + draw_practice_key_menu(context, bounds, state); + return; + } + source_json = variant->source_json; + source_path = variant->source_path; + } + + auto parsed = vamp_zero::parse_score_document(source_json, source_path); + if (!parsed) { + draw_text(context, bounds.x + 36.0F, bounds.y + 38.0F, "SCORE ERROR", 4, vamp_style::danger, 360.0F); + draw_text(context, bounds.x + 38.0F, bounds.y + 86.0F, parsed.error().describe(), 1, vamp_style::muted, bounds.width - 72.0F); + return; + } + if (state.mode == vamp_zero::app_mode::PRACTICE_SCORE) { + auto const* exercise = active_practice(state); + if (exercise != nullptr) { + parsed->part = "Key: " + effective_practice_key(state, *exercise); + } + } + auto paper_bounds = luma::rect{ + .x = bounds.x + 24.0F, + .y = bounds.y + 18.0F, + .width = bounds.width - 48.0F, + .height = bounds.height - 36.0F, + }; + vamp_zero::draw_score_page(context, paper_bounds, *parsed, state.page_index); +} + +class vamp_root_control final : public luma::control { +public: + explicit vamp_root_control(vamp_zero::ui_state state) : state_{std::move(state)} {} + auto measure(luma::draw_context&, luma::theme const&, luma::constraints limits) -> luma::size override { + return luma::clamp({.width = 1024.0F, .height = 600.0F}, limits); + } + auto draw(luma::draw_context& context, luma::theme const&) const -> void override { + auto area = bounds(); + context.fill_rect(area, vamp_zero::to_luma(vamp_style::background)); + draw_header(context, area, state_); + auto content = luma::rect{ + .x = area.x, + .y = area.y + 80.0F, + .width = area.width, + .height = std::max(0.0F, area.height - 80.0F), + }; + if (state_.app.mode == vamp_zero::app_mode::MAIN_MENU) { + draw_main_menu(context, content, state_.app); + } else if (state_.app.mode == vamp_zero::app_mode::PERFORMANCE_SONG_MENU) { + draw_performance_song_menu(context, content, state_.app); + } else if (state_.app.mode == vamp_zero::app_mode::PERFORMANCE_PART_MENU) { + draw_performance_part_menu(context, content, state_.app); + } else if (state_.app.mode == vamp_zero::app_mode::PRACTICE_TYPE_MENU) { + draw_practice_type_menu(context, content, state_.app); + } else if (state_.app.mode == vamp_zero::app_mode::PRACTICE_LESSON_MENU) { + draw_practice_lesson_menu(context, content, state_.app); + } else if (state_.app.mode == vamp_zero::app_mode::PRACTICE_EXERCISE_MENU) { + draw_practice_exercise_menu(context, content, state_.app); + } else if (state_.app.mode == vamp_zero::app_mode::PRACTICE_KEY_MENU) { + draw_practice_key_menu(context, content, state_.app); + } else if (state_.app.mode == vamp_zero::app_mode::PERFORMANCE_SCORE || state_.app.mode == vamp_zero::app_mode::PRACTICE_SCORE) { + draw_score(context, content, state_.app); + } else { + draw_main_menu(context, content, state_.app); + } + } +private: + vamp_zero::ui_state state_{}; +}; + +} + +vamp_zero::zero_ui::zero_ui(boost::asio::any_io_executor executor, luma::application_config config) : executor_{std::move(executor)}, application_{std::move(config)} {} + +auto vamp_zero::zero_ui::run() -> std::expected { + auto state = snapshot(); + auto root = make_root(state); + if (!root) { + return std::unexpected(root.error()); + } + if (auto status = application_.set_root(std::move(*root)); !status) { + return status; + } + return application_.run(); +} + +auto vamp_zero::zero_ui::stop() -> void { + application_.request_stop(); +} + +auto vamp_zero::zero_ui::publish(vamp_zero::ui_state state) -> std::expected { + { + auto lock = std::scoped_lock{mutex_}; + state_ = std::move(state); + } + return application_.dispatch([this] -> std::expected { + auto root = make_root(snapshot()); + if (!root) { + return std::unexpected(root.error()); + } + return application_.set_root(std::move(*root)); + }); +} + +auto vamp_zero::zero_ui::snapshot() const -> vamp_zero::ui_state { + auto lock = std::scoped_lock{mutex_}; + return state_; +} + +auto vamp_zero::zero_ui::make_root(vamp_zero::ui_state const& state) -> std::expected, modulus::error> { + return std::make_unique(state); +} + +auto vamp_zero::make_ui_state(vamp_zero::config const& config, vamp_zero::app_state app) -> vamp_zero::ui_state { + return vamp_zero::ui_state{ + .app = std::move(app), + .ap_ssid = config.control.ap_ssid, + .zero_ip = config.control.zero_ip, + .port = bind_port(config), + }; +} diff --git a/tools/generate_pico_font.py b/tools/generate_pico_font.py new file mode 100644 index 0000000..f70d072 --- /dev/null +++ b/tools/generate_pico_font.py @@ -0,0 +1,201 @@ +#!/usr/bin/env python3 + +import argparse +import difflib +from pathlib import Path + +from PIL import Image, ImageDraw, ImageFont + + +REPO = Path(__file__).resolve().parents[1] +FONT_PATH = REPO / "package/assets/fonts/petaluma/PetalumaScript.otf" +OUTPUT_PATH = REPO / "src/vamp_style/font.cpp" +FONT_SIZE = 32 +FONT_HEIGHT = 36 +FONT_MAX_WIDTH = 28 +FIRST_CODEPOINT = 32 +LAST_CODEPOINT = 126 + + +def cpp_char_literal(value: str) -> str: + if value == "'": + return "'\\''" + if value == "\\": + return "'\\\\'" + return f"'{value}'" + + +def render_glyph(font: ImageFont.FreeTypeFont, value: str, y_offset: int) -> tuple[list[int], int, int]: + image = Image.new("L", (FONT_MAX_WIDTH, FONT_HEIGHT), 0) + draw = ImageDraw.Draw(image) + bbox = font.getbbox(value) + x = max(0, -bbox[0]) + draw.text((x, y_offset), value, font=font, fill=255) + + pixels = [min(15, max(0, round(pixel / 17))) for pixel in image.get_flattened_data()] + visible = image.getbbox() + width = 0 if visible is None else min(FONT_MAX_WIDTH, visible[2]) + advance = min(255, max(0, round(font.getlength(value)))) + return pixels, width, advance + + +def render_alpha_rows(values: list[int]) -> list[str]: + lines = [] + for row in range(FONT_HEIGHT): + start = row * FONT_MAX_WIDTH + row_values = values[start : start + FONT_MAX_WIDTH] + lines.append(" " + ", ".join(f"0x{value:02x}" for value in row_values) + ",") + return lines + + +def pair_adjustments(font: ImageFont.FreeTypeFont) -> list[tuple[int, int]]: + chars = [chr(value) for value in range(FIRST_CODEPOINT, LAST_CODEPOINT + 1)] + adjustments = [] + for left in chars: + left_width = font.getlength(left) + for right in chars: + adjustment = round(font.getlength(left + right) - left_width - font.getlength(right)) + if adjustment == 0: + continue + key = (ord(left) << 8) | ord(right) + adjustments.append((key, int(adjustment))) + return sorted(adjustments) + + +def generate() -> str: + font = ImageFont.truetype(str(FONT_PATH), FONT_SIZE) + min_top = min(font.getbbox(chr(value))[1] for value in range(FIRST_CODEPOINT, LAST_CODEPOINT + 1)) + y_offset = max(0, -min_top) + adjustments = pair_adjustments(font) + + lines = [ + "#include ", + "", + "#include ", + "#include ", + "#include ", + "#include ", + "", + "namespace {", + "", + "struct pair_adjustment {", + " std::uint16_t key{};", + " std::int8_t adjustment{};", + "};", + "", + f"constexpr auto pair_adjustments = std::array{{{{", + ] + for key, adjustment in adjustments: + lines.append(f" {{0x{key:04x}, {adjustment}}},") + lines.extend( + [ + "}};", + "", + "auto pair_key(std::char_t left, std::char_t right) -> std::uint16_t {", + " auto l = static_cast(static_cast(left));", + " auto r = static_cast(static_cast(right));", + " return static_cast((l << 8U) | r);", + "}", + "", + "auto empty_glyph() -> vamp_style::font_glyph {", + " return {", + " .alpha = {},", + " .width = 0,", + " .advance = 8,", + " };", + "}", + "", + "}", + "", + "auto vamp_style::ui_font_glyph(std::char_t value) -> vamp_style::font_glyph {", + " switch (value) {", + ] + ) + + for codepoint in range(FIRST_CODEPOINT, LAST_CODEPOINT + 1): + value = chr(codepoint) + alpha, width, advance = render_glyph(font, value, y_offset) + lines.extend( + [ + f" case {cpp_char_literal(value)}:", + " return {", + " .alpha = {", + ] + ) + lines.extend(render_alpha_rows(alpha)) + lines.extend( + [ + " },", + f" .width = {width},", + f" .advance = {advance},", + " };", + ] + ) + + lines.extend( + [ + " default:", + " return empty_glyph();", + " }", + "}", + "", + "auto vamp_style::ui_font_pair_adjust(std::char_t left, std::char_t right) -> std::int32_t {", + " auto key = pair_key(left, right);", + " auto found = std::lower_bound(pair_adjustments.begin(), pair_adjustments.end(), key, [](pair_adjustment const& item, std::uint16_t value) {", + " return item.key < value;", + " });", + " if (found == pair_adjustments.end() || found->key != key) {", + " return 0;", + " }", + " return found->adjustment;", + "}", + "", + "auto vamp_style::ui_text_width(std::string_view text, std::int32_t scale) -> std::int32_t {", + " if (text.empty() || scale <= 0) {", + " return 0;", + " }", + " auto width = std::int32_t{};", + " auto previous = std::char_t{};", + " for (auto ch : text) {", + " if (previous != std::char_t{}) {", + " width += vamp_style::ui_font_pair_adjust(previous, ch) * scale;", + " }", + " width += static_cast(vamp_style::ui_font_glyph(ch).advance) * scale;", + " previous = ch;", + " }", + " return std::max(std::int32_t{}, width);", + "}", + "", + ] + ) + return "\n".join(lines) + + +def main() -> int: + parser = argparse.ArgumentParser() + parser.add_argument("--check", action="store_true") + args = parser.parse_args() + + generated = generate() + if args.check: + current = OUTPUT_PATH.read_text() + if current == generated: + print("pico font is up to date") + return 0 + diff = difflib.unified_diff( + current.splitlines(), + generated.splitlines(), + fromfile=str(OUTPUT_PATH), + tofile=f"{OUTPUT_PATH} (generated)", + lineterm="", + ) + print("\n".join(diff)) + return 1 + + OUTPUT_PATH.write_text(generated) + print(f"generated {OUTPUT_PATH}") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main())