diff --git a/third-party/TeensyVariablePlayback.O/CMakeLists.txt b/third-party/TeensyVariablePlayback.O/CMakeLists.txt
deleted file mode 100644
index 575c3f6..0000000
--- a/third-party/TeensyVariablePlayback.O/CMakeLists.txt
+++ /dev/null
@@ -1,31 +0,0 @@
-cmake_minimum_required(VERSION 3.5)
-project(teensy-variable-playback)
-if (NOT DEFINED TEENSY_VERSION)
- set(BUILD_FOR_LINUX 1)
- add_definitions(-DBUILD_FOR_LINUX)
- set(CMAKE_BUILD_TYPE Debug)
-endif()
-
-if (NOT DEFINED BUILD_FOR_LINUX)
- import_arduino_library(cores ${COREPATH} avr debug util)
- import_arduino_library(SPI ${DEPSPATH}/SPI)
- import_arduino_library(SdFat ${DEPSPATH}/SdFat/src common DigitalIO ExFatLib FatLib FsLib iostream SdCard SpiDriver)
- import_arduino_library(SD ${DEPSPATH}/SD/src)
- import_arduino_library(SerialFlash ${DEPSPATH}/SerialFlash util)
- import_arduino_library(Wire ${DEPSPATH}/Wire utility)
- import_arduino_library(arm_math ${DEPSPATH}/arm_math/src)
- import_arduino_library(Audio ${DEPSPATH}/Audio utility)
- import_arduino_library(LittleFS ${DEPSPATH}/LittleFS/src littlefs)
- add_subdirectory(src)
- add_subdirectory(examples)
-else()
- add_subdirectory(src)
- add_subdirectory(test)
- #add_subdirectory(extras/soundio/playqueue)
- add_subdirectory(extras/soundio/save_raw)
- add_subdirectory(extras/soundio/save_raw_sd)
- add_subdirectory(extras/soundio/save_wav)
- add_subdirectory(extras/soundio/sd_play_all)
- add_subdirectory(extras/linux/array)
- add_subdirectory(extras/linux/sd_raw)
-endif()
\ No newline at end of file
diff --git a/third-party/TeensyVariablePlayback.O/LICENSE b/third-party/TeensyVariablePlayback.O/LICENSE
deleted file mode 100644
index 93ec7f5..0000000
--- a/third-party/TeensyVariablePlayback.O/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2020 Nic Newdigate
-
-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/third-party/TeensyVariablePlayback.O/README.md b/third-party/TeensyVariablePlayback.O/README.md
deleted file mode 100644
index 5885996..0000000
--- a/third-party/TeensyVariablePlayback.O/README.md
+++ /dev/null
@@ -1,291 +0,0 @@
-# variable rate playback for teensy audio library
-[![Teensy 4.1](https://img.shields.io/badge/project-4.1-brightgreen.svg?label=Teensy&colorA=555555&colorB=ff8aff&logo=)](https://www.pjrc.com/store/teensy41.html)
-[![lib-teensy41](https://github.com/newdigate/teensy-variable-playback/actions/workflows/teensy41_lib.yml/badge.svg)](https://github.com/newdigate/teensy-variable-playback/actions/workflows/teensy41_lib.yml)
-[![Ubuntu-x64](https://github.com/newdigate/teensy-variable-playback/workflows/Ubuntu-x64/badge.svg)](https://github.com/newdigate/teensy-variable-playback/actions)
-[![MIT license](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
-[![CMake](https://img.shields.io/badge/project-CMake-brightgreen.svg?label=built%20with&colorA=555555&colorB=8a8fff&logo=)](CMakelists.txt)
-[![made-for-VSCode](https://img.shields.io/badge/Made%20for-VSCode-1f425f.svg)](https://code.visualstudio.com/)
-[![Contributors](https://img.shields.io/github/contributors/newdigate/teensy-variable-playback)](https://github.com/newdigate/teensy-variable-playback/graphs/contributors)
-[![Commits](https://img.shields.io/github/commit-activity/m/newdigate/teensy-variable-playback)](https://github.com/newdigate/teensy-variable-playback/graphs/contributors)
-![s](https://img.shields.io/badge/dynamic/json?color=%23e85b46&label=Patreon&query=data.attributes.patron_count&suffix=%20patrons&url=https%3A%2F%2Fwww.patreon.com%2Fapi%2Fcampaigns%2F4105381)
-
-play 16-bit PCM raw or wav audio samples at variable playback rates on teensy
-* **Note** : this library only works with signed 16-bit integer samples. Floating point samples will not play.
-
-* for best performance, use SDXC UHS 30MB/sec Application Performance Class 2 (A2) class micro sd-card.
- * [sd classes on wikipedia](https://en.wikipedia.org/wiki/SD_card#cite_ref-93)
-
-## updates
-* 26/02/2022: v1.0.16:
- * add option for starting sample at begining or at loop start
- ``` c
- typedef enum play_start {
- play_start_sample,
- play_start_loop,
- };
-
- wave.setPlayStart(play_start::play_start_loop);
- ```
-* 26/02/2022: v1.0.15:
- * added support for dual playback head for seemless looping
- * enable dual playback using linear crossfading
- * set crossfade duration in number of samples
- ``` c
- AudioPlaySdResmp wave;
- wave.setUseDualPlaybackHead(true);
- wave.setCrossfadeDurationInSamples(1000);
- wave.playRaw((int16_t*)kick_raw, kick_raw_len / 2, numberOfChannels);
- wave.setLoopStart(0);
- wave.setLoopFinish(3000);
- ```
-* 16/06/2022: v1.0.14:
- * refactored code to generic classes
- * improve memory leaks
- * remove calls to StartUsingSPI(), StopUsingSPI(), __disable_irq(), __enable_irq()
- * intergated with SerialFlash and LittleFS
-* 25/09/2021: v1.0.13: positionMillis() implemented for AudioPlaySdResmp
-* 25/08/2021: v1.0.12: Skip over RIFF tags in .wav header
-* 12/08/2021: v1.0.11: When playing a mono sample, transmit on both channels (credit to @atoktoto)
-* 28/07/2021: v1.0.10: Fix issues when starting playback in reverse
-* 23/07/2021: v1.0.9: Fix issue which crashes teensy when playing multiple files from SD card using array of filenames
-* 21/07/2021: v1.0.8: **Breaking changes**
- * ```AudioPlaySdRawResmp``` and ```AudioPlaySdWaveResmp``` merged into a single class ```AudioPlaySdResmp```
- * ```play(...)``` method changed to ```playRaw(...)``` and ```playWav(...)```, specify number of channels in parameters of playRaw
-* 13/07/2021: v1.0.7: added multi-channel resampling
-* 07/07/2021: v1.0.6: changed to using optimised floating point interpolation, sounds much better
-* 30/06/2021: v1.0.5: Optimised quadratic interpolation to use fixed pipeline of 4 samples and use integers instead of floating point
-* 25/06/2021: Quadratic interpolation is now working, but is disabled by default
-
-## contents
-* [code structure](#code-structure)
-* [requirements](#requirements)
-* [usage](#usage)
-* [example usage](#example-usage)
-
-## code structure
-| folder | target | description |
-|--------|--------------------|------------------------------------------------------------------------------------------------------------------------|
-| ```examples``` | ```teensy``` | basic example how to use |
-| ```extras``` | ```linux``` | some utils to make life easier |
-| ```src``` | ```teensy``` / ```linux``` | extends teensy audio library
* adds ```AudioPlaySdResmp```
* adds ```AudioPlayArrayResmp``` |
-| ```test``` | ```linux``` | unit tests that run on linux |
-
-## requirements
-
- teensy 3.x & 4.x boards
-
-
-
- with Teensyduino
-
-```Teensyduino```[^](https://www.pjrc.com/teensy/teensyduino.html)
-* This library is built on top of teensy audio library, intended for use with Teensy 3.x and Teensy 4.x boards.
-* Install using arduino/teensyduino library manager gui - search ```TeensyVariablePlayback```
- * ![install using arduino library manager](docs/InstallArduino.gif)
-
-
-
-
- without Teensyduino (for development)
-
-```cmake``` ```gcc-arm-none-eabi```[^](https://developer.arm.com/-/media/Files/downloads/gnu-rm/9-2019q4/RC2.1) ```teensy-cmake-macros```[^](https://github.com/newdigate/teensy-cmake-macros) ```cores```[^](https://github.com/PaulStoffregen/cores) ```Audio```[^](https://github.com/PaulStoffregen/Audio) ```SD```[^](https://github.com/PaulStoffregen/SD/tree/Juse_Use_SdFat) ```Wire```[^](https://github.com/PaulStoffregen/Wire) ```SPI```[^](https://github.com/PaulStoffregen/SPI) ```SerialFlash```[^](https://github.com/PaulStoffregen/SerialFlash) ```arm_math```[^](https://github.com/PaulStoffregen/arm_math) ```SDFat```[^](https://github.com/greiman/SdFat)
-* using [teensy-cmake-macros](https://github.com/newdigate/teensy-cmake-macros), this library can be compiled for teensy 3 and 4 boards without needing Teensyduino. This is mainly used to build the library when a commit is pushed, to verify there are no compile errors.
-
-
-
- dependencies (click to expand image)
-
-![dependencies](docs/dependencies.png)
-
-
- graphvis (click to expand)
-
-```dot
-graph G {
- graph[rankdir="LR"]
- "teensy variable playback" -- "teensy-cmake-macros" -- "cmake" [label="dev"]
- "teensy-cmake-macros" -- "arm-none-eabi-gcc" [label="dev"]
- "PaulStoffregen/Audio.git" -- "PaulStoffregen/cores.git"
- "teensy variable playback" -- "PaulStoffregen/Audio.git"
- "PaulStoffregen/Audio.git" -- "PaulStoffregen/SD.git@Juse_Use_SdFat"
- "PaulStoffregen/SD.git@Juse_Use_SdFat" -- "PaulStoffregen/SPI.git"
- "PaulStoffregen/SD.git@Juse_Use_SdFat" -- "greiman/SdFat.git"
- "PaulStoffregen/Audio.git" -- "PaulStoffregen/Wire.git"
- "PaulStoffregen/Audio.git" -- "PaulStoffregen/SerialFlash.git"
- "PaulStoffregen/Audio.git" -- "PaulStoffregen/arm_math.git"
-}
-```
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- linux
- You can run and test this code on your linux computer. You can write a teensy sketch, and with a few modifications, you can redirect the audio input and output to and from your soundcard. [Soundio](https://github.com/newdigate/teensy-audio-x86-stubs/tree/main/extras/soundio) bindings are optional, you can also run sketches and tests with no audio input or output.
- You will need to install the following libraries.
-
-```cmake``` ```gcc or llvm``` ```teensy-x86-stubs```[^](https://github.com/newdigate/teensy-x86-stubs) ```teensy-audio-x86-stubs```[^](https://github.com/newdigate/teensy-audio-x86-stubs) ```teensy-x86-sd-stubs```[^](https://github.com/newdigate/teensy-x86-sd-stubs) ```boost-test```
-
- * install boost unit-test library:
- * linux: ```sudo apt-get install -yq libboost-test-dev```
- * macos: ```brew install boost```
-
-
-
-
-## usage
-
- Using with Teensyduino
-
-* To install the library, use the library manager in Teensyduino (search for ```TeensyVariablePlayback```). Teensyduino should already have all the necessary dependencies pre-installed.
-
-* Have a look at the examples in the file menu to get started...
-
-
-
- Developing with vscode
-
- * [Visual Studio Code](https://code.visualstudio.com)
-
-### clone repo
-``` sh
-> git clone https://github.com/newdigate/teensy-variable-playback.git
-> cd teensy-variable-playback
-```
-
-## teensy build
-You don't need to download or install Teensyduino or Arduino to build the library or examples. Just clone the cores library and any dependencies to a common folder, denoted by ```DEPSPATH``` (in this case ```/home/nic/teensy_libraries```).
-
- clone dependencies (click to expand)
-
-``` sh
- > cd /home/nic/teensy_libraries
- > git clone https://github.com/PaulStoffregen/cores.git
- > git clone https://github.com/PaulStoffregen/Audio.git
- > git clone -b Juse_Use_SdFat https://github.com/PaulStoffregen/SD.git
- > git clone https://github.com/PaulStoffregen/Wire.git
- > git clone https://github.com/PaulStoffregen/SPI.git
- > git clone https://github.com/PaulStoffregen/SerialFlash.git
- > git clone https://github.com/PaulStoffregen/arm_math.git
- > git clone https://github.com/greiman/SdFat.git
-```
-
-
-
-
- update COMPILERPATH and DEPSPATH in cmake/toolchains/teensy41.cmake
-
-``` cmake
-set(COMPILERPATH "/Applications/Arm/bin/")
-set(DEPSPATH "/home/nic/teensy_libraries")
-set(COREPATH "${DEPSPATH}/cores/teensy4/")
-```
-
-
-
-
- build hex file
-
- * If you run the commands below from the root repository directory, it will build the teensy-variable-playback library and all the examples.
- * If you run them from a sub-directory, it will build everything under the sub-directory. (You might need to adjust relative path in ```-DCMAKE_TOOLCHAIN_FILE:FILEPATH``` below)
-``` sh
-> cd /home/nic/teensy-variable-playback
-> mkdir cmake-build-debug
-> cd cmake-build-debug
-> cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_TOOLCHAIN_FILE:FILEPATH="../cmake/toolchains/teensy41.cmake" ..
-> make
-```
-
-
-
-## linux build
-### build tests on linux
-``` sh
-> ./build-linux.sh
-```
-
-### build tests on win
-``` sh
-> mkdir cmake-build-debug
-> cd cmake-build-debug
-> cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_TOOLCHAIN_FILE:FILEPATH="../cmake/toolchains/linux.cmake" ..
-> make
-```
-
-### run tests
-``` sh
-> cmake-build-debug/test/test_suite1
-```
-
-## visual studio code
- * download vs code
- * required extensions
- * ms-vscode.cpptools
- * optional extensions
- * ms-vscode.cmake-tools
- * hbenl.vscode-test-explorer
- * ms-vscode.test-adapter-converter
- * nicnewdigate.boost-test-adapter-debug
- * open root folder of repository in visual studio code
- * open terminal in visual studio code build, build as above
- * (add breakpoint)
- * launch
-
-
-
-## example usage
-
-
- example (click to expand)
-
-```c++
-#include
-#include
-#include
-
-// GUItool: begin automatically generated code
-AudioPlayArrayResmp rraw_a1; //xy=321,513
-AudioOutputI2S i2s1; //xy=675,518
-AudioConnection patchCord1(rraw_a1, 0, i2s1, 0);
-AudioConnection patchCord2(rraw_a1, 0, i2s1, 1);
-AudioControlSGTL5000 sgtl5000_1; //xy=521,588
-// GUItool: end automatically generated code
-
-unsigned char kick_raw[] = {
- // ... little-endian 16-bit mono 44100 raw data, generated using linux cmd 'xxd -i kick.raw', raw file saved in Audacity
- 0x99, 0x02, 0xd7, 0x02, 0xfa, 0x02, 0x5f, 0x03, 0xc1, 0x03, 0x2a, 0x04,
- 0xad, 0x04, 0xa5, 0x05, 0x76, 0x06, 0x2f, 0x07, 0x9e, 0x07, 0xe2, 0x07,
- 0x43, 0x08, 0x92, 0x08, 0xb2, 0x08, 0xe8, 0x08, 0x16, 0x09, 0xda, 0x08,
- // ... continued ...
-};
-unsigned int kick_raw_len = 6350; // length in bytes == numsamples * 2
-
-void setup() {
- AudioMemory(20);
- sgtl5000_1.enable();
- sgtl5000_1.volume(0.5f, 0.5f);
- rraw_a1.setPlaybackRate(0.5);
- rraw_a1.enableInterpolation(true);
-}
-
-void loop() {
- if (!rraw_a1.isPlaying()) {
- delay(1000);
- rraw_a1.playRaw((int16_t *)kick_raw, kick_raw_len/2, 1); //note: we give number of samples - NOT number of bytes!!!! 1 is for mono (2 for stereo, etc)
- }
-}
-```
-
-
-
-# credits
-* convert boost test report to junit xml format: [Stuart Lange](https://stackoverflow.com/a/2975928/4634140)
diff --git a/third-party/TeensyVariablePlayback.O/build-linux.sh b/third-party/TeensyVariablePlayback.O/build-linux.sh
deleted file mode 100755
index 7e47c58..0000000
--- a/third-party/TeensyVariablePlayback.O/build-linux.sh
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/bash
-rm -rf cmake-build-debug
-mkdir cmake-build-debug
-cd cmake-build-debug
-cmake -DCMAKE_BUILD_TYPE=Debug ..
-make
\ No newline at end of file
diff --git a/third-party/TeensyVariablePlayback.O/build-t41.sh b/third-party/TeensyVariablePlayback.O/build-t41.sh
deleted file mode 100755
index 4670068..0000000
--- a/third-party/TeensyVariablePlayback.O/build-t41.sh
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/bash
-rm -rf cmake-build-debug
-mkdir cmake-build-debug
-cd cmake-build-debug
-cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_TOOLCHAIN_FILE:FILEPATH="cmake/toolchains/teensy41.cmake" ..
-make
\ No newline at end of file
diff --git a/third-party/TeensyVariablePlayback.O/cmake/install_arduino_library.cmake b/third-party/TeensyVariablePlayback.O/cmake/install_arduino_library.cmake
deleted file mode 100644
index eee38a5..0000000
--- a/third-party/TeensyVariablePlayback.O/cmake/install_arduino_library.cmake
+++ /dev/null
@@ -1,31 +0,0 @@
-message("installing ardiuno library")
-set(ARDUINO_LIBRARY_TARGET "~/Documents/Arduino/Libraries/teensy_variable_playback")
-
-get_filename_component(DIR_ONE_ABOVE ../../ ABSOLUTE)
-message(STATUS ${DIR_ONE_ABOVE})
-set(ARDUINO_LIBRARY_SOURCE ${DIR_ONE_ABOVE}/src/)
-set(INSTALL_ARDUINO_CMD "ln -s ${ARDUINO_LIBRARY_SOURCE} ${ARDUINO_LIBRARY_TARGET}")
-set(UNINSTALL_ARDUINO_CMD "unlink ${ARDUINO_LIBRARY_TARGET}")
-
-message(${UNINSTALL_ARDUINO_CMD})
-exec_program(
- ${UNINSTALL_ARDUINO_CMD}
- OUTPUT_VARIABLE stdout
- RETURN_VALUE result
-)
-message(STATUS ${stdout})
-message(STATUS ${result})
-
-message(${INSTALL_ARDUINO_CMD})
-exec_program(
- ${INSTALL_ARDUINO_CMD}
- OUTPUT_VARIABLE stdout
- RETURN_VALUE result
-)
-message(STATUS ${stdout})
-message(STATUS ${result})
-if (${result} STREQUAL 0)
- message("Success...")
-else()
- message(FATAL_ERROR "Unable to create symbolic link in ${ARDUINO_LIBRARY_TARGET}")
-endif()
\ No newline at end of file
diff --git a/third-party/TeensyVariablePlayback.O/cmake/teensy_variable_playback.cmake.in b/third-party/TeensyVariablePlayback.O/cmake/teensy_variable_playback.cmake.in
deleted file mode 100644
index 52c03a3..0000000
--- a/third-party/TeensyVariablePlayback.O/cmake/teensy_variable_playback.cmake.in
+++ /dev/null
@@ -1,9 +0,0 @@
-set(teensy_variable_playback_VERSION "@teensy_variable_playback_VERSION@")
-set(teensy_variable_playback_LIBS teensy_variable_playback -L@LIB_INSTALL_DIR@)
-
-@PACKAGE_INIT@
-
-set_and_check(teensy_variable_playback_INCLUDE_DIR "@INCLUDE_INSTALL_DIR@")
-set_and_check(teensy_variable_playback_DIR "@LIB_INSTALL_DIR@")
-
-check_required_components(teensy_variable_playback)
\ No newline at end of file
diff --git a/third-party/TeensyVariablePlayback.O/cmake/toolchains/teensy41.cmake b/third-party/TeensyVariablePlayback.O/cmake/toolchains/teensy41.cmake
deleted file mode 100644
index 12ba556..0000000
--- a/third-party/TeensyVariablePlayback.O/cmake/toolchains/teensy41.cmake
+++ /dev/null
@@ -1,11 +0,0 @@
-set(TEENSY_VERSION 41 CACHE STRING "Set to the Teensy version corresponding to your board (30 or 31 allowed)" FORCE)
-set(CPU_CORE_SPEED 600000000 CACHE STRING "Set to 24000000, 48000000, 72000000 or 96000000 to set CPU core speed" FORCE) # Derived variables
-set(CMAKE_EXE_LINKER_FLAGS "--specs=nosys.specs" CACHE INTERNAL "")
-#teensy compiler options
-set(COMPILERPATH "/opt/gcc-arm-none-eabi-9-2019-q4-major/bin/")
-#set(COMPILERPATH "/Applications/ARM/bin/")
-set(DEPSPATH "/home/runner/work/teensy-variable-playback/teensy-variable-playback/deps")
-#set(DEPSPATH "/Users/nicholasnewdigate/Development/github/newdigate/temp_dep")
-set(COREPATH "${DEPSPATH}/cores/teensy4/")
-
-find_package(teensy_cmake_macros)
diff --git a/third-party/TeensyVariablePlayback.O/cmake/uninstall.cmake b/third-party/TeensyVariablePlayback.O/cmake/uninstall.cmake
deleted file mode 100644
index a303d93..0000000
--- a/third-party/TeensyVariablePlayback.O/cmake/uninstall.cmake
+++ /dev/null
@@ -1,24 +0,0 @@
-set(MANIFEST "${CMAKE_CURRENT_BINARY_DIR}/install_manifest.txt")
-
-if(NOT EXISTS ${MANIFEST})
- message(FATAL_ERROR "Cannot find install manifest: '${MANIFEST}'")
-endif()
-
-file(STRINGS ${MANIFEST} files)
-foreach(file ${files})
- if(EXISTS ${file})
- message(STATUS "Removing file: '${file}'")
-
- exec_program(
- ${CMAKE_COMMAND} ARGS "-E remove ${file}"
- OUTPUT_VARIABLE stdout
- RETURN_VALUE result
- )
-
- if(NOT "${result}" STREQUAL 0)
- message(FATAL_ERROR "Failed to remove file: '${file}'.")
- endif()
- else()
- MESSAGE(STATUS "File '${file}' does not exist.")
- endif()
-endforeach(file)
\ No newline at end of file
diff --git a/third-party/TeensyVariablePlayback.O/docs/InstallArduino.gif b/third-party/TeensyVariablePlayback.O/docs/InstallArduino.gif
deleted file mode 100644
index 407543c..0000000
Binary files a/third-party/TeensyVariablePlayback.O/docs/InstallArduino.gif and /dev/null differ
diff --git a/third-party/TeensyVariablePlayback.O/docs/dependencies.png b/third-party/TeensyVariablePlayback.O/docs/dependencies.png
deleted file mode 100644
index 94e3cd4..0000000
Binary files a/third-party/TeensyVariablePlayback.O/docs/dependencies.png and /dev/null differ
diff --git a/third-party/TeensyVariablePlayback.O/examples/CMakeLists.txt b/third-party/TeensyVariablePlayback.O/examples/CMakeLists.txt
deleted file mode 100644
index 8c0d1bc..0000000
--- a/third-party/TeensyVariablePlayback.O/examples/CMakeLists.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-cmake_minimum_required(VERSION 3.5)
-add_subdirectory(array)
-add_subdirectory(LittleFS)
-add_subdirectory(sampleloader)
-add_subdirectory(sd_play_all)
-add_subdirectory(sd_raw)
-add_subdirectory(sd_wav)
-add_subdirectory(SerialFlash)
diff --git a/third-party/TeensyVariablePlayback.O/examples/LittleFS/CMakeLists.txt b/third-party/TeensyVariablePlayback.O/examples/LittleFS/CMakeLists.txt
deleted file mode 100644
index 9951c6b..0000000
--- a/third-party/TeensyVariablePlayback.O/examples/LittleFS/CMakeLists.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-cmake_minimum_required(VERSION 3.10)
-project(sd_raw)
-set(CMAKE_CXX_STANDARD 14)
-add_definitions(-DPROG_FLASH_SIZE=10000)
-teensy_include_directories(../../src)
-teensy_add_executable(littlefs_raw littlefs_raw.ino)
-teensy_target_link_libraries(littlefs_raw teensy_variable_playback SD SdFat Audio LittleFS SPI SerialFlash cores Wire arm_math)
diff --git a/third-party/TeensyVariablePlayback.O/examples/LittleFS/littlefs_raw.ino b/third-party/TeensyVariablePlayback.O/examples/LittleFS/littlefs_raw.ino
deleted file mode 100644
index 4da8c36..0000000
--- a/third-party/TeensyVariablePlayback.O/examples/LittleFS/littlefs_raw.ino
+++ /dev/null
@@ -1,95 +0,0 @@
-// Plays a RAW (16-bit signed) PCM audio file at slower or faster rate
-// this example requires an uSD-card inserted to teensy 3.6 with a file called DEMO.RAW
-#include
-#include
-#include
-#include
-
-LittleFS_Program myfs;
-#define PROG_FLASH_SIZE 1024 * 1024 * 1 // Specify size to use of onboard Teensy Program Flash chip
-
-// GUItool: begin automatically generated code
-AudioPlayLfsResmp playLfsRaw1(myfs); //xy=324,457
-AudioOutputI2S i2s2; //xy=840.8571472167969,445.5714416503906
-AudioConnection patchCord1(playLfsRaw1, 0, i2s2, 0);
-AudioConnection patchCord2(playLfsRaw1, 0, i2s2, 1);
-AudioControlSGTL5000 audioShield;
-// GUItool: end automatically generated code
-
-#define A14 10
-
-const char* _filename = "DEMO.RAW";
-const int analogInPin = A14;
-unsigned long lastSamplePlayed = 0;
-uint32_t diskSize;
-
-double getPlaybackRate(int16_t analog) { //analog: 0..1023
- return (analog - 512.0) / 512.0;
-}
-
-void setup() {
- analogReference(0);
- pinMode(analogInPin, INPUT_DISABLE); // i.e. Analog
-
- // see if the Flash is present and can be initialized:
- // lets check to see if the T4 is setup for security first
- #if ARDUINO_TEENSY40
- if ((IOMUXC_GPR_GPR11 & 0x100) == 0x100) {
- //if security is active max disk size is 960x1024
- if (PROG_FLASH_SIZE > 960 * 1024) {
- diskSize = 960 * 1024;
- Serial.printf("Security Enables defaulted to %u bytes\n", diskSize);
- } else {
- diskSize = PROG_FLASH_SIZE;
- Serial.printf("Security Not Enabled using %u bytes\n", diskSize);
- }
- }
- #else
- diskSize = PROG_FLASH_SIZE;
- #endif
-
- // checks that the LittFS program has started with the disk size specified
- if (!myfs.begin(diskSize)) {
- Serial.printf("Error starting %s\n", "PROGRAM FLASH DISK");
- while (1) {
- // Error, so don't do anything more - stay stuck here
- }
- }
- Serial.println("LittleFS initialized.");
-
- audioShield.enable();
- audioShield.volume(0.5);
-
- playLfsRaw1.enableInterpolation(true);
- int newsensorValue = analogRead(analogInPin);
- playLfsRaw1.setPlaybackRate(getPlaybackRate(newsensorValue));
-
- AudioMemory(24);
-}
-
-void loop() {
-
- int newsensorValue = analogRead(analogInPin);
- playLfsRaw1.setPlaybackRate(getPlaybackRate(newsensorValue));
-
- unsigned currentMillis = millis();
- if (currentMillis > lastSamplePlayed + 500) {
- if (!playLfsRaw1.isPlaying()) {
- playLfsRaw1.playRaw(_filename, 1);
- lastSamplePlayed = currentMillis;
-
- Serial.print("Memory: ");
- Serial.print(AudioMemoryUsage());
- Serial.print(",");
- Serial.print(AudioMemoryUsageMax());
- Serial.println();
- }
- }
- delay(10);
-}
-
-
-namespace std {
- void __throw_bad_function_call() {}
- void __throw_length_error(char const*) {}
-}
\ No newline at end of file
diff --git a/third-party/TeensyVariablePlayback.O/examples/SerialFlash/CMakeLists.txt b/third-party/TeensyVariablePlayback.O/examples/SerialFlash/CMakeLists.txt
deleted file mode 100644
index f08e24c..0000000
--- a/third-party/TeensyVariablePlayback.O/examples/SerialFlash/CMakeLists.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-cmake_minimum_required(VERSION 3.10)
-project(serialflash_raw)
-set(CMAKE_CXX_STANDARD 14)
-add_definitions(-DPROG_FLASH_SIZE=10000)
-teensy_include_directories(../../src)
-teensy_add_executable(serialflash serialflash.ino)
-teensy_target_link_libraries(serialflash teensy_variable_playback Audio SerialFlash SPI cores Wire arm_math)
diff --git a/third-party/TeensyVariablePlayback.O/examples/SerialFlash/serialflash.ino b/third-party/TeensyVariablePlayback.O/examples/SerialFlash/serialflash.ino
deleted file mode 100644
index ea4e8f0..0000000
--- a/third-party/TeensyVariablePlayback.O/examples/SerialFlash/serialflash.ino
+++ /dev/null
@@ -1,79 +0,0 @@
-// Plays a RAW (16-bit signed) PCM audio file at slower or faster rate
-// this example requires an uSD-card inserted to teensy 3.6 with a file called DEMO.RAW
-#include
-#include
-#include
-#include
-
-#define CSPIN 6
-
-SerialFlashChip myfs;
-
-// GUItool: begin automatically generated code
-AudioPlaySerialFlashResmp playSerialFlash1(myfs); //xy=324,457
-AudioOutputI2S i2s2; //xy=840.8571472167969,445.5714416503906
-AudioConnection patchCord1(playSerialFlash1, 0, i2s2, 0);
-AudioConnection patchCord2(playSerialFlash1, 0, i2s2, 1);
-AudioControlSGTL5000 audioShield;
-// GUItool: end automatically generated code
-
-#define A14 10
-
-const char* _filename = "DEMO.RAW";
-const int analogInPin = A14;
-unsigned long lastSamplePlayed = 0;
-uint32_t diskSize;
-
-double getPlaybackRate(int16_t analog) { //analog: 0..1023
- return (analog - 512.0) / 512.0;
-}
-
-void setup() {
- analogReference(0);
- pinMode(analogInPin, INPUT_DISABLE); // i.e. Analog
-
-
- if (!SerialFlash.begin(CSPIN)) {
- while (1) {
- Serial.println(F("Unable to access SPI Flash chip"));
- delay(1000);
- }
- }
- Serial.println("SerialFlash initialized.");
-
- audioShield.enable();
- audioShield.volume(0.5);
-
- playSerialFlash1.enableInterpolation(true);
- int newsensorValue = analogRead(analogInPin);
- playSerialFlash1.setPlaybackRate(getPlaybackRate(newsensorValue));
-
- AudioMemory(24);
-}
-
-void loop() {
-
- int newsensorValue = analogRead(analogInPin);
- playSerialFlash1.setPlaybackRate(getPlaybackRate(newsensorValue));
-
- unsigned currentMillis = millis();
- if (currentMillis > lastSamplePlayed + 500) {
- if (!playSerialFlash1.isPlaying()) {
- playSerialFlash1.playRaw(_filename, 1);
- lastSamplePlayed = currentMillis;
-
- Serial.print("Memory: ");
- Serial.print(AudioMemoryUsage());
- Serial.print(",");
- Serial.print(AudioMemoryUsageMax());
- Serial.println();
- }
- }
- delay(10);
-}
-
-
-namespace std {
- void __throw_bad_function_call() {}
- void __throw_length_error(char const*) {}
-}
\ No newline at end of file
diff --git a/third-party/TeensyVariablePlayback.O/examples/array/CMakeLists.txt b/third-party/TeensyVariablePlayback.O/examples/array/CMakeLists.txt
deleted file mode 100644
index 101a642..0000000
--- a/third-party/TeensyVariablePlayback.O/examples/array/CMakeLists.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-cmake_minimum_required(VERSION 3.10)
-project(array)
-set(CMAKE_CXX_STANDARD 14)
-teensy_include_directories(../../src)
-teensy_add_executable(array array.ino)
-teensy_target_link_libraries(array Audio teensy_variable_playback cores arm_math SD SPI Wire SerialFlash )
diff --git a/third-party/TeensyVariablePlayback.O/examples/array/array.ino b/third-party/TeensyVariablePlayback.O/examples/array/array.ino
deleted file mode 100644
index 13ce0ef..0000000
--- a/third-party/TeensyVariablePlayback.O/examples/array/array.ino
+++ /dev/null
@@ -1,594 +0,0 @@
-// Plays a RAW (16-bit signed) PCM audio file at slower or faster rate
-// this example plays a sample stored in an array
-#include
-#include
-#include
-
-// GUItool: begin automatically generated code
-AudioPlayArrayResmp rraw_a1; //xy=321,513
-AudioOutputI2S i2s1; //xy=675,518
-AudioConnection patchCord1(rraw_a1, 0, i2s1, 0);
-AudioConnection patchCord2(rraw_a1, 0, i2s1, 1);
-AudioControlSGTL5000 sgtl5000_1; //xy=521,588
-// GUItool: end automatically generated code
-#define A14 10
-
-extern unsigned int kick_raw_len;
-extern unsigned char kick_raw[];
-unsigned long lastSamplePlayed = 0;
-const int analogInPin = A14;
-
-double getPlaybackRate(int16_t analog) { //analog: 0..1023
- return (analog - 512.0) / 512.0;
-}
-
-void setup() {
- analogReference(0);
- pinMode(analogInPin, INPUT_DISABLE); // i.e. Analog
-
- Serial.begin(9600);
- sgtl5000_1.enable();
- sgtl5000_1.volume(0.5f, 0.5f);
-
- rraw_a1.enableInterpolation(true);
- int newsensorValue = analogRead(analogInPin);
- rraw_a1.setPlaybackRate(getPlaybackRate(newsensorValue));
-
- AudioMemory(20);
- Serial.println("setup done");
-}
-
-void loop() {
- int newsensorValue = analogRead(analogInPin);
- rraw_a1.setPlaybackRate(getPlaybackRate(newsensorValue));
-
- unsigned currentMillis = millis();
- if (currentMillis > lastSamplePlayed + 500) {
- if (!rraw_a1.isPlaying()) {
- rraw_a1.playRaw((int16_t *)kick_raw, kick_raw_len/2, 1);
- lastSamplePlayed = currentMillis;
-
- Serial.print("Memory: ");
- Serial.print(AudioMemoryUsage());
- Serial.print(",");
- Serial.print(AudioMemoryUsageMax());
- Serial.println();
- }
- }
- delay(10);
-}
-
-//created using linux command xxd -i kick.raw (44100Hz little-endian 16-bit/sample )
-unsigned char kick_raw[] = {
- 0x99, 0x02, 0xd7, 0x02, 0xfa, 0x02, 0x5f, 0x03, 0xc1, 0x03, 0x2a, 0x04,
- 0xad, 0x04, 0xa5, 0x05, 0x76, 0x06, 0x2f, 0x07, 0x9e, 0x07, 0xe2, 0x07,
- 0x43, 0x08, 0x92, 0x08, 0xb2, 0x08, 0xe8, 0x08, 0x16, 0x09, 0xda, 0x08,
- 0x51, 0x08, 0x01, 0x08, 0x25, 0x08, 0x70, 0x08, 0xc3, 0x08, 0x23, 0x09,
- 0x95, 0x09, 0x19, 0x0a, 0x83, 0x0a, 0x7e, 0x0a, 0xd0, 0x0a, 0x65, 0x0b,
- 0xf6, 0x0b, 0x89, 0x0c, 0xd1, 0x0c, 0xcf, 0x0c, 0x1a, 0x0d, 0xe5, 0x0d,
- 0x5e, 0x0e, 0xbb, 0x0e, 0xec, 0x0e, 0xd9, 0x0e, 0x07, 0x0f, 0xc8, 0x0f,
- 0x2a, 0x10, 0x04, 0x10, 0x28, 0x10, 0x54, 0x11, 0x8e, 0x13, 0x4b, 0x16,
- 0x09, 0x19, 0x91, 0x1b, 0xf7, 0x1d, 0x55, 0x20, 0xd1, 0x22, 0xcb, 0x25,
- 0x4d, 0x29, 0xa8, 0x2c, 0x7f, 0x2f, 0xda, 0x31, 0xac, 0x34, 0x0a, 0x3a,
- 0x24, 0x47, 0x9d, 0x5b, 0xe9, 0x67, 0x29, 0x67, 0x24, 0x66, 0x26, 0x66,
- 0xd2, 0x65, 0x9c, 0x65, 0x38, 0x65, 0x05, 0x65, 0x9f, 0x64, 0x64, 0x64,
- 0x12, 0x64, 0xce, 0x63, 0x7c, 0x63, 0x32, 0x63, 0xe6, 0x62, 0x97, 0x62,
- 0x49, 0x62, 0x01, 0x62, 0xb3, 0x61, 0x63, 0x61, 0x15, 0x61, 0xc4, 0x60,
- 0x75, 0x60, 0x20, 0x60, 0xce, 0x5f, 0x7a, 0x5f, 0x28, 0x5f, 0xd5, 0x5e,
- 0x81, 0x5e, 0x2d, 0x5e, 0xd3, 0x5d, 0x80, 0x5d, 0x2e, 0x5d, 0xe6, 0x5c,
- 0x1a, 0x5c, 0x16, 0x5a, 0x01, 0x58, 0xb9, 0x56, 0x6d, 0x55, 0xf4, 0x53,
- 0x49, 0x52, 0x83, 0x50, 0x87, 0x4e, 0x5f, 0x4c, 0x68, 0x4a, 0x5c, 0x48,
- 0x62, 0x46, 0x5a, 0x44, 0xe2, 0x41, 0x08, 0x3f, 0x1c, 0x3c, 0x44, 0x39,
- 0x35, 0x36, 0xcb, 0x32, 0xaf, 0x2f, 0xc8, 0x2c, 0xf8, 0x29, 0x55, 0x27,
- 0x6a, 0x24, 0x0f, 0x21, 0x5e, 0x1d, 0xc3, 0x19, 0x7b, 0x16, 0x71, 0x13,
- 0x6c, 0x10, 0x00, 0x0d, 0xd2, 0x08, 0x7f, 0x04, 0x7a, 0x01, 0x43, 0xff,
- 0xb9, 0xfc, 0xfa, 0xf9, 0x3b, 0xf7, 0xcb, 0xf4, 0x2b, 0xf2, 0x02, 0xef,
- 0x0c, 0xec, 0x3d, 0xe9, 0x21, 0xe6, 0xa6, 0xe2, 0x8a, 0xdf, 0x00, 0xdd,
- 0xbc, 0xda, 0x9e, 0xd8, 0xc1, 0xd6, 0xd6, 0xd4, 0xd6, 0xd2, 0xad, 0xd0,
- 0x5f, 0xce, 0xf0, 0xcb, 0xe9, 0xc9, 0x61, 0xc8, 0x75, 0xc7, 0x97, 0xc6,
- 0x3e, 0xc5, 0x07, 0xc4, 0x8e, 0xc3, 0x18, 0xc3, 0x3a, 0xc2, 0x15, 0xc1,
- 0x0e, 0xc0, 0xb3, 0xbf, 0xcf, 0xbf, 0xf8, 0xbf, 0xcc, 0xbf, 0x72, 0xbf,
- 0x41, 0xbf, 0x2b, 0xbf, 0xe2, 0xbe, 0x99, 0xbe, 0x4e, 0xbe, 0x0e, 0xbe,
- 0xcd, 0xbd, 0x7c, 0xbd, 0x8a, 0xbd, 0x88, 0xbd, 0x04, 0xbd, 0x0c, 0xbc,
- 0xb3, 0xbb, 0xf6, 0xbb, 0xf1, 0xbb, 0x12, 0xbc, 0x6f, 0xbc, 0xcb, 0xbc,
- 0xe4, 0xbc, 0x33, 0xbd, 0x1b, 0xbe, 0xac, 0xbe, 0x1e, 0xbf, 0x91, 0xbf,
- 0x50, 0xc0, 0x40, 0xc1, 0x3d, 0xc2, 0x32, 0xc3, 0xdf, 0xc3, 0xad, 0xc4,
- 0x77, 0xc5, 0xbe, 0xc6, 0xc7, 0xc8, 0x1d, 0xcb, 0x0e, 0xcd, 0x83, 0xce,
- 0xf1, 0xcf, 0xb4, 0xd1, 0x7d, 0xd3, 0x86, 0xd5, 0x89, 0xd7, 0xd2, 0xd9,
- 0x34, 0xdc, 0x28, 0xde, 0x23, 0xe0, 0x33, 0xe2, 0x0a, 0xe4, 0x59, 0xe5,
- 0xfc, 0xe6, 0x98, 0xe9, 0x30, 0xec, 0x91, 0xee, 0xc2, 0xf0, 0x0d, 0xf3,
- 0x35, 0xf5, 0xf3, 0xf6, 0xc4, 0xf8, 0xcb, 0xfa, 0xef, 0xfc, 0x65, 0xff,
- 0x05, 0x02, 0x7c, 0x04, 0xde, 0x06, 0x75, 0x09, 0x2b, 0x0c, 0x9b, 0x0e,
- 0xf3, 0x10, 0xb3, 0x13, 0x3a, 0x16, 0xeb, 0x18, 0x55, 0x1c, 0xad, 0x1f,
- 0xa8, 0x22, 0x54, 0x25, 0xae, 0x27, 0x33, 0x2a, 0x16, 0x2d, 0x36, 0x30,
- 0x84, 0x33, 0x94, 0x36, 0xbd, 0x38, 0xa2, 0x3a, 0x7d, 0x3c, 0x06, 0x3e,
- 0x24, 0x3f, 0x27, 0x40, 0x7c, 0x41, 0xef, 0x42, 0x14, 0x44, 0xeb, 0x44,
- 0x06, 0x46, 0x53, 0x47, 0x47, 0x48, 0x9b, 0x48, 0xaf, 0x48, 0xd7, 0x48,
- 0x4c, 0x49, 0xa0, 0x49, 0xbe, 0x49, 0xd4, 0x49, 0xfa, 0x49, 0x5e, 0x4a,
- 0xcc, 0x4a, 0x14, 0x4b, 0xfe, 0x4a, 0x22, 0x4b, 0x10, 0x4c, 0x0c, 0x4d,
- 0xb2, 0x4d, 0x4c, 0x4e, 0x3e, 0x4e, 0x77, 0x4d, 0x98, 0x4c, 0xf6, 0x4b,
- 0x67, 0x4b, 0xf0, 0x4a, 0x2a, 0x4a, 0xea, 0x48, 0x06, 0x48, 0x47, 0x47,
- 0xb2, 0x46, 0xda, 0x45, 0xad, 0x44, 0x5c, 0x43, 0x43, 0x42, 0x9e, 0x41,
- 0x0a, 0x41, 0x49, 0x40, 0xa6, 0x3f, 0x9d, 0x3e, 0x3c, 0x3d, 0xc6, 0x3b,
- 0xf6, 0x39, 0x87, 0x37, 0xf6, 0x34, 0x87, 0x32, 0x2b, 0x30, 0x6f, 0x2d,
- 0xfa, 0x2a, 0x3d, 0x29, 0x48, 0x27, 0xc2, 0x24, 0x49, 0x22, 0xca, 0x1f,
- 0xa0, 0x1c, 0x7c, 0x19, 0x06, 0x17, 0xbf, 0x14, 0x9f, 0x12, 0x96, 0x10,
- 0xf9, 0x0d, 0x3e, 0x0b, 0xe8, 0x08, 0x5c, 0x06, 0xe7, 0x02, 0x6e, 0xff,
- 0xca, 0xfc, 0x5b, 0xfa, 0xa0, 0xf7, 0xe9, 0xf4, 0x9c, 0xf2, 0x66, 0xf0,
- 0xaf, 0xed, 0xfd, 0xea, 0xcc, 0xe8, 0x6e, 0xe6, 0x82, 0xe3, 0x97, 0xe0,
- 0xed, 0xdd, 0x62, 0xdb, 0x7b, 0xd8, 0xd3, 0xd5, 0x5f, 0xd3, 0x1a, 0xd1,
- 0x44, 0xcf, 0xeb, 0xcd, 0x89, 0xcc, 0xca, 0xca, 0x4d, 0xc9, 0x35, 0xc8,
- 0x53, 0xc7, 0x0c, 0xc6, 0x06, 0xc4, 0xca, 0xc1, 0x09, 0xc0, 0x9c, 0xbe,
- 0xa8, 0xbd, 0xfd, 0xbc, 0xf2, 0xbb, 0x9b, 0xba, 0x20, 0xb9, 0xe4, 0xb7,
- 0xc1, 0xb6, 0xcd, 0xb5, 0x12, 0xb5, 0x55, 0xb4, 0xd1, 0xb3, 0x86, 0xb3,
- 0x19, 0xb3, 0xe8, 0xb2, 0xd7, 0xb2, 0x72, 0xb2, 0x27, 0xb2, 0xb7, 0xb1,
- 0x67, 0xb1, 0x65, 0xb1, 0xae, 0xb1, 0x6b, 0xb1, 0xf2, 0xb0, 0xeb, 0xb0,
- 0x0f, 0xb1, 0xfe, 0xb0, 0xeb, 0xb0, 0xcf, 0xb0, 0x94, 0xb0, 0x3e, 0xb0,
- 0x29, 0xb0, 0x56, 0xb0, 0x0c, 0xb0, 0xb7, 0xaf, 0xfb, 0xaf, 0x37, 0xb0,
- 0x96, 0xb0, 0x42, 0xb1, 0xe8, 0xb1, 0xb5, 0xb2, 0xc5, 0xb3, 0x93, 0xb4,
- 0x93, 0xb4, 0xee, 0xb4, 0x59, 0xb6, 0xca, 0xb7, 0x87, 0xb8, 0x6f, 0xb8,
- 0x33, 0xb8, 0xaf, 0xb8, 0x4a, 0xb9, 0x9d, 0xb9, 0xf2, 0xb9, 0x48, 0xba,
- 0xd0, 0xba, 0xe5, 0xbb, 0x4e, 0xbd, 0xaf, 0xbe, 0xe9, 0xbf, 0xba, 0xc1,
- 0xc2, 0xc3, 0x73, 0xc5, 0xa6, 0xc6, 0x6a, 0xc7, 0x83, 0xc8, 0x42, 0xca,
- 0xc8, 0xcb, 0x34, 0xcd, 0x94, 0xce, 0xcc, 0xcf, 0x31, 0xd1, 0x27, 0xd3,
- 0x8c, 0xd5, 0x61, 0xd7, 0x78, 0xd9, 0x3b, 0xdc, 0x40, 0xdf, 0xdd, 0xe1,
- 0x0c, 0xe4, 0xe4, 0xe5, 0xd0, 0xe7, 0x65, 0xea, 0xc9, 0xec, 0xd7, 0xee,
- 0xfc, 0xf0, 0x7c, 0xf3, 0xf6, 0xf5, 0x09, 0xf8, 0xde, 0xf9, 0xca, 0xfb,
- 0xac, 0xfd, 0xc3, 0xff, 0x33, 0x02, 0xb1, 0x04, 0x24, 0x07, 0x57, 0x09,
- 0x5f, 0x0b, 0xe6, 0x0d, 0xd1, 0x10, 0x6d, 0x13, 0x8f, 0x15, 0xfb, 0x17,
- 0x43, 0x1a, 0x8e, 0x1c, 0x1a, 0x1f, 0x69, 0x21, 0x80, 0x23, 0x74, 0x25,
- 0x62, 0x27, 0x07, 0x29, 0xa1, 0x2a, 0xa5, 0x2c, 0xdf, 0x2e, 0x57, 0x31,
- 0xff, 0x33, 0xd1, 0x36, 0x6e, 0x39, 0x8a, 0x3b, 0x58, 0x3d, 0x32, 0x3f,
- 0xc8, 0x40, 0x1b, 0x42, 0x22, 0x43, 0x1a, 0x44, 0x25, 0x45, 0xe5, 0x45,
- 0x43, 0x46, 0x9b, 0x46, 0x6a, 0x47, 0x6f, 0x48, 0x69, 0x49, 0x6f, 0x4a,
- 0xc7, 0x4b, 0x0e, 0x4d, 0x03, 0x4e, 0x78, 0x4e, 0xdf, 0x4e, 0x0b, 0x4f,
- 0xea, 0x4e, 0xcb, 0x4e, 0x1b, 0x4f, 0x6e, 0x4f, 0xc3, 0x4f, 0xdc, 0x4f,
- 0xcb, 0x4f, 0xd2, 0x4f, 0x16, 0x50, 0x24, 0x50, 0xf2, 0x4f, 0x00, 0x50,
- 0x37, 0x50, 0x4e, 0x50, 0x5e, 0x50, 0x7c, 0x50, 0xab, 0x50, 0x69, 0x50,
- 0xad, 0x4f, 0xa3, 0x4e, 0xe6, 0x4d, 0x42, 0x4d, 0xdc, 0x4c, 0x7c, 0x4c,
- 0xbe, 0x4b, 0x08, 0x4b, 0x7b, 0x4a, 0xe4, 0x49, 0x14, 0x49, 0x07, 0x48,
- 0x98, 0x46, 0x2f, 0x45, 0x16, 0x44, 0x23, 0x43, 0x55, 0x42, 0xac, 0x41,
- 0x06, 0x41, 0x4b, 0x40, 0x8f, 0x3f, 0xde, 0x3e, 0xe1, 0x3d, 0x75, 0x3c,
- 0xc0, 0x3a, 0xe4, 0x38, 0x83, 0x37, 0x9a, 0x36, 0xe5, 0x35, 0xc0, 0x34,
- 0xf9, 0x32, 0xe1, 0x30, 0xfa, 0x2e, 0xd4, 0x2c, 0x4d, 0x2a, 0xed, 0x27,
- 0xb9, 0x25, 0xb2, 0x23, 0x7d, 0x21, 0xfd, 0x1e, 0x89, 0x1c, 0x38, 0x1a,
- 0xe2, 0x17, 0x67, 0x15, 0xf3, 0x12, 0xb3, 0x10, 0x9e, 0x0e, 0x79, 0x0c,
- 0xea, 0x09, 0x54, 0x07, 0x26, 0x05, 0x0a, 0x03, 0xd7, 0x00, 0x98, 0xfe,
- 0x41, 0xfc, 0x8d, 0xf9, 0x3c, 0xf7, 0x4f, 0xf5, 0x73, 0xf3, 0x7b, 0xf1,
- 0x68, 0xef, 0x6f, 0xed, 0x7a, 0xeb, 0x87, 0xe9, 0x48, 0xe7, 0xc6, 0xe4,
- 0x65, 0xe2, 0xf6, 0xdf, 0x86, 0xdd, 0x9f, 0xdb, 0x1b, 0xda, 0xa6, 0xd8,
- 0xce, 0xd6, 0xe4, 0xd4, 0xe3, 0xd2, 0x84, 0xd0, 0xec, 0xcd, 0x08, 0xcc,
- 0x89, 0xca, 0x1b, 0xc9, 0xe2, 0xc7, 0x9d, 0xc6, 0xe5, 0xc4, 0x79, 0xc3,
- 0x6d, 0xc2, 0xe3, 0xc0, 0x3c, 0xbf, 0xd3, 0xbd, 0x41, 0xbc, 0xd2, 0xba,
- 0x6a, 0xb9, 0xa1, 0xb7, 0xa9, 0xb5, 0x47, 0xb4, 0x91, 0xb3, 0xd5, 0xb2,
- 0xb7, 0xb1, 0x51, 0xb0, 0x14, 0xaf, 0xf5, 0xad, 0x95, 0xac, 0x34, 0xab,
- 0x05, 0xaa, 0xe1, 0xa8, 0xb3, 0xa7, 0xd9, 0xa6, 0x25, 0xa6, 0x6e, 0xa5,
- 0x2b, 0xa5, 0x7b, 0xa5, 0x9a, 0xa5, 0x88, 0xa5, 0xc3, 0xa5, 0xe7, 0xa5,
- 0xaf, 0xa5, 0x8b, 0xa5, 0x80, 0xa5, 0x65, 0xa5, 0x8c, 0xa5, 0x7e, 0xa5,
- 0x22, 0xa5, 0x40, 0xa5, 0xed, 0xa5, 0x27, 0xa6, 0x2b, 0xa6, 0x1c, 0xa6,
- 0xe5, 0xa5, 0x7b, 0xa5, 0x45, 0xa5, 0x37, 0xa5, 0x04, 0xa5, 0x91, 0xa4,
- 0x8d, 0xa4, 0x2d, 0xa5, 0x9f, 0xa5, 0xf6, 0xa5, 0x7e, 0xa6, 0x34, 0xa7,
- 0x14, 0xa8, 0x7e, 0xa8, 0x87, 0xa8, 0xc4, 0xa8, 0x51, 0xa9, 0xec, 0xa9,
- 0x74, 0xaa, 0xf7, 0xaa, 0x40, 0xab, 0xd9, 0xab, 0xca, 0xac, 0x6b, 0xad,
- 0xb3, 0xad, 0x08, 0xae, 0x10, 0xaf, 0x2c, 0xb0, 0xcb, 0xb0, 0x23, 0xb1,
- 0xac, 0xb1, 0x0e, 0xb2, 0x42, 0xb2, 0xd7, 0xb2, 0xef, 0xb3, 0x21, 0xb5,
- 0x30, 0xb6, 0xe9, 0xb6, 0x54, 0xb7, 0xf0, 0xb7, 0x9e, 0xb8, 0x2e, 0xb9,
- 0x03, 0xba, 0x55, 0xbb, 0xdf, 0xbc, 0x5f, 0xbe, 0xb8, 0xbf, 0x01, 0xc1,
- 0x83, 0xc2, 0x0c, 0xc4, 0x65, 0xc5, 0x7e, 0xc6, 0x86, 0xc7, 0xba, 0xc8,
- 0x11, 0xca, 0x66, 0xcb, 0x28, 0xcd, 0x4d, 0xcf, 0x60, 0xd1, 0x69, 0xd3,
- 0x7b, 0xd5, 0x5f, 0xd7, 0xe3, 0xd8, 0xca, 0xda, 0xda, 0xdc, 0xda, 0xde,
- 0xab, 0xe0, 0x59, 0xe2, 0x3b, 0xe4, 0x21, 0xe6, 0xfc, 0xe7, 0xcb, 0xe9,
- 0xbe, 0xeb, 0x9c, 0xed, 0x47, 0xef, 0x0b, 0xf1, 0xd3, 0xf2, 0xbc, 0xf4,
- 0x9c, 0xf6, 0x67, 0xf8, 0x2a, 0xfa, 0xc1, 0xfb, 0x7f, 0xfd, 0x41, 0xff,
- 0x12, 0x01, 0xd2, 0x02, 0xfc, 0x04, 0xe8, 0x06, 0x9a, 0x08, 0x59, 0x0a,
- 0x48, 0x0c, 0x36, 0x0e, 0x37, 0x10, 0x36, 0x12, 0x59, 0x14, 0x62, 0x16,
- 0x86, 0x18, 0xb9, 0x1a, 0xc2, 0x1c, 0xcd, 0x1e, 0xf1, 0x20, 0x27, 0x23,
- 0x7a, 0x25, 0xf9, 0x27, 0x2a, 0x2a, 0x1f, 0x2c, 0xf8, 0x2d, 0xa3, 0x2f,
- 0x23, 0x31, 0xf4, 0x32, 0x2c, 0x35, 0x40, 0x37, 0x23, 0x39, 0xfe, 0x3a,
- 0x11, 0x3d, 0x2c, 0x3f, 0xe8, 0x40, 0x8c, 0x42, 0x55, 0x44, 0x37, 0x46,
- 0x99, 0x47, 0xcb, 0x48, 0x12, 0x4a, 0x60, 0x4b, 0x86, 0x4c, 0x9b, 0x4d,
- 0xc8, 0x4e, 0xec, 0x4f, 0xe3, 0x50, 0x8a, 0x51, 0x23, 0x52, 0xd8, 0x52,
- 0x68, 0x53, 0x9b, 0x53, 0xb1, 0x53, 0x11, 0x54, 0x94, 0x54, 0xf7, 0x54,
- 0x4f, 0x55, 0xa4, 0x55, 0x03, 0x56, 0x51, 0x56, 0x92, 0x56, 0xfa, 0x56,
- 0x59, 0x57, 0xad, 0x57, 0xcd, 0x57, 0xc5, 0x57, 0xa8, 0x57, 0x64, 0x57,
- 0x49, 0x57, 0x63, 0x57, 0x64, 0x57, 0x40, 0x57, 0xf6, 0x56, 0xfc, 0x56,
- 0x36, 0x57, 0x3b, 0x57, 0x1e, 0x57, 0x1c, 0x57, 0x03, 0x57, 0xee, 0x56,
- 0xa5, 0x56, 0x80, 0x56, 0xd4, 0x56, 0xe4, 0x56, 0x92, 0x56, 0xf0, 0x55,
- 0x02, 0x55, 0xab, 0x53, 0xb5, 0x52, 0x51, 0x52, 0x08, 0x52, 0x80, 0x51,
- 0xb4, 0x50, 0xde, 0x4f, 0x27, 0x4f, 0x63, 0x4e, 0x58, 0x4d, 0x72, 0x4c,
- 0x82, 0x4b, 0x81, 0x4a, 0x87, 0x49, 0xb4, 0x48, 0xb1, 0x47, 0x99, 0x46,
- 0xb4, 0x45, 0x34, 0x45, 0xb8, 0x44, 0x2f, 0x44, 0x7f, 0x43, 0xa0, 0x42,
- 0xcb, 0x41, 0xd1, 0x40, 0xeb, 0x3f, 0x28, 0x3f, 0x3d, 0x3e, 0x09, 0x3d,
- 0x9d, 0x3b, 0x40, 0x3a, 0x1c, 0x39, 0xeb, 0x37, 0xd1, 0x36, 0xb3, 0x35,
- 0x8b, 0x34, 0x0b, 0x33, 0x51, 0x31, 0xfb, 0x2f, 0xb9, 0x2e, 0x54, 0x2d,
- 0xaf, 0x2b, 0xdf, 0x29, 0xf1, 0x27, 0x3a, 0x26, 0x6f, 0x24, 0x56, 0x22,
- 0x20, 0x20, 0x0a, 0x1e, 0x3b, 0x1c, 0x55, 0x1a, 0x6c, 0x18, 0xaa, 0x16,
- 0xef, 0x14, 0x0a, 0x13, 0x17, 0x11, 0x1c, 0x0f, 0x22, 0x0d, 0x46, 0x0b,
- 0x53, 0x09, 0x46, 0x07, 0x46, 0x05, 0x4d, 0x03, 0x1a, 0x01, 0xd3, 0xfe,
- 0x94, 0xfc, 0x8c, 0xfa, 0x8f, 0xf8, 0xc1, 0xf6, 0x27, 0xf5, 0x8f, 0xf3,
- 0xf2, 0xf1, 0x74, 0xf0, 0xfa, 0xee, 0x4d, 0xed, 0x9e, 0xeb, 0xa2, 0xe9,
- 0x73, 0xe7, 0xa9, 0xe5, 0x2d, 0xe4, 0xa3, 0xe2, 0xf9, 0xe0, 0x50, 0xdf,
- 0xb9, 0xdd, 0x34, 0xdc, 0xad, 0xda, 0x0b, 0xd9, 0x77, 0xd7, 0xb9, 0xd5,
- 0x37, 0xd4, 0xff, 0xd2, 0x8a, 0xd1, 0x14, 0xd0, 0xba, 0xce, 0x7d, 0xcd,
- 0x2c, 0xcc, 0xa1, 0xca, 0x22, 0xc9, 0xa9, 0xc7, 0x0e, 0xc6, 0x66, 0xc4,
- 0xfc, 0xc2, 0xa5, 0xc1, 0x4a, 0xc0, 0xff, 0xbe, 0xf7, 0xbd, 0x0e, 0xbd,
- 0x1d, 0xbc, 0x16, 0xbb, 0xad, 0xb9, 0x44, 0xb8, 0xd7, 0xb6, 0x9e, 0xb5,
- 0x9f, 0xb4, 0x97, 0xb3, 0x72, 0xb2, 0x5f, 0xb1, 0x67, 0xb0, 0x89, 0xaf,
- 0x9d, 0xae, 0xbe, 0xad, 0x08, 0xad, 0x5d, 0xac, 0x8b, 0xab, 0xad, 0xaa,
- 0xe4, 0xa9, 0x59, 0xa9, 0xc4, 0xa8, 0x02, 0xa8, 0x4d, 0xa7, 0xc2, 0xa6,
- 0x4a, 0xa6, 0x09, 0xa6, 0xd2, 0xa5, 0x50, 0xa5, 0xec, 0xa4, 0xc2, 0xa4,
- 0xd9, 0xa4, 0xbd, 0xa4, 0x97, 0xa4, 0xa5, 0xa4, 0xbf, 0xa4, 0xb4, 0xa4,
- 0x8f, 0xa4, 0x31, 0xa4, 0x39, 0xa4, 0x7d, 0xa4, 0xab, 0xa4, 0xc7, 0xa4,
- 0xb3, 0xa4, 0xab, 0xa4, 0xca, 0xa4, 0x05, 0xa5, 0x1e, 0xa5, 0x2a, 0xa5,
- 0x2c, 0xa5, 0x18, 0xa5, 0x01, 0xa5, 0x33, 0xa5, 0x8c, 0xa5, 0xb2, 0xa5,
- 0x81, 0xa5, 0x5c, 0xa5, 0x6e, 0xa5, 0x79, 0xa5, 0x4e, 0xa5, 0x17, 0xa5,
- 0xff, 0xa4, 0x1c, 0xa5, 0x45, 0xa5, 0x8a, 0xa5, 0xbf, 0xa5, 0xdb, 0xa5,
- 0x41, 0xa6, 0xfb, 0xa6, 0xc6, 0xa7, 0x86, 0xa8, 0x29, 0xa9, 0x97, 0xa9,
- 0x27, 0xaa, 0xd7, 0xaa, 0x6d, 0xab, 0xf4, 0xab, 0x34, 0xac, 0x69, 0xac,
- 0xc6, 0xac, 0x37, 0xad, 0xaa, 0xad, 0x34, 0xae, 0xd3, 0xae, 0x81, 0xaf,
- 0x16, 0xb0, 0x72, 0xb0, 0xc8, 0xb0, 0x36, 0xb1, 0x91, 0xb1, 0xe0, 0xb1,
- 0x3b, 0xb2, 0x8e, 0xb2, 0xe0, 0xb2, 0x2a, 0xb3, 0xab, 0xb3, 0x3a, 0xb4,
- 0xf1, 0xb4, 0xc0, 0xb5, 0xae, 0xb6, 0x91, 0xb7, 0x82, 0xb8, 0x98, 0xb9,
- 0x8f, 0xba, 0x88, 0xbb, 0x65, 0xbc, 0x20, 0xbd, 0xcb, 0xbd, 0xaf, 0xbe,
- 0x94, 0xbf, 0x84, 0xc0, 0x85, 0xc1, 0x7b, 0xc2, 0x67, 0xc3, 0x66, 0xc4,
- 0x7f, 0xc5, 0x89, 0xc6, 0x6b, 0xc7, 0x38, 0xc8, 0x29, 0xc9, 0x4a, 0xca,
- 0x82, 0xcb, 0xc1, 0xcc, 0x12, 0xce, 0x5e, 0xcf, 0xb0, 0xd0, 0x25, 0xd2,
- 0x66, 0xd3, 0xde, 0xd4, 0x6c, 0xd6, 0x28, 0xd8, 0xd7, 0xd9, 0x80, 0xdb,
- 0xf7, 0xdc, 0x6f, 0xde, 0xd0, 0xdf, 0x22, 0xe1, 0x7a, 0xe2, 0xe5, 0xe3,
- 0x7a, 0xe5, 0xea, 0xe6, 0x51, 0xe8, 0xeb, 0xe9, 0x70, 0xeb, 0xb3, 0xec,
- 0x01, 0xee, 0x60, 0xef, 0xcb, 0xf0, 0x1d, 0xf2, 0x7b, 0xf3, 0xcf, 0xf4,
- 0x39, 0xf6, 0xc8, 0xf7, 0x82, 0xf9, 0x4a, 0xfb, 0xf2, 0xfc, 0x8c, 0xfe,
- 0x01, 0x00, 0x68, 0x01, 0x15, 0x03, 0xe6, 0x04, 0xbc, 0x06, 0x42, 0x08,
- 0xbb, 0x09, 0x2b, 0x0b, 0xc7, 0x0c, 0x35, 0x0e, 0x94, 0x0f, 0xf2, 0x10,
- 0x59, 0x12, 0xbc, 0x13, 0x34, 0x15, 0xac, 0x16, 0x1c, 0x18, 0x79, 0x19,
- 0xdc, 0x1a, 0x6d, 0x1c, 0x21, 0x1e, 0xca, 0x1f, 0x70, 0x21, 0x02, 0x23,
- 0x6c, 0x24, 0x9e, 0x25, 0x45, 0x27, 0x02, 0x29, 0x95, 0x2a, 0xff, 0x2b,
- 0x72, 0x2d, 0xe8, 0x2e, 0x48, 0x30, 0x7c, 0x31, 0xd2, 0x32, 0x3d, 0x34,
- 0xac, 0x35, 0x26, 0x37, 0xbc, 0x38, 0x4c, 0x3a, 0x90, 0x3b, 0xef, 0x3c,
- 0x61, 0x3e, 0xe8, 0x3f, 0x59, 0x41, 0xab, 0x42, 0xf7, 0x43, 0x2d, 0x45,
- 0x6c, 0x46, 0x78, 0x47, 0xb4, 0x48, 0x2e, 0x4a, 0x8e, 0x4b, 0xd7, 0x4c,
- 0xf4, 0x4d, 0xee, 0x4e, 0xcb, 0x4f, 0xc3, 0x50, 0xc2, 0x51, 0xac, 0x52,
- 0x61, 0x53, 0xf3, 0x53, 0xac, 0x54, 0x5f, 0x55, 0xf4, 0x55, 0x7f, 0x56,
- 0x04, 0x57, 0x9c, 0x57, 0x1f, 0x58, 0x7c, 0x58, 0xbc, 0x58, 0x0b, 0x59,
- 0x71, 0x59, 0xc1, 0x59, 0x0b, 0x5a, 0x3e, 0x5a, 0x8b, 0x5a, 0xac, 0x5a,
- 0xa9, 0x5a, 0x8a, 0x5a, 0x6c, 0x5a, 0x4c, 0x5a, 0x39, 0x5a, 0x32, 0x5a,
- 0x40, 0x5a, 0x33, 0x5a, 0x44, 0x5a, 0x58, 0x5a, 0x79, 0x5a, 0x7a, 0x5a,
- 0x69, 0x5a, 0x49, 0x5a, 0x54, 0x5a, 0x78, 0x5a, 0x72, 0x5a, 0x5f, 0x5a,
- 0x31, 0x5a, 0x11, 0x5a, 0xf9, 0x59, 0xea, 0x59, 0xd1, 0x59, 0xa1, 0x59,
- 0x48, 0x59, 0xf0, 0x58, 0xa2, 0x58, 0x6e, 0x58, 0x60, 0x58, 0x46, 0x58,
- 0x3f, 0x58, 0x47, 0x58, 0x40, 0x58, 0x08, 0x58, 0x9c, 0x57, 0x11, 0x57,
- 0x83, 0x56, 0xd7, 0x55, 0x42, 0x55, 0xab, 0x54, 0x06, 0x54, 0x63, 0x53,
- 0xa6, 0x52, 0xf0, 0x51, 0x55, 0x51, 0xbc, 0x50, 0x1e, 0x50, 0x8e, 0x4f,
- 0xf3, 0x4e, 0x34, 0x4e, 0x6b, 0x4d, 0xc9, 0x4c, 0x30, 0x4c, 0x7d, 0x4b,
- 0xd8, 0x4a, 0x49, 0x4a, 0xad, 0x49, 0x11, 0x49, 0x6c, 0x48, 0xa4, 0x47,
- 0xec, 0x46, 0x6c, 0x46, 0xde, 0x45, 0x5d, 0x45, 0xbc, 0x44, 0xf1, 0x43,
- 0x34, 0x43, 0x8c, 0x42, 0xf8, 0x41, 0x47, 0x41, 0x6a, 0x40, 0x72, 0x3f,
- 0x8b, 0x3e, 0xb3, 0x3d, 0xf2, 0x3c, 0x2f, 0x3c, 0x5c, 0x3b, 0x96, 0x3a,
- 0xbc, 0x39, 0xb2, 0x38, 0x91, 0x37, 0x8c, 0x36, 0x75, 0x35, 0x63, 0x34,
- 0x5e, 0x33, 0x63, 0x32, 0x4b, 0x31, 0x3c, 0x30, 0x1e, 0x2f, 0x07, 0x2e,
- 0xd0, 0x2c, 0xb2, 0x2b, 0x84, 0x2a, 0x4d, 0x29, 0xfc, 0x27, 0xa5, 0x26,
- 0x2f, 0x25, 0x95, 0x23, 0x1f, 0x22, 0xad, 0x20, 0x3a, 0x1f, 0x9e, 0x1d,
- 0x10, 0x1c, 0x6e, 0x1a, 0xe3, 0x18, 0x56, 0x17, 0xdb, 0x15, 0x58, 0x14,
- 0xba, 0x12, 0x2a, 0x11, 0x8b, 0x0f, 0xf4, 0x0d, 0x5b, 0x0c, 0xd3, 0x0a,
- 0x5f, 0x09, 0xe5, 0x07, 0x4a, 0x06, 0xc0, 0x04, 0x3e, 0x03, 0xb6, 0x01,
- 0x37, 0x00, 0xca, 0xfe, 0x74, 0xfd, 0x00, 0xfc, 0xa5, 0xfa, 0x4a, 0xf9,
- 0xd1, 0xf7, 0x7e, 0xf6, 0x1c, 0xf5, 0x9d, 0xf3, 0x4f, 0xf2, 0x0e, 0xf1,
- 0xc0, 0xef, 0x3a, 0xee, 0xd8, 0xec, 0x69, 0xeb, 0x0c, 0xea, 0xad, 0xe8,
- 0x56, 0xe7, 0xf8, 0xe5, 0xbe, 0xe4, 0x98, 0xe3, 0x61, 0xe2, 0x03, 0xe1,
- 0x99, 0xdf, 0x4d, 0xde, 0x0e, 0xdd, 0xde, 0xdb, 0xad, 0xda, 0x84, 0xd9,
- 0x62, 0xd8, 0x32, 0xd7, 0x01, 0xd6, 0xb7, 0xd4, 0x87, 0xd3, 0x97, 0xd2,
- 0x89, 0xd1, 0x89, 0xd0, 0x6e, 0xcf, 0x65, 0xce, 0x5d, 0xcd, 0x44, 0xcc,
- 0x13, 0xcb, 0xf2, 0xc9, 0xd3, 0xc8, 0xad, 0xc7, 0x9b, 0xc6, 0x94, 0xc5,
- 0x8e, 0xc4, 0x7b, 0xc3, 0x92, 0xc2, 0xad, 0xc1, 0xb2, 0xc0, 0xb9, 0xbf,
- 0xb3, 0xbe, 0xc0, 0xbd, 0xd5, 0xbc, 0xf2, 0xbb, 0xe1, 0xba, 0xc7, 0xb9,
- 0xc7, 0xb8, 0xe8, 0xb7, 0x09, 0xb7, 0x2c, 0xb6, 0x66, 0xb5, 0xb1, 0xb4,
- 0xf6, 0xb3, 0x32, 0xb3, 0x53, 0xb2, 0x92, 0xb1, 0xdb, 0xb0, 0x0d, 0xb0,
- 0x46, 0xaf, 0x62, 0xae, 0x98, 0xad, 0xd1, 0xac, 0x3f, 0xac, 0xb0, 0xab,
- 0x34, 0xab, 0xb1, 0xaa, 0x45, 0xaa, 0xda, 0xa9, 0x6a, 0xa9, 0xf1, 0xa8,
- 0x7d, 0xa8, 0x04, 0xa8, 0xbb, 0xa7, 0x80, 0xa7, 0x41, 0xa7, 0x02, 0xa7,
- 0xb6, 0xa6, 0x68, 0xa6, 0x3b, 0xa6, 0x1c, 0xa6, 0x0d, 0xa6, 0xfc, 0xa5,
- 0xd4, 0xa5, 0xa6, 0xa5, 0x81, 0xa5, 0x76, 0xa5, 0x61, 0xa5, 0x54, 0xa5,
- 0x48, 0xa5, 0x47, 0xa5, 0x4b, 0xa5, 0x49, 0xa5, 0x38, 0xa5, 0x4b, 0xa5,
- 0x6c, 0xa5, 0xa3, 0xa5, 0xda, 0xa5, 0xfe, 0xa5, 0x21, 0xa6, 0x4a, 0xa6,
- 0x8a, 0xa6, 0xb4, 0xa6, 0xe0, 0xa6, 0xf3, 0xa6, 0x1b, 0xa7, 0x17, 0xa7,
- 0x40, 0xa7, 0x8e, 0xa7, 0xcd, 0xa7, 0x06, 0xa8, 0x3e, 0xa8, 0x86, 0xa8,
- 0xbd, 0xa8, 0xde, 0xa8, 0xf6, 0xa8, 0x1c, 0xa9, 0x49, 0xa9, 0x5c, 0xa9,
- 0x79, 0xa9, 0x93, 0xa9, 0xab, 0xa9, 0xe6, 0xa9, 0x2c, 0xaa, 0x82, 0xaa,
- 0xbc, 0xaa, 0xec, 0xaa, 0x32, 0xab, 0x69, 0xab, 0xa7, 0xab, 0xde, 0xab,
- 0x19, 0xac, 0x53, 0xac, 0xbb, 0xac, 0x14, 0xad, 0x8a, 0xad, 0xeb, 0xad,
- 0x6c, 0xae, 0xe1, 0xae, 0x62, 0xaf, 0xd9, 0xaf, 0x58, 0xb0, 0xc0, 0xb0,
- 0x36, 0xb1, 0x99, 0xb1, 0x11, 0xb2, 0x71, 0xb2, 0xdc, 0xb2, 0x58, 0xb3,
- 0xbb, 0xb3, 0x37, 0xb4, 0xb6, 0xb4, 0x46, 0xb5, 0xca, 0xb5, 0x50, 0xb6,
- 0xd9, 0xb6, 0x6c, 0xb7, 0x03, 0xb8, 0x7e, 0xb8, 0xf0, 0xb8, 0x64, 0xb9,
- 0xcf, 0xb9, 0x47, 0xba, 0xd3, 0xba, 0x60, 0xbb, 0xe8, 0xbb, 0x70, 0xbc,
- 0xf3, 0xbc, 0x82, 0xbd, 0x05, 0xbe, 0xa1, 0xbe, 0x2a, 0xbf, 0xae, 0xbf,
- 0x25, 0xc0, 0xac, 0xc0, 0x52, 0xc1, 0xde, 0xc1, 0x75, 0xc2, 0x11, 0xc3,
- 0xb5, 0xc3, 0x42, 0xc4, 0xc5, 0xc4, 0x6d, 0xc5, 0x0b, 0xc6, 0xb2, 0xc6,
- 0x4b, 0xc7, 0xf6, 0xc7, 0x9b, 0xc8, 0x4f, 0xc9, 0x17, 0xca, 0xf3, 0xca,
- 0xc6, 0xcb, 0x9a, 0xcc, 0x7b, 0xcd, 0x54, 0xce, 0x32, 0xcf, 0x09, 0xd0,
- 0xd7, 0xd0, 0xc9, 0xd1, 0xc1, 0xd2, 0xb8, 0xd3, 0xb6, 0xd4, 0xae, 0xd5,
- 0xbc, 0xd6, 0xca, 0xd7, 0xd2, 0xd8, 0xca, 0xd9, 0xbd, 0xda, 0xc8, 0xdb,
- 0xd8, 0xdc, 0xf9, 0xdd, 0x08, 0xdf, 0x1e, 0xe0, 0x39, 0xe1, 0x4e, 0xe2,
- 0x60, 0xe3, 0x7a, 0xe4, 0x96, 0xe5, 0xc1, 0xe6, 0xde, 0xe7, 0x0e, 0xe9,
- 0x2a, 0xea, 0x42, 0xeb, 0x7a, 0xec, 0x9f, 0xed, 0xbb, 0xee, 0xd6, 0xef,
- 0xef, 0xf0, 0x0e, 0xf2, 0x30, 0xf3, 0x55, 0xf4, 0x68, 0xf5, 0x7e, 0xf6,
- 0xa4, 0xf7, 0xc0, 0xf8, 0xea, 0xf9, 0x10, 0xfb, 0x41, 0xfc, 0x7d, 0xfd,
- 0xad, 0xfe, 0xe3, 0xff, 0x10, 0x01, 0x27, 0x02, 0x58, 0x03, 0x74, 0x04,
- 0xa4, 0x05, 0xd5, 0x06, 0x0b, 0x08, 0x36, 0x09, 0x5c, 0x0a, 0x76, 0x0b,
- 0x9a, 0x0c, 0xc1, 0x0d, 0xd8, 0x0e, 0xf5, 0x0f, 0x15, 0x11, 0x3f, 0x12,
- 0x70, 0x13, 0x8e, 0x14, 0xcc, 0x15, 0xf2, 0x16, 0x31, 0x18, 0x4b, 0x19,
- 0x82, 0x1a, 0xa1, 0x1b, 0xbc, 0x1c, 0xde, 0x1d, 0xe9, 0x1e, 0x13, 0x20,
- 0x33, 0x21, 0x6c, 0x22, 0x80, 0x23, 0xa7, 0x24, 0xbc, 0x25, 0xde, 0x26,
- 0xe7, 0x27, 0x07, 0x29, 0x28, 0x2a, 0x36, 0x2b, 0x4d, 0x2c, 0x71, 0x2d,
- 0x91, 0x2e, 0xbe, 0x2f, 0xd6, 0x30, 0xfb, 0x31, 0x20, 0x33, 0x46, 0x34,
- 0x59, 0x35, 0x7a, 0x36, 0xa1, 0x37, 0xc2, 0x38, 0xdf, 0x39, 0x01, 0x3b,
- 0x0f, 0x3c, 0x27, 0x3d, 0x1f, 0x3e, 0x2e, 0x3f, 0x43, 0x40, 0x5b, 0x41,
- 0x73, 0x42, 0x8e, 0x43, 0xaf, 0x44, 0xbc, 0x45, 0xcc, 0x46, 0xd8, 0x47,
- 0xec, 0x48, 0xe1, 0x49, 0xd1, 0x4a, 0xc4, 0x4b, 0xb6, 0x4c, 0xa9, 0x4d,
- 0x9d, 0x4e, 0x88, 0x4f, 0x75, 0x50, 0x4c, 0x51, 0x3b, 0x52, 0x05, 0x53,
- 0xd9, 0x53, 0xa1, 0x54, 0x6f, 0x55, 0x33, 0x56, 0xe5, 0x56, 0x7d, 0x57,
- 0x15, 0x58, 0xb3, 0x58, 0x4e, 0x59, 0xdb, 0x59, 0x55, 0x5a, 0xc8, 0x5a,
- 0x36, 0x5b, 0xa9, 0x5b, 0x09, 0x5c, 0x5a, 0x5c, 0xab, 0x5c, 0xf1, 0x5c,
- 0x34, 0x5d, 0x6a, 0x5d, 0x9e, 0x5d, 0xc1, 0x5d, 0xea, 0x5d, 0x0b, 0x5e,
- 0x28, 0x5e, 0x3d, 0x5e, 0x41, 0x5e, 0x51, 0x5e, 0x5f, 0x5e, 0x69, 0x5e,
- 0x79, 0x5e, 0x6a, 0x5e, 0x78, 0x5e, 0x76, 0x5e, 0x7f, 0x5e, 0x72, 0x5e,
- 0x70, 0x5e, 0x61, 0x5e, 0x61, 0x5e, 0x42, 0x5e, 0x36, 0x5e, 0x2f, 0x5e,
- 0x2c, 0x5e, 0x1a, 0x5e, 0xec, 0x5d, 0xbf, 0x5d, 0x94, 0x5d, 0x71, 0x5d,
- 0x4c, 0x5d, 0x24, 0x5d, 0xfa, 0x5c, 0xc3, 0x5c, 0x8c, 0x5c, 0x59, 0x5c,
- 0x3e, 0x5c, 0x0c, 0x5c, 0xd3, 0x5b, 0xb1, 0x5b, 0x78, 0x5b, 0x45, 0x5b,
- 0x14, 0x5b, 0xed, 0x5a, 0xc0, 0x5a, 0x89, 0x5a, 0x4f, 0x5a, 0x16, 0x5a,
- 0xe5, 0x59, 0xb5, 0x59, 0x84, 0x59, 0x4e, 0x59, 0x0d, 0x59, 0xcf, 0x58,
- 0xa6, 0x58, 0x79, 0x58, 0x3e, 0x58, 0xf8, 0x57, 0xc0, 0x57, 0x83, 0x57,
- 0x38, 0x57, 0x03, 0x57, 0xc1, 0x56, 0x65, 0x56, 0xe0, 0x55, 0x52, 0x55,
- 0xd0, 0x54, 0x4c, 0x54, 0xbe, 0x53, 0x32, 0x53, 0xa7, 0x52, 0x2a, 0x52,
- 0x95, 0x51, 0x09, 0x51, 0x76, 0x50, 0xe9, 0x4f, 0x69, 0x4f, 0xe2, 0x4e,
- 0x49, 0x4e, 0xc0, 0x4d, 0x38, 0x4d, 0xbd, 0x4c, 0x2d, 0x4c, 0x98, 0x4b,
- 0x07, 0x4b, 0x76, 0x4a, 0xdc, 0x49, 0x4a, 0x49, 0xb9, 0x48, 0x2d, 0x48,
- 0x9c, 0x47, 0x19, 0x47, 0x80, 0x46, 0xf9, 0x45, 0x66, 0x45, 0xd6, 0x44,
- 0x47, 0x44, 0xb5, 0x43, 0x14, 0x43, 0x74, 0x42, 0xd4, 0x41, 0x42, 0x41,
- 0xa4, 0x40, 0x18, 0x40, 0x85, 0x3f, 0xeb, 0x3e, 0x52, 0x3e, 0xb2, 0x3d,
- 0x0c, 0x3d, 0x7a, 0x3c, 0xdb, 0x3b, 0x3a, 0x3b, 0x87, 0x3a, 0xe0, 0x39,
- 0x29, 0x39, 0x88, 0x38, 0xd1, 0x37, 0x16, 0x37, 0x4d, 0x36, 0x9e, 0x35,
- 0xdc, 0x34, 0x19, 0x34, 0x4a, 0x33, 0x83, 0x32, 0xb7, 0x31, 0xec, 0x30,
- 0x1c, 0x30, 0x47, 0x2f, 0x71, 0x2e, 0x88, 0x2d, 0xa6, 0x2c, 0xbb, 0x2b,
- 0xd0, 0x2a, 0xd8, 0x29, 0xdb, 0x28, 0xe3, 0x27, 0xf5, 0x26, 0xf1, 0x25,
- 0xf8, 0x24, 0xdc, 0x23, 0xdb, 0x22, 0xca, 0x21, 0xa7, 0x20, 0x85, 0x1f,
- 0x5a, 0x1e, 0x30, 0x1d, 0x0a, 0x1c, 0xd5, 0x1a, 0xa6, 0x19, 0x6d, 0x18,
- 0x3d, 0x17, 0xff, 0x15, 0xbf, 0x14, 0x81, 0x13, 0x57, 0x12, 0x15, 0x11,
- 0xe0, 0x0f, 0xa2, 0x0e, 0x65, 0x0d, 0x27, 0x0c, 0xf1, 0x0a, 0xb2, 0x09,
- 0x77, 0x08, 0x4b, 0x07, 0x0a, 0x06, 0xc9, 0x04, 0x97, 0x03, 0x65, 0x02,
- 0x3b, 0x01, 0x03, 0x00, 0xd2, 0xfe, 0x95, 0xfd, 0x6f, 0xfc, 0x50, 0xfb,
- 0x19, 0xfa, 0xf0, 0xf8, 0xb8, 0xf7, 0x97, 0xf6, 0x65, 0xf5, 0x48, 0xf4,
- 0x24, 0xf3, 0xfe, 0xf1, 0xec, 0xf0, 0xd2, 0xef, 0xa9, 0xee, 0x95, 0xed,
- 0x76, 0xec, 0x64, 0xeb, 0x61, 0xea, 0x43, 0xe9, 0x3a, 0xe8, 0x21, 0xe7,
- 0x14, 0xe6, 0xff, 0xe4, 0x06, 0xe4, 0x04, 0xe3, 0x04, 0xe2, 0x01, 0xe1,
- 0x02, 0xe0, 0x04, 0xdf, 0x16, 0xde, 0x1f, 0xdd, 0x29, 0xdc, 0x2d, 0xdb,
- 0x3d, 0xda, 0x45, 0xd9, 0x5a, 0xd8, 0x6f, 0xd7, 0x74, 0xd6, 0x8a, 0xd5,
- 0x91, 0xd4, 0xa5, 0xd3, 0xbb, 0xd2, 0xdb, 0xd1, 0x01, 0xd1, 0x17, 0xd0,
- 0x42, 0xcf, 0x5e, 0xce, 0x94, 0xcd, 0xb1, 0xcc, 0xe8, 0xcb, 0x04, 0xcb,
- 0x29, 0xca, 0x4e, 0xc9, 0x78, 0xc8, 0x99, 0xc7, 0xc4, 0xc6, 0xff, 0xc5,
- 0x3d, 0xc5, 0x76, 0xc4, 0xa6, 0xc3, 0xe4, 0xc2, 0x17, 0xc2, 0x4e, 0xc1,
- 0x8a, 0xc0, 0xc5, 0xbf, 0x0b, 0xbf, 0x42, 0xbe, 0x8e, 0xbd, 0xd8, 0xbc,
- 0x20, 0xbc, 0x60, 0xbb, 0xbb, 0xba, 0x08, 0xba, 0x5a, 0xb9, 0xba, 0xb8,
- 0x08, 0xb8, 0x64, 0xb7, 0xb1, 0xb6, 0x0c, 0xb6, 0x5d, 0xb5, 0xbf, 0xb4,
- 0x10, 0xb4, 0x7b, 0xb3, 0xd0, 0xb2, 0x3d, 0xb2, 0xa1, 0xb1, 0x0f, 0xb1,
- 0x84, 0xb0, 0xf2, 0xaf, 0x63, 0xaf, 0xd3, 0xae, 0x50, 0xae, 0xbd, 0xad,
- 0x49, 0xad, 0xc1, 0xac, 0x4d, 0xac, 0xc6, 0xab, 0x56, 0xab, 0xe4, 0xaa,
- 0x83, 0xaa, 0x0d, 0xaa, 0xac, 0xa9, 0x49, 0xa9, 0xf3, 0xa8, 0x9e, 0xa8,
- 0x4e, 0xa8, 0x07, 0xa8, 0xc5, 0xa7, 0x8d, 0xa7, 0x56, 0xa7, 0x1d, 0xa7,
- 0xf6, 0xa6, 0xc7, 0xa6, 0xad, 0xa6, 0x8c, 0xa6, 0x74, 0xa6, 0x58, 0xa6,
- 0x47, 0xa6, 0x2d, 0xa6, 0x24, 0xa6, 0x23, 0xa6, 0x21, 0xa6, 0x19, 0xa6,
- 0x20, 0xa6, 0x1f, 0xa6, 0x28, 0xa6, 0x3c, 0xa6, 0x4e, 0xa6, 0x59, 0xa6,
- 0x6e, 0xa6, 0x84, 0xa6, 0x9a, 0xa6, 0xb7, 0xa6, 0xd4, 0xa6, 0xef, 0xa6,
- 0x0a, 0xa7, 0x2f, 0xa7, 0x53, 0xa7, 0x77, 0xa7, 0x9c, 0xa7, 0xbc, 0xa7,
- 0xe5, 0xa7, 0x10, 0xa8, 0x35, 0xa8, 0x6d, 0xa8, 0x9b, 0xa8, 0xcb, 0xa8,
- 0xf5, 0xa8, 0x23, 0xa9, 0x5a, 0xa9, 0x80, 0xa9, 0xb7, 0xa9, 0xee, 0xa9,
- 0x1c, 0xaa, 0x46, 0xaa, 0x78, 0xaa, 0xb2, 0xaa, 0xeb, 0xaa, 0x1a, 0xab,
- 0x57, 0xab, 0x84, 0xab, 0xba, 0xab, 0xef, 0xab, 0x22, 0xac, 0x55, 0xac,
- 0x88, 0xac, 0xc1, 0xac, 0xf5, 0xac, 0x2a, 0xad, 0x67, 0xad, 0x9f, 0xad,
- 0xe0, 0xad, 0x14, 0xae, 0x4c, 0xae, 0x82, 0xae, 0xb8, 0xae, 0xf8, 0xae,
- 0x2c, 0xaf, 0x6a, 0xaf, 0x9d, 0xaf, 0xd4, 0xaf, 0x05, 0xb0, 0x38, 0xb0,
- 0x77, 0xb0, 0xb2, 0xb0, 0xf8, 0xb0, 0x3c, 0xb1, 0x97, 0xb1, 0x05, 0xb2,
- 0x6f, 0xb2, 0xdf, 0xb2, 0x48, 0xb3, 0xb2, 0xb3, 0x16, 0xb4, 0x7b, 0xb4,
- 0xe5, 0xb4, 0x54, 0xb5, 0xc3, 0xb5, 0x26, 0xb6, 0x97, 0xb6, 0x03, 0xb7,
- 0x68, 0xb7, 0xce, 0xb7, 0x44, 0xb8, 0xae, 0xb8, 0x20, 0xb9, 0x87, 0xb9,
- 0xf1, 0xb9, 0x5d, 0xba, 0xc6, 0xba, 0x24, 0xbb, 0xa1, 0xbb, 0x05, 0xbc,
- 0x79, 0xbc, 0xdc, 0xbc, 0x4b, 0xbd, 0xba, 0xbd, 0x24, 0xbe, 0x9b, 0xbe,
- 0x07, 0xbf, 0x72, 0xbf, 0xe5, 0xbf, 0x46, 0xc0, 0xc3, 0xc0, 0x1f, 0xc1,
- 0x91, 0xc1, 0x01, 0xc2, 0x79, 0xc2, 0xf1, 0xc2, 0x66, 0xc3, 0xe5, 0xc3,
- 0x55, 0xc4, 0xc8, 0xc4, 0x3e, 0xc5, 0xb3, 0xc5, 0x2d, 0xc6, 0xa7, 0xc6,
- 0x27, 0xc7, 0x97, 0xc7, 0x1f, 0xc8, 0xa0, 0xc8, 0x29, 0xc9, 0xad, 0xc9,
- 0x36, 0xca, 0xad, 0xca, 0x3d, 0xcb, 0xc0, 0xcb, 0x47, 0xcc, 0xe9, 0xcc,
- 0x6f, 0xcd, 0x06, 0xce, 0x84, 0xce, 0x1a, 0xcf, 0xbb, 0xcf, 0x55, 0xd0,
- 0xf6, 0xd0, 0x8b, 0xd1, 0x30, 0xd2, 0xd2, 0xd2, 0x79, 0xd3, 0x1c, 0xd4,
- 0xcf, 0xd4, 0x83, 0xd5, 0x36, 0xd6, 0xe1, 0xd6, 0x96, 0xd7, 0x5f, 0xd8,
- 0x1c, 0xd9, 0xe2, 0xd9, 0xa8, 0xda, 0x6c, 0xdb, 0x43, 0xdc, 0x04, 0xdd,
- 0xd8, 0xdd, 0xac, 0xde, 0x8a, 0xdf, 0x5b, 0xe0, 0x39, 0xe1, 0x0b, 0xe2,
- 0xf5, 0xe2, 0xde, 0xe3, 0xbc, 0xe4, 0x9e, 0xe5, 0x83, 0xe6, 0x62, 0xe7,
- 0x51, 0xe8, 0x34, 0xe9, 0x1e, 0xea, 0x12, 0xeb, 0xf7, 0xeb, 0xe5, 0xec,
- 0xc5, 0xed, 0xc2, 0xee, 0xb1, 0xef, 0xa6, 0xf0, 0x90, 0xf1, 0x7e, 0xf2,
- 0x6f, 0xf3, 0x56, 0xf4, 0x48, 0xf5, 0x35, 0xf6, 0x29, 0xf7, 0x17, 0xf8,
- 0x0a, 0xf9, 0x00, 0xfa, 0xe7, 0xfa, 0xde, 0xfb, 0xc9, 0xfc, 0xc1, 0xfd,
- 0xac, 0xfe, 0xae, 0xff, 0xa2, 0x00, 0x8d, 0x01, 0x70, 0x02, 0x62, 0x03,
- 0x4e, 0x04, 0x3a, 0x05, 0x26, 0x06, 0x16, 0x07, 0xff, 0x07, 0xf3, 0x08,
- 0xda, 0x09, 0xbe, 0x0a, 0xb9, 0x0b, 0xa1, 0x0c, 0x9b, 0x0d, 0x7d, 0x0e,
- 0x66, 0x0f, 0x54, 0x10, 0x36, 0x11, 0x20, 0x12, 0x11, 0x13, 0xf3, 0x13,
- 0xea, 0x14, 0xd1, 0x15, 0xb6, 0x16, 0x9b, 0x17, 0x83, 0x18, 0x7f, 0x19,
- 0x58, 0x1a, 0x53, 0x1b, 0x37, 0x1c, 0x22, 0x1d, 0x0a, 0x1e, 0xf3, 0x1e,
- 0xda, 0x1f, 0xca, 0x20, 0xb1, 0x21, 0x96, 0x22, 0x70, 0x23, 0x55, 0x24,
- 0x39, 0x25, 0x39, 0x26, 0x1a, 0x27, 0x07, 0x28, 0xe1, 0x28, 0xc5, 0x29,
- 0xa7, 0x2a, 0x85, 0x2b, 0x70, 0x2c, 0x4e, 0x2d, 0x3e, 0x2e, 0x19, 0x2f,
- 0xf3, 0x2f, 0xdf, 0x30, 0xc0, 0x31, 0xaf, 0x32, 0x93, 0x33, 0x77, 0x34,
- 0x48, 0x35, 0x2a, 0x36, 0x0f, 0x37, 0xf8, 0x37, 0xd9, 0x38, 0xbe, 0x39,
- 0x8b, 0x3a, 0x74, 0x3b, 0x48, 0x3c, 0x2d, 0x3d, 0xfa, 0x3d, 0xe7, 0x3e,
- 0xb0, 0x3f, 0x98, 0x40, 0x67, 0x41, 0x3a, 0x42, 0x16, 0x43, 0xf4, 0x43,
- 0xd8, 0x44, 0xa4, 0x45, 0x7c, 0x46, 0x4c, 0x47, 0x2a, 0x48, 0x06, 0x49,
- 0xce, 0x49, 0xa5, 0x4a, 0x77, 0x4b, 0x4e, 0x4c, 0x13, 0x4d, 0xdf, 0x4d,
- 0xaa, 0x4e, 0x74, 0x4f, 0x3d, 0x50, 0xfc, 0x50, 0xbd, 0x51, 0x8c, 0x52,
- 0x3e, 0x53, 0xfe, 0x53, 0x99, 0x54, 0x57, 0x55, 0xfc, 0x55, 0xab, 0x56,
- 0x45, 0x57, 0xd6, 0x57, 0x87, 0x58, 0x2f, 0x59, 0xbf, 0x59, 0x48, 0x5a,
- 0xc7, 0x5a, 0x54, 0x5b, 0xc8, 0x5b, 0x45, 0x5c, 0xb4, 0x5c, 0x25, 0x5d,
- 0x7e, 0x5d, 0xda, 0x5d, 0x36, 0x5e, 0xa5, 0x5e, 0xe9, 0x5e, 0x37, 0x5f,
- 0x72, 0x5f, 0xab, 0x5f, 0xe5, 0x5f, 0x1d, 0x60, 0x4f, 0x60, 0x81, 0x60,
- 0x9c, 0x60, 0xc3, 0x60, 0xdc, 0x60, 0xf7, 0x60, 0x04, 0x61, 0x16, 0x61,
- 0x1b, 0x61, 0x21, 0x61, 0x20, 0x61, 0x0d, 0x61, 0x0b, 0x61, 0xf0, 0x60,
- 0xe5, 0x60, 0xc7, 0x60, 0xb3, 0x60, 0x98, 0x60, 0x7c, 0x60, 0x59, 0x60,
- 0x4c, 0x60, 0x24, 0x60, 0x0d, 0x60, 0xdf, 0x5f, 0xb7, 0x5f, 0x87, 0x5f,
- 0x6b, 0x5f, 0x44, 0x5f, 0x28, 0x5f, 0xf5, 0x5e, 0xbd, 0x5e, 0x8f, 0x5e,
- 0x5c, 0x5e, 0x2a, 0x5e, 0xfe, 0x5d, 0xcd, 0x5d, 0xa4, 0x5d, 0x75, 0x5d,
- 0x4d, 0x5d, 0x11, 0x5d, 0xdf, 0x5c, 0xa9, 0x5c, 0x78, 0x5c, 0x42, 0x5c,
- 0x13, 0x5c, 0xde, 0x5b, 0xaf, 0x5b, 0x75, 0x5b, 0x3e, 0x5b, 0xfd, 0x5a,
- 0xbc, 0x5a, 0x90, 0x5a, 0x54, 0x5a, 0x1f, 0x5a, 0xe5, 0x59, 0xc2, 0x59,
- 0x80, 0x59, 0x39, 0x59, 0x0a, 0x59, 0xd6, 0x58, 0x96, 0x58, 0x55, 0x58,
- 0x1e, 0x58, 0xf1, 0x57, 0xc8, 0x57, 0x7e, 0x57, 0x44, 0x57, 0x11, 0x57,
- 0xd4, 0x56, 0x93, 0x56, 0x4c, 0x56, 0x11, 0x56, 0xd7, 0x55, 0xae, 0x55,
- 0x72, 0x55, 0x3c, 0x55, 0x0c, 0x55, 0xd1, 0x54, 0x98, 0x54, 0x63, 0x54,
- 0x2b, 0x54, 0xf8, 0x53, 0xc6, 0x53, 0x81, 0x53, 0x4b, 0x53, 0x19, 0x53,
- 0xea, 0x52, 0xb2, 0x52, 0x7e, 0x52, 0x30, 0x52, 0xc5, 0x51, 0x46, 0x51,
- 0xca, 0x50, 0x55, 0x50, 0xd7, 0x4f, 0x5d, 0x4f, 0xe4, 0x4e, 0x79, 0x4e,
- 0xfb, 0x4d, 0x83, 0x4d, 0x02, 0x4d, 0x8a, 0x4c, 0x1f, 0x4c, 0x98, 0x4b,
- 0x20, 0x4b, 0xa7, 0x4a, 0x36, 0x4a, 0xc0, 0x49, 0x44, 0x49, 0xc3, 0x48,
- 0x44, 0x48, 0xd5, 0x47, 0x59, 0x47, 0xe6, 0x46, 0x63, 0x46, 0xf8, 0x45,
- 0x79, 0x45, 0xfa, 0x44, 0x80, 0x44, 0x01, 0x44, 0x7a, 0x43, 0x04, 0x43,
- 0x85, 0x42, 0x07, 0x42, 0x92, 0x41, 0x17, 0x41, 0x94, 0x40, 0x16, 0x40,
- 0x9f, 0x3f, 0x20, 0x3f, 0x9c, 0x3e, 0x29, 0x3e, 0x9c, 0x3d, 0x20, 0x3d,
- 0x88, 0x3c, 0x0c, 0x3c, 0x87, 0x3b, 0x07, 0x3b, 0x89, 0x3a, 0xfb, 0x39,
- 0x6f, 0x39, 0xe7, 0x38, 0x55, 0x38, 0xcf, 0x37, 0x43, 0x37, 0xb5, 0x36,
- 0x2a, 0x36, 0x9c, 0x35, 0x0a, 0x35, 0x83, 0x34, 0xe6, 0x33, 0x53, 0x33,
- 0xba, 0x32, 0x1d, 0x32, 0x78, 0x31, 0xcb, 0x30, 0x34, 0x30, 0x8e, 0x2f,
- 0xf6, 0x2e, 0x56, 0x2e, 0xab, 0x2d, 0xfe, 0x2c, 0x4c, 0x2c, 0x9f, 0x2b,
- 0xed, 0x2a, 0x36, 0x2a, 0x7b, 0x29, 0xb9, 0x28, 0x02, 0x28, 0x41, 0x27,
- 0x81, 0x26, 0xb9, 0x25, 0xfb, 0x24, 0x2d, 0x24, 0x66, 0x23, 0x98, 0x22,
- 0xc6, 0x21, 0xe9, 0x20, 0x0d, 0x20, 0x28, 0x1f, 0x4c, 0x1e, 0x64, 0x1d,
- 0x66, 0x1c, 0x8c, 0x1b, 0x96, 0x1a, 0xac, 0x19, 0xb2, 0x18, 0xbb, 0x17,
- 0xc2, 0x16, 0xc7, 0x15, 0xcb, 0x14, 0xcd, 0x13, 0xc4, 0x12, 0xca, 0x11,
- 0xb6, 0x10, 0xb8, 0x0f, 0xa3, 0x0e, 0x9e, 0x0d, 0x88, 0x0c, 0x86, 0x0b,
- 0x7b, 0x0a, 0x7c, 0x09, 0x6d, 0x08, 0x5b, 0x07, 0x4a, 0x06, 0x38, 0x05,
- 0x2f, 0x04, 0x1c, 0x03, 0x10, 0x02, 0xf6, 0x00, 0xe9, 0xff, 0xe5, 0xfe,
- 0xcf, 0xfd, 0xc8, 0xfc, 0xb1, 0xfb, 0xa7, 0xfa, 0x8d, 0xf9, 0x7b, 0xf8,
- 0x7e, 0xf7, 0x77, 0xf6, 0x68, 0xf5, 0x62, 0xf4, 0x49, 0xf3, 0x42, 0xf2,
- 0x41, 0xf1, 0x3e, 0xf0, 0x49, 0xef, 0x47, 0xee, 0x56, 0xed, 0x46, 0xec,
- 0x56, 0xeb, 0x5c, 0xea, 0x6c, 0xe9, 0x7d, 0xe8, 0x9c, 0xe7, 0x99, 0xe6,
- 0xbf, 0xe5, 0xc9, 0xe4, 0xe5, 0xe3, 0xfd, 0xe2, 0x17, 0xe2, 0x26, 0xe1,
- 0x44, 0xe0, 0x6d, 0xdf, 0x9f, 0xde, 0xc5, 0xdd, 0xec, 0xdc, 0x26, 0xdc,
- 0x58, 0xdb, 0x91, 0xda, 0xb7, 0xd9, 0xf5, 0xd8, 0x27, 0xd8, 0x63, 0xd7,
- 0x96, 0xd6, 0xd5, 0xd5, 0x1a, 0xd5, 0x52, 0xd4, 0x9d, 0xd3, 0xde, 0xd2,
- 0x27, 0xd2, 0x6c, 0xd1, 0xb3, 0xd0, 0xf6, 0xcf, 0x51, 0xcf, 0x98, 0xce,
- 0xe9, 0xcd, 0x2f, 0xcd, 0x88, 0xcc, 0xdc, 0xcb, 0x41, 0xcb, 0x9f, 0xca,
- 0x01, 0xca, 0x60, 0xc9, 0xc4, 0xc8, 0x13, 0xc8, 0x7e, 0xc7, 0xe2, 0xc6,
- 0x51, 0xc6, 0xb6, 0xc5, 0x1a, 0xc5, 0x8e, 0xc4, 0xf6, 0xc3, 0x74, 0xc3,
- 0xdf, 0xc2, 0x59, 0xc2, 0xd2, 0xc1, 0x47, 0xc1, 0xbe, 0xc0, 0x3b, 0xc0,
- 0xbe, 0xbf, 0x3e, 0xbf, 0xc4, 0xbe, 0x39, 0xbe, 0xbf, 0xbd, 0x3e, 0xbd,
- 0xd7, 0xbc, 0x5d, 0xbc, 0xec, 0xbb, 0x73, 0xbb, 0x07, 0xbb, 0x96, 0xba,
- 0x24, 0xba, 0xb5, 0xb9, 0x49, 0xb9, 0xdd, 0xb8, 0x76, 0xb8, 0x02, 0xb8,
- 0xa8, 0xb7, 0x3c, 0xb7, 0xee, 0xb6, 0x82, 0xb6, 0x2b, 0xb6, 0xc3, 0xb5,
- 0x6e, 0xb5, 0x14, 0xb5, 0xc4, 0xb4, 0x6b, 0xb4, 0x20, 0xb4, 0xd2, 0xb3,
- 0x78, 0xb3, 0x2c, 0xb3, 0xe6, 0xb2, 0x9e, 0xb2, 0x58, 0xb2, 0x1a, 0xb2,
- 0xea, 0xb1, 0xa6, 0xb1, 0x63, 0xb1, 0x2b, 0xb1, 0xf3, 0xb0, 0xb8, 0xb0,
- 0x7b, 0xb0, 0x4e, 0xb0, 0x20, 0xb0, 0xf9, 0xaf, 0xc6, 0xaf, 0xa2, 0xaf,
- 0x84, 0xaf, 0x5e, 0xaf, 0x44, 0xaf, 0x21, 0xaf, 0x06, 0xaf, 0xe9, 0xae,
- 0xe2, 0xae, 0xd0, 0xae, 0xc3, 0xae, 0xba, 0xae, 0xc1, 0xae, 0xaf, 0xae,
- 0xbc, 0xae, 0xb5, 0xae, 0xc0, 0xae, 0xc3, 0xae, 0xd7, 0xae, 0xdd, 0xae,
- 0xfb, 0xae, 0x0a, 0xaf, 0x16, 0xaf, 0x37, 0xaf, 0x4a, 0xaf, 0x70, 0xaf,
- 0x86, 0xaf, 0xa9, 0xaf, 0xc7, 0xaf, 0xec, 0xaf, 0x12, 0xb0, 0x42, 0xb0,
- 0x66, 0xb0, 0x91, 0xb0, 0xc0, 0xb0, 0xee, 0xb0, 0x1a, 0xb1, 0x4c, 0xb1,
- 0x77, 0xb1, 0xb3, 0xb1, 0xdd, 0xb1, 0x10, 0xb2, 0x47, 0xb2, 0x70, 0xb2,
- 0xb8, 0xb2, 0xef, 0xb2, 0x26, 0xb3, 0x64, 0xb3, 0x90, 0xb3, 0xd8, 0xb3,
- 0x07, 0xb4, 0x4b, 0xb4, 0x83, 0xb4, 0xc7, 0xb4, 0xf4, 0xb4, 0x35, 0xb5,
- 0x70, 0xb5, 0xbc, 0xb5, 0xf0, 0xb5, 0x39, 0xb6, 0x7d, 0xb6, 0xb7, 0xb6,
- 0xfa, 0xb6, 0x2e, 0xb7, 0x7d, 0xb7, 0xbb, 0xb7, 0x01, 0xb8, 0x39, 0xb8,
- 0x80, 0xb8, 0xbd, 0xb8, 0x05, 0xb9, 0x46, 0xb9, 0x94, 0xb9, 0xcd, 0xb9,
- 0x17, 0xba, 0x5b, 0xba, 0x9e, 0xba, 0xdf, 0xba, 0x27, 0xbb, 0x6a, 0xbb,
- 0xbc, 0xbb, 0xf6, 0xbb, 0x3a, 0xbc, 0x83, 0xbc, 0xc3, 0xbc, 0x16, 0xbd,
- 0x58, 0xbd, 0xa2, 0xbd, 0xe0, 0xbd, 0x24, 0xbe, 0x70, 0xbe, 0xa1, 0xbe,
- 0xfa, 0xbe, 0x37, 0xbf, 0x8d, 0xbf, 0xc9, 0xbf, 0x1d, 0xc0, 0x5d, 0xc0,
- 0xa6, 0xc0, 0xe6, 0xc0, 0x2f, 0xc1, 0x7a, 0xc1, 0xcb, 0xc1, 0x2f, 0xc2,
- 0x95, 0xc2, 0xfa, 0xc2, 0x55, 0xc3, 0xbb, 0xc3, 0x1e, 0xc4, 0x86, 0xc4,
- 0xec, 0xc4, 0x4b, 0xc5, 0xab, 0xc5, 0x04, 0xc6, 0x72, 0xc6, 0xc6, 0xc6,
- 0x3a, 0xc7, 0x8e, 0xc7, 0xfd, 0xc7, 0x5a, 0xc8, 0xc0, 0xc8, 0x17, 0xc9,
- 0x79, 0xc9, 0xd5, 0xc9, 0x43, 0xca, 0x98, 0xca, 0x05, 0xcb, 0x64, 0xcb,
- 0xc3, 0xcb, 0x1e, 0xcc, 0x81, 0xcc, 0xe3, 0xcc, 0x40, 0xcd, 0xa6, 0xcd,
- 0x0a, 0xce, 0x6a, 0xce, 0xc0, 0xce, 0x26, 0xcf, 0x81, 0xcf, 0xf0, 0xcf,
- 0x48, 0xd0, 0xad, 0xd0, 0x07, 0xd1, 0x71, 0xd1, 0xca, 0xd1, 0x2b, 0xd2,
- 0x8a, 0xd2, 0xed, 0xd2, 0x50, 0xd3, 0xa1, 0xd3, 0x0f, 0xd4, 0x6f, 0xd4,
- 0xd6, 0xd4, 0x30, 0xd5, 0x93, 0xd5, 0xf6, 0xd5, 0x55, 0xd6, 0xb5, 0xd6,
- 0x12, 0xd7, 0x7b, 0xd7, 0xde, 0xd7, 0x34, 0xd8, 0x93, 0xd8, 0xe9, 0xd8,
- 0x61, 0xd9, 0xbb, 0xd9, 0x2b, 0xda, 0x88, 0xda, 0xeb, 0xda, 0x4f, 0xdb,
- 0xb9, 0xdb, 0x21, 0xdc, 0x80, 0xdc, 0xf7, 0xdc, 0x53, 0xdd, 0xbb, 0xdd,
- 0x2b, 0xde, 0xa4, 0xde, 0x05, 0xdf, 0x74, 0xdf, 0xd8, 0xdf, 0x44, 0xe0,
- 0xb4, 0xe0, 0x26, 0xe1, 0x91, 0xe1, 0x01, 0xe2, 0x77, 0xe2, 0xeb, 0xe2,
- 0x5e, 0xe3, 0xc7, 0xe3, 0x44, 0xe4, 0xb2, 0xe4, 0x25, 0xe5, 0xa3, 0xe5,
- 0x15, 0xe6, 0x97, 0xe6, 0x0b, 0xe7, 0x8b, 0xe7, 0x10, 0xe8, 0x7d, 0xe8,
- 0x06, 0xe9, 0x74, 0xe9, 0xff, 0xe9, 0x82, 0xea, 0x01, 0xeb, 0x85, 0xeb,
- 0xfa, 0xeb, 0x91, 0xec, 0x07, 0xed, 0x8f, 0xed, 0x15, 0xee, 0x9a, 0xee,
- 0x26, 0xef, 0xa5, 0xef, 0x26, 0xf0, 0xb2, 0xf0, 0x3e, 0xf1, 0xca, 0xf1,
- 0x45, 0xf2, 0xcc, 0xf2, 0x51, 0xf3, 0xdc, 0xf3, 0x5c, 0xf4, 0xe8, 0xf4,
- 0x6e, 0xf5, 0xf9, 0xf5, 0x79, 0xf6, 0xf9, 0xf6, 0x7d, 0xf7, 0x08, 0xf8,
- 0x91, 0xf8, 0x18, 0xf9, 0x95, 0xf9, 0x18, 0xfa, 0xa5, 0xfa, 0x21, 0xfb,
- 0xa9, 0xfb, 0x2a, 0xfc, 0xa7, 0xfc, 0x23, 0xfd, 0xa3, 0xfd, 0x2b, 0xfe,
- 0x9c, 0xfe, 0x2b, 0xff, 0xa0, 0xff, 0x1c, 0x00, 0x9a, 0x00, 0x11, 0x01,
- 0x9a, 0x01, 0x14, 0x02, 0x8c, 0x02, 0x07, 0x03, 0x84, 0x03, 0xf7, 0x03,
- 0x75, 0x04, 0xf3, 0x04, 0x65, 0x05, 0xe8, 0x05, 0x54, 0x06, 0xd3, 0x06,
- 0x48, 0x07, 0xc2, 0x07, 0x38, 0x08, 0xad, 0x08, 0x28, 0x09, 0x99, 0x09,
- 0x11, 0x0a, 0x79, 0x0a, 0xf5, 0x0a, 0x5c, 0x0b, 0xd1, 0x0b, 0x3f, 0x0c,
- 0xb5, 0x0c, 0x2c, 0x0d, 0x9a, 0x0d, 0x0b, 0x0e, 0x74, 0x0e, 0xe6, 0x0e,
- 0x45, 0x0f, 0xbd, 0x0f, 0x2f, 0x10, 0x9a, 0x10, 0x05, 0x11, 0x6c, 0x11,
- 0xdb, 0x11, 0x40, 0x12, 0xaa, 0x12, 0x14, 0x13, 0x81, 0x13, 0xe9, 0x13,
- 0x4d, 0x14, 0xb9, 0x14, 0x18, 0x15, 0x88, 0x15, 0xe6, 0x15, 0x58, 0x16,
- 0xb9, 0x16, 0x1c, 0x17, 0x7e, 0x17, 0xe3, 0x17, 0x43, 0x18, 0xac, 0x18,
- 0x08, 0x19, 0x6d, 0x19, 0xce, 0x19, 0x34, 0x1a, 0x90, 0x1a, 0xf5, 0x1a,
- 0x53, 0x1b, 0xbb, 0x1b, 0x07, 0x1c, 0x6f, 0x1c, 0xc2, 0x1c, 0x28, 0x1d,
- 0x84, 0x1d, 0xe8, 0x1d, 0x35, 0x1e, 0xa2, 0x1e, 0xf8, 0x1e, 0x59, 0x1f,
- 0xb8, 0x1f, 0x0c, 0x20, 0x69, 0x20, 0xbe, 0x20, 0x19, 0x21, 0x66, 0x21,
- 0xc6, 0x21, 0x1f, 0x22, 0x70, 0x22, 0xbe, 0x22, 0x18, 0x23, 0x72, 0x23,
- 0xbf, 0x23, 0x0f, 0x24, 0x67, 0x24, 0xc0, 0x24, 0x08, 0x25, 0x51, 0x25,
- 0xa6, 0x25, 0xf4, 0x25, 0x42, 0x26, 0x93, 0x26, 0xd6, 0x26, 0x25, 0x27,
- 0x6c, 0x27, 0xb7, 0x27, 0x07, 0x28, 0x49, 0x28, 0x96, 0x28, 0xda, 0x28,
- 0x22, 0x29, 0x66, 0x29, 0xa4, 0x29, 0xe8, 0x29, 0x20, 0x2a, 0x62, 0x2a,
- 0xa9, 0x2a, 0xe5, 0x2a, 0x21, 0x2b, 0x5a, 0x2b, 0x97, 0x2b, 0xc1, 0x2b,
- 0xfe, 0x2b, 0x28, 0x2c, 0x57, 0x2c, 0x88, 0x2c, 0xae, 0x2c, 0xd3, 0x2c,
- 0xfa, 0x2c, 0x17, 0x2d, 0x33, 0x2d, 0x4b, 0x2d, 0x5d, 0x2d, 0x68, 0x2d,
- 0x81, 0x2d, 0x92, 0x2d, 0x9e, 0x2d, 0xa9, 0x2d, 0xbb, 0x2d, 0xc3, 0x2d,
- 0xcd, 0x2d, 0xd5, 0x2d, 0xcd, 0x2d, 0xdc, 0x2d, 0xe3, 0x2d, 0xe1, 0x2d,
- 0xdd, 0x2d, 0xd9, 0x2d, 0xd7, 0x2d, 0xcf, 0x2d, 0xe0, 0x2d, 0xd2, 0x2d,
- 0xd2, 0x2d, 0xcb, 0x2d, 0xb7, 0x2d, 0xb6, 0x2d, 0xa1, 0x2d, 0x9e, 0x2d,
- 0x8b, 0x2d, 0x84, 0x2d, 0x68, 0x2d, 0x6a, 0x2d, 0x4e, 0x2d, 0x45, 0x2d,
- 0x2f, 0x2d, 0x18, 0x2d, 0x15, 0x2d, 0xef, 0x2c, 0xe8, 0x2c, 0xc9, 0x2c,
- 0xc7, 0x2c, 0xaa, 0x2c, 0x9b, 0x2c, 0x7c, 0x2c, 0x64, 0x2c, 0x3c, 0x2c,
- 0x2e, 0x2c, 0x16, 0x2c, 0x05, 0x2c, 0xe1, 0x2b, 0xc8, 0x2b, 0xb5, 0x2b,
- 0x9a, 0x2b, 0x7c, 0x2b, 0x61, 0x2b, 0x3f, 0x2b, 0x21, 0x2b, 0x01, 0x2b,
- 0xee, 0x2a, 0xd0, 0x2a, 0xb3, 0x2a, 0x95, 0x2a, 0x6d, 0x2a, 0x50, 0x2a,
- 0x2b, 0x2a, 0x0b, 0x2a, 0xe9, 0x29, 0xd1, 0x29, 0xa8, 0x29, 0x97, 0x29,
- 0x6c, 0x29, 0x51, 0x29, 0x24, 0x29, 0x03, 0x29, 0xe6, 0x28, 0xbe, 0x28,
- 0xa1, 0x28, 0x80, 0x28, 0x64, 0x28, 0x38, 0x28, 0x12, 0x28, 0xf0, 0x27,
- 0xd3, 0x27, 0xac, 0x27, 0x94, 0x27, 0x67, 0x27, 0x4a, 0x27, 0x1c, 0x27,
- 0xf7, 0x26, 0xd1, 0x26, 0xb6, 0x26, 0x8d, 0x26, 0x6e, 0x26, 0x4b, 0x26,
- 0x25, 0x26, 0x02, 0x26, 0xd8, 0x25, 0xbe, 0x25, 0x93, 0x25, 0x7c, 0x25,
- 0x4a, 0x25, 0x27, 0x25, 0x07, 0x25, 0xdc, 0x24, 0xbb, 0x24, 0x9a, 0x24,
- 0x78, 0x24, 0x4c, 0x24, 0x26, 0x24, 0x00, 0x24, 0xd7, 0x23, 0xc0, 0x23,
- 0x94, 0x23, 0x71, 0x23, 0x45, 0x23, 0x1c, 0x23, 0x00, 0x23, 0xd4, 0x22,
- 0xb5, 0x22, 0x8e, 0x22, 0x67, 0x22, 0x39, 0x22, 0x00, 0x22, 0xbd, 0x21,
- 0x87, 0x21, 0x46, 0x21, 0x01, 0x21, 0xca, 0x20, 0x89, 0x20, 0x4a, 0x20,
- 0x17, 0x20, 0xd6, 0x1f, 0x9a, 0x1f, 0x5e, 0x1f, 0x20, 0x1f, 0xe0, 0x1e,
- 0xa3, 0x1e, 0x5f, 0x1e, 0x29, 0x1e, 0xf0, 0x1d, 0xb8, 0x1d, 0x78, 0x1d,
- 0x36, 0x1d, 0x04, 0x1d, 0xc6, 0x1c, 0x8b, 0x1c, 0x4d, 0x1c, 0x18, 0x1c,
- 0xd9, 0x1b, 0x97, 0x1b, 0x5c, 0x1b, 0x2b, 0x1b, 0xf4, 0x1a, 0xb1, 0x1a,
- 0x7c, 0x1a, 0x32, 0x1a, 0x02, 0x1a, 0xc6, 0x19, 0x8b, 0x19, 0x59, 0x19,
- 0x10, 0x19, 0xd7, 0x18, 0x9c, 0x18, 0x62, 0x18, 0x22, 0x18, 0xe8, 0x17,
- 0xb1, 0x17, 0x7c, 0x17, 0x34, 0x17, 0xf9, 0x16, 0xc0, 0x16, 0x8b, 0x16,
- 0x55, 0x16, 0x14, 0x16, 0xdd, 0x15, 0x9f, 0x15, 0x65, 0x15, 0x2b, 0x15,
- 0xea, 0x14, 0xb9, 0x14, 0x70, 0x14, 0x3d, 0x14, 0x05, 0x14, 0xc1, 0x13,
- 0x86, 0x13, 0x45, 0x13, 0x09, 0x13, 0xca, 0x12, 0x90, 0x12, 0x57, 0x12,
- 0x1a, 0x12, 0xe1, 0x11, 0x9b, 0x11, 0x61, 0x11, 0x1d, 0x11, 0xe1, 0x10,
- 0x9d, 0x10, 0x64, 0x10, 0x17, 0x10, 0xde, 0x0f, 0xa1, 0x0f, 0x60, 0x0f,
- 0x1b, 0x0f, 0xd8, 0x0e, 0x90, 0x0e, 0x5b, 0x0e, 0x0e, 0x0e, 0xd3, 0x0d,
- 0x86, 0x0d, 0x4d, 0x0d, 0xf5, 0x0c, 0xba, 0x0c, 0x68, 0x0c, 0x2a, 0x0c,
- 0xde, 0x0b, 0x94, 0x0b, 0x4e, 0x0b, 0x07, 0x0b, 0xbb, 0x0a, 0x6c, 0x0a,
- 0x25, 0x0a, 0xd4, 0x09, 0x89, 0x09, 0x39, 0x09, 0xe6, 0x08, 0xa3, 0x08,
- 0x4f, 0x08, 0x02, 0x08, 0xa7, 0x07, 0x5f, 0x07, 0x08, 0x07, 0xba, 0x06,
- 0x68, 0x06, 0x1f, 0x06, 0xc5, 0x05, 0x7a, 0x05, 0x1f, 0x05, 0xd7, 0x04,
- 0x85, 0x04, 0x31, 0x04, 0xde, 0x03, 0x89, 0x03, 0x3a, 0x03, 0xe9, 0x02,
- 0x96, 0x02, 0x47, 0x02, 0xf7, 0x01, 0xa4, 0x01, 0x5d, 0x01, 0x06, 0x01,
- 0xb9, 0x00
-};
-unsigned int kick_raw_len = 6350;
diff --git a/third-party/TeensyVariablePlayback.O/examples/midilooper/CMakeLists.txt b/third-party/TeensyVariablePlayback.O/examples/midilooper/CMakeLists.txt
deleted file mode 100644
index 2e2acbb..0000000
--- a/third-party/TeensyVariablePlayback.O/examples/midilooper/CMakeLists.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-cmake_minimum_required(VERSION 3.10)
-project(sampleloader)
-set(CMAKE_CXX_STANDARD 14)
-teensy_include_directories(../../src)
-
-import_arduino_library(sampleflashloader ${DEPSPATH}/teensy-sample-flashloader/src)
-import_arduino_library(midi ${DEPSPATH}/MIDI/src)
-
-teensy_add_executable(sampleloader sampleloader.ino)
-teensy_target_link_libraries(sampleloader midi sampleflashloader SD SdFat Audio teensy_variable_playback cores arm_math SPI Wire SerialFlash )
diff --git a/third-party/TeensyVariablePlayback.O/examples/midilooper/midilooper.ino b/third-party/TeensyVariablePlayback.O/examples/midilooper/midilooper.ino
deleted file mode 100644
index dd95858..0000000
--- a/third-party/TeensyVariablePlayback.O/examples/midilooper/midilooper.ino
+++ /dev/null
@@ -1,87 +0,0 @@
-#include
-#include
-#include
-#include
-#include "flashloader.h"
-
-// GUItool: begin automatically generated code
-AudioPlayArrayResmp rraw_a1; //xy=321,513
-AudioOutputI2S i2s1; //xy=675,518
-AudioConnection patchCord1(rraw_a1, 0, i2s1, 0);
-AudioConnection patchCord2(rraw_a1, 0, i2s1, 1);
-AudioControlSGTL5000 sgtl5000_1; //xy=521,588
-// GUItool: end automatically generated code
-#define A14 10
-
-MIDI_CREATE_DEFAULT_INSTANCE();
-const int analogInPin = A14;
-newdigate::audiosample *sample;
-
-double getPlaybackRate(int16_t analog) { //analog: 0..1023
- return (analog - 512.0) / 512.0;
-}
-
-float calcFrequency(uint8_t note) {
- float result = 440.0 * powf(2.0, (note-69) / 12.0);
- return result;
-}
-
-void handleNoteOn(uint8_t channel, uint8_t pitch, uint8_t velocity)
-{
- rraw_a1.setLoopType(loop_type::looptype_repeat);
- float freq = calcFrequency(pitch);
- uint32_t numSamples = 44100 / freq;
- rraw_a1.startLoop(numSamples);
-}
-
-void handleNoteOff(uint8_t channel, uint8_t pitch, uint8_t velocity)
-{
- rraw_a1.setLoopType(loop_type::looptype_none);
-}
-
-void setup() {
- analogReference(0);
- pinMode(analogInPin, INPUT_DISABLE); // i.e. Analog
-
- Serial.begin(9600);
- while (!SD.begin(BUILTIN_SDCARD)) {
- Serial.println("initialization failed!");
- delay(1000);
- }
-
- MIDI.setHandleNoteOn(handleNoteOn);
- MIDI.setHandleNoteOff(handleNoteOff);
- MIDI.begin(MIDI_CHANNEL_OMNI);
-
- sgtl5000_1.enable();
- sgtl5000_1.volume(0.5f, 0.5f);
-
- rraw_a1.enableInterpolation(true);
- int newsensorValue = analogRead(analogInPin);
- rraw_a1.setPlaybackRate(getPlaybackRate(newsensorValue));
- newdigate::flashloader loader;
- sample = loader.loadSample("MONKS.RAW");
-
- AudioMemory(50);
- Serial.println("setup done");
-}
-
-void loop() {
- int newsensorValue = analogRead(analogInPin);
- rraw_a1.setPlaybackRate(getPlaybackRate(newsensorValue));
-
- unsigned currentMillis = millis();
- if (currentMillis > lastSamplePlayed + 500) {
- if (!rraw_a1.isPlaying()) {
- rraw_a1.play(sample->sampledata, sample->samplesize/2);
- lastSamplePlayed = currentMillis;
-
- Serial.print("Memory: ");
- Serial.print(AudioMemoryUsage());
- Serial.print(",");
- Serial.print(AudioMemoryUsageMax());
- Serial.println();
- }
- }
- delay(10);
-}
diff --git a/third-party/TeensyVariablePlayback.O/examples/sampleloader/CMakeLists.txt b/third-party/TeensyVariablePlayback.O/examples/sampleloader/CMakeLists.txt
deleted file mode 100644
index 916c55c..0000000
--- a/third-party/TeensyVariablePlayback.O/examples/sampleloader/CMakeLists.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-cmake_minimum_required(VERSION 3.10)
-project(sampleloader)
-set(CMAKE_CXX_STANDARD 14)
-teensy_include_directories(../../src)
-
-import_arduino_library(sampleflashloader ${DEPSPATH}/teensy-sample-flashloader/src)
-
-teensy_add_executable(sampleloader sampleloader.ino)
-teensy_target_link_libraries(sampleloader sampleflashloader SD SdFat Audio teensy_variable_playback cores arm_math SPI Wire SerialFlash )
diff --git a/third-party/TeensyVariablePlayback.O/examples/sampleloader/README.md b/third-party/TeensyVariablePlayback.O/examples/sampleloader/README.md
deleted file mode 100644
index 9280162..0000000
--- a/third-party/TeensyVariablePlayback.O/examples/sampleloader/README.md
+++ /dev/null
@@ -1 +0,0 @@
-this example uses [teensy-sample-flashloader](https://github.com/newdigate/teensy-sample-flashloader) to copy samples from the uSD card to the external flash memory
diff --git a/third-party/TeensyVariablePlayback.O/examples/sampleloader/sampleloader.ino b/third-party/TeensyVariablePlayback.O/examples/sampleloader/sampleloader.ino
deleted file mode 100644
index 605621c..0000000
--- a/third-party/TeensyVariablePlayback.O/examples/sampleloader/sampleloader.ino
+++ /dev/null
@@ -1,66 +0,0 @@
-// Plays a RAW (16-bit signed) PCM audio file at slower or faster rate
-// this example plays a sample stored in an array
-#include
-#include
-#include
-#include "flashloader.h"
-
-// GUItool: begin automatically generated code
-AudioPlayArrayResmp rraw_a1; //xy=321,513
-AudioOutputI2S i2s1; //xy=675,518
-AudioConnection patchCord1(rraw_a1, 0, i2s1, 0);
-AudioConnection patchCord2(rraw_a1, 0, i2s1, 1);
-AudioControlSGTL5000 sgtl5000_1; //xy=521,588
-// GUItool: end automatically generated code
-#define A14 10
-
-unsigned long lastSamplePlayed = 0;
-const int analogInPin = A14;
-newdigate::audiosample *sample;
-
-double getPlaybackRate(int16_t analog) { //analog: 0..1023
- return (analog - 512.0) / 512.0;
-}
-
-void setup() {
- analogReference(0);
- pinMode(analogInPin, INPUT_DISABLE); // i.e. Analog
-
- Serial.begin(9600);
- while (!SD.begin(BUILTIN_SDCARD)) {
- Serial.println("initialization failed!");
- delay(1000);
- }
-
- sgtl5000_1.enable();
- sgtl5000_1.volume(0.5f, 0.5f);
-
- rraw_a1.enableInterpolation(true);
- int newsensorValue = analogRead(analogInPin);
- rraw_a1.setPlaybackRate(getPlaybackRate(newsensorValue));
- newdigate::flashloader loader;
- sample = loader.loadSample("KICK.RAW");
-
- AudioMemory(20);
- Serial.println("setup done");
-}
-
-void loop() {
- int newsensorValue = analogRead(analogInPin);
- rraw_a1.setPlaybackRate(getPlaybackRate(newsensorValue));
-
- unsigned currentMillis = millis();
- if (currentMillis > lastSamplePlayed + 500) {
- if (!rraw_a1.isPlaying()) {
- rraw_a1.playRaw(sample->sampledata, sample->samplesize/2, 1);
- lastSamplePlayed = currentMillis;
-
- Serial.print("Memory: ");
- Serial.print(AudioMemoryUsage());
- Serial.print(",");
- Serial.print(AudioMemoryUsageMax());
- Serial.println();
- }
- }
- delay(10);
-}
diff --git a/third-party/TeensyVariablePlayback.O/examples/sd_play_all/CMakeLists.txt b/third-party/TeensyVariablePlayback.O/examples/sd_play_all/CMakeLists.txt
deleted file mode 100644
index 77da493..0000000
--- a/third-party/TeensyVariablePlayback.O/examples/sd_play_all/CMakeLists.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-cmake_minimum_required(VERSION 3.10)
-project(sd_play_all)
-set(CMAKE_CXX_STANDARD 14)
-teensy_include_directories(../../src)
-teensy_add_executable(sd_play_all sd_play_all.ino)
-teensy_target_link_libraries(sd_play_all SD SdFat teensy_variable_playback Audio SPI SerialFlash cores Wire arm_math)
diff --git a/third-party/TeensyVariablePlayback.O/examples/sd_play_all/sd_play_all.ino b/third-party/TeensyVariablePlayback.O/examples/sd_play_all/sd_play_all.ino
deleted file mode 100644
index 41d190d..0000000
--- a/third-party/TeensyVariablePlayback.O/examples/sd_play_all/sd_play_all.ino
+++ /dev/null
@@ -1,147 +0,0 @@
-// Plays all WAV files from the root directory on the SD card
-#include
-#include
-#include
-#include
-
-// GUItool: begin automatically generated code
-AudioPlaySdResmp playSd1; //xy=324,457
-AudioOutputI2S i2s2; //xy=840.8571472167969,445.5714416503906
-AudioConnection patchCord1(playSd1, 0, i2s2, 0);
-AudioConnection patchCord2(playSd1, 1, i2s2, 1);
-AudioControlSGTL5000 audioShield;
-// GUItool: end automatically generated code
-
-#define A14 10
-
-char** _filenames = nullptr;
-uint16_t _fileIndex = 0;
-uint16_t _numWaveFiles = 0;
-
-const int analogInPin = A14;
-unsigned long lastSamplePlayed = 0;
-
-double getPlaybackRate(int16_t analog) { //analog: 0..1023
- return (analog - 512.0) / 512.0;
-}
-
-uint16_t getNumWavFilesInDirectory(char *directory);
-void populateFilenames(char *directory, char **filenames);
-
-void setup() {
- analogReference(0);
- pinMode(analogInPin, INPUT_DISABLE); // i.e. Analog
-
- Serial.begin(57600);
-
- if (!(SD.begin(BUILTIN_SDCARD))) {
- // stop here if no SD card, but print a message
- while (1) {
- Serial.println("Unable to access the SD card");
- delay(500);
- }
- }
- audioShield.enable();
- audioShield.volume(0.5);
-
- playSd1.enableInterpolation(true);
- int newsensorValue = analogRead(analogInPin);
- playSd1.setPlaybackRate(getPlaybackRate(newsensorValue));
-
- _numWaveFiles = getNumWavFilesInDirectory("/");
- Serial.printf("Num wave files: %d\n", _numWaveFiles);
- _filenames = new char*[_numWaveFiles];
- populateFilenames("/", _filenames);
-
- AudioMemory(24);
-}
-
-void loop() {
-
- int newsensorValue = analogRead(analogInPin);
- playSd1.setPlaybackRate(getPlaybackRate(newsensorValue));
-
- unsigned currentMillis = millis();
- if (currentMillis > lastSamplePlayed + 1000) {
- if (!playSd1.isPlaying()) {
-
- if (playSd1.playWav(_filenames[_fileIndex])) {
- lastSamplePlayed = currentMillis;
- Serial.printf("playing %s\n", _filenames[_fileIndex]);
- }
- _fileIndex++;
- _fileIndex %= _numWaveFiles;
- Serial.print("Memory: ");
- Serial.print(AudioMemoryUsage());
- Serial.print(",");
- Serial.print(AudioMemoryUsageMax());
- Serial.println();
- }
- }
- delay(10);
-}
-
-uint16_t getNumWavFilesInDirectory(char *directory) {
- File dir = SD.open(directory);
- uint16_t numWaveFiles = 0;
-
- while (true) {
-
- File files = dir.openNextFile();
- if (!files) {
- //If no more files, break out.
- break;
- }
-
- String curfile = files.name(); //put file in string
-
- int m = curfile.lastIndexOf(".WAV");
- int a = curfile.lastIndexOf(".wav");
- int underscore = curfile.indexOf("_");
-
- // if returned results is more then 0 add them to the list.
- if ((m > 0 || a > 0) && (underscore != 0)) {
- numWaveFiles++;
- }
-
- files.close();
- }
- // close
- dir.close();
- return numWaveFiles;
-}
-
-void populateFilenames(char *directory, char **filenames) {
- File dir = SD.open(directory);
- uint16_t index = 0;
-
- while (true) {
-
- File files = dir.openNextFile();
- if (!files) {
- //If no more files, break out.
- break;
- }
-
- String curfile = files.name(); //put file in string
-
- int m = curfile.lastIndexOf(".WAV");
- int a = curfile.lastIndexOf(".wav");
- int underscore = curfile.indexOf("_");
-
- // if returned results is more then 0 add them to the list.
- if ((m > 0 || a > 0) && (underscore != 0)) {
- filenames[index] = new char[curfile.length()+1] {0};
- memcpy(filenames[index], curfile.c_str(), curfile.length());
- index++;
- }
- files.close();
- }
- // close
- dir.close();
-}
-
-namespace std {
- void __throw_bad_function_call() {}
- void __throw_length_error(char const*) {}
-}
diff --git a/third-party/TeensyVariablePlayback.O/examples/sd_raw/CMakeLists.txt b/third-party/TeensyVariablePlayback.O/examples/sd_raw/CMakeLists.txt
deleted file mode 100644
index 52de86b..0000000
--- a/third-party/TeensyVariablePlayback.O/examples/sd_raw/CMakeLists.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-cmake_minimum_required(VERSION 3.10)
-project(sd_raw)
-set(CMAKE_CXX_STANDARD 14)
-teensy_include_directories(../../src)
-teensy_add_executable(sd_raw sd_raw.ino)
-teensy_target_link_libraries(sd_raw SD SdFat teensy_variable_playback Audio SPI SerialFlash cores Wire arm_math)
diff --git a/third-party/TeensyVariablePlayback.O/examples/sd_raw/sd_raw.ino b/third-party/TeensyVariablePlayback.O/examples/sd_raw/sd_raw.ino
deleted file mode 100644
index d651c88..0000000
--- a/third-party/TeensyVariablePlayback.O/examples/sd_raw/sd_raw.ino
+++ /dev/null
@@ -1,74 +0,0 @@
-// Plays a RAW (16-bit signed) PCM audio file at slower or faster rate
-// this example requires an uSD-card inserted to teensy 3.6 with a file called DEMO.RAW
-#include
-#include
-#include
-#include
-
-// GUItool: begin automatically generated code
-AudioPlaySdResmp playSdRaw1; //xy=324,457
-AudioOutputI2S i2s2; //xy=840.8571472167969,445.5714416503906
-AudioConnection patchCord1(playSdRaw1, 0, i2s2, 0);
-AudioConnection patchCord2(playSdRaw1, 0, i2s2, 1);
-AudioControlSGTL5000 audioShield;
-// GUItool: end automatically generated code
-
-#define A14 10
-
-const char* _filename = "DEMO.RAW";
-const int analogInPin = A14;
-unsigned long lastSamplePlayed = 0;
-
-double getPlaybackRate(int16_t analog) { //analog: 0..1023
- return (analog - 512.0) / 512.0;
-}
-
-void setup() {
- analogReference(0);
- pinMode(analogInPin, INPUT_DISABLE); // i.e. Analog
-
- Serial.begin(57600);
-
- if (!(SD.begin(BUILTIN_SDCARD))) {
- // stop here if no SD card, but print a message
- while (1) {
- Serial.println("Unable to access the SD card");
- delay(500);
- }
- }
- audioShield.enable();
- audioShield.volume(0.5);
-
- playSdRaw1.enableInterpolation(true);
- int newsensorValue = analogRead(analogInPin);
- playSdRaw1.setPlaybackRate(getPlaybackRate(newsensorValue));
-
- AudioMemory(24);
-}
-
-void loop() {
-
- int newsensorValue = analogRead(analogInPin);
- playSdRaw1.setPlaybackRate(getPlaybackRate(newsensorValue));
-
- unsigned currentMillis = millis();
- if (currentMillis > lastSamplePlayed + 500) {
- if (!playSdRaw1.isPlaying()) {
- playSdRaw1.playRaw(_filename, 1);
- lastSamplePlayed = currentMillis;
-
- Serial.print("Memory: ");
- Serial.print(AudioMemoryUsage());
- Serial.print(",");
- Serial.print(AudioMemoryUsageMax());
- Serial.println();
- }
- }
- delay(10);
-}
-
-
-namespace std {
- void __throw_bad_function_call() {}
- void __throw_length_error(char const*) {}
-}
\ No newline at end of file
diff --git a/third-party/TeensyVariablePlayback.O/examples/sd_wav/CMakeLists.txt b/third-party/TeensyVariablePlayback.O/examples/sd_wav/CMakeLists.txt
deleted file mode 100644
index 018e7a7..0000000
--- a/third-party/TeensyVariablePlayback.O/examples/sd_wav/CMakeLists.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-cmake_minimum_required(VERSION 3.10)
-project(sd_wav)
-set(CMAKE_CXX_STANDARD 14)
-teensy_include_directories(../../src)
-teensy_add_executable(sd_wav sd_wav.ino)
-teensy_target_link_libraries(sd_wav SD SdFat teensy_variable_playback Audio SPI SerialFlash cores Wire arm_math)
diff --git a/third-party/TeensyVariablePlayback.O/examples/sd_wav/sd_wav.ino b/third-party/TeensyVariablePlayback.O/examples/sd_wav/sd_wav.ino
deleted file mode 100644
index 45bc4cd..0000000
--- a/third-party/TeensyVariablePlayback.O/examples/sd_wav/sd_wav.ino
+++ /dev/null
@@ -1,81 +0,0 @@
-// Plays a Wav (16-bit signed) PCM audio file at slower or faster rate
-// this example requires an uSD-card inserted to teensy 3.6 with a file called DEMO.WAV
-#include
-#include
-#include
-#include
-
-// GUItool: begin automatically generated code
-AudioPlaySdResmp playSdWav1; //xy=324,457
-AudioOutputI2S i2s2; //xy=840.8571472167969,445.5714416503906
-AudioConnection patchCord1(playSdWav1, 0, i2s2, 0);
-AudioConnection patchCord2(playSdWav1, 0, i2s2, 1);
-AudioControlSGTL5000 audioShield;
-// GUItool: end automatically generated code
-
-#define A14 10
-
-char* _filename = "DEMO.WAV";
-const int analogInPin = A14;
-unsigned long lastSamplePlayed = 0;
-
-double getPlaybackRate(int16_t analog) { //analog: 0..1023
- return (analog - 512.0) / 512.0;
-}
-
-void setup() {
- analogReference(0);
- pinMode(analogInPin, INPUT_DISABLE); // i.e. Analog
-
- Serial.begin(57600);
-
- if (!(SD.begin(BUILTIN_SDCARD))) {
- // stop here if no SD card, but print a message
- while (1) {
- Serial.println("Unable to access the SD card");
- delay(500);
- }
- }
-
- AudioMemory(24);
-
- audioShield.enable();
- audioShield.volume(0.5);
-
- playSdWav1.enableInterpolation(true);
- int newsensorValue = analogRead(analogInPin);
- playSdWav1.setPlaybackRate(getPlaybackRate(newsensorValue));
-
- Serial.println("playing...");
-}
-
-void loop() {
- int newsensorValue = analogRead(analogInPin);
- playSdWav1.setPlaybackRate(getPlaybackRate(newsensorValue));
-
- unsigned currentMillis = millis();
- if (currentMillis > lastSamplePlayed + 500) {
- if (!playSdWav1.isPlaying()) {
- playSdWav1.playWav(_filename);
- lastSamplePlayed = currentMillis;
-
- Serial.print("all=");
- Serial.print(AudioProcessorUsage());
- Serial.print(",");
- Serial.print(AudioProcessorUsageMax());
- Serial.print(" ");
- Serial.print("Memory: ");
- Serial.print(AudioMemoryUsage());
- Serial.print(",");
- Serial.print(AudioMemoryUsageMax());
- Serial.println();
- }
- }
- delay(10);
-}
-
-
-namespace std {
- void __throw_bad_function_call() {}
- void __throw_length_error(char const*) {}
-}
\ No newline at end of file
diff --git a/third-party/TeensyVariablePlayback.O/extras/linux/array/CMakeLists.txt b/third-party/TeensyVariablePlayback.O/extras/linux/array/CMakeLists.txt
deleted file mode 100644
index aa54190..0000000
--- a/third-party/TeensyVariablePlayback.O/extras/linux/array/CMakeLists.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-cmake_minimum_required(VERSION 3.10)
-project(array)
-set(CMAKE_CXX_STANDARD 14)
-
-find_package(teensy_x86_stubs)
-include_directories(${teensy_x86_stubs_INCLUDE_DIR})
-
-find_package(teensy_audio_x86_stubs)
-include_directories(${teensy_audio_x86_stubs_INCLUDE_DIR})
-
-find_package(teensy_x86_sd_stubs)
-include_directories(${teensy_x86_sd_stubs_INCLUDE_DIR})
-
-include_directories(../../../src)
-
-add_executable(array array.cpp)
-
-target_link_libraries(array ${teensy_x86_stubs_LIBS})
-target_link_libraries(array ${teensy_audio_x86_stubs_LIBS})
-target_link_libraries(array ${teensy_x86_sd_stubs_LIBS})
-target_link_libraries(array teensy_variable_playback)
diff --git a/third-party/TeensyVariablePlayback.O/extras/linux/array/array.cpp b/third-party/TeensyVariablePlayback.O/extras/linux/array/array.cpp
deleted file mode 100644
index 0a26672..0000000
--- a/third-party/TeensyVariablePlayback.O/extras/linux/array/array.cpp
+++ /dev/null
@@ -1,579 +0,0 @@
-// Plays a RAW (16-bit signed) PCM audio file at slower or faster rate
-// this example plays a sample stored in an array
-#include
-#include
-#include "playarrayresmp.h"
-
-// GUItool: begin automatically generated code
-AudioPlayArrayResmp rraw_a1; //xy=321,513
-AudioOutputI2S i2s1; //xy=675,518
-AudioConnection patchCord1(rraw_a1, 0, i2s1, 0);
-AudioConnection patchCord2(rraw_a1, 0, i2s1, 1);
-AudioControlSGTL5000 sgtl5000_1; //xy=521,588
-// GUItool: end automatically generated code
-
-extern unsigned int kick_raw_len;
-extern unsigned char kick_raw[];
-
-void setup() {
- Serial.begin(9600);
- AudioMemory(20);
- sgtl5000_1.enable();
- sgtl5000_1.volume(0.5f, 0.5f);
-
- rraw_a1.setPlaybackRate(0.5);
- rraw_a1.playRaw((int16_t*)kick_raw, kick_raw_len/2, 1);
- Serial.println("setup done");
-}
-
-void loop() {
- if (!rraw_a1.isPlaying()) {
- delay(1000);
- rraw_a1.playRaw((int16_t*)kick_raw, kick_raw_len/2, 1);
- } else
- delay(100);
-}
-
-#ifdef BUILD_FOR_LINUX
-int main() {
- initialize_mock_arduino();
- setup();
- while(true){
- loop();
- }
-}
-#endif
-
-unsigned char kick_raw[] = {
- 0x99, 0x02, 0xd7, 0x02, 0xfa, 0x02, 0x5f, 0x03, 0xc1, 0x03, 0x2a, 0x04,
- 0xad, 0x04, 0xa5, 0x05, 0x76, 0x06, 0x2f, 0x07, 0x9e, 0x07, 0xe2, 0x07,
- 0x43, 0x08, 0x92, 0x08, 0xb2, 0x08, 0xe8, 0x08, 0x16, 0x09, 0xda, 0x08,
- 0x51, 0x08, 0x01, 0x08, 0x25, 0x08, 0x70, 0x08, 0xc3, 0x08, 0x23, 0x09,
- 0x95, 0x09, 0x19, 0x0a, 0x83, 0x0a, 0x7e, 0x0a, 0xd0, 0x0a, 0x65, 0x0b,
- 0xf6, 0x0b, 0x89, 0x0c, 0xd1, 0x0c, 0xcf, 0x0c, 0x1a, 0x0d, 0xe5, 0x0d,
- 0x5e, 0x0e, 0xbb, 0x0e, 0xec, 0x0e, 0xd9, 0x0e, 0x07, 0x0f, 0xc8, 0x0f,
- 0x2a, 0x10, 0x04, 0x10, 0x28, 0x10, 0x54, 0x11, 0x8e, 0x13, 0x4b, 0x16,
- 0x09, 0x19, 0x91, 0x1b, 0xf7, 0x1d, 0x55, 0x20, 0xd1, 0x22, 0xcb, 0x25,
- 0x4d, 0x29, 0xa8, 0x2c, 0x7f, 0x2f, 0xda, 0x31, 0xac, 0x34, 0x0a, 0x3a,
- 0x24, 0x47, 0x9d, 0x5b, 0xe9, 0x67, 0x29, 0x67, 0x24, 0x66, 0x26, 0x66,
- 0xd2, 0x65, 0x9c, 0x65, 0x38, 0x65, 0x05, 0x65, 0x9f, 0x64, 0x64, 0x64,
- 0x12, 0x64, 0xce, 0x63, 0x7c, 0x63, 0x32, 0x63, 0xe6, 0x62, 0x97, 0x62,
- 0x49, 0x62, 0x01, 0x62, 0xb3, 0x61, 0x63, 0x61, 0x15, 0x61, 0xc4, 0x60,
- 0x75, 0x60, 0x20, 0x60, 0xce, 0x5f, 0x7a, 0x5f, 0x28, 0x5f, 0xd5, 0x5e,
- 0x81, 0x5e, 0x2d, 0x5e, 0xd3, 0x5d, 0x80, 0x5d, 0x2e, 0x5d, 0xe6, 0x5c,
- 0x1a, 0x5c, 0x16, 0x5a, 0x01, 0x58, 0xb9, 0x56, 0x6d, 0x55, 0xf4, 0x53,
- 0x49, 0x52, 0x83, 0x50, 0x87, 0x4e, 0x5f, 0x4c, 0x68, 0x4a, 0x5c, 0x48,
- 0x62, 0x46, 0x5a, 0x44, 0xe2, 0x41, 0x08, 0x3f, 0x1c, 0x3c, 0x44, 0x39,
- 0x35, 0x36, 0xcb, 0x32, 0xaf, 0x2f, 0xc8, 0x2c, 0xf8, 0x29, 0x55, 0x27,
- 0x6a, 0x24, 0x0f, 0x21, 0x5e, 0x1d, 0xc3, 0x19, 0x7b, 0x16, 0x71, 0x13,
- 0x6c, 0x10, 0x00, 0x0d, 0xd2, 0x08, 0x7f, 0x04, 0x7a, 0x01, 0x43, 0xff,
- 0xb9, 0xfc, 0xfa, 0xf9, 0x3b, 0xf7, 0xcb, 0xf4, 0x2b, 0xf2, 0x02, 0xef,
- 0x0c, 0xec, 0x3d, 0xe9, 0x21, 0xe6, 0xa6, 0xe2, 0x8a, 0xdf, 0x00, 0xdd,
- 0xbc, 0xda, 0x9e, 0xd8, 0xc1, 0xd6, 0xd6, 0xd4, 0xd6, 0xd2, 0xad, 0xd0,
- 0x5f, 0xce, 0xf0, 0xcb, 0xe9, 0xc9, 0x61, 0xc8, 0x75, 0xc7, 0x97, 0xc6,
- 0x3e, 0xc5, 0x07, 0xc4, 0x8e, 0xc3, 0x18, 0xc3, 0x3a, 0xc2, 0x15, 0xc1,
- 0x0e, 0xc0, 0xb3, 0xbf, 0xcf, 0xbf, 0xf8, 0xbf, 0xcc, 0xbf, 0x72, 0xbf,
- 0x41, 0xbf, 0x2b, 0xbf, 0xe2, 0xbe, 0x99, 0xbe, 0x4e, 0xbe, 0x0e, 0xbe,
- 0xcd, 0xbd, 0x7c, 0xbd, 0x8a, 0xbd, 0x88, 0xbd, 0x04, 0xbd, 0x0c, 0xbc,
- 0xb3, 0xbb, 0xf6, 0xbb, 0xf1, 0xbb, 0x12, 0xbc, 0x6f, 0xbc, 0xcb, 0xbc,
- 0xe4, 0xbc, 0x33, 0xbd, 0x1b, 0xbe, 0xac, 0xbe, 0x1e, 0xbf, 0x91, 0xbf,
- 0x50, 0xc0, 0x40, 0xc1, 0x3d, 0xc2, 0x32, 0xc3, 0xdf, 0xc3, 0xad, 0xc4,
- 0x77, 0xc5, 0xbe, 0xc6, 0xc7, 0xc8, 0x1d, 0xcb, 0x0e, 0xcd, 0x83, 0xce,
- 0xf1, 0xcf, 0xb4, 0xd1, 0x7d, 0xd3, 0x86, 0xd5, 0x89, 0xd7, 0xd2, 0xd9,
- 0x34, 0xdc, 0x28, 0xde, 0x23, 0xe0, 0x33, 0xe2, 0x0a, 0xe4, 0x59, 0xe5,
- 0xfc, 0xe6, 0x98, 0xe9, 0x30, 0xec, 0x91, 0xee, 0xc2, 0xf0, 0x0d, 0xf3,
- 0x35, 0xf5, 0xf3, 0xf6, 0xc4, 0xf8, 0xcb, 0xfa, 0xef, 0xfc, 0x65, 0xff,
- 0x05, 0x02, 0x7c, 0x04, 0xde, 0x06, 0x75, 0x09, 0x2b, 0x0c, 0x9b, 0x0e,
- 0xf3, 0x10, 0xb3, 0x13, 0x3a, 0x16, 0xeb, 0x18, 0x55, 0x1c, 0xad, 0x1f,
- 0xa8, 0x22, 0x54, 0x25, 0xae, 0x27, 0x33, 0x2a, 0x16, 0x2d, 0x36, 0x30,
- 0x84, 0x33, 0x94, 0x36, 0xbd, 0x38, 0xa2, 0x3a, 0x7d, 0x3c, 0x06, 0x3e,
- 0x24, 0x3f, 0x27, 0x40, 0x7c, 0x41, 0xef, 0x42, 0x14, 0x44, 0xeb, 0x44,
- 0x06, 0x46, 0x53, 0x47, 0x47, 0x48, 0x9b, 0x48, 0xaf, 0x48, 0xd7, 0x48,
- 0x4c, 0x49, 0xa0, 0x49, 0xbe, 0x49, 0xd4, 0x49, 0xfa, 0x49, 0x5e, 0x4a,
- 0xcc, 0x4a, 0x14, 0x4b, 0xfe, 0x4a, 0x22, 0x4b, 0x10, 0x4c, 0x0c, 0x4d,
- 0xb2, 0x4d, 0x4c, 0x4e, 0x3e, 0x4e, 0x77, 0x4d, 0x98, 0x4c, 0xf6, 0x4b,
- 0x67, 0x4b, 0xf0, 0x4a, 0x2a, 0x4a, 0xea, 0x48, 0x06, 0x48, 0x47, 0x47,
- 0xb2, 0x46, 0xda, 0x45, 0xad, 0x44, 0x5c, 0x43, 0x43, 0x42, 0x9e, 0x41,
- 0x0a, 0x41, 0x49, 0x40, 0xa6, 0x3f, 0x9d, 0x3e, 0x3c, 0x3d, 0xc6, 0x3b,
- 0xf6, 0x39, 0x87, 0x37, 0xf6, 0x34, 0x87, 0x32, 0x2b, 0x30, 0x6f, 0x2d,
- 0xfa, 0x2a, 0x3d, 0x29, 0x48, 0x27, 0xc2, 0x24, 0x49, 0x22, 0xca, 0x1f,
- 0xa0, 0x1c, 0x7c, 0x19, 0x06, 0x17, 0xbf, 0x14, 0x9f, 0x12, 0x96, 0x10,
- 0xf9, 0x0d, 0x3e, 0x0b, 0xe8, 0x08, 0x5c, 0x06, 0xe7, 0x02, 0x6e, 0xff,
- 0xca, 0xfc, 0x5b, 0xfa, 0xa0, 0xf7, 0xe9, 0xf4, 0x9c, 0xf2, 0x66, 0xf0,
- 0xaf, 0xed, 0xfd, 0xea, 0xcc, 0xe8, 0x6e, 0xe6, 0x82, 0xe3, 0x97, 0xe0,
- 0xed, 0xdd, 0x62, 0xdb, 0x7b, 0xd8, 0xd3, 0xd5, 0x5f, 0xd3, 0x1a, 0xd1,
- 0x44, 0xcf, 0xeb, 0xcd, 0x89, 0xcc, 0xca, 0xca, 0x4d, 0xc9, 0x35, 0xc8,
- 0x53, 0xc7, 0x0c, 0xc6, 0x06, 0xc4, 0xca, 0xc1, 0x09, 0xc0, 0x9c, 0xbe,
- 0xa8, 0xbd, 0xfd, 0xbc, 0xf2, 0xbb, 0x9b, 0xba, 0x20, 0xb9, 0xe4, 0xb7,
- 0xc1, 0xb6, 0xcd, 0xb5, 0x12, 0xb5, 0x55, 0xb4, 0xd1, 0xb3, 0x86, 0xb3,
- 0x19, 0xb3, 0xe8, 0xb2, 0xd7, 0xb2, 0x72, 0xb2, 0x27, 0xb2, 0xb7, 0xb1,
- 0x67, 0xb1, 0x65, 0xb1, 0xae, 0xb1, 0x6b, 0xb1, 0xf2, 0xb0, 0xeb, 0xb0,
- 0x0f, 0xb1, 0xfe, 0xb0, 0xeb, 0xb0, 0xcf, 0xb0, 0x94, 0xb0, 0x3e, 0xb0,
- 0x29, 0xb0, 0x56, 0xb0, 0x0c, 0xb0, 0xb7, 0xaf, 0xfb, 0xaf, 0x37, 0xb0,
- 0x96, 0xb0, 0x42, 0xb1, 0xe8, 0xb1, 0xb5, 0xb2, 0xc5, 0xb3, 0x93, 0xb4,
- 0x93, 0xb4, 0xee, 0xb4, 0x59, 0xb6, 0xca, 0xb7, 0x87, 0xb8, 0x6f, 0xb8,
- 0x33, 0xb8, 0xaf, 0xb8, 0x4a, 0xb9, 0x9d, 0xb9, 0xf2, 0xb9, 0x48, 0xba,
- 0xd0, 0xba, 0xe5, 0xbb, 0x4e, 0xbd, 0xaf, 0xbe, 0xe9, 0xbf, 0xba, 0xc1,
- 0xc2, 0xc3, 0x73, 0xc5, 0xa6, 0xc6, 0x6a, 0xc7, 0x83, 0xc8, 0x42, 0xca,
- 0xc8, 0xcb, 0x34, 0xcd, 0x94, 0xce, 0xcc, 0xcf, 0x31, 0xd1, 0x27, 0xd3,
- 0x8c, 0xd5, 0x61, 0xd7, 0x78, 0xd9, 0x3b, 0xdc, 0x40, 0xdf, 0xdd, 0xe1,
- 0x0c, 0xe4, 0xe4, 0xe5, 0xd0, 0xe7, 0x65, 0xea, 0xc9, 0xec, 0xd7, 0xee,
- 0xfc, 0xf0, 0x7c, 0xf3, 0xf6, 0xf5, 0x09, 0xf8, 0xde, 0xf9, 0xca, 0xfb,
- 0xac, 0xfd, 0xc3, 0xff, 0x33, 0x02, 0xb1, 0x04, 0x24, 0x07, 0x57, 0x09,
- 0x5f, 0x0b, 0xe6, 0x0d, 0xd1, 0x10, 0x6d, 0x13, 0x8f, 0x15, 0xfb, 0x17,
- 0x43, 0x1a, 0x8e, 0x1c, 0x1a, 0x1f, 0x69, 0x21, 0x80, 0x23, 0x74, 0x25,
- 0x62, 0x27, 0x07, 0x29, 0xa1, 0x2a, 0xa5, 0x2c, 0xdf, 0x2e, 0x57, 0x31,
- 0xff, 0x33, 0xd1, 0x36, 0x6e, 0x39, 0x8a, 0x3b, 0x58, 0x3d, 0x32, 0x3f,
- 0xc8, 0x40, 0x1b, 0x42, 0x22, 0x43, 0x1a, 0x44, 0x25, 0x45, 0xe5, 0x45,
- 0x43, 0x46, 0x9b, 0x46, 0x6a, 0x47, 0x6f, 0x48, 0x69, 0x49, 0x6f, 0x4a,
- 0xc7, 0x4b, 0x0e, 0x4d, 0x03, 0x4e, 0x78, 0x4e, 0xdf, 0x4e, 0x0b, 0x4f,
- 0xea, 0x4e, 0xcb, 0x4e, 0x1b, 0x4f, 0x6e, 0x4f, 0xc3, 0x4f, 0xdc, 0x4f,
- 0xcb, 0x4f, 0xd2, 0x4f, 0x16, 0x50, 0x24, 0x50, 0xf2, 0x4f, 0x00, 0x50,
- 0x37, 0x50, 0x4e, 0x50, 0x5e, 0x50, 0x7c, 0x50, 0xab, 0x50, 0x69, 0x50,
- 0xad, 0x4f, 0xa3, 0x4e, 0xe6, 0x4d, 0x42, 0x4d, 0xdc, 0x4c, 0x7c, 0x4c,
- 0xbe, 0x4b, 0x08, 0x4b, 0x7b, 0x4a, 0xe4, 0x49, 0x14, 0x49, 0x07, 0x48,
- 0x98, 0x46, 0x2f, 0x45, 0x16, 0x44, 0x23, 0x43, 0x55, 0x42, 0xac, 0x41,
- 0x06, 0x41, 0x4b, 0x40, 0x8f, 0x3f, 0xde, 0x3e, 0xe1, 0x3d, 0x75, 0x3c,
- 0xc0, 0x3a, 0xe4, 0x38, 0x83, 0x37, 0x9a, 0x36, 0xe5, 0x35, 0xc0, 0x34,
- 0xf9, 0x32, 0xe1, 0x30, 0xfa, 0x2e, 0xd4, 0x2c, 0x4d, 0x2a, 0xed, 0x27,
- 0xb9, 0x25, 0xb2, 0x23, 0x7d, 0x21, 0xfd, 0x1e, 0x89, 0x1c, 0x38, 0x1a,
- 0xe2, 0x17, 0x67, 0x15, 0xf3, 0x12, 0xb3, 0x10, 0x9e, 0x0e, 0x79, 0x0c,
- 0xea, 0x09, 0x54, 0x07, 0x26, 0x05, 0x0a, 0x03, 0xd7, 0x00, 0x98, 0xfe,
- 0x41, 0xfc, 0x8d, 0xf9, 0x3c, 0xf7, 0x4f, 0xf5, 0x73, 0xf3, 0x7b, 0xf1,
- 0x68, 0xef, 0x6f, 0xed, 0x7a, 0xeb, 0x87, 0xe9, 0x48, 0xe7, 0xc6, 0xe4,
- 0x65, 0xe2, 0xf6, 0xdf, 0x86, 0xdd, 0x9f, 0xdb, 0x1b, 0xda, 0xa6, 0xd8,
- 0xce, 0xd6, 0xe4, 0xd4, 0xe3, 0xd2, 0x84, 0xd0, 0xec, 0xcd, 0x08, 0xcc,
- 0x89, 0xca, 0x1b, 0xc9, 0xe2, 0xc7, 0x9d, 0xc6, 0xe5, 0xc4, 0x79, 0xc3,
- 0x6d, 0xc2, 0xe3, 0xc0, 0x3c, 0xbf, 0xd3, 0xbd, 0x41, 0xbc, 0xd2, 0xba,
- 0x6a, 0xb9, 0xa1, 0xb7, 0xa9, 0xb5, 0x47, 0xb4, 0x91, 0xb3, 0xd5, 0xb2,
- 0xb7, 0xb1, 0x51, 0xb0, 0x14, 0xaf, 0xf5, 0xad, 0x95, 0xac, 0x34, 0xab,
- 0x05, 0xaa, 0xe1, 0xa8, 0xb3, 0xa7, 0xd9, 0xa6, 0x25, 0xa6, 0x6e, 0xa5,
- 0x2b, 0xa5, 0x7b, 0xa5, 0x9a, 0xa5, 0x88, 0xa5, 0xc3, 0xa5, 0xe7, 0xa5,
- 0xaf, 0xa5, 0x8b, 0xa5, 0x80, 0xa5, 0x65, 0xa5, 0x8c, 0xa5, 0x7e, 0xa5,
- 0x22, 0xa5, 0x40, 0xa5, 0xed, 0xa5, 0x27, 0xa6, 0x2b, 0xa6, 0x1c, 0xa6,
- 0xe5, 0xa5, 0x7b, 0xa5, 0x45, 0xa5, 0x37, 0xa5, 0x04, 0xa5, 0x91, 0xa4,
- 0x8d, 0xa4, 0x2d, 0xa5, 0x9f, 0xa5, 0xf6, 0xa5, 0x7e, 0xa6, 0x34, 0xa7,
- 0x14, 0xa8, 0x7e, 0xa8, 0x87, 0xa8, 0xc4, 0xa8, 0x51, 0xa9, 0xec, 0xa9,
- 0x74, 0xaa, 0xf7, 0xaa, 0x40, 0xab, 0xd9, 0xab, 0xca, 0xac, 0x6b, 0xad,
- 0xb3, 0xad, 0x08, 0xae, 0x10, 0xaf, 0x2c, 0xb0, 0xcb, 0xb0, 0x23, 0xb1,
- 0xac, 0xb1, 0x0e, 0xb2, 0x42, 0xb2, 0xd7, 0xb2, 0xef, 0xb3, 0x21, 0xb5,
- 0x30, 0xb6, 0xe9, 0xb6, 0x54, 0xb7, 0xf0, 0xb7, 0x9e, 0xb8, 0x2e, 0xb9,
- 0x03, 0xba, 0x55, 0xbb, 0xdf, 0xbc, 0x5f, 0xbe, 0xb8, 0xbf, 0x01, 0xc1,
- 0x83, 0xc2, 0x0c, 0xc4, 0x65, 0xc5, 0x7e, 0xc6, 0x86, 0xc7, 0xba, 0xc8,
- 0x11, 0xca, 0x66, 0xcb, 0x28, 0xcd, 0x4d, 0xcf, 0x60, 0xd1, 0x69, 0xd3,
- 0x7b, 0xd5, 0x5f, 0xd7, 0xe3, 0xd8, 0xca, 0xda, 0xda, 0xdc, 0xda, 0xde,
- 0xab, 0xe0, 0x59, 0xe2, 0x3b, 0xe4, 0x21, 0xe6, 0xfc, 0xe7, 0xcb, 0xe9,
- 0xbe, 0xeb, 0x9c, 0xed, 0x47, 0xef, 0x0b, 0xf1, 0xd3, 0xf2, 0xbc, 0xf4,
- 0x9c, 0xf6, 0x67, 0xf8, 0x2a, 0xfa, 0xc1, 0xfb, 0x7f, 0xfd, 0x41, 0xff,
- 0x12, 0x01, 0xd2, 0x02, 0xfc, 0x04, 0xe8, 0x06, 0x9a, 0x08, 0x59, 0x0a,
- 0x48, 0x0c, 0x36, 0x0e, 0x37, 0x10, 0x36, 0x12, 0x59, 0x14, 0x62, 0x16,
- 0x86, 0x18, 0xb9, 0x1a, 0xc2, 0x1c, 0xcd, 0x1e, 0xf1, 0x20, 0x27, 0x23,
- 0x7a, 0x25, 0xf9, 0x27, 0x2a, 0x2a, 0x1f, 0x2c, 0xf8, 0x2d, 0xa3, 0x2f,
- 0x23, 0x31, 0xf4, 0x32, 0x2c, 0x35, 0x40, 0x37, 0x23, 0x39, 0xfe, 0x3a,
- 0x11, 0x3d, 0x2c, 0x3f, 0xe8, 0x40, 0x8c, 0x42, 0x55, 0x44, 0x37, 0x46,
- 0x99, 0x47, 0xcb, 0x48, 0x12, 0x4a, 0x60, 0x4b, 0x86, 0x4c, 0x9b, 0x4d,
- 0xc8, 0x4e, 0xec, 0x4f, 0xe3, 0x50, 0x8a, 0x51, 0x23, 0x52, 0xd8, 0x52,
- 0x68, 0x53, 0x9b, 0x53, 0xb1, 0x53, 0x11, 0x54, 0x94, 0x54, 0xf7, 0x54,
- 0x4f, 0x55, 0xa4, 0x55, 0x03, 0x56, 0x51, 0x56, 0x92, 0x56, 0xfa, 0x56,
- 0x59, 0x57, 0xad, 0x57, 0xcd, 0x57, 0xc5, 0x57, 0xa8, 0x57, 0x64, 0x57,
- 0x49, 0x57, 0x63, 0x57, 0x64, 0x57, 0x40, 0x57, 0xf6, 0x56, 0xfc, 0x56,
- 0x36, 0x57, 0x3b, 0x57, 0x1e, 0x57, 0x1c, 0x57, 0x03, 0x57, 0xee, 0x56,
- 0xa5, 0x56, 0x80, 0x56, 0xd4, 0x56, 0xe4, 0x56, 0x92, 0x56, 0xf0, 0x55,
- 0x02, 0x55, 0xab, 0x53, 0xb5, 0x52, 0x51, 0x52, 0x08, 0x52, 0x80, 0x51,
- 0xb4, 0x50, 0xde, 0x4f, 0x27, 0x4f, 0x63, 0x4e, 0x58, 0x4d, 0x72, 0x4c,
- 0x82, 0x4b, 0x81, 0x4a, 0x87, 0x49, 0xb4, 0x48, 0xb1, 0x47, 0x99, 0x46,
- 0xb4, 0x45, 0x34, 0x45, 0xb8, 0x44, 0x2f, 0x44, 0x7f, 0x43, 0xa0, 0x42,
- 0xcb, 0x41, 0xd1, 0x40, 0xeb, 0x3f, 0x28, 0x3f, 0x3d, 0x3e, 0x09, 0x3d,
- 0x9d, 0x3b, 0x40, 0x3a, 0x1c, 0x39, 0xeb, 0x37, 0xd1, 0x36, 0xb3, 0x35,
- 0x8b, 0x34, 0x0b, 0x33, 0x51, 0x31, 0xfb, 0x2f, 0xb9, 0x2e, 0x54, 0x2d,
- 0xaf, 0x2b, 0xdf, 0x29, 0xf1, 0x27, 0x3a, 0x26, 0x6f, 0x24, 0x56, 0x22,
- 0x20, 0x20, 0x0a, 0x1e, 0x3b, 0x1c, 0x55, 0x1a, 0x6c, 0x18, 0xaa, 0x16,
- 0xef, 0x14, 0x0a, 0x13, 0x17, 0x11, 0x1c, 0x0f, 0x22, 0x0d, 0x46, 0x0b,
- 0x53, 0x09, 0x46, 0x07, 0x46, 0x05, 0x4d, 0x03, 0x1a, 0x01, 0xd3, 0xfe,
- 0x94, 0xfc, 0x8c, 0xfa, 0x8f, 0xf8, 0xc1, 0xf6, 0x27, 0xf5, 0x8f, 0xf3,
- 0xf2, 0xf1, 0x74, 0xf0, 0xfa, 0xee, 0x4d, 0xed, 0x9e, 0xeb, 0xa2, 0xe9,
- 0x73, 0xe7, 0xa9, 0xe5, 0x2d, 0xe4, 0xa3, 0xe2, 0xf9, 0xe0, 0x50, 0xdf,
- 0xb9, 0xdd, 0x34, 0xdc, 0xad, 0xda, 0x0b, 0xd9, 0x77, 0xd7, 0xb9, 0xd5,
- 0x37, 0xd4, 0xff, 0xd2, 0x8a, 0xd1, 0x14, 0xd0, 0xba, 0xce, 0x7d, 0xcd,
- 0x2c, 0xcc, 0xa1, 0xca, 0x22, 0xc9, 0xa9, 0xc7, 0x0e, 0xc6, 0x66, 0xc4,
- 0xfc, 0xc2, 0xa5, 0xc1, 0x4a, 0xc0, 0xff, 0xbe, 0xf7, 0xbd, 0x0e, 0xbd,
- 0x1d, 0xbc, 0x16, 0xbb, 0xad, 0xb9, 0x44, 0xb8, 0xd7, 0xb6, 0x9e, 0xb5,
- 0x9f, 0xb4, 0x97, 0xb3, 0x72, 0xb2, 0x5f, 0xb1, 0x67, 0xb0, 0x89, 0xaf,
- 0x9d, 0xae, 0xbe, 0xad, 0x08, 0xad, 0x5d, 0xac, 0x8b, 0xab, 0xad, 0xaa,
- 0xe4, 0xa9, 0x59, 0xa9, 0xc4, 0xa8, 0x02, 0xa8, 0x4d, 0xa7, 0xc2, 0xa6,
- 0x4a, 0xa6, 0x09, 0xa6, 0xd2, 0xa5, 0x50, 0xa5, 0xec, 0xa4, 0xc2, 0xa4,
- 0xd9, 0xa4, 0xbd, 0xa4, 0x97, 0xa4, 0xa5, 0xa4, 0xbf, 0xa4, 0xb4, 0xa4,
- 0x8f, 0xa4, 0x31, 0xa4, 0x39, 0xa4, 0x7d, 0xa4, 0xab, 0xa4, 0xc7, 0xa4,
- 0xb3, 0xa4, 0xab, 0xa4, 0xca, 0xa4, 0x05, 0xa5, 0x1e, 0xa5, 0x2a, 0xa5,
- 0x2c, 0xa5, 0x18, 0xa5, 0x01, 0xa5, 0x33, 0xa5, 0x8c, 0xa5, 0xb2, 0xa5,
- 0x81, 0xa5, 0x5c, 0xa5, 0x6e, 0xa5, 0x79, 0xa5, 0x4e, 0xa5, 0x17, 0xa5,
- 0xff, 0xa4, 0x1c, 0xa5, 0x45, 0xa5, 0x8a, 0xa5, 0xbf, 0xa5, 0xdb, 0xa5,
- 0x41, 0xa6, 0xfb, 0xa6, 0xc6, 0xa7, 0x86, 0xa8, 0x29, 0xa9, 0x97, 0xa9,
- 0x27, 0xaa, 0xd7, 0xaa, 0x6d, 0xab, 0xf4, 0xab, 0x34, 0xac, 0x69, 0xac,
- 0xc6, 0xac, 0x37, 0xad, 0xaa, 0xad, 0x34, 0xae, 0xd3, 0xae, 0x81, 0xaf,
- 0x16, 0xb0, 0x72, 0xb0, 0xc8, 0xb0, 0x36, 0xb1, 0x91, 0xb1, 0xe0, 0xb1,
- 0x3b, 0xb2, 0x8e, 0xb2, 0xe0, 0xb2, 0x2a, 0xb3, 0xab, 0xb3, 0x3a, 0xb4,
- 0xf1, 0xb4, 0xc0, 0xb5, 0xae, 0xb6, 0x91, 0xb7, 0x82, 0xb8, 0x98, 0xb9,
- 0x8f, 0xba, 0x88, 0xbb, 0x65, 0xbc, 0x20, 0xbd, 0xcb, 0xbd, 0xaf, 0xbe,
- 0x94, 0xbf, 0x84, 0xc0, 0x85, 0xc1, 0x7b, 0xc2, 0x67, 0xc3, 0x66, 0xc4,
- 0x7f, 0xc5, 0x89, 0xc6, 0x6b, 0xc7, 0x38, 0xc8, 0x29, 0xc9, 0x4a, 0xca,
- 0x82, 0xcb, 0xc1, 0xcc, 0x12, 0xce, 0x5e, 0xcf, 0xb0, 0xd0, 0x25, 0xd2,
- 0x66, 0xd3, 0xde, 0xd4, 0x6c, 0xd6, 0x28, 0xd8, 0xd7, 0xd9, 0x80, 0xdb,
- 0xf7, 0xdc, 0x6f, 0xde, 0xd0, 0xdf, 0x22, 0xe1, 0x7a, 0xe2, 0xe5, 0xe3,
- 0x7a, 0xe5, 0xea, 0xe6, 0x51, 0xe8, 0xeb, 0xe9, 0x70, 0xeb, 0xb3, 0xec,
- 0x01, 0xee, 0x60, 0xef, 0xcb, 0xf0, 0x1d, 0xf2, 0x7b, 0xf3, 0xcf, 0xf4,
- 0x39, 0xf6, 0xc8, 0xf7, 0x82, 0xf9, 0x4a, 0xfb, 0xf2, 0xfc, 0x8c, 0xfe,
- 0x01, 0x00, 0x68, 0x01, 0x15, 0x03, 0xe6, 0x04, 0xbc, 0x06, 0x42, 0x08,
- 0xbb, 0x09, 0x2b, 0x0b, 0xc7, 0x0c, 0x35, 0x0e, 0x94, 0x0f, 0xf2, 0x10,
- 0x59, 0x12, 0xbc, 0x13, 0x34, 0x15, 0xac, 0x16, 0x1c, 0x18, 0x79, 0x19,
- 0xdc, 0x1a, 0x6d, 0x1c, 0x21, 0x1e, 0xca, 0x1f, 0x70, 0x21, 0x02, 0x23,
- 0x6c, 0x24, 0x9e, 0x25, 0x45, 0x27, 0x02, 0x29, 0x95, 0x2a, 0xff, 0x2b,
- 0x72, 0x2d, 0xe8, 0x2e, 0x48, 0x30, 0x7c, 0x31, 0xd2, 0x32, 0x3d, 0x34,
- 0xac, 0x35, 0x26, 0x37, 0xbc, 0x38, 0x4c, 0x3a, 0x90, 0x3b, 0xef, 0x3c,
- 0x61, 0x3e, 0xe8, 0x3f, 0x59, 0x41, 0xab, 0x42, 0xf7, 0x43, 0x2d, 0x45,
- 0x6c, 0x46, 0x78, 0x47, 0xb4, 0x48, 0x2e, 0x4a, 0x8e, 0x4b, 0xd7, 0x4c,
- 0xf4, 0x4d, 0xee, 0x4e, 0xcb, 0x4f, 0xc3, 0x50, 0xc2, 0x51, 0xac, 0x52,
- 0x61, 0x53, 0xf3, 0x53, 0xac, 0x54, 0x5f, 0x55, 0xf4, 0x55, 0x7f, 0x56,
- 0x04, 0x57, 0x9c, 0x57, 0x1f, 0x58, 0x7c, 0x58, 0xbc, 0x58, 0x0b, 0x59,
- 0x71, 0x59, 0xc1, 0x59, 0x0b, 0x5a, 0x3e, 0x5a, 0x8b, 0x5a, 0xac, 0x5a,
- 0xa9, 0x5a, 0x8a, 0x5a, 0x6c, 0x5a, 0x4c, 0x5a, 0x39, 0x5a, 0x32, 0x5a,
- 0x40, 0x5a, 0x33, 0x5a, 0x44, 0x5a, 0x58, 0x5a, 0x79, 0x5a, 0x7a, 0x5a,
- 0x69, 0x5a, 0x49, 0x5a, 0x54, 0x5a, 0x78, 0x5a, 0x72, 0x5a, 0x5f, 0x5a,
- 0x31, 0x5a, 0x11, 0x5a, 0xf9, 0x59, 0xea, 0x59, 0xd1, 0x59, 0xa1, 0x59,
- 0x48, 0x59, 0xf0, 0x58, 0xa2, 0x58, 0x6e, 0x58, 0x60, 0x58, 0x46, 0x58,
- 0x3f, 0x58, 0x47, 0x58, 0x40, 0x58, 0x08, 0x58, 0x9c, 0x57, 0x11, 0x57,
- 0x83, 0x56, 0xd7, 0x55, 0x42, 0x55, 0xab, 0x54, 0x06, 0x54, 0x63, 0x53,
- 0xa6, 0x52, 0xf0, 0x51, 0x55, 0x51, 0xbc, 0x50, 0x1e, 0x50, 0x8e, 0x4f,
- 0xf3, 0x4e, 0x34, 0x4e, 0x6b, 0x4d, 0xc9, 0x4c, 0x30, 0x4c, 0x7d, 0x4b,
- 0xd8, 0x4a, 0x49, 0x4a, 0xad, 0x49, 0x11, 0x49, 0x6c, 0x48, 0xa4, 0x47,
- 0xec, 0x46, 0x6c, 0x46, 0xde, 0x45, 0x5d, 0x45, 0xbc, 0x44, 0xf1, 0x43,
- 0x34, 0x43, 0x8c, 0x42, 0xf8, 0x41, 0x47, 0x41, 0x6a, 0x40, 0x72, 0x3f,
- 0x8b, 0x3e, 0xb3, 0x3d, 0xf2, 0x3c, 0x2f, 0x3c, 0x5c, 0x3b, 0x96, 0x3a,
- 0xbc, 0x39, 0xb2, 0x38, 0x91, 0x37, 0x8c, 0x36, 0x75, 0x35, 0x63, 0x34,
- 0x5e, 0x33, 0x63, 0x32, 0x4b, 0x31, 0x3c, 0x30, 0x1e, 0x2f, 0x07, 0x2e,
- 0xd0, 0x2c, 0xb2, 0x2b, 0x84, 0x2a, 0x4d, 0x29, 0xfc, 0x27, 0xa5, 0x26,
- 0x2f, 0x25, 0x95, 0x23, 0x1f, 0x22, 0xad, 0x20, 0x3a, 0x1f, 0x9e, 0x1d,
- 0x10, 0x1c, 0x6e, 0x1a, 0xe3, 0x18, 0x56, 0x17, 0xdb, 0x15, 0x58, 0x14,
- 0xba, 0x12, 0x2a, 0x11, 0x8b, 0x0f, 0xf4, 0x0d, 0x5b, 0x0c, 0xd3, 0x0a,
- 0x5f, 0x09, 0xe5, 0x07, 0x4a, 0x06, 0xc0, 0x04, 0x3e, 0x03, 0xb6, 0x01,
- 0x37, 0x00, 0xca, 0xfe, 0x74, 0xfd, 0x00, 0xfc, 0xa5, 0xfa, 0x4a, 0xf9,
- 0xd1, 0xf7, 0x7e, 0xf6, 0x1c, 0xf5, 0x9d, 0xf3, 0x4f, 0xf2, 0x0e, 0xf1,
- 0xc0, 0xef, 0x3a, 0xee, 0xd8, 0xec, 0x69, 0xeb, 0x0c, 0xea, 0xad, 0xe8,
- 0x56, 0xe7, 0xf8, 0xe5, 0xbe, 0xe4, 0x98, 0xe3, 0x61, 0xe2, 0x03, 0xe1,
- 0x99, 0xdf, 0x4d, 0xde, 0x0e, 0xdd, 0xde, 0xdb, 0xad, 0xda, 0x84, 0xd9,
- 0x62, 0xd8, 0x32, 0xd7, 0x01, 0xd6, 0xb7, 0xd4, 0x87, 0xd3, 0x97, 0xd2,
- 0x89, 0xd1, 0x89, 0xd0, 0x6e, 0xcf, 0x65, 0xce, 0x5d, 0xcd, 0x44, 0xcc,
- 0x13, 0xcb, 0xf2, 0xc9, 0xd3, 0xc8, 0xad, 0xc7, 0x9b, 0xc6, 0x94, 0xc5,
- 0x8e, 0xc4, 0x7b, 0xc3, 0x92, 0xc2, 0xad, 0xc1, 0xb2, 0xc0, 0xb9, 0xbf,
- 0xb3, 0xbe, 0xc0, 0xbd, 0xd5, 0xbc, 0xf2, 0xbb, 0xe1, 0xba, 0xc7, 0xb9,
- 0xc7, 0xb8, 0xe8, 0xb7, 0x09, 0xb7, 0x2c, 0xb6, 0x66, 0xb5, 0xb1, 0xb4,
- 0xf6, 0xb3, 0x32, 0xb3, 0x53, 0xb2, 0x92, 0xb1, 0xdb, 0xb0, 0x0d, 0xb0,
- 0x46, 0xaf, 0x62, 0xae, 0x98, 0xad, 0xd1, 0xac, 0x3f, 0xac, 0xb0, 0xab,
- 0x34, 0xab, 0xb1, 0xaa, 0x45, 0xaa, 0xda, 0xa9, 0x6a, 0xa9, 0xf1, 0xa8,
- 0x7d, 0xa8, 0x04, 0xa8, 0xbb, 0xa7, 0x80, 0xa7, 0x41, 0xa7, 0x02, 0xa7,
- 0xb6, 0xa6, 0x68, 0xa6, 0x3b, 0xa6, 0x1c, 0xa6, 0x0d, 0xa6, 0xfc, 0xa5,
- 0xd4, 0xa5, 0xa6, 0xa5, 0x81, 0xa5, 0x76, 0xa5, 0x61, 0xa5, 0x54, 0xa5,
- 0x48, 0xa5, 0x47, 0xa5, 0x4b, 0xa5, 0x49, 0xa5, 0x38, 0xa5, 0x4b, 0xa5,
- 0x6c, 0xa5, 0xa3, 0xa5, 0xda, 0xa5, 0xfe, 0xa5, 0x21, 0xa6, 0x4a, 0xa6,
- 0x8a, 0xa6, 0xb4, 0xa6, 0xe0, 0xa6, 0xf3, 0xa6, 0x1b, 0xa7, 0x17, 0xa7,
- 0x40, 0xa7, 0x8e, 0xa7, 0xcd, 0xa7, 0x06, 0xa8, 0x3e, 0xa8, 0x86, 0xa8,
- 0xbd, 0xa8, 0xde, 0xa8, 0xf6, 0xa8, 0x1c, 0xa9, 0x49, 0xa9, 0x5c, 0xa9,
- 0x79, 0xa9, 0x93, 0xa9, 0xab, 0xa9, 0xe6, 0xa9, 0x2c, 0xaa, 0x82, 0xaa,
- 0xbc, 0xaa, 0xec, 0xaa, 0x32, 0xab, 0x69, 0xab, 0xa7, 0xab, 0xde, 0xab,
- 0x19, 0xac, 0x53, 0xac, 0xbb, 0xac, 0x14, 0xad, 0x8a, 0xad, 0xeb, 0xad,
- 0x6c, 0xae, 0xe1, 0xae, 0x62, 0xaf, 0xd9, 0xaf, 0x58, 0xb0, 0xc0, 0xb0,
- 0x36, 0xb1, 0x99, 0xb1, 0x11, 0xb2, 0x71, 0xb2, 0xdc, 0xb2, 0x58, 0xb3,
- 0xbb, 0xb3, 0x37, 0xb4, 0xb6, 0xb4, 0x46, 0xb5, 0xca, 0xb5, 0x50, 0xb6,
- 0xd9, 0xb6, 0x6c, 0xb7, 0x03, 0xb8, 0x7e, 0xb8, 0xf0, 0xb8, 0x64, 0xb9,
- 0xcf, 0xb9, 0x47, 0xba, 0xd3, 0xba, 0x60, 0xbb, 0xe8, 0xbb, 0x70, 0xbc,
- 0xf3, 0xbc, 0x82, 0xbd, 0x05, 0xbe, 0xa1, 0xbe, 0x2a, 0xbf, 0xae, 0xbf,
- 0x25, 0xc0, 0xac, 0xc0, 0x52, 0xc1, 0xde, 0xc1, 0x75, 0xc2, 0x11, 0xc3,
- 0xb5, 0xc3, 0x42, 0xc4, 0xc5, 0xc4, 0x6d, 0xc5, 0x0b, 0xc6, 0xb2, 0xc6,
- 0x4b, 0xc7, 0xf6, 0xc7, 0x9b, 0xc8, 0x4f, 0xc9, 0x17, 0xca, 0xf3, 0xca,
- 0xc6, 0xcb, 0x9a, 0xcc, 0x7b, 0xcd, 0x54, 0xce, 0x32, 0xcf, 0x09, 0xd0,
- 0xd7, 0xd0, 0xc9, 0xd1, 0xc1, 0xd2, 0xb8, 0xd3, 0xb6, 0xd4, 0xae, 0xd5,
- 0xbc, 0xd6, 0xca, 0xd7, 0xd2, 0xd8, 0xca, 0xd9, 0xbd, 0xda, 0xc8, 0xdb,
- 0xd8, 0xdc, 0xf9, 0xdd, 0x08, 0xdf, 0x1e, 0xe0, 0x39, 0xe1, 0x4e, 0xe2,
- 0x60, 0xe3, 0x7a, 0xe4, 0x96, 0xe5, 0xc1, 0xe6, 0xde, 0xe7, 0x0e, 0xe9,
- 0x2a, 0xea, 0x42, 0xeb, 0x7a, 0xec, 0x9f, 0xed, 0xbb, 0xee, 0xd6, 0xef,
- 0xef, 0xf0, 0x0e, 0xf2, 0x30, 0xf3, 0x55, 0xf4, 0x68, 0xf5, 0x7e, 0xf6,
- 0xa4, 0xf7, 0xc0, 0xf8, 0xea, 0xf9, 0x10, 0xfb, 0x41, 0xfc, 0x7d, 0xfd,
- 0xad, 0xfe, 0xe3, 0xff, 0x10, 0x01, 0x27, 0x02, 0x58, 0x03, 0x74, 0x04,
- 0xa4, 0x05, 0xd5, 0x06, 0x0b, 0x08, 0x36, 0x09, 0x5c, 0x0a, 0x76, 0x0b,
- 0x9a, 0x0c, 0xc1, 0x0d, 0xd8, 0x0e, 0xf5, 0x0f, 0x15, 0x11, 0x3f, 0x12,
- 0x70, 0x13, 0x8e, 0x14, 0xcc, 0x15, 0xf2, 0x16, 0x31, 0x18, 0x4b, 0x19,
- 0x82, 0x1a, 0xa1, 0x1b, 0xbc, 0x1c, 0xde, 0x1d, 0xe9, 0x1e, 0x13, 0x20,
- 0x33, 0x21, 0x6c, 0x22, 0x80, 0x23, 0xa7, 0x24, 0xbc, 0x25, 0xde, 0x26,
- 0xe7, 0x27, 0x07, 0x29, 0x28, 0x2a, 0x36, 0x2b, 0x4d, 0x2c, 0x71, 0x2d,
- 0x91, 0x2e, 0xbe, 0x2f, 0xd6, 0x30, 0xfb, 0x31, 0x20, 0x33, 0x46, 0x34,
- 0x59, 0x35, 0x7a, 0x36, 0xa1, 0x37, 0xc2, 0x38, 0xdf, 0x39, 0x01, 0x3b,
- 0x0f, 0x3c, 0x27, 0x3d, 0x1f, 0x3e, 0x2e, 0x3f, 0x43, 0x40, 0x5b, 0x41,
- 0x73, 0x42, 0x8e, 0x43, 0xaf, 0x44, 0xbc, 0x45, 0xcc, 0x46, 0xd8, 0x47,
- 0xec, 0x48, 0xe1, 0x49, 0xd1, 0x4a, 0xc4, 0x4b, 0xb6, 0x4c, 0xa9, 0x4d,
- 0x9d, 0x4e, 0x88, 0x4f, 0x75, 0x50, 0x4c, 0x51, 0x3b, 0x52, 0x05, 0x53,
- 0xd9, 0x53, 0xa1, 0x54, 0x6f, 0x55, 0x33, 0x56, 0xe5, 0x56, 0x7d, 0x57,
- 0x15, 0x58, 0xb3, 0x58, 0x4e, 0x59, 0xdb, 0x59, 0x55, 0x5a, 0xc8, 0x5a,
- 0x36, 0x5b, 0xa9, 0x5b, 0x09, 0x5c, 0x5a, 0x5c, 0xab, 0x5c, 0xf1, 0x5c,
- 0x34, 0x5d, 0x6a, 0x5d, 0x9e, 0x5d, 0xc1, 0x5d, 0xea, 0x5d, 0x0b, 0x5e,
- 0x28, 0x5e, 0x3d, 0x5e, 0x41, 0x5e, 0x51, 0x5e, 0x5f, 0x5e, 0x69, 0x5e,
- 0x79, 0x5e, 0x6a, 0x5e, 0x78, 0x5e, 0x76, 0x5e, 0x7f, 0x5e, 0x72, 0x5e,
- 0x70, 0x5e, 0x61, 0x5e, 0x61, 0x5e, 0x42, 0x5e, 0x36, 0x5e, 0x2f, 0x5e,
- 0x2c, 0x5e, 0x1a, 0x5e, 0xec, 0x5d, 0xbf, 0x5d, 0x94, 0x5d, 0x71, 0x5d,
- 0x4c, 0x5d, 0x24, 0x5d, 0xfa, 0x5c, 0xc3, 0x5c, 0x8c, 0x5c, 0x59, 0x5c,
- 0x3e, 0x5c, 0x0c, 0x5c, 0xd3, 0x5b, 0xb1, 0x5b, 0x78, 0x5b, 0x45, 0x5b,
- 0x14, 0x5b, 0xed, 0x5a, 0xc0, 0x5a, 0x89, 0x5a, 0x4f, 0x5a, 0x16, 0x5a,
- 0xe5, 0x59, 0xb5, 0x59, 0x84, 0x59, 0x4e, 0x59, 0x0d, 0x59, 0xcf, 0x58,
- 0xa6, 0x58, 0x79, 0x58, 0x3e, 0x58, 0xf8, 0x57, 0xc0, 0x57, 0x83, 0x57,
- 0x38, 0x57, 0x03, 0x57, 0xc1, 0x56, 0x65, 0x56, 0xe0, 0x55, 0x52, 0x55,
- 0xd0, 0x54, 0x4c, 0x54, 0xbe, 0x53, 0x32, 0x53, 0xa7, 0x52, 0x2a, 0x52,
- 0x95, 0x51, 0x09, 0x51, 0x76, 0x50, 0xe9, 0x4f, 0x69, 0x4f, 0xe2, 0x4e,
- 0x49, 0x4e, 0xc0, 0x4d, 0x38, 0x4d, 0xbd, 0x4c, 0x2d, 0x4c, 0x98, 0x4b,
- 0x07, 0x4b, 0x76, 0x4a, 0xdc, 0x49, 0x4a, 0x49, 0xb9, 0x48, 0x2d, 0x48,
- 0x9c, 0x47, 0x19, 0x47, 0x80, 0x46, 0xf9, 0x45, 0x66, 0x45, 0xd6, 0x44,
- 0x47, 0x44, 0xb5, 0x43, 0x14, 0x43, 0x74, 0x42, 0xd4, 0x41, 0x42, 0x41,
- 0xa4, 0x40, 0x18, 0x40, 0x85, 0x3f, 0xeb, 0x3e, 0x52, 0x3e, 0xb2, 0x3d,
- 0x0c, 0x3d, 0x7a, 0x3c, 0xdb, 0x3b, 0x3a, 0x3b, 0x87, 0x3a, 0xe0, 0x39,
- 0x29, 0x39, 0x88, 0x38, 0xd1, 0x37, 0x16, 0x37, 0x4d, 0x36, 0x9e, 0x35,
- 0xdc, 0x34, 0x19, 0x34, 0x4a, 0x33, 0x83, 0x32, 0xb7, 0x31, 0xec, 0x30,
- 0x1c, 0x30, 0x47, 0x2f, 0x71, 0x2e, 0x88, 0x2d, 0xa6, 0x2c, 0xbb, 0x2b,
- 0xd0, 0x2a, 0xd8, 0x29, 0xdb, 0x28, 0xe3, 0x27, 0xf5, 0x26, 0xf1, 0x25,
- 0xf8, 0x24, 0xdc, 0x23, 0xdb, 0x22, 0xca, 0x21, 0xa7, 0x20, 0x85, 0x1f,
- 0x5a, 0x1e, 0x30, 0x1d, 0x0a, 0x1c, 0xd5, 0x1a, 0xa6, 0x19, 0x6d, 0x18,
- 0x3d, 0x17, 0xff, 0x15, 0xbf, 0x14, 0x81, 0x13, 0x57, 0x12, 0x15, 0x11,
- 0xe0, 0x0f, 0xa2, 0x0e, 0x65, 0x0d, 0x27, 0x0c, 0xf1, 0x0a, 0xb2, 0x09,
- 0x77, 0x08, 0x4b, 0x07, 0x0a, 0x06, 0xc9, 0x04, 0x97, 0x03, 0x65, 0x02,
- 0x3b, 0x01, 0x03, 0x00, 0xd2, 0xfe, 0x95, 0xfd, 0x6f, 0xfc, 0x50, 0xfb,
- 0x19, 0xfa, 0xf0, 0xf8, 0xb8, 0xf7, 0x97, 0xf6, 0x65, 0xf5, 0x48, 0xf4,
- 0x24, 0xf3, 0xfe, 0xf1, 0xec, 0xf0, 0xd2, 0xef, 0xa9, 0xee, 0x95, 0xed,
- 0x76, 0xec, 0x64, 0xeb, 0x61, 0xea, 0x43, 0xe9, 0x3a, 0xe8, 0x21, 0xe7,
- 0x14, 0xe6, 0xff, 0xe4, 0x06, 0xe4, 0x04, 0xe3, 0x04, 0xe2, 0x01, 0xe1,
- 0x02, 0xe0, 0x04, 0xdf, 0x16, 0xde, 0x1f, 0xdd, 0x29, 0xdc, 0x2d, 0xdb,
- 0x3d, 0xda, 0x45, 0xd9, 0x5a, 0xd8, 0x6f, 0xd7, 0x74, 0xd6, 0x8a, 0xd5,
- 0x91, 0xd4, 0xa5, 0xd3, 0xbb, 0xd2, 0xdb, 0xd1, 0x01, 0xd1, 0x17, 0xd0,
- 0x42, 0xcf, 0x5e, 0xce, 0x94, 0xcd, 0xb1, 0xcc, 0xe8, 0xcb, 0x04, 0xcb,
- 0x29, 0xca, 0x4e, 0xc9, 0x78, 0xc8, 0x99, 0xc7, 0xc4, 0xc6, 0xff, 0xc5,
- 0x3d, 0xc5, 0x76, 0xc4, 0xa6, 0xc3, 0xe4, 0xc2, 0x17, 0xc2, 0x4e, 0xc1,
- 0x8a, 0xc0, 0xc5, 0xbf, 0x0b, 0xbf, 0x42, 0xbe, 0x8e, 0xbd, 0xd8, 0xbc,
- 0x20, 0xbc, 0x60, 0xbb, 0xbb, 0xba, 0x08, 0xba, 0x5a, 0xb9, 0xba, 0xb8,
- 0x08, 0xb8, 0x64, 0xb7, 0xb1, 0xb6, 0x0c, 0xb6, 0x5d, 0xb5, 0xbf, 0xb4,
- 0x10, 0xb4, 0x7b, 0xb3, 0xd0, 0xb2, 0x3d, 0xb2, 0xa1, 0xb1, 0x0f, 0xb1,
- 0x84, 0xb0, 0xf2, 0xaf, 0x63, 0xaf, 0xd3, 0xae, 0x50, 0xae, 0xbd, 0xad,
- 0x49, 0xad, 0xc1, 0xac, 0x4d, 0xac, 0xc6, 0xab, 0x56, 0xab, 0xe4, 0xaa,
- 0x83, 0xaa, 0x0d, 0xaa, 0xac, 0xa9, 0x49, 0xa9, 0xf3, 0xa8, 0x9e, 0xa8,
- 0x4e, 0xa8, 0x07, 0xa8, 0xc5, 0xa7, 0x8d, 0xa7, 0x56, 0xa7, 0x1d, 0xa7,
- 0xf6, 0xa6, 0xc7, 0xa6, 0xad, 0xa6, 0x8c, 0xa6, 0x74, 0xa6, 0x58, 0xa6,
- 0x47, 0xa6, 0x2d, 0xa6, 0x24, 0xa6, 0x23, 0xa6, 0x21, 0xa6, 0x19, 0xa6,
- 0x20, 0xa6, 0x1f, 0xa6, 0x28, 0xa6, 0x3c, 0xa6, 0x4e, 0xa6, 0x59, 0xa6,
- 0x6e, 0xa6, 0x84, 0xa6, 0x9a, 0xa6, 0xb7, 0xa6, 0xd4, 0xa6, 0xef, 0xa6,
- 0x0a, 0xa7, 0x2f, 0xa7, 0x53, 0xa7, 0x77, 0xa7, 0x9c, 0xa7, 0xbc, 0xa7,
- 0xe5, 0xa7, 0x10, 0xa8, 0x35, 0xa8, 0x6d, 0xa8, 0x9b, 0xa8, 0xcb, 0xa8,
- 0xf5, 0xa8, 0x23, 0xa9, 0x5a, 0xa9, 0x80, 0xa9, 0xb7, 0xa9, 0xee, 0xa9,
- 0x1c, 0xaa, 0x46, 0xaa, 0x78, 0xaa, 0xb2, 0xaa, 0xeb, 0xaa, 0x1a, 0xab,
- 0x57, 0xab, 0x84, 0xab, 0xba, 0xab, 0xef, 0xab, 0x22, 0xac, 0x55, 0xac,
- 0x88, 0xac, 0xc1, 0xac, 0xf5, 0xac, 0x2a, 0xad, 0x67, 0xad, 0x9f, 0xad,
- 0xe0, 0xad, 0x14, 0xae, 0x4c, 0xae, 0x82, 0xae, 0xb8, 0xae, 0xf8, 0xae,
- 0x2c, 0xaf, 0x6a, 0xaf, 0x9d, 0xaf, 0xd4, 0xaf, 0x05, 0xb0, 0x38, 0xb0,
- 0x77, 0xb0, 0xb2, 0xb0, 0xf8, 0xb0, 0x3c, 0xb1, 0x97, 0xb1, 0x05, 0xb2,
- 0x6f, 0xb2, 0xdf, 0xb2, 0x48, 0xb3, 0xb2, 0xb3, 0x16, 0xb4, 0x7b, 0xb4,
- 0xe5, 0xb4, 0x54, 0xb5, 0xc3, 0xb5, 0x26, 0xb6, 0x97, 0xb6, 0x03, 0xb7,
- 0x68, 0xb7, 0xce, 0xb7, 0x44, 0xb8, 0xae, 0xb8, 0x20, 0xb9, 0x87, 0xb9,
- 0xf1, 0xb9, 0x5d, 0xba, 0xc6, 0xba, 0x24, 0xbb, 0xa1, 0xbb, 0x05, 0xbc,
- 0x79, 0xbc, 0xdc, 0xbc, 0x4b, 0xbd, 0xba, 0xbd, 0x24, 0xbe, 0x9b, 0xbe,
- 0x07, 0xbf, 0x72, 0xbf, 0xe5, 0xbf, 0x46, 0xc0, 0xc3, 0xc0, 0x1f, 0xc1,
- 0x91, 0xc1, 0x01, 0xc2, 0x79, 0xc2, 0xf1, 0xc2, 0x66, 0xc3, 0xe5, 0xc3,
- 0x55, 0xc4, 0xc8, 0xc4, 0x3e, 0xc5, 0xb3, 0xc5, 0x2d, 0xc6, 0xa7, 0xc6,
- 0x27, 0xc7, 0x97, 0xc7, 0x1f, 0xc8, 0xa0, 0xc8, 0x29, 0xc9, 0xad, 0xc9,
- 0x36, 0xca, 0xad, 0xca, 0x3d, 0xcb, 0xc0, 0xcb, 0x47, 0xcc, 0xe9, 0xcc,
- 0x6f, 0xcd, 0x06, 0xce, 0x84, 0xce, 0x1a, 0xcf, 0xbb, 0xcf, 0x55, 0xd0,
- 0xf6, 0xd0, 0x8b, 0xd1, 0x30, 0xd2, 0xd2, 0xd2, 0x79, 0xd3, 0x1c, 0xd4,
- 0xcf, 0xd4, 0x83, 0xd5, 0x36, 0xd6, 0xe1, 0xd6, 0x96, 0xd7, 0x5f, 0xd8,
- 0x1c, 0xd9, 0xe2, 0xd9, 0xa8, 0xda, 0x6c, 0xdb, 0x43, 0xdc, 0x04, 0xdd,
- 0xd8, 0xdd, 0xac, 0xde, 0x8a, 0xdf, 0x5b, 0xe0, 0x39, 0xe1, 0x0b, 0xe2,
- 0xf5, 0xe2, 0xde, 0xe3, 0xbc, 0xe4, 0x9e, 0xe5, 0x83, 0xe6, 0x62, 0xe7,
- 0x51, 0xe8, 0x34, 0xe9, 0x1e, 0xea, 0x12, 0xeb, 0xf7, 0xeb, 0xe5, 0xec,
- 0xc5, 0xed, 0xc2, 0xee, 0xb1, 0xef, 0xa6, 0xf0, 0x90, 0xf1, 0x7e, 0xf2,
- 0x6f, 0xf3, 0x56, 0xf4, 0x48, 0xf5, 0x35, 0xf6, 0x29, 0xf7, 0x17, 0xf8,
- 0x0a, 0xf9, 0x00, 0xfa, 0xe7, 0xfa, 0xde, 0xfb, 0xc9, 0xfc, 0xc1, 0xfd,
- 0xac, 0xfe, 0xae, 0xff, 0xa2, 0x00, 0x8d, 0x01, 0x70, 0x02, 0x62, 0x03,
- 0x4e, 0x04, 0x3a, 0x05, 0x26, 0x06, 0x16, 0x07, 0xff, 0x07, 0xf3, 0x08,
- 0xda, 0x09, 0xbe, 0x0a, 0xb9, 0x0b, 0xa1, 0x0c, 0x9b, 0x0d, 0x7d, 0x0e,
- 0x66, 0x0f, 0x54, 0x10, 0x36, 0x11, 0x20, 0x12, 0x11, 0x13, 0xf3, 0x13,
- 0xea, 0x14, 0xd1, 0x15, 0xb6, 0x16, 0x9b, 0x17, 0x83, 0x18, 0x7f, 0x19,
- 0x58, 0x1a, 0x53, 0x1b, 0x37, 0x1c, 0x22, 0x1d, 0x0a, 0x1e, 0xf3, 0x1e,
- 0xda, 0x1f, 0xca, 0x20, 0xb1, 0x21, 0x96, 0x22, 0x70, 0x23, 0x55, 0x24,
- 0x39, 0x25, 0x39, 0x26, 0x1a, 0x27, 0x07, 0x28, 0xe1, 0x28, 0xc5, 0x29,
- 0xa7, 0x2a, 0x85, 0x2b, 0x70, 0x2c, 0x4e, 0x2d, 0x3e, 0x2e, 0x19, 0x2f,
- 0xf3, 0x2f, 0xdf, 0x30, 0xc0, 0x31, 0xaf, 0x32, 0x93, 0x33, 0x77, 0x34,
- 0x48, 0x35, 0x2a, 0x36, 0x0f, 0x37, 0xf8, 0x37, 0xd9, 0x38, 0xbe, 0x39,
- 0x8b, 0x3a, 0x74, 0x3b, 0x48, 0x3c, 0x2d, 0x3d, 0xfa, 0x3d, 0xe7, 0x3e,
- 0xb0, 0x3f, 0x98, 0x40, 0x67, 0x41, 0x3a, 0x42, 0x16, 0x43, 0xf4, 0x43,
- 0xd8, 0x44, 0xa4, 0x45, 0x7c, 0x46, 0x4c, 0x47, 0x2a, 0x48, 0x06, 0x49,
- 0xce, 0x49, 0xa5, 0x4a, 0x77, 0x4b, 0x4e, 0x4c, 0x13, 0x4d, 0xdf, 0x4d,
- 0xaa, 0x4e, 0x74, 0x4f, 0x3d, 0x50, 0xfc, 0x50, 0xbd, 0x51, 0x8c, 0x52,
- 0x3e, 0x53, 0xfe, 0x53, 0x99, 0x54, 0x57, 0x55, 0xfc, 0x55, 0xab, 0x56,
- 0x45, 0x57, 0xd6, 0x57, 0x87, 0x58, 0x2f, 0x59, 0xbf, 0x59, 0x48, 0x5a,
- 0xc7, 0x5a, 0x54, 0x5b, 0xc8, 0x5b, 0x45, 0x5c, 0xb4, 0x5c, 0x25, 0x5d,
- 0x7e, 0x5d, 0xda, 0x5d, 0x36, 0x5e, 0xa5, 0x5e, 0xe9, 0x5e, 0x37, 0x5f,
- 0x72, 0x5f, 0xab, 0x5f, 0xe5, 0x5f, 0x1d, 0x60, 0x4f, 0x60, 0x81, 0x60,
- 0x9c, 0x60, 0xc3, 0x60, 0xdc, 0x60, 0xf7, 0x60, 0x04, 0x61, 0x16, 0x61,
- 0x1b, 0x61, 0x21, 0x61, 0x20, 0x61, 0x0d, 0x61, 0x0b, 0x61, 0xf0, 0x60,
- 0xe5, 0x60, 0xc7, 0x60, 0xb3, 0x60, 0x98, 0x60, 0x7c, 0x60, 0x59, 0x60,
- 0x4c, 0x60, 0x24, 0x60, 0x0d, 0x60, 0xdf, 0x5f, 0xb7, 0x5f, 0x87, 0x5f,
- 0x6b, 0x5f, 0x44, 0x5f, 0x28, 0x5f, 0xf5, 0x5e, 0xbd, 0x5e, 0x8f, 0x5e,
- 0x5c, 0x5e, 0x2a, 0x5e, 0xfe, 0x5d, 0xcd, 0x5d, 0xa4, 0x5d, 0x75, 0x5d,
- 0x4d, 0x5d, 0x11, 0x5d, 0xdf, 0x5c, 0xa9, 0x5c, 0x78, 0x5c, 0x42, 0x5c,
- 0x13, 0x5c, 0xde, 0x5b, 0xaf, 0x5b, 0x75, 0x5b, 0x3e, 0x5b, 0xfd, 0x5a,
- 0xbc, 0x5a, 0x90, 0x5a, 0x54, 0x5a, 0x1f, 0x5a, 0xe5, 0x59, 0xc2, 0x59,
- 0x80, 0x59, 0x39, 0x59, 0x0a, 0x59, 0xd6, 0x58, 0x96, 0x58, 0x55, 0x58,
- 0x1e, 0x58, 0xf1, 0x57, 0xc8, 0x57, 0x7e, 0x57, 0x44, 0x57, 0x11, 0x57,
- 0xd4, 0x56, 0x93, 0x56, 0x4c, 0x56, 0x11, 0x56, 0xd7, 0x55, 0xae, 0x55,
- 0x72, 0x55, 0x3c, 0x55, 0x0c, 0x55, 0xd1, 0x54, 0x98, 0x54, 0x63, 0x54,
- 0x2b, 0x54, 0xf8, 0x53, 0xc6, 0x53, 0x81, 0x53, 0x4b, 0x53, 0x19, 0x53,
- 0xea, 0x52, 0xb2, 0x52, 0x7e, 0x52, 0x30, 0x52, 0xc5, 0x51, 0x46, 0x51,
- 0xca, 0x50, 0x55, 0x50, 0xd7, 0x4f, 0x5d, 0x4f, 0xe4, 0x4e, 0x79, 0x4e,
- 0xfb, 0x4d, 0x83, 0x4d, 0x02, 0x4d, 0x8a, 0x4c, 0x1f, 0x4c, 0x98, 0x4b,
- 0x20, 0x4b, 0xa7, 0x4a, 0x36, 0x4a, 0xc0, 0x49, 0x44, 0x49, 0xc3, 0x48,
- 0x44, 0x48, 0xd5, 0x47, 0x59, 0x47, 0xe6, 0x46, 0x63, 0x46, 0xf8, 0x45,
- 0x79, 0x45, 0xfa, 0x44, 0x80, 0x44, 0x01, 0x44, 0x7a, 0x43, 0x04, 0x43,
- 0x85, 0x42, 0x07, 0x42, 0x92, 0x41, 0x17, 0x41, 0x94, 0x40, 0x16, 0x40,
- 0x9f, 0x3f, 0x20, 0x3f, 0x9c, 0x3e, 0x29, 0x3e, 0x9c, 0x3d, 0x20, 0x3d,
- 0x88, 0x3c, 0x0c, 0x3c, 0x87, 0x3b, 0x07, 0x3b, 0x89, 0x3a, 0xfb, 0x39,
- 0x6f, 0x39, 0xe7, 0x38, 0x55, 0x38, 0xcf, 0x37, 0x43, 0x37, 0xb5, 0x36,
- 0x2a, 0x36, 0x9c, 0x35, 0x0a, 0x35, 0x83, 0x34, 0xe6, 0x33, 0x53, 0x33,
- 0xba, 0x32, 0x1d, 0x32, 0x78, 0x31, 0xcb, 0x30, 0x34, 0x30, 0x8e, 0x2f,
- 0xf6, 0x2e, 0x56, 0x2e, 0xab, 0x2d, 0xfe, 0x2c, 0x4c, 0x2c, 0x9f, 0x2b,
- 0xed, 0x2a, 0x36, 0x2a, 0x7b, 0x29, 0xb9, 0x28, 0x02, 0x28, 0x41, 0x27,
- 0x81, 0x26, 0xb9, 0x25, 0xfb, 0x24, 0x2d, 0x24, 0x66, 0x23, 0x98, 0x22,
- 0xc6, 0x21, 0xe9, 0x20, 0x0d, 0x20, 0x28, 0x1f, 0x4c, 0x1e, 0x64, 0x1d,
- 0x66, 0x1c, 0x8c, 0x1b, 0x96, 0x1a, 0xac, 0x19, 0xb2, 0x18, 0xbb, 0x17,
- 0xc2, 0x16, 0xc7, 0x15, 0xcb, 0x14, 0xcd, 0x13, 0xc4, 0x12, 0xca, 0x11,
- 0xb6, 0x10, 0xb8, 0x0f, 0xa3, 0x0e, 0x9e, 0x0d, 0x88, 0x0c, 0x86, 0x0b,
- 0x7b, 0x0a, 0x7c, 0x09, 0x6d, 0x08, 0x5b, 0x07, 0x4a, 0x06, 0x38, 0x05,
- 0x2f, 0x04, 0x1c, 0x03, 0x10, 0x02, 0xf6, 0x00, 0xe9, 0xff, 0xe5, 0xfe,
- 0xcf, 0xfd, 0xc8, 0xfc, 0xb1, 0xfb, 0xa7, 0xfa, 0x8d, 0xf9, 0x7b, 0xf8,
- 0x7e, 0xf7, 0x77, 0xf6, 0x68, 0xf5, 0x62, 0xf4, 0x49, 0xf3, 0x42, 0xf2,
- 0x41, 0xf1, 0x3e, 0xf0, 0x49, 0xef, 0x47, 0xee, 0x56, 0xed, 0x46, 0xec,
- 0x56, 0xeb, 0x5c, 0xea, 0x6c, 0xe9, 0x7d, 0xe8, 0x9c, 0xe7, 0x99, 0xe6,
- 0xbf, 0xe5, 0xc9, 0xe4, 0xe5, 0xe3, 0xfd, 0xe2, 0x17, 0xe2, 0x26, 0xe1,
- 0x44, 0xe0, 0x6d, 0xdf, 0x9f, 0xde, 0xc5, 0xdd, 0xec, 0xdc, 0x26, 0xdc,
- 0x58, 0xdb, 0x91, 0xda, 0xb7, 0xd9, 0xf5, 0xd8, 0x27, 0xd8, 0x63, 0xd7,
- 0x96, 0xd6, 0xd5, 0xd5, 0x1a, 0xd5, 0x52, 0xd4, 0x9d, 0xd3, 0xde, 0xd2,
- 0x27, 0xd2, 0x6c, 0xd1, 0xb3, 0xd0, 0xf6, 0xcf, 0x51, 0xcf, 0x98, 0xce,
- 0xe9, 0xcd, 0x2f, 0xcd, 0x88, 0xcc, 0xdc, 0xcb, 0x41, 0xcb, 0x9f, 0xca,
- 0x01, 0xca, 0x60, 0xc9, 0xc4, 0xc8, 0x13, 0xc8, 0x7e, 0xc7, 0xe2, 0xc6,
- 0x51, 0xc6, 0xb6, 0xc5, 0x1a, 0xc5, 0x8e, 0xc4, 0xf6, 0xc3, 0x74, 0xc3,
- 0xdf, 0xc2, 0x59, 0xc2, 0xd2, 0xc1, 0x47, 0xc1, 0xbe, 0xc0, 0x3b, 0xc0,
- 0xbe, 0xbf, 0x3e, 0xbf, 0xc4, 0xbe, 0x39, 0xbe, 0xbf, 0xbd, 0x3e, 0xbd,
- 0xd7, 0xbc, 0x5d, 0xbc, 0xec, 0xbb, 0x73, 0xbb, 0x07, 0xbb, 0x96, 0xba,
- 0x24, 0xba, 0xb5, 0xb9, 0x49, 0xb9, 0xdd, 0xb8, 0x76, 0xb8, 0x02, 0xb8,
- 0xa8, 0xb7, 0x3c, 0xb7, 0xee, 0xb6, 0x82, 0xb6, 0x2b, 0xb6, 0xc3, 0xb5,
- 0x6e, 0xb5, 0x14, 0xb5, 0xc4, 0xb4, 0x6b, 0xb4, 0x20, 0xb4, 0xd2, 0xb3,
- 0x78, 0xb3, 0x2c, 0xb3, 0xe6, 0xb2, 0x9e, 0xb2, 0x58, 0xb2, 0x1a, 0xb2,
- 0xea, 0xb1, 0xa6, 0xb1, 0x63, 0xb1, 0x2b, 0xb1, 0xf3, 0xb0, 0xb8, 0xb0,
- 0x7b, 0xb0, 0x4e, 0xb0, 0x20, 0xb0, 0xf9, 0xaf, 0xc6, 0xaf, 0xa2, 0xaf,
- 0x84, 0xaf, 0x5e, 0xaf, 0x44, 0xaf, 0x21, 0xaf, 0x06, 0xaf, 0xe9, 0xae,
- 0xe2, 0xae, 0xd0, 0xae, 0xc3, 0xae, 0xba, 0xae, 0xc1, 0xae, 0xaf, 0xae,
- 0xbc, 0xae, 0xb5, 0xae, 0xc0, 0xae, 0xc3, 0xae, 0xd7, 0xae, 0xdd, 0xae,
- 0xfb, 0xae, 0x0a, 0xaf, 0x16, 0xaf, 0x37, 0xaf, 0x4a, 0xaf, 0x70, 0xaf,
- 0x86, 0xaf, 0xa9, 0xaf, 0xc7, 0xaf, 0xec, 0xaf, 0x12, 0xb0, 0x42, 0xb0,
- 0x66, 0xb0, 0x91, 0xb0, 0xc0, 0xb0, 0xee, 0xb0, 0x1a, 0xb1, 0x4c, 0xb1,
- 0x77, 0xb1, 0xb3, 0xb1, 0xdd, 0xb1, 0x10, 0xb2, 0x47, 0xb2, 0x70, 0xb2,
- 0xb8, 0xb2, 0xef, 0xb2, 0x26, 0xb3, 0x64, 0xb3, 0x90, 0xb3, 0xd8, 0xb3,
- 0x07, 0xb4, 0x4b, 0xb4, 0x83, 0xb4, 0xc7, 0xb4, 0xf4, 0xb4, 0x35, 0xb5,
- 0x70, 0xb5, 0xbc, 0xb5, 0xf0, 0xb5, 0x39, 0xb6, 0x7d, 0xb6, 0xb7, 0xb6,
- 0xfa, 0xb6, 0x2e, 0xb7, 0x7d, 0xb7, 0xbb, 0xb7, 0x01, 0xb8, 0x39, 0xb8,
- 0x80, 0xb8, 0xbd, 0xb8, 0x05, 0xb9, 0x46, 0xb9, 0x94, 0xb9, 0xcd, 0xb9,
- 0x17, 0xba, 0x5b, 0xba, 0x9e, 0xba, 0xdf, 0xba, 0x27, 0xbb, 0x6a, 0xbb,
- 0xbc, 0xbb, 0xf6, 0xbb, 0x3a, 0xbc, 0x83, 0xbc, 0xc3, 0xbc, 0x16, 0xbd,
- 0x58, 0xbd, 0xa2, 0xbd, 0xe0, 0xbd, 0x24, 0xbe, 0x70, 0xbe, 0xa1, 0xbe,
- 0xfa, 0xbe, 0x37, 0xbf, 0x8d, 0xbf, 0xc9, 0xbf, 0x1d, 0xc0, 0x5d, 0xc0,
- 0xa6, 0xc0, 0xe6, 0xc0, 0x2f, 0xc1, 0x7a, 0xc1, 0xcb, 0xc1, 0x2f, 0xc2,
- 0x95, 0xc2, 0xfa, 0xc2, 0x55, 0xc3, 0xbb, 0xc3, 0x1e, 0xc4, 0x86, 0xc4,
- 0xec, 0xc4, 0x4b, 0xc5, 0xab, 0xc5, 0x04, 0xc6, 0x72, 0xc6, 0xc6, 0xc6,
- 0x3a, 0xc7, 0x8e, 0xc7, 0xfd, 0xc7, 0x5a, 0xc8, 0xc0, 0xc8, 0x17, 0xc9,
- 0x79, 0xc9, 0xd5, 0xc9, 0x43, 0xca, 0x98, 0xca, 0x05, 0xcb, 0x64, 0xcb,
- 0xc3, 0xcb, 0x1e, 0xcc, 0x81, 0xcc, 0xe3, 0xcc, 0x40, 0xcd, 0xa6, 0xcd,
- 0x0a, 0xce, 0x6a, 0xce, 0xc0, 0xce, 0x26, 0xcf, 0x81, 0xcf, 0xf0, 0xcf,
- 0x48, 0xd0, 0xad, 0xd0, 0x07, 0xd1, 0x71, 0xd1, 0xca, 0xd1, 0x2b, 0xd2,
- 0x8a, 0xd2, 0xed, 0xd2, 0x50, 0xd3, 0xa1, 0xd3, 0x0f, 0xd4, 0x6f, 0xd4,
- 0xd6, 0xd4, 0x30, 0xd5, 0x93, 0xd5, 0xf6, 0xd5, 0x55, 0xd6, 0xb5, 0xd6,
- 0x12, 0xd7, 0x7b, 0xd7, 0xde, 0xd7, 0x34, 0xd8, 0x93, 0xd8, 0xe9, 0xd8,
- 0x61, 0xd9, 0xbb, 0xd9, 0x2b, 0xda, 0x88, 0xda, 0xeb, 0xda, 0x4f, 0xdb,
- 0xb9, 0xdb, 0x21, 0xdc, 0x80, 0xdc, 0xf7, 0xdc, 0x53, 0xdd, 0xbb, 0xdd,
- 0x2b, 0xde, 0xa4, 0xde, 0x05, 0xdf, 0x74, 0xdf, 0xd8, 0xdf, 0x44, 0xe0,
- 0xb4, 0xe0, 0x26, 0xe1, 0x91, 0xe1, 0x01, 0xe2, 0x77, 0xe2, 0xeb, 0xe2,
- 0x5e, 0xe3, 0xc7, 0xe3, 0x44, 0xe4, 0xb2, 0xe4, 0x25, 0xe5, 0xa3, 0xe5,
- 0x15, 0xe6, 0x97, 0xe6, 0x0b, 0xe7, 0x8b, 0xe7, 0x10, 0xe8, 0x7d, 0xe8,
- 0x06, 0xe9, 0x74, 0xe9, 0xff, 0xe9, 0x82, 0xea, 0x01, 0xeb, 0x85, 0xeb,
- 0xfa, 0xeb, 0x91, 0xec, 0x07, 0xed, 0x8f, 0xed, 0x15, 0xee, 0x9a, 0xee,
- 0x26, 0xef, 0xa5, 0xef, 0x26, 0xf0, 0xb2, 0xf0, 0x3e, 0xf1, 0xca, 0xf1,
- 0x45, 0xf2, 0xcc, 0xf2, 0x51, 0xf3, 0xdc, 0xf3, 0x5c, 0xf4, 0xe8, 0xf4,
- 0x6e, 0xf5, 0xf9, 0xf5, 0x79, 0xf6, 0xf9, 0xf6, 0x7d, 0xf7, 0x08, 0xf8,
- 0x91, 0xf8, 0x18, 0xf9, 0x95, 0xf9, 0x18, 0xfa, 0xa5, 0xfa, 0x21, 0xfb,
- 0xa9, 0xfb, 0x2a, 0xfc, 0xa7, 0xfc, 0x23, 0xfd, 0xa3, 0xfd, 0x2b, 0xfe,
- 0x9c, 0xfe, 0x2b, 0xff, 0xa0, 0xff, 0x1c, 0x00, 0x9a, 0x00, 0x11, 0x01,
- 0x9a, 0x01, 0x14, 0x02, 0x8c, 0x02, 0x07, 0x03, 0x84, 0x03, 0xf7, 0x03,
- 0x75, 0x04, 0xf3, 0x04, 0x65, 0x05, 0xe8, 0x05, 0x54, 0x06, 0xd3, 0x06,
- 0x48, 0x07, 0xc2, 0x07, 0x38, 0x08, 0xad, 0x08, 0x28, 0x09, 0x99, 0x09,
- 0x11, 0x0a, 0x79, 0x0a, 0xf5, 0x0a, 0x5c, 0x0b, 0xd1, 0x0b, 0x3f, 0x0c,
- 0xb5, 0x0c, 0x2c, 0x0d, 0x9a, 0x0d, 0x0b, 0x0e, 0x74, 0x0e, 0xe6, 0x0e,
- 0x45, 0x0f, 0xbd, 0x0f, 0x2f, 0x10, 0x9a, 0x10, 0x05, 0x11, 0x6c, 0x11,
- 0xdb, 0x11, 0x40, 0x12, 0xaa, 0x12, 0x14, 0x13, 0x81, 0x13, 0xe9, 0x13,
- 0x4d, 0x14, 0xb9, 0x14, 0x18, 0x15, 0x88, 0x15, 0xe6, 0x15, 0x58, 0x16,
- 0xb9, 0x16, 0x1c, 0x17, 0x7e, 0x17, 0xe3, 0x17, 0x43, 0x18, 0xac, 0x18,
- 0x08, 0x19, 0x6d, 0x19, 0xce, 0x19, 0x34, 0x1a, 0x90, 0x1a, 0xf5, 0x1a,
- 0x53, 0x1b, 0xbb, 0x1b, 0x07, 0x1c, 0x6f, 0x1c, 0xc2, 0x1c, 0x28, 0x1d,
- 0x84, 0x1d, 0xe8, 0x1d, 0x35, 0x1e, 0xa2, 0x1e, 0xf8, 0x1e, 0x59, 0x1f,
- 0xb8, 0x1f, 0x0c, 0x20, 0x69, 0x20, 0xbe, 0x20, 0x19, 0x21, 0x66, 0x21,
- 0xc6, 0x21, 0x1f, 0x22, 0x70, 0x22, 0xbe, 0x22, 0x18, 0x23, 0x72, 0x23,
- 0xbf, 0x23, 0x0f, 0x24, 0x67, 0x24, 0xc0, 0x24, 0x08, 0x25, 0x51, 0x25,
- 0xa6, 0x25, 0xf4, 0x25, 0x42, 0x26, 0x93, 0x26, 0xd6, 0x26, 0x25, 0x27,
- 0x6c, 0x27, 0xb7, 0x27, 0x07, 0x28, 0x49, 0x28, 0x96, 0x28, 0xda, 0x28,
- 0x22, 0x29, 0x66, 0x29, 0xa4, 0x29, 0xe8, 0x29, 0x20, 0x2a, 0x62, 0x2a,
- 0xa9, 0x2a, 0xe5, 0x2a, 0x21, 0x2b, 0x5a, 0x2b, 0x97, 0x2b, 0xc1, 0x2b,
- 0xfe, 0x2b, 0x28, 0x2c, 0x57, 0x2c, 0x88, 0x2c, 0xae, 0x2c, 0xd3, 0x2c,
- 0xfa, 0x2c, 0x17, 0x2d, 0x33, 0x2d, 0x4b, 0x2d, 0x5d, 0x2d, 0x68, 0x2d,
- 0x81, 0x2d, 0x92, 0x2d, 0x9e, 0x2d, 0xa9, 0x2d, 0xbb, 0x2d, 0xc3, 0x2d,
- 0xcd, 0x2d, 0xd5, 0x2d, 0xcd, 0x2d, 0xdc, 0x2d, 0xe3, 0x2d, 0xe1, 0x2d,
- 0xdd, 0x2d, 0xd9, 0x2d, 0xd7, 0x2d, 0xcf, 0x2d, 0xe0, 0x2d, 0xd2, 0x2d,
- 0xd2, 0x2d, 0xcb, 0x2d, 0xb7, 0x2d, 0xb6, 0x2d, 0xa1, 0x2d, 0x9e, 0x2d,
- 0x8b, 0x2d, 0x84, 0x2d, 0x68, 0x2d, 0x6a, 0x2d, 0x4e, 0x2d, 0x45, 0x2d,
- 0x2f, 0x2d, 0x18, 0x2d, 0x15, 0x2d, 0xef, 0x2c, 0xe8, 0x2c, 0xc9, 0x2c,
- 0xc7, 0x2c, 0xaa, 0x2c, 0x9b, 0x2c, 0x7c, 0x2c, 0x64, 0x2c, 0x3c, 0x2c,
- 0x2e, 0x2c, 0x16, 0x2c, 0x05, 0x2c, 0xe1, 0x2b, 0xc8, 0x2b, 0xb5, 0x2b,
- 0x9a, 0x2b, 0x7c, 0x2b, 0x61, 0x2b, 0x3f, 0x2b, 0x21, 0x2b, 0x01, 0x2b,
- 0xee, 0x2a, 0xd0, 0x2a, 0xb3, 0x2a, 0x95, 0x2a, 0x6d, 0x2a, 0x50, 0x2a,
- 0x2b, 0x2a, 0x0b, 0x2a, 0xe9, 0x29, 0xd1, 0x29, 0xa8, 0x29, 0x97, 0x29,
- 0x6c, 0x29, 0x51, 0x29, 0x24, 0x29, 0x03, 0x29, 0xe6, 0x28, 0xbe, 0x28,
- 0xa1, 0x28, 0x80, 0x28, 0x64, 0x28, 0x38, 0x28, 0x12, 0x28, 0xf0, 0x27,
- 0xd3, 0x27, 0xac, 0x27, 0x94, 0x27, 0x67, 0x27, 0x4a, 0x27, 0x1c, 0x27,
- 0xf7, 0x26, 0xd1, 0x26, 0xb6, 0x26, 0x8d, 0x26, 0x6e, 0x26, 0x4b, 0x26,
- 0x25, 0x26, 0x02, 0x26, 0xd8, 0x25, 0xbe, 0x25, 0x93, 0x25, 0x7c, 0x25,
- 0x4a, 0x25, 0x27, 0x25, 0x07, 0x25, 0xdc, 0x24, 0xbb, 0x24, 0x9a, 0x24,
- 0x78, 0x24, 0x4c, 0x24, 0x26, 0x24, 0x00, 0x24, 0xd7, 0x23, 0xc0, 0x23,
- 0x94, 0x23, 0x71, 0x23, 0x45, 0x23, 0x1c, 0x23, 0x00, 0x23, 0xd4, 0x22,
- 0xb5, 0x22, 0x8e, 0x22, 0x67, 0x22, 0x39, 0x22, 0x00, 0x22, 0xbd, 0x21,
- 0x87, 0x21, 0x46, 0x21, 0x01, 0x21, 0xca, 0x20, 0x89, 0x20, 0x4a, 0x20,
- 0x17, 0x20, 0xd6, 0x1f, 0x9a, 0x1f, 0x5e, 0x1f, 0x20, 0x1f, 0xe0, 0x1e,
- 0xa3, 0x1e, 0x5f, 0x1e, 0x29, 0x1e, 0xf0, 0x1d, 0xb8, 0x1d, 0x78, 0x1d,
- 0x36, 0x1d, 0x04, 0x1d, 0xc6, 0x1c, 0x8b, 0x1c, 0x4d, 0x1c, 0x18, 0x1c,
- 0xd9, 0x1b, 0x97, 0x1b, 0x5c, 0x1b, 0x2b, 0x1b, 0xf4, 0x1a, 0xb1, 0x1a,
- 0x7c, 0x1a, 0x32, 0x1a, 0x02, 0x1a, 0xc6, 0x19, 0x8b, 0x19, 0x59, 0x19,
- 0x10, 0x19, 0xd7, 0x18, 0x9c, 0x18, 0x62, 0x18, 0x22, 0x18, 0xe8, 0x17,
- 0xb1, 0x17, 0x7c, 0x17, 0x34, 0x17, 0xf9, 0x16, 0xc0, 0x16, 0x8b, 0x16,
- 0x55, 0x16, 0x14, 0x16, 0xdd, 0x15, 0x9f, 0x15, 0x65, 0x15, 0x2b, 0x15,
- 0xea, 0x14, 0xb9, 0x14, 0x70, 0x14, 0x3d, 0x14, 0x05, 0x14, 0xc1, 0x13,
- 0x86, 0x13, 0x45, 0x13, 0x09, 0x13, 0xca, 0x12, 0x90, 0x12, 0x57, 0x12,
- 0x1a, 0x12, 0xe1, 0x11, 0x9b, 0x11, 0x61, 0x11, 0x1d, 0x11, 0xe1, 0x10,
- 0x9d, 0x10, 0x64, 0x10, 0x17, 0x10, 0xde, 0x0f, 0xa1, 0x0f, 0x60, 0x0f,
- 0x1b, 0x0f, 0xd8, 0x0e, 0x90, 0x0e, 0x5b, 0x0e, 0x0e, 0x0e, 0xd3, 0x0d,
- 0x86, 0x0d, 0x4d, 0x0d, 0xf5, 0x0c, 0xba, 0x0c, 0x68, 0x0c, 0x2a, 0x0c,
- 0xde, 0x0b, 0x94, 0x0b, 0x4e, 0x0b, 0x07, 0x0b, 0xbb, 0x0a, 0x6c, 0x0a,
- 0x25, 0x0a, 0xd4, 0x09, 0x89, 0x09, 0x39, 0x09, 0xe6, 0x08, 0xa3, 0x08,
- 0x4f, 0x08, 0x02, 0x08, 0xa7, 0x07, 0x5f, 0x07, 0x08, 0x07, 0xba, 0x06,
- 0x68, 0x06, 0x1f, 0x06, 0xc5, 0x05, 0x7a, 0x05, 0x1f, 0x05, 0xd7, 0x04,
- 0x85, 0x04, 0x31, 0x04, 0xde, 0x03, 0x89, 0x03, 0x3a, 0x03, 0xe9, 0x02,
- 0x96, 0x02, 0x47, 0x02, 0xf7, 0x01, 0xa4, 0x01, 0x5d, 0x01, 0x06, 0x01,
- 0xb9, 0x00
-};
-unsigned int kick_raw_len = 6350;
diff --git a/third-party/TeensyVariablePlayback.O/extras/linux/sd_raw/CMakeLists.txt b/third-party/TeensyVariablePlayback.O/extras/linux/sd_raw/CMakeLists.txt
deleted file mode 100644
index f8ac13d..0000000
--- a/third-party/TeensyVariablePlayback.O/extras/linux/sd_raw/CMakeLists.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-cmake_minimum_required(VERSION 3.10)
-project(sd_raw)
-set(CMAKE_CXX_STANDARD 14)
-
-find_package(teensy_x86_stubs)
-include_directories(${teensy_x86_stubs_INCLUDE_DIR})
-
-find_package(teensy_audio_x86_stubs)
-include_directories(${teensy_audio_x86_stubs_INCLUDE_DIR})
-
-find_package(teensy_x86_sd_stubs)
-include_directories(${teensy_x86_sd_stubs_INCLUDE_DIR})
-
-include_directories(../../../src)
-add_executable(sd_raw sd_raw.cpp)
-
-target_link_libraries(sd_raw ${teensy_x86_stubs_LIBS})
-target_link_libraries(sd_raw ${teensy_audio_x86_stubs_LIBS})
-target_link_libraries(sd_raw ${teensy_x86_sd_stubs_LIBS})
-target_link_libraries(sd_raw teensy_variable_playback)
diff --git a/third-party/TeensyVariablePlayback.O/extras/linux/sd_raw/sd_raw.cpp b/third-party/TeensyVariablePlayback.O/extras/linux/sd_raw/sd_raw.cpp
deleted file mode 100644
index 2ae2411..0000000
--- a/third-party/TeensyVariablePlayback.O/extras/linux/sd_raw/sd_raw.cpp
+++ /dev/null
@@ -1,74 +0,0 @@
-// Plays a RAW (16-bit signed) PCM audio file at slower or faster rate
-// this example requires an uSD-card inserted to teensy 3.6 with a file called DEMO.RAW
-#include
-#include
-#include
-#include "SD.h"
-#include "playsdresmp.h"
-
-// GUItool: begin automatically generated code
-AudioControlSGTL5000 audioShield;
-AudioPlaySdResmp playSdRaw1; //xy=324,457
-AudioOutputI2S i2s2; //xy=840.8571472167969,445.5714416503906
-AudioConnection patchCord1(playSdRaw1, 0, i2s2, 0);
-AudioConnection patchCord2(playSdRaw1, 0, i2s2, 1);
-// GUItool: end automatically generated code
-
-#define A14 10
-#define BUILTIN_SDCARD 10
-
-const char* _filename = "DEMO.RAW";
-const int analogInPin = A14;
-
-int sensorValue = 0;
-
-void setup() {
- analogReference(0);
- pinMode(analogInPin, INPUT);
-
- Serial.begin(57600);
-
- if (!(SD.begin(BUILTIN_SDCARD))) {
- // stop here if no SD card, but print a message
- while (1) {
- Serial.println("Unable to access the SD card");
- delay(500);
- }
- }
-
- AudioMemory(24);
-
- audioShield.enable();
- audioShield.volume(0.5);
-
- playSdRaw1.playRaw(_filename, 1);
- playSdRaw1.setPlaybackRate(-1);
- Serial.println("playing...");
-}
-
-void loop() {
-
- int newsensorValue = analogRead(analogInPin);
- if (newsensorValue / 64 != sensorValue / 64) {
- sensorValue = newsensorValue;
- float rate = (sensorValue - 512.0) / 512.0;
- playSdRaw1.setPlaybackRate(rate);
- Serial.printf("rate: %f %x\n", rate, sensorValue);
- }
-
- if (!playSdRaw1.isPlaying()) {
- Serial.println("playing...");
- playSdRaw1.playRaw(_filename, 1);
- }
-}
-
-#ifdef BUILD_FOR_LINUX
-int main() {
- initialize_mock_arduino();
- SD.setSDCardFileData("234234234", 5);
- setup();
- while(true){
- loop();
- }
-}
-#endif
\ No newline at end of file
diff --git a/third-party/TeensyVariablePlayback.O/extras/soundio/save_raw/CMakeLists.txt b/third-party/TeensyVariablePlayback.O/extras/soundio/save_raw/CMakeLists.txt
deleted file mode 100644
index 529b888..0000000
--- a/third-party/TeensyVariablePlayback.O/extras/soundio/save_raw/CMakeLists.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-cmake_minimum_required(VERSION 3.10)
-set(CMAKE_CXX_STANDARD 11)
-project(save_raw)
-
-find_package(teensy_x86_stubs)
-include_directories(${teensy_x86_stubs_INCLUDE_DIR})
-
-find_package(teensy_x86_sd_stubs)
-include_directories(${teensy_x86_sd_stubs_INCLUDE_DIR})
-
-find_package(teensy_audio_x86_stubs)
-include_directories(${teensy_audio_x86_stubs_INCLUDE_DIR})
-
-find_package(teensy_audio_x86_stubs_soundio)
-if(teensy_audio_x86_stubs_soundio_FOUND)
- include_directories(${teensy_audio_x86_stubs_soundio_INCLUDE_DIR})
-
- include_directories(/usr/local/include) #soundio
- include_directories(../../../src)
-
- add_executable(save_raw save_raw.cpp)
- target_link_libraries(save_raw teensy_variable_playback)
-
- if(WIN32)
- elseif(UNIX AND NOT APPLE)
- set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall")
- SET(SOUNDIO_LIBS -L/usr/lib/x86_64-linux-gnu -lsoundio)
- elseif(APPLE)
- INCLUDE_DIRECTORIES(/System/Library/Frameworks)
- FIND_LIBRARY(glfw3_LIBRARY glfw)
- FIND_LIBRARY(COCOA_LIBRARY Cocoa)
- FIND_LIBRARY(OpenGL_LIBRARY OpenGL)
- FIND_LIBRARY(IOKit_LIBRARY IOKit)
- FIND_LIBRARY(glew_LIBRARY glew)
- FIND_LIBRARY(CoreVideo_LIBRARY CoreVideo)
- MARK_AS_ADVANCED(COCOA_LIBRARY OpenGL_LIBRARY)
- FIND_LIBRARY(FREETYPE_LIBRARIES FreeType)
- SET(APPLE_LIBS ${COCOA_LIBRARY} ${IOKit_LIBRARY} ${OpenGL_LIBRARY} ${CoreVideo_LIBRARY})
- SET(APPLE_LIBS ${APPLE_LIBS} ${GLFW3_LIBRARY} ${ASSIMP_LIBRARY} ${FREETYPE_LIBRARIES} ${glfw3_LIBRARY} ${glew_LIBRARY})
- set(LIBS ${LIBS} ${APPLE_LIBS})
- target_link_libraries(save_raw
- "-framework CoreServices"
- "-framework CoreAudio"
- "-framework Foundation"
- "-framework AudioUnit")
- SET(SOUNDIO_LIBS /usr/local/lib/libsoundio.a)
- endif()
-
- target_link_libraries(save_raw ${LIBS} ${teensy_x86_stubs_LIBS} ${teensy_x86_sd_stubs_LIBS} ${teensy_audio_x86_stubs_LIBS} ${teensy_audio_x86_stubs_soundio_LIBS} ${teensy_st7735_linux_stubs_LIBS} ${teensy_st7735_linux_extras_opengl_LIBS} ${SOUNDIO_LIBS})
-#set(CMAKE_VERBOSE_MAKEFILE 1)
-endif()
\ No newline at end of file
diff --git a/third-party/TeensyVariablePlayback.O/extras/soundio/save_raw/save_raw.cpp b/third-party/TeensyVariablePlayback.O/extras/soundio/save_raw/save_raw.cpp
deleted file mode 100644
index 1cfbdd6..0000000
--- a/third-party/TeensyVariablePlayback.O/extras/soundio/save_raw/save_raw.cpp
+++ /dev/null
@@ -1,692 +0,0 @@
-// Plays a RAW (16-bit signed) PCM audio file at slower or faster rate
-// this example plays a sample stored in an array
-#include
-#include
-#include "../../../src/playarrayresmp.h"
-#include "output_soundio.h"
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-// GUItool: begin automatically generated code
-AudioPlayArrayResmp rraw_a1; //xy=306,225
-AudioRecordQueue queue1; //xy=609,267
-AudioOutputSoundIO sio_out1; //xy=612,224
-AudioConnection patchCord1(rraw_a1, 0, sio_out1, 0);
-AudioConnection patchCord2(rraw_a1, 0, sio_out1, 1);
-AudioConnection patchCord3(rraw_a1, 0, queue1, 0);
-// GUItool: end automatically generated code
-
-extern unsigned int kick_raw_len;
-extern unsigned char kick_raw[];
-
-int16_t buffer[512] = {0};
-File frec;
-
-unsigned long lastSamplePlayed = 0;
-void my_handler(sig_atomic_t i);
-static char stack_body[64*1024];
-static stack_t sigseg_stack;
-static struct sigaction sigseg_handler;
-
-void crash_handler(sig_atomic_t i);
-
-void setup() {
- Serial.begin(9600);
-
- rraw_a1.setPlaybackRate(0.25f);
- rraw_a1.enableInterpolation(true);
- //rraw_a1.play((int16_t*)kick_raw, kick_raw_len/2);
- Serial.println("setup done");
-
- if (SD.exists("RECORD.RAW")) {
- // The SD library writes new data to the end of the
- // file, so to start a new recording, the old file
- // must be deleted before new data is written.
- SD.remove("RECORD.RAW");
- }
- frec = SD.open("RECORD.RAW", O_WRITE);
-
- AudioMemory(120);
-
- if (frec) {
- queue1.begin();
- Serial.println("startRecording");
- } else {
- Serial.println("recording failed...");
- }
-}
-
-void loop() {
- unsigned currentMillis = millis();
- if (currentMillis > lastSamplePlayed + 1000) {
- if (!rraw_a1.isPlaying()) {
- rraw_a1.playRaw((int16_t *)kick_raw, kick_raw_len/2, 1);
- lastSamplePlayed = currentMillis;
-
- Serial.print("Memory: ");
- Serial.print(AudioMemoryUsage());
- Serial.print(",");
- Serial.print(AudioMemoryUsageMax());
- Serial.println();
- }
- }
-
- if (queue1.available() >= 1) {
- int16_t* incomming = queue1.readBuffer();
- //Serial.printf("sizeof(incomming)=%i\n", sizeof(incomming));
- //if (incomming != NULL && sizeof(incomming) >= 256) {
- if (incomming != NULL) {
- memcpy(buffer, incomming, 256);
- queue1.freeBuffer();
- frec.write((unsigned char *)buffer, 256);
- frec.flush();
- }
- //else {
- // arduino_should_exit = true;
- //Serial.printf("sizeof(incomming)=%i\n", sizeof(incomming));
- //}
- }
- delay(1);
-}
-
-int main() {
- signal (SIGINT,my_handler);
- signal (SIGSEGV,crash_handler);
-
- sigseg_stack.ss_sp = stack_body;
- sigseg_stack.ss_flags = SS_ONSTACK;
- sigseg_stack.ss_size = sizeof(stack_body);
- // assert(!sigaltstack(&sigseg_stack, nullptr));
- sigseg_handler.sa_flags = SA_ONSTACK;
- sigseg_handler.sa_handler = &crash_handler;
- // assert(!sigaction(SIGSEGV, &sigseg_handler, nullptr));
-
- initialize_mock_arduino();
- SD.setSDCardFolderPath(".");
- setup();
- while(!arduino_should_exit){
- loop();
- }
- delay(1000);
- frec.close();
-}
-
-void my_handler(sig_atomic_t i){
- if ( i== SIGINT) {
- arduino_should_exit = true;
- printf("Caught signal %d\n",i);
- } else
- {
- cerr << "sig seg fault handler" << endl;
- const int asize = 10;
- void *array[asize];
- size_t size;
-
- // get void*'s for all entries on the stack
- size = backtrace(array, asize);
-
- // print out all the frames to stderr
- cerr << "stack trace: " << endl;
- backtrace_symbols_fd(array, size, STDERR_FILENO);
- cerr << "resend SIGSEGV to get core dump" << endl;
- signal(i, SIG_DFL);
- kill(getpid(), i);
- }
-}
-void crash_handler(sig_atomic_t i){
- cerr << "sig seg fault handler" << endl;
- const int asize = 10;
- void *array[asize];
- size_t size;
-
- // get void*'s for all entries on the stack
- size = backtrace(array, asize);
-
- // print out all the frames to stderr
- cerr << "stack trace: " << endl;
- backtrace_symbols_fd(array, size, STDERR_FILENO);
- cerr << "resend SIGSEGV to get core dump" << endl;
- signal(i, SIG_DFL);
- kill(getpid(), i);
-}
-
-unsigned char kick_raw[] = {
- 0x99, 0x02, 0xd7, 0x02, 0xfa, 0x02, 0x5f, 0x03, 0xc1, 0x03, 0x2a, 0x04,
- 0xad, 0x04, 0xa5, 0x05, 0x76, 0x06, 0x2f, 0x07, 0x9e, 0x07, 0xe2, 0x07,
- 0x43, 0x08, 0x92, 0x08, 0xb2, 0x08, 0xe8, 0x08, 0x16, 0x09, 0xda, 0x08,
- 0x51, 0x08, 0x01, 0x08, 0x25, 0x08, 0x70, 0x08, 0xc3, 0x08, 0x23, 0x09,
- 0x95, 0x09, 0x19, 0x0a, 0x83, 0x0a, 0x7e, 0x0a, 0xd0, 0x0a, 0x65, 0x0b,
- 0xf6, 0x0b, 0x89, 0x0c, 0xd1, 0x0c, 0xcf, 0x0c, 0x1a, 0x0d, 0xe5, 0x0d,
- 0x5e, 0x0e, 0xbb, 0x0e, 0xec, 0x0e, 0xd9, 0x0e, 0x07, 0x0f, 0xc8, 0x0f,
- 0x2a, 0x10, 0x04, 0x10, 0x28, 0x10, 0x54, 0x11, 0x8e, 0x13, 0x4b, 0x16,
- 0x09, 0x19, 0x91, 0x1b, 0xf7, 0x1d, 0x55, 0x20, 0xd1, 0x22, 0xcb, 0x25,
- 0x4d, 0x29, 0xa8, 0x2c, 0x7f, 0x2f, 0xda, 0x31, 0xac, 0x34, 0x0a, 0x3a,
- 0x24, 0x47, 0x9d, 0x5b, 0xe9, 0x67, 0x29, 0x67, 0x24, 0x66, 0x26, 0x66,
- 0xd2, 0x65, 0x9c, 0x65, 0x38, 0x65, 0x05, 0x65, 0x9f, 0x64, 0x64, 0x64,
- 0x12, 0x64, 0xce, 0x63, 0x7c, 0x63, 0x32, 0x63, 0xe6, 0x62, 0x97, 0x62,
- 0x49, 0x62, 0x01, 0x62, 0xb3, 0x61, 0x63, 0x61, 0x15, 0x61, 0xc4, 0x60,
- 0x75, 0x60, 0x20, 0x60, 0xce, 0x5f, 0x7a, 0x5f, 0x28, 0x5f, 0xd5, 0x5e,
- 0x81, 0x5e, 0x2d, 0x5e, 0xd3, 0x5d, 0x80, 0x5d, 0x2e, 0x5d, 0xe6, 0x5c,
- 0x1a, 0x5c, 0x16, 0x5a, 0x01, 0x58, 0xb9, 0x56, 0x6d, 0x55, 0xf4, 0x53,
- 0x49, 0x52, 0x83, 0x50, 0x87, 0x4e, 0x5f, 0x4c, 0x68, 0x4a, 0x5c, 0x48,
- 0x62, 0x46, 0x5a, 0x44, 0xe2, 0x41, 0x08, 0x3f, 0x1c, 0x3c, 0x44, 0x39,
- 0x35, 0x36, 0xcb, 0x32, 0xaf, 0x2f, 0xc8, 0x2c, 0xf8, 0x29, 0x55, 0x27,
- 0x6a, 0x24, 0x0f, 0x21, 0x5e, 0x1d, 0xc3, 0x19, 0x7b, 0x16, 0x71, 0x13,
- 0x6c, 0x10, 0x00, 0x0d, 0xd2, 0x08, 0x7f, 0x04, 0x7a, 0x01, 0x43, 0xff,
- 0xb9, 0xfc, 0xfa, 0xf9, 0x3b, 0xf7, 0xcb, 0xf4, 0x2b, 0xf2, 0x02, 0xef,
- 0x0c, 0xec, 0x3d, 0xe9, 0x21, 0xe6, 0xa6, 0xe2, 0x8a, 0xdf, 0x00, 0xdd,
- 0xbc, 0xda, 0x9e, 0xd8, 0xc1, 0xd6, 0xd6, 0xd4, 0xd6, 0xd2, 0xad, 0xd0,
- 0x5f, 0xce, 0xf0, 0xcb, 0xe9, 0xc9, 0x61, 0xc8, 0x75, 0xc7, 0x97, 0xc6,
- 0x3e, 0xc5, 0x07, 0xc4, 0x8e, 0xc3, 0x18, 0xc3, 0x3a, 0xc2, 0x15, 0xc1,
- 0x0e, 0xc0, 0xb3, 0xbf, 0xcf, 0xbf, 0xf8, 0xbf, 0xcc, 0xbf, 0x72, 0xbf,
- 0x41, 0xbf, 0x2b, 0xbf, 0xe2, 0xbe, 0x99, 0xbe, 0x4e, 0xbe, 0x0e, 0xbe,
- 0xcd, 0xbd, 0x7c, 0xbd, 0x8a, 0xbd, 0x88, 0xbd, 0x04, 0xbd, 0x0c, 0xbc,
- 0xb3, 0xbb, 0xf6, 0xbb, 0xf1, 0xbb, 0x12, 0xbc, 0x6f, 0xbc, 0xcb, 0xbc,
- 0xe4, 0xbc, 0x33, 0xbd, 0x1b, 0xbe, 0xac, 0xbe, 0x1e, 0xbf, 0x91, 0xbf,
- 0x50, 0xc0, 0x40, 0xc1, 0x3d, 0xc2, 0x32, 0xc3, 0xdf, 0xc3, 0xad, 0xc4,
- 0x77, 0xc5, 0xbe, 0xc6, 0xc7, 0xc8, 0x1d, 0xcb, 0x0e, 0xcd, 0x83, 0xce,
- 0xf1, 0xcf, 0xb4, 0xd1, 0x7d, 0xd3, 0x86, 0xd5, 0x89, 0xd7, 0xd2, 0xd9,
- 0x34, 0xdc, 0x28, 0xde, 0x23, 0xe0, 0x33, 0xe2, 0x0a, 0xe4, 0x59, 0xe5,
- 0xfc, 0xe6, 0x98, 0xe9, 0x30, 0xec, 0x91, 0xee, 0xc2, 0xf0, 0x0d, 0xf3,
- 0x35, 0xf5, 0xf3, 0xf6, 0xc4, 0xf8, 0xcb, 0xfa, 0xef, 0xfc, 0x65, 0xff,
- 0x05, 0x02, 0x7c, 0x04, 0xde, 0x06, 0x75, 0x09, 0x2b, 0x0c, 0x9b, 0x0e,
- 0xf3, 0x10, 0xb3, 0x13, 0x3a, 0x16, 0xeb, 0x18, 0x55, 0x1c, 0xad, 0x1f,
- 0xa8, 0x22, 0x54, 0x25, 0xae, 0x27, 0x33, 0x2a, 0x16, 0x2d, 0x36, 0x30,
- 0x84, 0x33, 0x94, 0x36, 0xbd, 0x38, 0xa2, 0x3a, 0x7d, 0x3c, 0x06, 0x3e,
- 0x24, 0x3f, 0x27, 0x40, 0x7c, 0x41, 0xef, 0x42, 0x14, 0x44, 0xeb, 0x44,
- 0x06, 0x46, 0x53, 0x47, 0x47, 0x48, 0x9b, 0x48, 0xaf, 0x48, 0xd7, 0x48,
- 0x4c, 0x49, 0xa0, 0x49, 0xbe, 0x49, 0xd4, 0x49, 0xfa, 0x49, 0x5e, 0x4a,
- 0xcc, 0x4a, 0x14, 0x4b, 0xfe, 0x4a, 0x22, 0x4b, 0x10, 0x4c, 0x0c, 0x4d,
- 0xb2, 0x4d, 0x4c, 0x4e, 0x3e, 0x4e, 0x77, 0x4d, 0x98, 0x4c, 0xf6, 0x4b,
- 0x67, 0x4b, 0xf0, 0x4a, 0x2a, 0x4a, 0xea, 0x48, 0x06, 0x48, 0x47, 0x47,
- 0xb2, 0x46, 0xda, 0x45, 0xad, 0x44, 0x5c, 0x43, 0x43, 0x42, 0x9e, 0x41,
- 0x0a, 0x41, 0x49, 0x40, 0xa6, 0x3f, 0x9d, 0x3e, 0x3c, 0x3d, 0xc6, 0x3b,
- 0xf6, 0x39, 0x87, 0x37, 0xf6, 0x34, 0x87, 0x32, 0x2b, 0x30, 0x6f, 0x2d,
- 0xfa, 0x2a, 0x3d, 0x29, 0x48, 0x27, 0xc2, 0x24, 0x49, 0x22, 0xca, 0x1f,
- 0xa0, 0x1c, 0x7c, 0x19, 0x06, 0x17, 0xbf, 0x14, 0x9f, 0x12, 0x96, 0x10,
- 0xf9, 0x0d, 0x3e, 0x0b, 0xe8, 0x08, 0x5c, 0x06, 0xe7, 0x02, 0x6e, 0xff,
- 0xca, 0xfc, 0x5b, 0xfa, 0xa0, 0xf7, 0xe9, 0xf4, 0x9c, 0xf2, 0x66, 0xf0,
- 0xaf, 0xed, 0xfd, 0xea, 0xcc, 0xe8, 0x6e, 0xe6, 0x82, 0xe3, 0x97, 0xe0,
- 0xed, 0xdd, 0x62, 0xdb, 0x7b, 0xd8, 0xd3, 0xd5, 0x5f, 0xd3, 0x1a, 0xd1,
- 0x44, 0xcf, 0xeb, 0xcd, 0x89, 0xcc, 0xca, 0xca, 0x4d, 0xc9, 0x35, 0xc8,
- 0x53, 0xc7, 0x0c, 0xc6, 0x06, 0xc4, 0xca, 0xc1, 0x09, 0xc0, 0x9c, 0xbe,
- 0xa8, 0xbd, 0xfd, 0xbc, 0xf2, 0xbb, 0x9b, 0xba, 0x20, 0xb9, 0xe4, 0xb7,
- 0xc1, 0xb6, 0xcd, 0xb5, 0x12, 0xb5, 0x55, 0xb4, 0xd1, 0xb3, 0x86, 0xb3,
- 0x19, 0xb3, 0xe8, 0xb2, 0xd7, 0xb2, 0x72, 0xb2, 0x27, 0xb2, 0xb7, 0xb1,
- 0x67, 0xb1, 0x65, 0xb1, 0xae, 0xb1, 0x6b, 0xb1, 0xf2, 0xb0, 0xeb, 0xb0,
- 0x0f, 0xb1, 0xfe, 0xb0, 0xeb, 0xb0, 0xcf, 0xb0, 0x94, 0xb0, 0x3e, 0xb0,
- 0x29, 0xb0, 0x56, 0xb0, 0x0c, 0xb0, 0xb7, 0xaf, 0xfb, 0xaf, 0x37, 0xb0,
- 0x96, 0xb0, 0x42, 0xb1, 0xe8, 0xb1, 0xb5, 0xb2, 0xc5, 0xb3, 0x93, 0xb4,
- 0x93, 0xb4, 0xee, 0xb4, 0x59, 0xb6, 0xca, 0xb7, 0x87, 0xb8, 0x6f, 0xb8,
- 0x33, 0xb8, 0xaf, 0xb8, 0x4a, 0xb9, 0x9d, 0xb9, 0xf2, 0xb9, 0x48, 0xba,
- 0xd0, 0xba, 0xe5, 0xbb, 0x4e, 0xbd, 0xaf, 0xbe, 0xe9, 0xbf, 0xba, 0xc1,
- 0xc2, 0xc3, 0x73, 0xc5, 0xa6, 0xc6, 0x6a, 0xc7, 0x83, 0xc8, 0x42, 0xca,
- 0xc8, 0xcb, 0x34, 0xcd, 0x94, 0xce, 0xcc, 0xcf, 0x31, 0xd1, 0x27, 0xd3,
- 0x8c, 0xd5, 0x61, 0xd7, 0x78, 0xd9, 0x3b, 0xdc, 0x40, 0xdf, 0xdd, 0xe1,
- 0x0c, 0xe4, 0xe4, 0xe5, 0xd0, 0xe7, 0x65, 0xea, 0xc9, 0xec, 0xd7, 0xee,
- 0xfc, 0xf0, 0x7c, 0xf3, 0xf6, 0xf5, 0x09, 0xf8, 0xde, 0xf9, 0xca, 0xfb,
- 0xac, 0xfd, 0xc3, 0xff, 0x33, 0x02, 0xb1, 0x04, 0x24, 0x07, 0x57, 0x09,
- 0x5f, 0x0b, 0xe6, 0x0d, 0xd1, 0x10, 0x6d, 0x13, 0x8f, 0x15, 0xfb, 0x17,
- 0x43, 0x1a, 0x8e, 0x1c, 0x1a, 0x1f, 0x69, 0x21, 0x80, 0x23, 0x74, 0x25,
- 0x62, 0x27, 0x07, 0x29, 0xa1, 0x2a, 0xa5, 0x2c, 0xdf, 0x2e, 0x57, 0x31,
- 0xff, 0x33, 0xd1, 0x36, 0x6e, 0x39, 0x8a, 0x3b, 0x58, 0x3d, 0x32, 0x3f,
- 0xc8, 0x40, 0x1b, 0x42, 0x22, 0x43, 0x1a, 0x44, 0x25, 0x45, 0xe5, 0x45,
- 0x43, 0x46, 0x9b, 0x46, 0x6a, 0x47, 0x6f, 0x48, 0x69, 0x49, 0x6f, 0x4a,
- 0xc7, 0x4b, 0x0e, 0x4d, 0x03, 0x4e, 0x78, 0x4e, 0xdf, 0x4e, 0x0b, 0x4f,
- 0xea, 0x4e, 0xcb, 0x4e, 0x1b, 0x4f, 0x6e, 0x4f, 0xc3, 0x4f, 0xdc, 0x4f,
- 0xcb, 0x4f, 0xd2, 0x4f, 0x16, 0x50, 0x24, 0x50, 0xf2, 0x4f, 0x00, 0x50,
- 0x37, 0x50, 0x4e, 0x50, 0x5e, 0x50, 0x7c, 0x50, 0xab, 0x50, 0x69, 0x50,
- 0xad, 0x4f, 0xa3, 0x4e, 0xe6, 0x4d, 0x42, 0x4d, 0xdc, 0x4c, 0x7c, 0x4c,
- 0xbe, 0x4b, 0x08, 0x4b, 0x7b, 0x4a, 0xe4, 0x49, 0x14, 0x49, 0x07, 0x48,
- 0x98, 0x46, 0x2f, 0x45, 0x16, 0x44, 0x23, 0x43, 0x55, 0x42, 0xac, 0x41,
- 0x06, 0x41, 0x4b, 0x40, 0x8f, 0x3f, 0xde, 0x3e, 0xe1, 0x3d, 0x75, 0x3c,
- 0xc0, 0x3a, 0xe4, 0x38, 0x83, 0x37, 0x9a, 0x36, 0xe5, 0x35, 0xc0, 0x34,
- 0xf9, 0x32, 0xe1, 0x30, 0xfa, 0x2e, 0xd4, 0x2c, 0x4d, 0x2a, 0xed, 0x27,
- 0xb9, 0x25, 0xb2, 0x23, 0x7d, 0x21, 0xfd, 0x1e, 0x89, 0x1c, 0x38, 0x1a,
- 0xe2, 0x17, 0x67, 0x15, 0xf3, 0x12, 0xb3, 0x10, 0x9e, 0x0e, 0x79, 0x0c,
- 0xea, 0x09, 0x54, 0x07, 0x26, 0x05, 0x0a, 0x03, 0xd7, 0x00, 0x98, 0xfe,
- 0x41, 0xfc, 0x8d, 0xf9, 0x3c, 0xf7, 0x4f, 0xf5, 0x73, 0xf3, 0x7b, 0xf1,
- 0x68, 0xef, 0x6f, 0xed, 0x7a, 0xeb, 0x87, 0xe9, 0x48, 0xe7, 0xc6, 0xe4,
- 0x65, 0xe2, 0xf6, 0xdf, 0x86, 0xdd, 0x9f, 0xdb, 0x1b, 0xda, 0xa6, 0xd8,
- 0xce, 0xd6, 0xe4, 0xd4, 0xe3, 0xd2, 0x84, 0xd0, 0xec, 0xcd, 0x08, 0xcc,
- 0x89, 0xca, 0x1b, 0xc9, 0xe2, 0xc7, 0x9d, 0xc6, 0xe5, 0xc4, 0x79, 0xc3,
- 0x6d, 0xc2, 0xe3, 0xc0, 0x3c, 0xbf, 0xd3, 0xbd, 0x41, 0xbc, 0xd2, 0xba,
- 0x6a, 0xb9, 0xa1, 0xb7, 0xa9, 0xb5, 0x47, 0xb4, 0x91, 0xb3, 0xd5, 0xb2,
- 0xb7, 0xb1, 0x51, 0xb0, 0x14, 0xaf, 0xf5, 0xad, 0x95, 0xac, 0x34, 0xab,
- 0x05, 0xaa, 0xe1, 0xa8, 0xb3, 0xa7, 0xd9, 0xa6, 0x25, 0xa6, 0x6e, 0xa5,
- 0x2b, 0xa5, 0x7b, 0xa5, 0x9a, 0xa5, 0x88, 0xa5, 0xc3, 0xa5, 0xe7, 0xa5,
- 0xaf, 0xa5, 0x8b, 0xa5, 0x80, 0xa5, 0x65, 0xa5, 0x8c, 0xa5, 0x7e, 0xa5,
- 0x22, 0xa5, 0x40, 0xa5, 0xed, 0xa5, 0x27, 0xa6, 0x2b, 0xa6, 0x1c, 0xa6,
- 0xe5, 0xa5, 0x7b, 0xa5, 0x45, 0xa5, 0x37, 0xa5, 0x04, 0xa5, 0x91, 0xa4,
- 0x8d, 0xa4, 0x2d, 0xa5, 0x9f, 0xa5, 0xf6, 0xa5, 0x7e, 0xa6, 0x34, 0xa7,
- 0x14, 0xa8, 0x7e, 0xa8, 0x87, 0xa8, 0xc4, 0xa8, 0x51, 0xa9, 0xec, 0xa9,
- 0x74, 0xaa, 0xf7, 0xaa, 0x40, 0xab, 0xd9, 0xab, 0xca, 0xac, 0x6b, 0xad,
- 0xb3, 0xad, 0x08, 0xae, 0x10, 0xaf, 0x2c, 0xb0, 0xcb, 0xb0, 0x23, 0xb1,
- 0xac, 0xb1, 0x0e, 0xb2, 0x42, 0xb2, 0xd7, 0xb2, 0xef, 0xb3, 0x21, 0xb5,
- 0x30, 0xb6, 0xe9, 0xb6, 0x54, 0xb7, 0xf0, 0xb7, 0x9e, 0xb8, 0x2e, 0xb9,
- 0x03, 0xba, 0x55, 0xbb, 0xdf, 0xbc, 0x5f, 0xbe, 0xb8, 0xbf, 0x01, 0xc1,
- 0x83, 0xc2, 0x0c, 0xc4, 0x65, 0xc5, 0x7e, 0xc6, 0x86, 0xc7, 0xba, 0xc8,
- 0x11, 0xca, 0x66, 0xcb, 0x28, 0xcd, 0x4d, 0xcf, 0x60, 0xd1, 0x69, 0xd3,
- 0x7b, 0xd5, 0x5f, 0xd7, 0xe3, 0xd8, 0xca, 0xda, 0xda, 0xdc, 0xda, 0xde,
- 0xab, 0xe0, 0x59, 0xe2, 0x3b, 0xe4, 0x21, 0xe6, 0xfc, 0xe7, 0xcb, 0xe9,
- 0xbe, 0xeb, 0x9c, 0xed, 0x47, 0xef, 0x0b, 0xf1, 0xd3, 0xf2, 0xbc, 0xf4,
- 0x9c, 0xf6, 0x67, 0xf8, 0x2a, 0xfa, 0xc1, 0xfb, 0x7f, 0xfd, 0x41, 0xff,
- 0x12, 0x01, 0xd2, 0x02, 0xfc, 0x04, 0xe8, 0x06, 0x9a, 0x08, 0x59, 0x0a,
- 0x48, 0x0c, 0x36, 0x0e, 0x37, 0x10, 0x36, 0x12, 0x59, 0x14, 0x62, 0x16,
- 0x86, 0x18, 0xb9, 0x1a, 0xc2, 0x1c, 0xcd, 0x1e, 0xf1, 0x20, 0x27, 0x23,
- 0x7a, 0x25, 0xf9, 0x27, 0x2a, 0x2a, 0x1f, 0x2c, 0xf8, 0x2d, 0xa3, 0x2f,
- 0x23, 0x31, 0xf4, 0x32, 0x2c, 0x35, 0x40, 0x37, 0x23, 0x39, 0xfe, 0x3a,
- 0x11, 0x3d, 0x2c, 0x3f, 0xe8, 0x40, 0x8c, 0x42, 0x55, 0x44, 0x37, 0x46,
- 0x99, 0x47, 0xcb, 0x48, 0x12, 0x4a, 0x60, 0x4b, 0x86, 0x4c, 0x9b, 0x4d,
- 0xc8, 0x4e, 0xec, 0x4f, 0xe3, 0x50, 0x8a, 0x51, 0x23, 0x52, 0xd8, 0x52,
- 0x68, 0x53, 0x9b, 0x53, 0xb1, 0x53, 0x11, 0x54, 0x94, 0x54, 0xf7, 0x54,
- 0x4f, 0x55, 0xa4, 0x55, 0x03, 0x56, 0x51, 0x56, 0x92, 0x56, 0xfa, 0x56,
- 0x59, 0x57, 0xad, 0x57, 0xcd, 0x57, 0xc5, 0x57, 0xa8, 0x57, 0x64, 0x57,
- 0x49, 0x57, 0x63, 0x57, 0x64, 0x57, 0x40, 0x57, 0xf6, 0x56, 0xfc, 0x56,
- 0x36, 0x57, 0x3b, 0x57, 0x1e, 0x57, 0x1c, 0x57, 0x03, 0x57, 0xee, 0x56,
- 0xa5, 0x56, 0x80, 0x56, 0xd4, 0x56, 0xe4, 0x56, 0x92, 0x56, 0xf0, 0x55,
- 0x02, 0x55, 0xab, 0x53, 0xb5, 0x52, 0x51, 0x52, 0x08, 0x52, 0x80, 0x51,
- 0xb4, 0x50, 0xde, 0x4f, 0x27, 0x4f, 0x63, 0x4e, 0x58, 0x4d, 0x72, 0x4c,
- 0x82, 0x4b, 0x81, 0x4a, 0x87, 0x49, 0xb4, 0x48, 0xb1, 0x47, 0x99, 0x46,
- 0xb4, 0x45, 0x34, 0x45, 0xb8, 0x44, 0x2f, 0x44, 0x7f, 0x43, 0xa0, 0x42,
- 0xcb, 0x41, 0xd1, 0x40, 0xeb, 0x3f, 0x28, 0x3f, 0x3d, 0x3e, 0x09, 0x3d,
- 0x9d, 0x3b, 0x40, 0x3a, 0x1c, 0x39, 0xeb, 0x37, 0xd1, 0x36, 0xb3, 0x35,
- 0x8b, 0x34, 0x0b, 0x33, 0x51, 0x31, 0xfb, 0x2f, 0xb9, 0x2e, 0x54, 0x2d,
- 0xaf, 0x2b, 0xdf, 0x29, 0xf1, 0x27, 0x3a, 0x26, 0x6f, 0x24, 0x56, 0x22,
- 0x20, 0x20, 0x0a, 0x1e, 0x3b, 0x1c, 0x55, 0x1a, 0x6c, 0x18, 0xaa, 0x16,
- 0xef, 0x14, 0x0a, 0x13, 0x17, 0x11, 0x1c, 0x0f, 0x22, 0x0d, 0x46, 0x0b,
- 0x53, 0x09, 0x46, 0x07, 0x46, 0x05, 0x4d, 0x03, 0x1a, 0x01, 0xd3, 0xfe,
- 0x94, 0xfc, 0x8c, 0xfa, 0x8f, 0xf8, 0xc1, 0xf6, 0x27, 0xf5, 0x8f, 0xf3,
- 0xf2, 0xf1, 0x74, 0xf0, 0xfa, 0xee, 0x4d, 0xed, 0x9e, 0xeb, 0xa2, 0xe9,
- 0x73, 0xe7, 0xa9, 0xe5, 0x2d, 0xe4, 0xa3, 0xe2, 0xf9, 0xe0, 0x50, 0xdf,
- 0xb9, 0xdd, 0x34, 0xdc, 0xad, 0xda, 0x0b, 0xd9, 0x77, 0xd7, 0xb9, 0xd5,
- 0x37, 0xd4, 0xff, 0xd2, 0x8a, 0xd1, 0x14, 0xd0, 0xba, 0xce, 0x7d, 0xcd,
- 0x2c, 0xcc, 0xa1, 0xca, 0x22, 0xc9, 0xa9, 0xc7, 0x0e, 0xc6, 0x66, 0xc4,
- 0xfc, 0xc2, 0xa5, 0xc1, 0x4a, 0xc0, 0xff, 0xbe, 0xf7, 0xbd, 0x0e, 0xbd,
- 0x1d, 0xbc, 0x16, 0xbb, 0xad, 0xb9, 0x44, 0xb8, 0xd7, 0xb6, 0x9e, 0xb5,
- 0x9f, 0xb4, 0x97, 0xb3, 0x72, 0xb2, 0x5f, 0xb1, 0x67, 0xb0, 0x89, 0xaf,
- 0x9d, 0xae, 0xbe, 0xad, 0x08, 0xad, 0x5d, 0xac, 0x8b, 0xab, 0xad, 0xaa,
- 0xe4, 0xa9, 0x59, 0xa9, 0xc4, 0xa8, 0x02, 0xa8, 0x4d, 0xa7, 0xc2, 0xa6,
- 0x4a, 0xa6, 0x09, 0xa6, 0xd2, 0xa5, 0x50, 0xa5, 0xec, 0xa4, 0xc2, 0xa4,
- 0xd9, 0xa4, 0xbd, 0xa4, 0x97, 0xa4, 0xa5, 0xa4, 0xbf, 0xa4, 0xb4, 0xa4,
- 0x8f, 0xa4, 0x31, 0xa4, 0x39, 0xa4, 0x7d, 0xa4, 0xab, 0xa4, 0xc7, 0xa4,
- 0xb3, 0xa4, 0xab, 0xa4, 0xca, 0xa4, 0x05, 0xa5, 0x1e, 0xa5, 0x2a, 0xa5,
- 0x2c, 0xa5, 0x18, 0xa5, 0x01, 0xa5, 0x33, 0xa5, 0x8c, 0xa5, 0xb2, 0xa5,
- 0x81, 0xa5, 0x5c, 0xa5, 0x6e, 0xa5, 0x79, 0xa5, 0x4e, 0xa5, 0x17, 0xa5,
- 0xff, 0xa4, 0x1c, 0xa5, 0x45, 0xa5, 0x8a, 0xa5, 0xbf, 0xa5, 0xdb, 0xa5,
- 0x41, 0xa6, 0xfb, 0xa6, 0xc6, 0xa7, 0x86, 0xa8, 0x29, 0xa9, 0x97, 0xa9,
- 0x27, 0xaa, 0xd7, 0xaa, 0x6d, 0xab, 0xf4, 0xab, 0x34, 0xac, 0x69, 0xac,
- 0xc6, 0xac, 0x37, 0xad, 0xaa, 0xad, 0x34, 0xae, 0xd3, 0xae, 0x81, 0xaf,
- 0x16, 0xb0, 0x72, 0xb0, 0xc8, 0xb0, 0x36, 0xb1, 0x91, 0xb1, 0xe0, 0xb1,
- 0x3b, 0xb2, 0x8e, 0xb2, 0xe0, 0xb2, 0x2a, 0xb3, 0xab, 0xb3, 0x3a, 0xb4,
- 0xf1, 0xb4, 0xc0, 0xb5, 0xae, 0xb6, 0x91, 0xb7, 0x82, 0xb8, 0x98, 0xb9,
- 0x8f, 0xba, 0x88, 0xbb, 0x65, 0xbc, 0x20, 0xbd, 0xcb, 0xbd, 0xaf, 0xbe,
- 0x94, 0xbf, 0x84, 0xc0, 0x85, 0xc1, 0x7b, 0xc2, 0x67, 0xc3, 0x66, 0xc4,
- 0x7f, 0xc5, 0x89, 0xc6, 0x6b, 0xc7, 0x38, 0xc8, 0x29, 0xc9, 0x4a, 0xca,
- 0x82, 0xcb, 0xc1, 0xcc, 0x12, 0xce, 0x5e, 0xcf, 0xb0, 0xd0, 0x25, 0xd2,
- 0x66, 0xd3, 0xde, 0xd4, 0x6c, 0xd6, 0x28, 0xd8, 0xd7, 0xd9, 0x80, 0xdb,
- 0xf7, 0xdc, 0x6f, 0xde, 0xd0, 0xdf, 0x22, 0xe1, 0x7a, 0xe2, 0xe5, 0xe3,
- 0x7a, 0xe5, 0xea, 0xe6, 0x51, 0xe8, 0xeb, 0xe9, 0x70, 0xeb, 0xb3, 0xec,
- 0x01, 0xee, 0x60, 0xef, 0xcb, 0xf0, 0x1d, 0xf2, 0x7b, 0xf3, 0xcf, 0xf4,
- 0x39, 0xf6, 0xc8, 0xf7, 0x82, 0xf9, 0x4a, 0xfb, 0xf2, 0xfc, 0x8c, 0xfe,
- 0x01, 0x00, 0x68, 0x01, 0x15, 0x03, 0xe6, 0x04, 0xbc, 0x06, 0x42, 0x08,
- 0xbb, 0x09, 0x2b, 0x0b, 0xc7, 0x0c, 0x35, 0x0e, 0x94, 0x0f, 0xf2, 0x10,
- 0x59, 0x12, 0xbc, 0x13, 0x34, 0x15, 0xac, 0x16, 0x1c, 0x18, 0x79, 0x19,
- 0xdc, 0x1a, 0x6d, 0x1c, 0x21, 0x1e, 0xca, 0x1f, 0x70, 0x21, 0x02, 0x23,
- 0x6c, 0x24, 0x9e, 0x25, 0x45, 0x27, 0x02, 0x29, 0x95, 0x2a, 0xff, 0x2b,
- 0x72, 0x2d, 0xe8, 0x2e, 0x48, 0x30, 0x7c, 0x31, 0xd2, 0x32, 0x3d, 0x34,
- 0xac, 0x35, 0x26, 0x37, 0xbc, 0x38, 0x4c, 0x3a, 0x90, 0x3b, 0xef, 0x3c,
- 0x61, 0x3e, 0xe8, 0x3f, 0x59, 0x41, 0xab, 0x42, 0xf7, 0x43, 0x2d, 0x45,
- 0x6c, 0x46, 0x78, 0x47, 0xb4, 0x48, 0x2e, 0x4a, 0x8e, 0x4b, 0xd7, 0x4c,
- 0xf4, 0x4d, 0xee, 0x4e, 0xcb, 0x4f, 0xc3, 0x50, 0xc2, 0x51, 0xac, 0x52,
- 0x61, 0x53, 0xf3, 0x53, 0xac, 0x54, 0x5f, 0x55, 0xf4, 0x55, 0x7f, 0x56,
- 0x04, 0x57, 0x9c, 0x57, 0x1f, 0x58, 0x7c, 0x58, 0xbc, 0x58, 0x0b, 0x59,
- 0x71, 0x59, 0xc1, 0x59, 0x0b, 0x5a, 0x3e, 0x5a, 0x8b, 0x5a, 0xac, 0x5a,
- 0xa9, 0x5a, 0x8a, 0x5a, 0x6c, 0x5a, 0x4c, 0x5a, 0x39, 0x5a, 0x32, 0x5a,
- 0x40, 0x5a, 0x33, 0x5a, 0x44, 0x5a, 0x58, 0x5a, 0x79, 0x5a, 0x7a, 0x5a,
- 0x69, 0x5a, 0x49, 0x5a, 0x54, 0x5a, 0x78, 0x5a, 0x72, 0x5a, 0x5f, 0x5a,
- 0x31, 0x5a, 0x11, 0x5a, 0xf9, 0x59, 0xea, 0x59, 0xd1, 0x59, 0xa1, 0x59,
- 0x48, 0x59, 0xf0, 0x58, 0xa2, 0x58, 0x6e, 0x58, 0x60, 0x58, 0x46, 0x58,
- 0x3f, 0x58, 0x47, 0x58, 0x40, 0x58, 0x08, 0x58, 0x9c, 0x57, 0x11, 0x57,
- 0x83, 0x56, 0xd7, 0x55, 0x42, 0x55, 0xab, 0x54, 0x06, 0x54, 0x63, 0x53,
- 0xa6, 0x52, 0xf0, 0x51, 0x55, 0x51, 0xbc, 0x50, 0x1e, 0x50, 0x8e, 0x4f,
- 0xf3, 0x4e, 0x34, 0x4e, 0x6b, 0x4d, 0xc9, 0x4c, 0x30, 0x4c, 0x7d, 0x4b,
- 0xd8, 0x4a, 0x49, 0x4a, 0xad, 0x49, 0x11, 0x49, 0x6c, 0x48, 0xa4, 0x47,
- 0xec, 0x46, 0x6c, 0x46, 0xde, 0x45, 0x5d, 0x45, 0xbc, 0x44, 0xf1, 0x43,
- 0x34, 0x43, 0x8c, 0x42, 0xf8, 0x41, 0x47, 0x41, 0x6a, 0x40, 0x72, 0x3f,
- 0x8b, 0x3e, 0xb3, 0x3d, 0xf2, 0x3c, 0x2f, 0x3c, 0x5c, 0x3b, 0x96, 0x3a,
- 0xbc, 0x39, 0xb2, 0x38, 0x91, 0x37, 0x8c, 0x36, 0x75, 0x35, 0x63, 0x34,
- 0x5e, 0x33, 0x63, 0x32, 0x4b, 0x31, 0x3c, 0x30, 0x1e, 0x2f, 0x07, 0x2e,
- 0xd0, 0x2c, 0xb2, 0x2b, 0x84, 0x2a, 0x4d, 0x29, 0xfc, 0x27, 0xa5, 0x26,
- 0x2f, 0x25, 0x95, 0x23, 0x1f, 0x22, 0xad, 0x20, 0x3a, 0x1f, 0x9e, 0x1d,
- 0x10, 0x1c, 0x6e, 0x1a, 0xe3, 0x18, 0x56, 0x17, 0xdb, 0x15, 0x58, 0x14,
- 0xba, 0x12, 0x2a, 0x11, 0x8b, 0x0f, 0xf4, 0x0d, 0x5b, 0x0c, 0xd3, 0x0a,
- 0x5f, 0x09, 0xe5, 0x07, 0x4a, 0x06, 0xc0, 0x04, 0x3e, 0x03, 0xb6, 0x01,
- 0x37, 0x00, 0xca, 0xfe, 0x74, 0xfd, 0x00, 0xfc, 0xa5, 0xfa, 0x4a, 0xf9,
- 0xd1, 0xf7, 0x7e, 0xf6, 0x1c, 0xf5, 0x9d, 0xf3, 0x4f, 0xf2, 0x0e, 0xf1,
- 0xc0, 0xef, 0x3a, 0xee, 0xd8, 0xec, 0x69, 0xeb, 0x0c, 0xea, 0xad, 0xe8,
- 0x56, 0xe7, 0xf8, 0xe5, 0xbe, 0xe4, 0x98, 0xe3, 0x61, 0xe2, 0x03, 0xe1,
- 0x99, 0xdf, 0x4d, 0xde, 0x0e, 0xdd, 0xde, 0xdb, 0xad, 0xda, 0x84, 0xd9,
- 0x62, 0xd8, 0x32, 0xd7, 0x01, 0xd6, 0xb7, 0xd4, 0x87, 0xd3, 0x97, 0xd2,
- 0x89, 0xd1, 0x89, 0xd0, 0x6e, 0xcf, 0x65, 0xce, 0x5d, 0xcd, 0x44, 0xcc,
- 0x13, 0xcb, 0xf2, 0xc9, 0xd3, 0xc8, 0xad, 0xc7, 0x9b, 0xc6, 0x94, 0xc5,
- 0x8e, 0xc4, 0x7b, 0xc3, 0x92, 0xc2, 0xad, 0xc1, 0xb2, 0xc0, 0xb9, 0xbf,
- 0xb3, 0xbe, 0xc0, 0xbd, 0xd5, 0xbc, 0xf2, 0xbb, 0xe1, 0xba, 0xc7, 0xb9,
- 0xc7, 0xb8, 0xe8, 0xb7, 0x09, 0xb7, 0x2c, 0xb6, 0x66, 0xb5, 0xb1, 0xb4,
- 0xf6, 0xb3, 0x32, 0xb3, 0x53, 0xb2, 0x92, 0xb1, 0xdb, 0xb0, 0x0d, 0xb0,
- 0x46, 0xaf, 0x62, 0xae, 0x98, 0xad, 0xd1, 0xac, 0x3f, 0xac, 0xb0, 0xab,
- 0x34, 0xab, 0xb1, 0xaa, 0x45, 0xaa, 0xda, 0xa9, 0x6a, 0xa9, 0xf1, 0xa8,
- 0x7d, 0xa8, 0x04, 0xa8, 0xbb, 0xa7, 0x80, 0xa7, 0x41, 0xa7, 0x02, 0xa7,
- 0xb6, 0xa6, 0x68, 0xa6, 0x3b, 0xa6, 0x1c, 0xa6, 0x0d, 0xa6, 0xfc, 0xa5,
- 0xd4, 0xa5, 0xa6, 0xa5, 0x81, 0xa5, 0x76, 0xa5, 0x61, 0xa5, 0x54, 0xa5,
- 0x48, 0xa5, 0x47, 0xa5, 0x4b, 0xa5, 0x49, 0xa5, 0x38, 0xa5, 0x4b, 0xa5,
- 0x6c, 0xa5, 0xa3, 0xa5, 0xda, 0xa5, 0xfe, 0xa5, 0x21, 0xa6, 0x4a, 0xa6,
- 0x8a, 0xa6, 0xb4, 0xa6, 0xe0, 0xa6, 0xf3, 0xa6, 0x1b, 0xa7, 0x17, 0xa7,
- 0x40, 0xa7, 0x8e, 0xa7, 0xcd, 0xa7, 0x06, 0xa8, 0x3e, 0xa8, 0x86, 0xa8,
- 0xbd, 0xa8, 0xde, 0xa8, 0xf6, 0xa8, 0x1c, 0xa9, 0x49, 0xa9, 0x5c, 0xa9,
- 0x79, 0xa9, 0x93, 0xa9, 0xab, 0xa9, 0xe6, 0xa9, 0x2c, 0xaa, 0x82, 0xaa,
- 0xbc, 0xaa, 0xec, 0xaa, 0x32, 0xab, 0x69, 0xab, 0xa7, 0xab, 0xde, 0xab,
- 0x19, 0xac, 0x53, 0xac, 0xbb, 0xac, 0x14, 0xad, 0x8a, 0xad, 0xeb, 0xad,
- 0x6c, 0xae, 0xe1, 0xae, 0x62, 0xaf, 0xd9, 0xaf, 0x58, 0xb0, 0xc0, 0xb0,
- 0x36, 0xb1, 0x99, 0xb1, 0x11, 0xb2, 0x71, 0xb2, 0xdc, 0xb2, 0x58, 0xb3,
- 0xbb, 0xb3, 0x37, 0xb4, 0xb6, 0xb4, 0x46, 0xb5, 0xca, 0xb5, 0x50, 0xb6,
- 0xd9, 0xb6, 0x6c, 0xb7, 0x03, 0xb8, 0x7e, 0xb8, 0xf0, 0xb8, 0x64, 0xb9,
- 0xcf, 0xb9, 0x47, 0xba, 0xd3, 0xba, 0x60, 0xbb, 0xe8, 0xbb, 0x70, 0xbc,
- 0xf3, 0xbc, 0x82, 0xbd, 0x05, 0xbe, 0xa1, 0xbe, 0x2a, 0xbf, 0xae, 0xbf,
- 0x25, 0xc0, 0xac, 0xc0, 0x52, 0xc1, 0xde, 0xc1, 0x75, 0xc2, 0x11, 0xc3,
- 0xb5, 0xc3, 0x42, 0xc4, 0xc5, 0xc4, 0x6d, 0xc5, 0x0b, 0xc6, 0xb2, 0xc6,
- 0x4b, 0xc7, 0xf6, 0xc7, 0x9b, 0xc8, 0x4f, 0xc9, 0x17, 0xca, 0xf3, 0xca,
- 0xc6, 0xcb, 0x9a, 0xcc, 0x7b, 0xcd, 0x54, 0xce, 0x32, 0xcf, 0x09, 0xd0,
- 0xd7, 0xd0, 0xc9, 0xd1, 0xc1, 0xd2, 0xb8, 0xd3, 0xb6, 0xd4, 0xae, 0xd5,
- 0xbc, 0xd6, 0xca, 0xd7, 0xd2, 0xd8, 0xca, 0xd9, 0xbd, 0xda, 0xc8, 0xdb,
- 0xd8, 0xdc, 0xf9, 0xdd, 0x08, 0xdf, 0x1e, 0xe0, 0x39, 0xe1, 0x4e, 0xe2,
- 0x60, 0xe3, 0x7a, 0xe4, 0x96, 0xe5, 0xc1, 0xe6, 0xde, 0xe7, 0x0e, 0xe9,
- 0x2a, 0xea, 0x42, 0xeb, 0x7a, 0xec, 0x9f, 0xed, 0xbb, 0xee, 0xd6, 0xef,
- 0xef, 0xf0, 0x0e, 0xf2, 0x30, 0xf3, 0x55, 0xf4, 0x68, 0xf5, 0x7e, 0xf6,
- 0xa4, 0xf7, 0xc0, 0xf8, 0xea, 0xf9, 0x10, 0xfb, 0x41, 0xfc, 0x7d, 0xfd,
- 0xad, 0xfe, 0xe3, 0xff, 0x10, 0x01, 0x27, 0x02, 0x58, 0x03, 0x74, 0x04,
- 0xa4, 0x05, 0xd5, 0x06, 0x0b, 0x08, 0x36, 0x09, 0x5c, 0x0a, 0x76, 0x0b,
- 0x9a, 0x0c, 0xc1, 0x0d, 0xd8, 0x0e, 0xf5, 0x0f, 0x15, 0x11, 0x3f, 0x12,
- 0x70, 0x13, 0x8e, 0x14, 0xcc, 0x15, 0xf2, 0x16, 0x31, 0x18, 0x4b, 0x19,
- 0x82, 0x1a, 0xa1, 0x1b, 0xbc, 0x1c, 0xde, 0x1d, 0xe9, 0x1e, 0x13, 0x20,
- 0x33, 0x21, 0x6c, 0x22, 0x80, 0x23, 0xa7, 0x24, 0xbc, 0x25, 0xde, 0x26,
- 0xe7, 0x27, 0x07, 0x29, 0x28, 0x2a, 0x36, 0x2b, 0x4d, 0x2c, 0x71, 0x2d,
- 0x91, 0x2e, 0xbe, 0x2f, 0xd6, 0x30, 0xfb, 0x31, 0x20, 0x33, 0x46, 0x34,
- 0x59, 0x35, 0x7a, 0x36, 0xa1, 0x37, 0xc2, 0x38, 0xdf, 0x39, 0x01, 0x3b,
- 0x0f, 0x3c, 0x27, 0x3d, 0x1f, 0x3e, 0x2e, 0x3f, 0x43, 0x40, 0x5b, 0x41,
- 0x73, 0x42, 0x8e, 0x43, 0xaf, 0x44, 0xbc, 0x45, 0xcc, 0x46, 0xd8, 0x47,
- 0xec, 0x48, 0xe1, 0x49, 0xd1, 0x4a, 0xc4, 0x4b, 0xb6, 0x4c, 0xa9, 0x4d,
- 0x9d, 0x4e, 0x88, 0x4f, 0x75, 0x50, 0x4c, 0x51, 0x3b, 0x52, 0x05, 0x53,
- 0xd9, 0x53, 0xa1, 0x54, 0x6f, 0x55, 0x33, 0x56, 0xe5, 0x56, 0x7d, 0x57,
- 0x15, 0x58, 0xb3, 0x58, 0x4e, 0x59, 0xdb, 0x59, 0x55, 0x5a, 0xc8, 0x5a,
- 0x36, 0x5b, 0xa9, 0x5b, 0x09, 0x5c, 0x5a, 0x5c, 0xab, 0x5c, 0xf1, 0x5c,
- 0x34, 0x5d, 0x6a, 0x5d, 0x9e, 0x5d, 0xc1, 0x5d, 0xea, 0x5d, 0x0b, 0x5e,
- 0x28, 0x5e, 0x3d, 0x5e, 0x41, 0x5e, 0x51, 0x5e, 0x5f, 0x5e, 0x69, 0x5e,
- 0x79, 0x5e, 0x6a, 0x5e, 0x78, 0x5e, 0x76, 0x5e, 0x7f, 0x5e, 0x72, 0x5e,
- 0x70, 0x5e, 0x61, 0x5e, 0x61, 0x5e, 0x42, 0x5e, 0x36, 0x5e, 0x2f, 0x5e,
- 0x2c, 0x5e, 0x1a, 0x5e, 0xec, 0x5d, 0xbf, 0x5d, 0x94, 0x5d, 0x71, 0x5d,
- 0x4c, 0x5d, 0x24, 0x5d, 0xfa, 0x5c, 0xc3, 0x5c, 0x8c, 0x5c, 0x59, 0x5c,
- 0x3e, 0x5c, 0x0c, 0x5c, 0xd3, 0x5b, 0xb1, 0x5b, 0x78, 0x5b, 0x45, 0x5b,
- 0x14, 0x5b, 0xed, 0x5a, 0xc0, 0x5a, 0x89, 0x5a, 0x4f, 0x5a, 0x16, 0x5a,
- 0xe5, 0x59, 0xb5, 0x59, 0x84, 0x59, 0x4e, 0x59, 0x0d, 0x59, 0xcf, 0x58,
- 0xa6, 0x58, 0x79, 0x58, 0x3e, 0x58, 0xf8, 0x57, 0xc0, 0x57, 0x83, 0x57,
- 0x38, 0x57, 0x03, 0x57, 0xc1, 0x56, 0x65, 0x56, 0xe0, 0x55, 0x52, 0x55,
- 0xd0, 0x54, 0x4c, 0x54, 0xbe, 0x53, 0x32, 0x53, 0xa7, 0x52, 0x2a, 0x52,
- 0x95, 0x51, 0x09, 0x51, 0x76, 0x50, 0xe9, 0x4f, 0x69, 0x4f, 0xe2, 0x4e,
- 0x49, 0x4e, 0xc0, 0x4d, 0x38, 0x4d, 0xbd, 0x4c, 0x2d, 0x4c, 0x98, 0x4b,
- 0x07, 0x4b, 0x76, 0x4a, 0xdc, 0x49, 0x4a, 0x49, 0xb9, 0x48, 0x2d, 0x48,
- 0x9c, 0x47, 0x19, 0x47, 0x80, 0x46, 0xf9, 0x45, 0x66, 0x45, 0xd6, 0x44,
- 0x47, 0x44, 0xb5, 0x43, 0x14, 0x43, 0x74, 0x42, 0xd4, 0x41, 0x42, 0x41,
- 0xa4, 0x40, 0x18, 0x40, 0x85, 0x3f, 0xeb, 0x3e, 0x52, 0x3e, 0xb2, 0x3d,
- 0x0c, 0x3d, 0x7a, 0x3c, 0xdb, 0x3b, 0x3a, 0x3b, 0x87, 0x3a, 0xe0, 0x39,
- 0x29, 0x39, 0x88, 0x38, 0xd1, 0x37, 0x16, 0x37, 0x4d, 0x36, 0x9e, 0x35,
- 0xdc, 0x34, 0x19, 0x34, 0x4a, 0x33, 0x83, 0x32, 0xb7, 0x31, 0xec, 0x30,
- 0x1c, 0x30, 0x47, 0x2f, 0x71, 0x2e, 0x88, 0x2d, 0xa6, 0x2c, 0xbb, 0x2b,
- 0xd0, 0x2a, 0xd8, 0x29, 0xdb, 0x28, 0xe3, 0x27, 0xf5, 0x26, 0xf1, 0x25,
- 0xf8, 0x24, 0xdc, 0x23, 0xdb, 0x22, 0xca, 0x21, 0xa7, 0x20, 0x85, 0x1f,
- 0x5a, 0x1e, 0x30, 0x1d, 0x0a, 0x1c, 0xd5, 0x1a, 0xa6, 0x19, 0x6d, 0x18,
- 0x3d, 0x17, 0xff, 0x15, 0xbf, 0x14, 0x81, 0x13, 0x57, 0x12, 0x15, 0x11,
- 0xe0, 0x0f, 0xa2, 0x0e, 0x65, 0x0d, 0x27, 0x0c, 0xf1, 0x0a, 0xb2, 0x09,
- 0x77, 0x08, 0x4b, 0x07, 0x0a, 0x06, 0xc9, 0x04, 0x97, 0x03, 0x65, 0x02,
- 0x3b, 0x01, 0x03, 0x00, 0xd2, 0xfe, 0x95, 0xfd, 0x6f, 0xfc, 0x50, 0xfb,
- 0x19, 0xfa, 0xf0, 0xf8, 0xb8, 0xf7, 0x97, 0xf6, 0x65, 0xf5, 0x48, 0xf4,
- 0x24, 0xf3, 0xfe, 0xf1, 0xec, 0xf0, 0xd2, 0xef, 0xa9, 0xee, 0x95, 0xed,
- 0x76, 0xec, 0x64, 0xeb, 0x61, 0xea, 0x43, 0xe9, 0x3a, 0xe8, 0x21, 0xe7,
- 0x14, 0xe6, 0xff, 0xe4, 0x06, 0xe4, 0x04, 0xe3, 0x04, 0xe2, 0x01, 0xe1,
- 0x02, 0xe0, 0x04, 0xdf, 0x16, 0xde, 0x1f, 0xdd, 0x29, 0xdc, 0x2d, 0xdb,
- 0x3d, 0xda, 0x45, 0xd9, 0x5a, 0xd8, 0x6f, 0xd7, 0x74, 0xd6, 0x8a, 0xd5,
- 0x91, 0xd4, 0xa5, 0xd3, 0xbb, 0xd2, 0xdb, 0xd1, 0x01, 0xd1, 0x17, 0xd0,
- 0x42, 0xcf, 0x5e, 0xce, 0x94, 0xcd, 0xb1, 0xcc, 0xe8, 0xcb, 0x04, 0xcb,
- 0x29, 0xca, 0x4e, 0xc9, 0x78, 0xc8, 0x99, 0xc7, 0xc4, 0xc6, 0xff, 0xc5,
- 0x3d, 0xc5, 0x76, 0xc4, 0xa6, 0xc3, 0xe4, 0xc2, 0x17, 0xc2, 0x4e, 0xc1,
- 0x8a, 0xc0, 0xc5, 0xbf, 0x0b, 0xbf, 0x42, 0xbe, 0x8e, 0xbd, 0xd8, 0xbc,
- 0x20, 0xbc, 0x60, 0xbb, 0xbb, 0xba, 0x08, 0xba, 0x5a, 0xb9, 0xba, 0xb8,
- 0x08, 0xb8, 0x64, 0xb7, 0xb1, 0xb6, 0x0c, 0xb6, 0x5d, 0xb5, 0xbf, 0xb4,
- 0x10, 0xb4, 0x7b, 0xb3, 0xd0, 0xb2, 0x3d, 0xb2, 0xa1, 0xb1, 0x0f, 0xb1,
- 0x84, 0xb0, 0xf2, 0xaf, 0x63, 0xaf, 0xd3, 0xae, 0x50, 0xae, 0xbd, 0xad,
- 0x49, 0xad, 0xc1, 0xac, 0x4d, 0xac, 0xc6, 0xab, 0x56, 0xab, 0xe4, 0xaa,
- 0x83, 0xaa, 0x0d, 0xaa, 0xac, 0xa9, 0x49, 0xa9, 0xf3, 0xa8, 0x9e, 0xa8,
- 0x4e, 0xa8, 0x07, 0xa8, 0xc5, 0xa7, 0x8d, 0xa7, 0x56, 0xa7, 0x1d, 0xa7,
- 0xf6, 0xa6, 0xc7, 0xa6, 0xad, 0xa6, 0x8c, 0xa6, 0x74, 0xa6, 0x58, 0xa6,
- 0x47, 0xa6, 0x2d, 0xa6, 0x24, 0xa6, 0x23, 0xa6, 0x21, 0xa6, 0x19, 0xa6,
- 0x20, 0xa6, 0x1f, 0xa6, 0x28, 0xa6, 0x3c, 0xa6, 0x4e, 0xa6, 0x59, 0xa6,
- 0x6e, 0xa6, 0x84, 0xa6, 0x9a, 0xa6, 0xb7, 0xa6, 0xd4, 0xa6, 0xef, 0xa6,
- 0x0a, 0xa7, 0x2f, 0xa7, 0x53, 0xa7, 0x77, 0xa7, 0x9c, 0xa7, 0xbc, 0xa7,
- 0xe5, 0xa7, 0x10, 0xa8, 0x35, 0xa8, 0x6d, 0xa8, 0x9b, 0xa8, 0xcb, 0xa8,
- 0xf5, 0xa8, 0x23, 0xa9, 0x5a, 0xa9, 0x80, 0xa9, 0xb7, 0xa9, 0xee, 0xa9,
- 0x1c, 0xaa, 0x46, 0xaa, 0x78, 0xaa, 0xb2, 0xaa, 0xeb, 0xaa, 0x1a, 0xab,
- 0x57, 0xab, 0x84, 0xab, 0xba, 0xab, 0xef, 0xab, 0x22, 0xac, 0x55, 0xac,
- 0x88, 0xac, 0xc1, 0xac, 0xf5, 0xac, 0x2a, 0xad, 0x67, 0xad, 0x9f, 0xad,
- 0xe0, 0xad, 0x14, 0xae, 0x4c, 0xae, 0x82, 0xae, 0xb8, 0xae, 0xf8, 0xae,
- 0x2c, 0xaf, 0x6a, 0xaf, 0x9d, 0xaf, 0xd4, 0xaf, 0x05, 0xb0, 0x38, 0xb0,
- 0x77, 0xb0, 0xb2, 0xb0, 0xf8, 0xb0, 0x3c, 0xb1, 0x97, 0xb1, 0x05, 0xb2,
- 0x6f, 0xb2, 0xdf, 0xb2, 0x48, 0xb3, 0xb2, 0xb3, 0x16, 0xb4, 0x7b, 0xb4,
- 0xe5, 0xb4, 0x54, 0xb5, 0xc3, 0xb5, 0x26, 0xb6, 0x97, 0xb6, 0x03, 0xb7,
- 0x68, 0xb7, 0xce, 0xb7, 0x44, 0xb8, 0xae, 0xb8, 0x20, 0xb9, 0x87, 0xb9,
- 0xf1, 0xb9, 0x5d, 0xba, 0xc6, 0xba, 0x24, 0xbb, 0xa1, 0xbb, 0x05, 0xbc,
- 0x79, 0xbc, 0xdc, 0xbc, 0x4b, 0xbd, 0xba, 0xbd, 0x24, 0xbe, 0x9b, 0xbe,
- 0x07, 0xbf, 0x72, 0xbf, 0xe5, 0xbf, 0x46, 0xc0, 0xc3, 0xc0, 0x1f, 0xc1,
- 0x91, 0xc1, 0x01, 0xc2, 0x79, 0xc2, 0xf1, 0xc2, 0x66, 0xc3, 0xe5, 0xc3,
- 0x55, 0xc4, 0xc8, 0xc4, 0x3e, 0xc5, 0xb3, 0xc5, 0x2d, 0xc6, 0xa7, 0xc6,
- 0x27, 0xc7, 0x97, 0xc7, 0x1f, 0xc8, 0xa0, 0xc8, 0x29, 0xc9, 0xad, 0xc9,
- 0x36, 0xca, 0xad, 0xca, 0x3d, 0xcb, 0xc0, 0xcb, 0x47, 0xcc, 0xe9, 0xcc,
- 0x6f, 0xcd, 0x06, 0xce, 0x84, 0xce, 0x1a, 0xcf, 0xbb, 0xcf, 0x55, 0xd0,
- 0xf6, 0xd0, 0x8b, 0xd1, 0x30, 0xd2, 0xd2, 0xd2, 0x79, 0xd3, 0x1c, 0xd4,
- 0xcf, 0xd4, 0x83, 0xd5, 0x36, 0xd6, 0xe1, 0xd6, 0x96, 0xd7, 0x5f, 0xd8,
- 0x1c, 0xd9, 0xe2, 0xd9, 0xa8, 0xda, 0x6c, 0xdb, 0x43, 0xdc, 0x04, 0xdd,
- 0xd8, 0xdd, 0xac, 0xde, 0x8a, 0xdf, 0x5b, 0xe0, 0x39, 0xe1, 0x0b, 0xe2,
- 0xf5, 0xe2, 0xde, 0xe3, 0xbc, 0xe4, 0x9e, 0xe5, 0x83, 0xe6, 0x62, 0xe7,
- 0x51, 0xe8, 0x34, 0xe9, 0x1e, 0xea, 0x12, 0xeb, 0xf7, 0xeb, 0xe5, 0xec,
- 0xc5, 0xed, 0xc2, 0xee, 0xb1, 0xef, 0xa6, 0xf0, 0x90, 0xf1, 0x7e, 0xf2,
- 0x6f, 0xf3, 0x56, 0xf4, 0x48, 0xf5, 0x35, 0xf6, 0x29, 0xf7, 0x17, 0xf8,
- 0x0a, 0xf9, 0x00, 0xfa, 0xe7, 0xfa, 0xde, 0xfb, 0xc9, 0xfc, 0xc1, 0xfd,
- 0xac, 0xfe, 0xae, 0xff, 0xa2, 0x00, 0x8d, 0x01, 0x70, 0x02, 0x62, 0x03,
- 0x4e, 0x04, 0x3a, 0x05, 0x26, 0x06, 0x16, 0x07, 0xff, 0x07, 0xf3, 0x08,
- 0xda, 0x09, 0xbe, 0x0a, 0xb9, 0x0b, 0xa1, 0x0c, 0x9b, 0x0d, 0x7d, 0x0e,
- 0x66, 0x0f, 0x54, 0x10, 0x36, 0x11, 0x20, 0x12, 0x11, 0x13, 0xf3, 0x13,
- 0xea, 0x14, 0xd1, 0x15, 0xb6, 0x16, 0x9b, 0x17, 0x83, 0x18, 0x7f, 0x19,
- 0x58, 0x1a, 0x53, 0x1b, 0x37, 0x1c, 0x22, 0x1d, 0x0a, 0x1e, 0xf3, 0x1e,
- 0xda, 0x1f, 0xca, 0x20, 0xb1, 0x21, 0x96, 0x22, 0x70, 0x23, 0x55, 0x24,
- 0x39, 0x25, 0x39, 0x26, 0x1a, 0x27, 0x07, 0x28, 0xe1, 0x28, 0xc5, 0x29,
- 0xa7, 0x2a, 0x85, 0x2b, 0x70, 0x2c, 0x4e, 0x2d, 0x3e, 0x2e, 0x19, 0x2f,
- 0xf3, 0x2f, 0xdf, 0x30, 0xc0, 0x31, 0xaf, 0x32, 0x93, 0x33, 0x77, 0x34,
- 0x48, 0x35, 0x2a, 0x36, 0x0f, 0x37, 0xf8, 0x37, 0xd9, 0x38, 0xbe, 0x39,
- 0x8b, 0x3a, 0x74, 0x3b, 0x48, 0x3c, 0x2d, 0x3d, 0xfa, 0x3d, 0xe7, 0x3e,
- 0xb0, 0x3f, 0x98, 0x40, 0x67, 0x41, 0x3a, 0x42, 0x16, 0x43, 0xf4, 0x43,
- 0xd8, 0x44, 0xa4, 0x45, 0x7c, 0x46, 0x4c, 0x47, 0x2a, 0x48, 0x06, 0x49,
- 0xce, 0x49, 0xa5, 0x4a, 0x77, 0x4b, 0x4e, 0x4c, 0x13, 0x4d, 0xdf, 0x4d,
- 0xaa, 0x4e, 0x74, 0x4f, 0x3d, 0x50, 0xfc, 0x50, 0xbd, 0x51, 0x8c, 0x52,
- 0x3e, 0x53, 0xfe, 0x53, 0x99, 0x54, 0x57, 0x55, 0xfc, 0x55, 0xab, 0x56,
- 0x45, 0x57, 0xd6, 0x57, 0x87, 0x58, 0x2f, 0x59, 0xbf, 0x59, 0x48, 0x5a,
- 0xc7, 0x5a, 0x54, 0x5b, 0xc8, 0x5b, 0x45, 0x5c, 0xb4, 0x5c, 0x25, 0x5d,
- 0x7e, 0x5d, 0xda, 0x5d, 0x36, 0x5e, 0xa5, 0x5e, 0xe9, 0x5e, 0x37, 0x5f,
- 0x72, 0x5f, 0xab, 0x5f, 0xe5, 0x5f, 0x1d, 0x60, 0x4f, 0x60, 0x81, 0x60,
- 0x9c, 0x60, 0xc3, 0x60, 0xdc, 0x60, 0xf7, 0x60, 0x04, 0x61, 0x16, 0x61,
- 0x1b, 0x61, 0x21, 0x61, 0x20, 0x61, 0x0d, 0x61, 0x0b, 0x61, 0xf0, 0x60,
- 0xe5, 0x60, 0xc7, 0x60, 0xb3, 0x60, 0x98, 0x60, 0x7c, 0x60, 0x59, 0x60,
- 0x4c, 0x60, 0x24, 0x60, 0x0d, 0x60, 0xdf, 0x5f, 0xb7, 0x5f, 0x87, 0x5f,
- 0x6b, 0x5f, 0x44, 0x5f, 0x28, 0x5f, 0xf5, 0x5e, 0xbd, 0x5e, 0x8f, 0x5e,
- 0x5c, 0x5e, 0x2a, 0x5e, 0xfe, 0x5d, 0xcd, 0x5d, 0xa4, 0x5d, 0x75, 0x5d,
- 0x4d, 0x5d, 0x11, 0x5d, 0xdf, 0x5c, 0xa9, 0x5c, 0x78, 0x5c, 0x42, 0x5c,
- 0x13, 0x5c, 0xde, 0x5b, 0xaf, 0x5b, 0x75, 0x5b, 0x3e, 0x5b, 0xfd, 0x5a,
- 0xbc, 0x5a, 0x90, 0x5a, 0x54, 0x5a, 0x1f, 0x5a, 0xe5, 0x59, 0xc2, 0x59,
- 0x80, 0x59, 0x39, 0x59, 0x0a, 0x59, 0xd6, 0x58, 0x96, 0x58, 0x55, 0x58,
- 0x1e, 0x58, 0xf1, 0x57, 0xc8, 0x57, 0x7e, 0x57, 0x44, 0x57, 0x11, 0x57,
- 0xd4, 0x56, 0x93, 0x56, 0x4c, 0x56, 0x11, 0x56, 0xd7, 0x55, 0xae, 0x55,
- 0x72, 0x55, 0x3c, 0x55, 0x0c, 0x55, 0xd1, 0x54, 0x98, 0x54, 0x63, 0x54,
- 0x2b, 0x54, 0xf8, 0x53, 0xc6, 0x53, 0x81, 0x53, 0x4b, 0x53, 0x19, 0x53,
- 0xea, 0x52, 0xb2, 0x52, 0x7e, 0x52, 0x30, 0x52, 0xc5, 0x51, 0x46, 0x51,
- 0xca, 0x50, 0x55, 0x50, 0xd7, 0x4f, 0x5d, 0x4f, 0xe4, 0x4e, 0x79, 0x4e,
- 0xfb, 0x4d, 0x83, 0x4d, 0x02, 0x4d, 0x8a, 0x4c, 0x1f, 0x4c, 0x98, 0x4b,
- 0x20, 0x4b, 0xa7, 0x4a, 0x36, 0x4a, 0xc0, 0x49, 0x44, 0x49, 0xc3, 0x48,
- 0x44, 0x48, 0xd5, 0x47, 0x59, 0x47, 0xe6, 0x46, 0x63, 0x46, 0xf8, 0x45,
- 0x79, 0x45, 0xfa, 0x44, 0x80, 0x44, 0x01, 0x44, 0x7a, 0x43, 0x04, 0x43,
- 0x85, 0x42, 0x07, 0x42, 0x92, 0x41, 0x17, 0x41, 0x94, 0x40, 0x16, 0x40,
- 0x9f, 0x3f, 0x20, 0x3f, 0x9c, 0x3e, 0x29, 0x3e, 0x9c, 0x3d, 0x20, 0x3d,
- 0x88, 0x3c, 0x0c, 0x3c, 0x87, 0x3b, 0x07, 0x3b, 0x89, 0x3a, 0xfb, 0x39,
- 0x6f, 0x39, 0xe7, 0x38, 0x55, 0x38, 0xcf, 0x37, 0x43, 0x37, 0xb5, 0x36,
- 0x2a, 0x36, 0x9c, 0x35, 0x0a, 0x35, 0x83, 0x34, 0xe6, 0x33, 0x53, 0x33,
- 0xba, 0x32, 0x1d, 0x32, 0x78, 0x31, 0xcb, 0x30, 0x34, 0x30, 0x8e, 0x2f,
- 0xf6, 0x2e, 0x56, 0x2e, 0xab, 0x2d, 0xfe, 0x2c, 0x4c, 0x2c, 0x9f, 0x2b,
- 0xed, 0x2a, 0x36, 0x2a, 0x7b, 0x29, 0xb9, 0x28, 0x02, 0x28, 0x41, 0x27,
- 0x81, 0x26, 0xb9, 0x25, 0xfb, 0x24, 0x2d, 0x24, 0x66, 0x23, 0x98, 0x22,
- 0xc6, 0x21, 0xe9, 0x20, 0x0d, 0x20, 0x28, 0x1f, 0x4c, 0x1e, 0x64, 0x1d,
- 0x66, 0x1c, 0x8c, 0x1b, 0x96, 0x1a, 0xac, 0x19, 0xb2, 0x18, 0xbb, 0x17,
- 0xc2, 0x16, 0xc7, 0x15, 0xcb, 0x14, 0xcd, 0x13, 0xc4, 0x12, 0xca, 0x11,
- 0xb6, 0x10, 0xb8, 0x0f, 0xa3, 0x0e, 0x9e, 0x0d, 0x88, 0x0c, 0x86, 0x0b,
- 0x7b, 0x0a, 0x7c, 0x09, 0x6d, 0x08, 0x5b, 0x07, 0x4a, 0x06, 0x38, 0x05,
- 0x2f, 0x04, 0x1c, 0x03, 0x10, 0x02, 0xf6, 0x00, 0xe9, 0xff, 0xe5, 0xfe,
- 0xcf, 0xfd, 0xc8, 0xfc, 0xb1, 0xfb, 0xa7, 0xfa, 0x8d, 0xf9, 0x7b, 0xf8,
- 0x7e, 0xf7, 0x77, 0xf6, 0x68, 0xf5, 0x62, 0xf4, 0x49, 0xf3, 0x42, 0xf2,
- 0x41, 0xf1, 0x3e, 0xf0, 0x49, 0xef, 0x47, 0xee, 0x56, 0xed, 0x46, 0xec,
- 0x56, 0xeb, 0x5c, 0xea, 0x6c, 0xe9, 0x7d, 0xe8, 0x9c, 0xe7, 0x99, 0xe6,
- 0xbf, 0xe5, 0xc9, 0xe4, 0xe5, 0xe3, 0xfd, 0xe2, 0x17, 0xe2, 0x26, 0xe1,
- 0x44, 0xe0, 0x6d, 0xdf, 0x9f, 0xde, 0xc5, 0xdd, 0xec, 0xdc, 0x26, 0xdc,
- 0x58, 0xdb, 0x91, 0xda, 0xb7, 0xd9, 0xf5, 0xd8, 0x27, 0xd8, 0x63, 0xd7,
- 0x96, 0xd6, 0xd5, 0xd5, 0x1a, 0xd5, 0x52, 0xd4, 0x9d, 0xd3, 0xde, 0xd2,
- 0x27, 0xd2, 0x6c, 0xd1, 0xb3, 0xd0, 0xf6, 0xcf, 0x51, 0xcf, 0x98, 0xce,
- 0xe9, 0xcd, 0x2f, 0xcd, 0x88, 0xcc, 0xdc, 0xcb, 0x41, 0xcb, 0x9f, 0xca,
- 0x01, 0xca, 0x60, 0xc9, 0xc4, 0xc8, 0x13, 0xc8, 0x7e, 0xc7, 0xe2, 0xc6,
- 0x51, 0xc6, 0xb6, 0xc5, 0x1a, 0xc5, 0x8e, 0xc4, 0xf6, 0xc3, 0x74, 0xc3,
- 0xdf, 0xc2, 0x59, 0xc2, 0xd2, 0xc1, 0x47, 0xc1, 0xbe, 0xc0, 0x3b, 0xc0,
- 0xbe, 0xbf, 0x3e, 0xbf, 0xc4, 0xbe, 0x39, 0xbe, 0xbf, 0xbd, 0x3e, 0xbd,
- 0xd7, 0xbc, 0x5d, 0xbc, 0xec, 0xbb, 0x73, 0xbb, 0x07, 0xbb, 0x96, 0xba,
- 0x24, 0xba, 0xb5, 0xb9, 0x49, 0xb9, 0xdd, 0xb8, 0x76, 0xb8, 0x02, 0xb8,
- 0xa8, 0xb7, 0x3c, 0xb7, 0xee, 0xb6, 0x82, 0xb6, 0x2b, 0xb6, 0xc3, 0xb5,
- 0x6e, 0xb5, 0x14, 0xb5, 0xc4, 0xb4, 0x6b, 0xb4, 0x20, 0xb4, 0xd2, 0xb3,
- 0x78, 0xb3, 0x2c, 0xb3, 0xe6, 0xb2, 0x9e, 0xb2, 0x58, 0xb2, 0x1a, 0xb2,
- 0xea, 0xb1, 0xa6, 0xb1, 0x63, 0xb1, 0x2b, 0xb1, 0xf3, 0xb0, 0xb8, 0xb0,
- 0x7b, 0xb0, 0x4e, 0xb0, 0x20, 0xb0, 0xf9, 0xaf, 0xc6, 0xaf, 0xa2, 0xaf,
- 0x84, 0xaf, 0x5e, 0xaf, 0x44, 0xaf, 0x21, 0xaf, 0x06, 0xaf, 0xe9, 0xae,
- 0xe2, 0xae, 0xd0, 0xae, 0xc3, 0xae, 0xba, 0xae, 0xc1, 0xae, 0xaf, 0xae,
- 0xbc, 0xae, 0xb5, 0xae, 0xc0, 0xae, 0xc3, 0xae, 0xd7, 0xae, 0xdd, 0xae,
- 0xfb, 0xae, 0x0a, 0xaf, 0x16, 0xaf, 0x37, 0xaf, 0x4a, 0xaf, 0x70, 0xaf,
- 0x86, 0xaf, 0xa9, 0xaf, 0xc7, 0xaf, 0xec, 0xaf, 0x12, 0xb0, 0x42, 0xb0,
- 0x66, 0xb0, 0x91, 0xb0, 0xc0, 0xb0, 0xee, 0xb0, 0x1a, 0xb1, 0x4c, 0xb1,
- 0x77, 0xb1, 0xb3, 0xb1, 0xdd, 0xb1, 0x10, 0xb2, 0x47, 0xb2, 0x70, 0xb2,
- 0xb8, 0xb2, 0xef, 0xb2, 0x26, 0xb3, 0x64, 0xb3, 0x90, 0xb3, 0xd8, 0xb3,
- 0x07, 0xb4, 0x4b, 0xb4, 0x83, 0xb4, 0xc7, 0xb4, 0xf4, 0xb4, 0x35, 0xb5,
- 0x70, 0xb5, 0xbc, 0xb5, 0xf0, 0xb5, 0x39, 0xb6, 0x7d, 0xb6, 0xb7, 0xb6,
- 0xfa, 0xb6, 0x2e, 0xb7, 0x7d, 0xb7, 0xbb, 0xb7, 0x01, 0xb8, 0x39, 0xb8,
- 0x80, 0xb8, 0xbd, 0xb8, 0x05, 0xb9, 0x46, 0xb9, 0x94, 0xb9, 0xcd, 0xb9,
- 0x17, 0xba, 0x5b, 0xba, 0x9e, 0xba, 0xdf, 0xba, 0x27, 0xbb, 0x6a, 0xbb,
- 0xbc, 0xbb, 0xf6, 0xbb, 0x3a, 0xbc, 0x83, 0xbc, 0xc3, 0xbc, 0x16, 0xbd,
- 0x58, 0xbd, 0xa2, 0xbd, 0xe0, 0xbd, 0x24, 0xbe, 0x70, 0xbe, 0xa1, 0xbe,
- 0xfa, 0xbe, 0x37, 0xbf, 0x8d, 0xbf, 0xc9, 0xbf, 0x1d, 0xc0, 0x5d, 0xc0,
- 0xa6, 0xc0, 0xe6, 0xc0, 0x2f, 0xc1, 0x7a, 0xc1, 0xcb, 0xc1, 0x2f, 0xc2,
- 0x95, 0xc2, 0xfa, 0xc2, 0x55, 0xc3, 0xbb, 0xc3, 0x1e, 0xc4, 0x86, 0xc4,
- 0xec, 0xc4, 0x4b, 0xc5, 0xab, 0xc5, 0x04, 0xc6, 0x72, 0xc6, 0xc6, 0xc6,
- 0x3a, 0xc7, 0x8e, 0xc7, 0xfd, 0xc7, 0x5a, 0xc8, 0xc0, 0xc8, 0x17, 0xc9,
- 0x79, 0xc9, 0xd5, 0xc9, 0x43, 0xca, 0x98, 0xca, 0x05, 0xcb, 0x64, 0xcb,
- 0xc3, 0xcb, 0x1e, 0xcc, 0x81, 0xcc, 0xe3, 0xcc, 0x40, 0xcd, 0xa6, 0xcd,
- 0x0a, 0xce, 0x6a, 0xce, 0xc0, 0xce, 0x26, 0xcf, 0x81, 0xcf, 0xf0, 0xcf,
- 0x48, 0xd0, 0xad, 0xd0, 0x07, 0xd1, 0x71, 0xd1, 0xca, 0xd1, 0x2b, 0xd2,
- 0x8a, 0xd2, 0xed, 0xd2, 0x50, 0xd3, 0xa1, 0xd3, 0x0f, 0xd4, 0x6f, 0xd4,
- 0xd6, 0xd4, 0x30, 0xd5, 0x93, 0xd5, 0xf6, 0xd5, 0x55, 0xd6, 0xb5, 0xd6,
- 0x12, 0xd7, 0x7b, 0xd7, 0xde, 0xd7, 0x34, 0xd8, 0x93, 0xd8, 0xe9, 0xd8,
- 0x61, 0xd9, 0xbb, 0xd9, 0x2b, 0xda, 0x88, 0xda, 0xeb, 0xda, 0x4f, 0xdb,
- 0xb9, 0xdb, 0x21, 0xdc, 0x80, 0xdc, 0xf7, 0xdc, 0x53, 0xdd, 0xbb, 0xdd,
- 0x2b, 0xde, 0xa4, 0xde, 0x05, 0xdf, 0x74, 0xdf, 0xd8, 0xdf, 0x44, 0xe0,
- 0xb4, 0xe0, 0x26, 0xe1, 0x91, 0xe1, 0x01, 0xe2, 0x77, 0xe2, 0xeb, 0xe2,
- 0x5e, 0xe3, 0xc7, 0xe3, 0x44, 0xe4, 0xb2, 0xe4, 0x25, 0xe5, 0xa3, 0xe5,
- 0x15, 0xe6, 0x97, 0xe6, 0x0b, 0xe7, 0x8b, 0xe7, 0x10, 0xe8, 0x7d, 0xe8,
- 0x06, 0xe9, 0x74, 0xe9, 0xff, 0xe9, 0x82, 0xea, 0x01, 0xeb, 0x85, 0xeb,
- 0xfa, 0xeb, 0x91, 0xec, 0x07, 0xed, 0x8f, 0xed, 0x15, 0xee, 0x9a, 0xee,
- 0x26, 0xef, 0xa5, 0xef, 0x26, 0xf0, 0xb2, 0xf0, 0x3e, 0xf1, 0xca, 0xf1,
- 0x45, 0xf2, 0xcc, 0xf2, 0x51, 0xf3, 0xdc, 0xf3, 0x5c, 0xf4, 0xe8, 0xf4,
- 0x6e, 0xf5, 0xf9, 0xf5, 0x79, 0xf6, 0xf9, 0xf6, 0x7d, 0xf7, 0x08, 0xf8,
- 0x91, 0xf8, 0x18, 0xf9, 0x95, 0xf9, 0x18, 0xfa, 0xa5, 0xfa, 0x21, 0xfb,
- 0xa9, 0xfb, 0x2a, 0xfc, 0xa7, 0xfc, 0x23, 0xfd, 0xa3, 0xfd, 0x2b, 0xfe,
- 0x9c, 0xfe, 0x2b, 0xff, 0xa0, 0xff, 0x1c, 0x00, 0x9a, 0x00, 0x11, 0x01,
- 0x9a, 0x01, 0x14, 0x02, 0x8c, 0x02, 0x07, 0x03, 0x84, 0x03, 0xf7, 0x03,
- 0x75, 0x04, 0xf3, 0x04, 0x65, 0x05, 0xe8, 0x05, 0x54, 0x06, 0xd3, 0x06,
- 0x48, 0x07, 0xc2, 0x07, 0x38, 0x08, 0xad, 0x08, 0x28, 0x09, 0x99, 0x09,
- 0x11, 0x0a, 0x79, 0x0a, 0xf5, 0x0a, 0x5c, 0x0b, 0xd1, 0x0b, 0x3f, 0x0c,
- 0xb5, 0x0c, 0x2c, 0x0d, 0x9a, 0x0d, 0x0b, 0x0e, 0x74, 0x0e, 0xe6, 0x0e,
- 0x45, 0x0f, 0xbd, 0x0f, 0x2f, 0x10, 0x9a, 0x10, 0x05, 0x11, 0x6c, 0x11,
- 0xdb, 0x11, 0x40, 0x12, 0xaa, 0x12, 0x14, 0x13, 0x81, 0x13, 0xe9, 0x13,
- 0x4d, 0x14, 0xb9, 0x14, 0x18, 0x15, 0x88, 0x15, 0xe6, 0x15, 0x58, 0x16,
- 0xb9, 0x16, 0x1c, 0x17, 0x7e, 0x17, 0xe3, 0x17, 0x43, 0x18, 0xac, 0x18,
- 0x08, 0x19, 0x6d, 0x19, 0xce, 0x19, 0x34, 0x1a, 0x90, 0x1a, 0xf5, 0x1a,
- 0x53, 0x1b, 0xbb, 0x1b, 0x07, 0x1c, 0x6f, 0x1c, 0xc2, 0x1c, 0x28, 0x1d,
- 0x84, 0x1d, 0xe8, 0x1d, 0x35, 0x1e, 0xa2, 0x1e, 0xf8, 0x1e, 0x59, 0x1f,
- 0xb8, 0x1f, 0x0c, 0x20, 0x69, 0x20, 0xbe, 0x20, 0x19, 0x21, 0x66, 0x21,
- 0xc6, 0x21, 0x1f, 0x22, 0x70, 0x22, 0xbe, 0x22, 0x18, 0x23, 0x72, 0x23,
- 0xbf, 0x23, 0x0f, 0x24, 0x67, 0x24, 0xc0, 0x24, 0x08, 0x25, 0x51, 0x25,
- 0xa6, 0x25, 0xf4, 0x25, 0x42, 0x26, 0x93, 0x26, 0xd6, 0x26, 0x25, 0x27,
- 0x6c, 0x27, 0xb7, 0x27, 0x07, 0x28, 0x49, 0x28, 0x96, 0x28, 0xda, 0x28,
- 0x22, 0x29, 0x66, 0x29, 0xa4, 0x29, 0xe8, 0x29, 0x20, 0x2a, 0x62, 0x2a,
- 0xa9, 0x2a, 0xe5, 0x2a, 0x21, 0x2b, 0x5a, 0x2b, 0x97, 0x2b, 0xc1, 0x2b,
- 0xfe, 0x2b, 0x28, 0x2c, 0x57, 0x2c, 0x88, 0x2c, 0xae, 0x2c, 0xd3, 0x2c,
- 0xfa, 0x2c, 0x17, 0x2d, 0x33, 0x2d, 0x4b, 0x2d, 0x5d, 0x2d, 0x68, 0x2d,
- 0x81, 0x2d, 0x92, 0x2d, 0x9e, 0x2d, 0xa9, 0x2d, 0xbb, 0x2d, 0xc3, 0x2d,
- 0xcd, 0x2d, 0xd5, 0x2d, 0xcd, 0x2d, 0xdc, 0x2d, 0xe3, 0x2d, 0xe1, 0x2d,
- 0xdd, 0x2d, 0xd9, 0x2d, 0xd7, 0x2d, 0xcf, 0x2d, 0xe0, 0x2d, 0xd2, 0x2d,
- 0xd2, 0x2d, 0xcb, 0x2d, 0xb7, 0x2d, 0xb6, 0x2d, 0xa1, 0x2d, 0x9e, 0x2d,
- 0x8b, 0x2d, 0x84, 0x2d, 0x68, 0x2d, 0x6a, 0x2d, 0x4e, 0x2d, 0x45, 0x2d,
- 0x2f, 0x2d, 0x18, 0x2d, 0x15, 0x2d, 0xef, 0x2c, 0xe8, 0x2c, 0xc9, 0x2c,
- 0xc7, 0x2c, 0xaa, 0x2c, 0x9b, 0x2c, 0x7c, 0x2c, 0x64, 0x2c, 0x3c, 0x2c,
- 0x2e, 0x2c, 0x16, 0x2c, 0x05, 0x2c, 0xe1, 0x2b, 0xc8, 0x2b, 0xb5, 0x2b,
- 0x9a, 0x2b, 0x7c, 0x2b, 0x61, 0x2b, 0x3f, 0x2b, 0x21, 0x2b, 0x01, 0x2b,
- 0xee, 0x2a, 0xd0, 0x2a, 0xb3, 0x2a, 0x95, 0x2a, 0x6d, 0x2a, 0x50, 0x2a,
- 0x2b, 0x2a, 0x0b, 0x2a, 0xe9, 0x29, 0xd1, 0x29, 0xa8, 0x29, 0x97, 0x29,
- 0x6c, 0x29, 0x51, 0x29, 0x24, 0x29, 0x03, 0x29, 0xe6, 0x28, 0xbe, 0x28,
- 0xa1, 0x28, 0x80, 0x28, 0x64, 0x28, 0x38, 0x28, 0x12, 0x28, 0xf0, 0x27,
- 0xd3, 0x27, 0xac, 0x27, 0x94, 0x27, 0x67, 0x27, 0x4a, 0x27, 0x1c, 0x27,
- 0xf7, 0x26, 0xd1, 0x26, 0xb6, 0x26, 0x8d, 0x26, 0x6e, 0x26, 0x4b, 0x26,
- 0x25, 0x26, 0x02, 0x26, 0xd8, 0x25, 0xbe, 0x25, 0x93, 0x25, 0x7c, 0x25,
- 0x4a, 0x25, 0x27, 0x25, 0x07, 0x25, 0xdc, 0x24, 0xbb, 0x24, 0x9a, 0x24,
- 0x78, 0x24, 0x4c, 0x24, 0x26, 0x24, 0x00, 0x24, 0xd7, 0x23, 0xc0, 0x23,
- 0x94, 0x23, 0x71, 0x23, 0x45, 0x23, 0x1c, 0x23, 0x00, 0x23, 0xd4, 0x22,
- 0xb5, 0x22, 0x8e, 0x22, 0x67, 0x22, 0x39, 0x22, 0x00, 0x22, 0xbd, 0x21,
- 0x87, 0x21, 0x46, 0x21, 0x01, 0x21, 0xca, 0x20, 0x89, 0x20, 0x4a, 0x20,
- 0x17, 0x20, 0xd6, 0x1f, 0x9a, 0x1f, 0x5e, 0x1f, 0x20, 0x1f, 0xe0, 0x1e,
- 0xa3, 0x1e, 0x5f, 0x1e, 0x29, 0x1e, 0xf0, 0x1d, 0xb8, 0x1d, 0x78, 0x1d,
- 0x36, 0x1d, 0x04, 0x1d, 0xc6, 0x1c, 0x8b, 0x1c, 0x4d, 0x1c, 0x18, 0x1c,
- 0xd9, 0x1b, 0x97, 0x1b, 0x5c, 0x1b, 0x2b, 0x1b, 0xf4, 0x1a, 0xb1, 0x1a,
- 0x7c, 0x1a, 0x32, 0x1a, 0x02, 0x1a, 0xc6, 0x19, 0x8b, 0x19, 0x59, 0x19,
- 0x10, 0x19, 0xd7, 0x18, 0x9c, 0x18, 0x62, 0x18, 0x22, 0x18, 0xe8, 0x17,
- 0xb1, 0x17, 0x7c, 0x17, 0x34, 0x17, 0xf9, 0x16, 0xc0, 0x16, 0x8b, 0x16,
- 0x55, 0x16, 0x14, 0x16, 0xdd, 0x15, 0x9f, 0x15, 0x65, 0x15, 0x2b, 0x15,
- 0xea, 0x14, 0xb9, 0x14, 0x70, 0x14, 0x3d, 0x14, 0x05, 0x14, 0xc1, 0x13,
- 0x86, 0x13, 0x45, 0x13, 0x09, 0x13, 0xca, 0x12, 0x90, 0x12, 0x57, 0x12,
- 0x1a, 0x12, 0xe1, 0x11, 0x9b, 0x11, 0x61, 0x11, 0x1d, 0x11, 0xe1, 0x10,
- 0x9d, 0x10, 0x64, 0x10, 0x17, 0x10, 0xde, 0x0f, 0xa1, 0x0f, 0x60, 0x0f,
- 0x1b, 0x0f, 0xd8, 0x0e, 0x90, 0x0e, 0x5b, 0x0e, 0x0e, 0x0e, 0xd3, 0x0d,
- 0x86, 0x0d, 0x4d, 0x0d, 0xf5, 0x0c, 0xba, 0x0c, 0x68, 0x0c, 0x2a, 0x0c,
- 0xde, 0x0b, 0x94, 0x0b, 0x4e, 0x0b, 0x07, 0x0b, 0xbb, 0x0a, 0x6c, 0x0a,
- 0x25, 0x0a, 0xd4, 0x09, 0x89, 0x09, 0x39, 0x09, 0xe6, 0x08, 0xa3, 0x08,
- 0x4f, 0x08, 0x02, 0x08, 0xa7, 0x07, 0x5f, 0x07, 0x08, 0x07, 0xba, 0x06,
- 0x68, 0x06, 0x1f, 0x06, 0xc5, 0x05, 0x7a, 0x05, 0x1f, 0x05, 0xd7, 0x04,
- 0x85, 0x04, 0x31, 0x04, 0xde, 0x03, 0x89, 0x03, 0x3a, 0x03, 0xe9, 0x02,
- 0x96, 0x02, 0x47, 0x02, 0xf7, 0x01, 0xa4, 0x01, 0x5d, 0x01, 0x06, 0x01,
- 0xb9, 0x00, 0x00, 0x00
-};
-unsigned int kick_raw_len = 6352;
diff --git a/third-party/TeensyVariablePlayback.O/extras/soundio/save_raw_sd/CMakeLists.txt b/third-party/TeensyVariablePlayback.O/extras/soundio/save_raw_sd/CMakeLists.txt
deleted file mode 100644
index 02f6b47..0000000
--- a/third-party/TeensyVariablePlayback.O/extras/soundio/save_raw_sd/CMakeLists.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-cmake_minimum_required(VERSION 3.10)
-set(CMAKE_CXX_STANDARD 11)
-project(save_raw_sd)
-
-find_package(teensy_x86_stubs)
-include_directories(${teensy_x86_stubs_INCLUDE_DIR})
-
-find_package(teensy_x86_sd_stubs)
-include_directories(${teensy_x86_sd_stubs_INCLUDE_DIR})
-
-find_package(teensy_audio_x86_stubs)
-include_directories(${teensy_audio_x86_stubs_INCLUDE_DIR})
-
-find_package(teensy_audio_x86_stubs_soundio)
-if(teensy_audio_x86_stubs_soundio_FOUND)
- include_directories(${teensy_audio_x86_stubs_soundio_INCLUDE_DIR})
-
- include_directories(../../../src)
- include_directories(/usr/local/include) #soundio
-
- add_executable(save_raw_sd save_raw_sd.cpp)
- target_link_libraries(save_raw_sd teensy_variable_playback)
-
- if(WIN32)
- elseif(UNIX AND NOT APPLE)
- set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall")
- SET(SOUNDIO_LIBS -L/usr/lib/x86_64-linux-gnu -lsoundio)
- elseif(APPLE)
- INCLUDE_DIRECTORIES(/System/Library/Frameworks)
- FIND_LIBRARY(glfw3_LIBRARY glfw)
- FIND_LIBRARY(COCOA_LIBRARY Cocoa)
- FIND_LIBRARY(OpenGL_LIBRARY OpenGL)
- FIND_LIBRARY(IOKit_LIBRARY IOKit)
- FIND_LIBRARY(glew_LIBRARY glew)
- FIND_LIBRARY(CoreVideo_LIBRARY CoreVideo)
- MARK_AS_ADVANCED(COCOA_LIBRARY OpenGL_LIBRARY)
- FIND_LIBRARY(FREETYPE_LIBRARIES FreeType)
- SET(APPLE_LIBS ${COCOA_LIBRARY} ${IOKit_LIBRARY} ${OpenGL_LIBRARY} ${CoreVideo_LIBRARY})
- SET(APPLE_LIBS ${APPLE_LIBS} ${GLFW3_LIBRARY} ${ASSIMP_LIBRARY} ${FREETYPE_LIBRARIES} ${glfw3_LIBRARY} ${glew_LIBRARY})
- set(LIBS ${LIBS} ${APPLE_LIBS})
- target_link_libraries(save_raw_sd
- "-framework CoreServices"
- "-framework CoreAudio"
- "-framework Foundation"
- "-framework AudioUnit")
- SET(SOUNDIO_LIBS /usr/local/lib/libsoundio.a)
- endif()
-
- target_link_libraries(save_raw_sd ${LIBS} ${teensy_x86_stubs_LIBS} ${teensy_x86_sd_stubs_LIBS} ${teensy_audio_x86_stubs_LIBS} ${teensy_audio_x86_stubs_soundio_LIBS} ${teensy_st7735_linux_stubs_LIBS} ${teensy_st7735_linux_extras_opengl_LIBS} ${SOUNDIO_LIBS})
- #set(CMAKE_VERBOSE_MAKEFILE 1)
-endif()
\ No newline at end of file
diff --git a/third-party/TeensyVariablePlayback.O/extras/soundio/save_raw_sd/save_raw_sd.cpp b/third-party/TeensyVariablePlayback.O/extras/soundio/save_raw_sd/save_raw_sd.cpp
deleted file mode 100644
index 5741e71..0000000
--- a/third-party/TeensyVariablePlayback.O/extras/soundio/save_raw_sd/save_raw_sd.cpp
+++ /dev/null
@@ -1,701 +0,0 @@
-// Plays a RAW (16-bit signed) PCM audio file at slower or faster rate
-// this example plays a sample stored in an array
-#include
-#include
-#include "playsdresmp.h"
-#include "output_soundio.h"
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-// GUItool: begin automatically generated code
-AudioPlaySdResmp playSdRaw1; //xy=306,225
-AudioRecordQueue queue1; //xy=609,267
-AudioOutputSoundIO sio_out1; //xy=612,224
-AudioConnection patchCord1(playSdRaw1, 0, sio_out1, 0);
-AudioConnection patchCord2(playSdRaw1, 0, sio_out1, 1);
-AudioConnection patchCord3(playSdRaw1, 0, queue1, 0);
-// GUItool: end automatically generated code
-
-const char *_filename = "KICK.RAW";
-extern unsigned int kick_raw_len;
-extern unsigned char kick_raw[];
-
-int16_t buffer[512] = {0};
-File frec;
-
-unsigned long lastSamplePlayed = 0;
-void my_handler(sig_atomic_t i);
-static char stack_body[64*1024];
-static stack_t sigseg_stack;
-static struct sigaction sigseg_handler;
-
-void crash_handler(sig_atomic_t i);
-
-void setup() {
- Serial.begin(9600);
-
- playSdRaw1.setPlaybackRate(1.4f);
- playSdRaw1.enableInterpolation(true);
- //rraw_a1.play((int16_t*)kick_raw, kick_raw_len/2);
- Serial.println("setup done");
-
- if (SD.exists("RECORD_SD.RAW")) {
- // The SD library writes new data to the end of the
- // file, so to start a new recording, the old file
- // must be deleted before new data is written.
- SD.remove("RECORD_SD.RAW");
- }
- frec = SD.open("RECORD_SD.RAW", O_WRITE);
-
- AudioMemory(120);
-
- if (frec) {
- queue1.begin();
- Serial.println("startRecording");
- } else {
- Serial.println("recording failed...");
- }
-}
-
-void loop() {
- unsigned currentMillis = millis();
- if (currentMillis > lastSamplePlayed + 1000) {
- if (!playSdRaw1.isPlaying()) {
- playSdRaw1.playRaw(_filename, 1);
- lastSamplePlayed = currentMillis;
-
- Serial.print("Memory: ");
- Serial.print(AudioMemoryUsage());
- Serial.print(",");
- Serial.print(AudioMemoryUsageMax());
- Serial.println();
- }
- }
-
- if (queue1.available() >= 1) {
- int16_t* incomming = queue1.readBuffer();
- //Serial.printf("sizeof(incomming)=%i\n", sizeof(incomming));
- //if (incomming != NULL && sizeof(incomming) >= 256) {
- if (incomming != NULL) {
- memcpy(buffer, incomming, 256);
- queue1.freeBuffer();
- frec.write((unsigned char *)buffer, 256);
- frec.flush();
- }
- //else {
- // arduino_should_exit = true;
- //Serial.printf("sizeof(incomming)=%i\n", sizeof(incomming));
- //}
- }
- delay(1);
-}
-
-int main(int numArgs, char **args) {
-
- if (numArgs < 2)
- {
- std::cout << "usage: " << args[0] << " ";
- exit(0);
- }
- std::cout << args[1] << std::endl;
- signal (SIGINT,my_handler);
- signal (SIGSEGV,crash_handler);
-
- sigseg_stack.ss_sp = stack_body;
- sigseg_stack.ss_flags = SS_ONSTACK;
- sigseg_stack.ss_size = sizeof(stack_body);
- // assert(!sigaltstack(&sigseg_stack, nullptr));
- sigseg_handler.sa_flags = SA_ONSTACK;
- sigseg_handler.sa_handler = &crash_handler;
- // assert(!sigaction(SIGSEGV, &sigseg_handler, nullptr));
-
- initialize_mock_arduino();
- //SD.setSDCardFileData((char *) kick_raw, kick_raw_len);
- SD.setSDCardFolderPath(args[1]);
- setup();
- while(!arduino_should_exit){
- loop();
- }
- delay(1000);
- frec.close();
-}
-
-void my_handler(sig_atomic_t i){
- if ( i== SIGINT) {
- arduino_should_exit = true;
- printf("Caught signal %d\n",i);
- } else
- {
- cerr << "sig seg fault handler" << endl;
- const int asize = 10;
- void *array[asize];
- size_t size;
-
- // get void*'s for all entries on the stack
- size = backtrace(array, asize);
-
- // print out all the frames to stderr
- cerr << "stack trace: " << endl;
- backtrace_symbols_fd(array, size, STDERR_FILENO);
- cerr << "resend SIGSEGV to get core dump" << endl;
- signal(i, SIG_DFL);
- kill(getpid(), i);
- }
-}
-void crash_handler(sig_atomic_t i){
- cerr << "sig seg fault handler" << endl;
- const int asize = 10;
- void *array[asize];
- size_t size;
-
- // get void*'s for all entries on the stack
- size = backtrace(array, asize);
-
- // print out all the frames to stderr
- cerr << "stack trace: " << endl;
- backtrace_symbols_fd(array, size, STDERR_FILENO);
- cerr << "resend SIGSEGV to get core dump" << endl;
- signal(i, SIG_DFL);
- kill(getpid(), i);
-}
-
-unsigned char kick_raw[] = {
- 0x99, 0x02, 0xd7, 0x02, 0xfa, 0x02, 0x5f, 0x03, 0xc1, 0x03, 0x2a, 0x04,
- 0xad, 0x04, 0xa5, 0x05, 0x76, 0x06, 0x2f, 0x07, 0x9e, 0x07, 0xe2, 0x07,
- 0x43, 0x08, 0x92, 0x08, 0xb2, 0x08, 0xe8, 0x08, 0x16, 0x09, 0xda, 0x08,
- 0x51, 0x08, 0x01, 0x08, 0x25, 0x08, 0x70, 0x08, 0xc3, 0x08, 0x23, 0x09,
- 0x95, 0x09, 0x19, 0x0a, 0x83, 0x0a, 0x7e, 0x0a, 0xd0, 0x0a, 0x65, 0x0b,
- 0xf6, 0x0b, 0x89, 0x0c, 0xd1, 0x0c, 0xcf, 0x0c, 0x1a, 0x0d, 0xe5, 0x0d,
- 0x5e, 0x0e, 0xbb, 0x0e, 0xec, 0x0e, 0xd9, 0x0e, 0x07, 0x0f, 0xc8, 0x0f,
- 0x2a, 0x10, 0x04, 0x10, 0x28, 0x10, 0x54, 0x11, 0x8e, 0x13, 0x4b, 0x16,
- 0x09, 0x19, 0x91, 0x1b, 0xf7, 0x1d, 0x55, 0x20, 0xd1, 0x22, 0xcb, 0x25,
- 0x4d, 0x29, 0xa8, 0x2c, 0x7f, 0x2f, 0xda, 0x31, 0xac, 0x34, 0x0a, 0x3a,
- 0x24, 0x47, 0x9d, 0x5b, 0xe9, 0x67, 0x29, 0x67, 0x24, 0x66, 0x26, 0x66,
- 0xd2, 0x65, 0x9c, 0x65, 0x38, 0x65, 0x05, 0x65, 0x9f, 0x64, 0x64, 0x64,
- 0x12, 0x64, 0xce, 0x63, 0x7c, 0x63, 0x32, 0x63, 0xe6, 0x62, 0x97, 0x62,
- 0x49, 0x62, 0x01, 0x62, 0xb3, 0x61, 0x63, 0x61, 0x15, 0x61, 0xc4, 0x60,
- 0x75, 0x60, 0x20, 0x60, 0xce, 0x5f, 0x7a, 0x5f, 0x28, 0x5f, 0xd5, 0x5e,
- 0x81, 0x5e, 0x2d, 0x5e, 0xd3, 0x5d, 0x80, 0x5d, 0x2e, 0x5d, 0xe6, 0x5c,
- 0x1a, 0x5c, 0x16, 0x5a, 0x01, 0x58, 0xb9, 0x56, 0x6d, 0x55, 0xf4, 0x53,
- 0x49, 0x52, 0x83, 0x50, 0x87, 0x4e, 0x5f, 0x4c, 0x68, 0x4a, 0x5c, 0x48,
- 0x62, 0x46, 0x5a, 0x44, 0xe2, 0x41, 0x08, 0x3f, 0x1c, 0x3c, 0x44, 0x39,
- 0x35, 0x36, 0xcb, 0x32, 0xaf, 0x2f, 0xc8, 0x2c, 0xf8, 0x29, 0x55, 0x27,
- 0x6a, 0x24, 0x0f, 0x21, 0x5e, 0x1d, 0xc3, 0x19, 0x7b, 0x16, 0x71, 0x13,
- 0x6c, 0x10, 0x00, 0x0d, 0xd2, 0x08, 0x7f, 0x04, 0x7a, 0x01, 0x43, 0xff,
- 0xb9, 0xfc, 0xfa, 0xf9, 0x3b, 0xf7, 0xcb, 0xf4, 0x2b, 0xf2, 0x02, 0xef,
- 0x0c, 0xec, 0x3d, 0xe9, 0x21, 0xe6, 0xa6, 0xe2, 0x8a, 0xdf, 0x00, 0xdd,
- 0xbc, 0xda, 0x9e, 0xd8, 0xc1, 0xd6, 0xd6, 0xd4, 0xd6, 0xd2, 0xad, 0xd0,
- 0x5f, 0xce, 0xf0, 0xcb, 0xe9, 0xc9, 0x61, 0xc8, 0x75, 0xc7, 0x97, 0xc6,
- 0x3e, 0xc5, 0x07, 0xc4, 0x8e, 0xc3, 0x18, 0xc3, 0x3a, 0xc2, 0x15, 0xc1,
- 0x0e, 0xc0, 0xb3, 0xbf, 0xcf, 0xbf, 0xf8, 0xbf, 0xcc, 0xbf, 0x72, 0xbf,
- 0x41, 0xbf, 0x2b, 0xbf, 0xe2, 0xbe, 0x99, 0xbe, 0x4e, 0xbe, 0x0e, 0xbe,
- 0xcd, 0xbd, 0x7c, 0xbd, 0x8a, 0xbd, 0x88, 0xbd, 0x04, 0xbd, 0x0c, 0xbc,
- 0xb3, 0xbb, 0xf6, 0xbb, 0xf1, 0xbb, 0x12, 0xbc, 0x6f, 0xbc, 0xcb, 0xbc,
- 0xe4, 0xbc, 0x33, 0xbd, 0x1b, 0xbe, 0xac, 0xbe, 0x1e, 0xbf, 0x91, 0xbf,
- 0x50, 0xc0, 0x40, 0xc1, 0x3d, 0xc2, 0x32, 0xc3, 0xdf, 0xc3, 0xad, 0xc4,
- 0x77, 0xc5, 0xbe, 0xc6, 0xc7, 0xc8, 0x1d, 0xcb, 0x0e, 0xcd, 0x83, 0xce,
- 0xf1, 0xcf, 0xb4, 0xd1, 0x7d, 0xd3, 0x86, 0xd5, 0x89, 0xd7, 0xd2, 0xd9,
- 0x34, 0xdc, 0x28, 0xde, 0x23, 0xe0, 0x33, 0xe2, 0x0a, 0xe4, 0x59, 0xe5,
- 0xfc, 0xe6, 0x98, 0xe9, 0x30, 0xec, 0x91, 0xee, 0xc2, 0xf0, 0x0d, 0xf3,
- 0x35, 0xf5, 0xf3, 0xf6, 0xc4, 0xf8, 0xcb, 0xfa, 0xef, 0xfc, 0x65, 0xff,
- 0x05, 0x02, 0x7c, 0x04, 0xde, 0x06, 0x75, 0x09, 0x2b, 0x0c, 0x9b, 0x0e,
- 0xf3, 0x10, 0xb3, 0x13, 0x3a, 0x16, 0xeb, 0x18, 0x55, 0x1c, 0xad, 0x1f,
- 0xa8, 0x22, 0x54, 0x25, 0xae, 0x27, 0x33, 0x2a, 0x16, 0x2d, 0x36, 0x30,
- 0x84, 0x33, 0x94, 0x36, 0xbd, 0x38, 0xa2, 0x3a, 0x7d, 0x3c, 0x06, 0x3e,
- 0x24, 0x3f, 0x27, 0x40, 0x7c, 0x41, 0xef, 0x42, 0x14, 0x44, 0xeb, 0x44,
- 0x06, 0x46, 0x53, 0x47, 0x47, 0x48, 0x9b, 0x48, 0xaf, 0x48, 0xd7, 0x48,
- 0x4c, 0x49, 0xa0, 0x49, 0xbe, 0x49, 0xd4, 0x49, 0xfa, 0x49, 0x5e, 0x4a,
- 0xcc, 0x4a, 0x14, 0x4b, 0xfe, 0x4a, 0x22, 0x4b, 0x10, 0x4c, 0x0c, 0x4d,
- 0xb2, 0x4d, 0x4c, 0x4e, 0x3e, 0x4e, 0x77, 0x4d, 0x98, 0x4c, 0xf6, 0x4b,
- 0x67, 0x4b, 0xf0, 0x4a, 0x2a, 0x4a, 0xea, 0x48, 0x06, 0x48, 0x47, 0x47,
- 0xb2, 0x46, 0xda, 0x45, 0xad, 0x44, 0x5c, 0x43, 0x43, 0x42, 0x9e, 0x41,
- 0x0a, 0x41, 0x49, 0x40, 0xa6, 0x3f, 0x9d, 0x3e, 0x3c, 0x3d, 0xc6, 0x3b,
- 0xf6, 0x39, 0x87, 0x37, 0xf6, 0x34, 0x87, 0x32, 0x2b, 0x30, 0x6f, 0x2d,
- 0xfa, 0x2a, 0x3d, 0x29, 0x48, 0x27, 0xc2, 0x24, 0x49, 0x22, 0xca, 0x1f,
- 0xa0, 0x1c, 0x7c, 0x19, 0x06, 0x17, 0xbf, 0x14, 0x9f, 0x12, 0x96, 0x10,
- 0xf9, 0x0d, 0x3e, 0x0b, 0xe8, 0x08, 0x5c, 0x06, 0xe7, 0x02, 0x6e, 0xff,
- 0xca, 0xfc, 0x5b, 0xfa, 0xa0, 0xf7, 0xe9, 0xf4, 0x9c, 0xf2, 0x66, 0xf0,
- 0xaf, 0xed, 0xfd, 0xea, 0xcc, 0xe8, 0x6e, 0xe6, 0x82, 0xe3, 0x97, 0xe0,
- 0xed, 0xdd, 0x62, 0xdb, 0x7b, 0xd8, 0xd3, 0xd5, 0x5f, 0xd3, 0x1a, 0xd1,
- 0x44, 0xcf, 0xeb, 0xcd, 0x89, 0xcc, 0xca, 0xca, 0x4d, 0xc9, 0x35, 0xc8,
- 0x53, 0xc7, 0x0c, 0xc6, 0x06, 0xc4, 0xca, 0xc1, 0x09, 0xc0, 0x9c, 0xbe,
- 0xa8, 0xbd, 0xfd, 0xbc, 0xf2, 0xbb, 0x9b, 0xba, 0x20, 0xb9, 0xe4, 0xb7,
- 0xc1, 0xb6, 0xcd, 0xb5, 0x12, 0xb5, 0x55, 0xb4, 0xd1, 0xb3, 0x86, 0xb3,
- 0x19, 0xb3, 0xe8, 0xb2, 0xd7, 0xb2, 0x72, 0xb2, 0x27, 0xb2, 0xb7, 0xb1,
- 0x67, 0xb1, 0x65, 0xb1, 0xae, 0xb1, 0x6b, 0xb1, 0xf2, 0xb0, 0xeb, 0xb0,
- 0x0f, 0xb1, 0xfe, 0xb0, 0xeb, 0xb0, 0xcf, 0xb0, 0x94, 0xb0, 0x3e, 0xb0,
- 0x29, 0xb0, 0x56, 0xb0, 0x0c, 0xb0, 0xb7, 0xaf, 0xfb, 0xaf, 0x37, 0xb0,
- 0x96, 0xb0, 0x42, 0xb1, 0xe8, 0xb1, 0xb5, 0xb2, 0xc5, 0xb3, 0x93, 0xb4,
- 0x93, 0xb4, 0xee, 0xb4, 0x59, 0xb6, 0xca, 0xb7, 0x87, 0xb8, 0x6f, 0xb8,
- 0x33, 0xb8, 0xaf, 0xb8, 0x4a, 0xb9, 0x9d, 0xb9, 0xf2, 0xb9, 0x48, 0xba,
- 0xd0, 0xba, 0xe5, 0xbb, 0x4e, 0xbd, 0xaf, 0xbe, 0xe9, 0xbf, 0xba, 0xc1,
- 0xc2, 0xc3, 0x73, 0xc5, 0xa6, 0xc6, 0x6a, 0xc7, 0x83, 0xc8, 0x42, 0xca,
- 0xc8, 0xcb, 0x34, 0xcd, 0x94, 0xce, 0xcc, 0xcf, 0x31, 0xd1, 0x27, 0xd3,
- 0x8c, 0xd5, 0x61, 0xd7, 0x78, 0xd9, 0x3b, 0xdc, 0x40, 0xdf, 0xdd, 0xe1,
- 0x0c, 0xe4, 0xe4, 0xe5, 0xd0, 0xe7, 0x65, 0xea, 0xc9, 0xec, 0xd7, 0xee,
- 0xfc, 0xf0, 0x7c, 0xf3, 0xf6, 0xf5, 0x09, 0xf8, 0xde, 0xf9, 0xca, 0xfb,
- 0xac, 0xfd, 0xc3, 0xff, 0x33, 0x02, 0xb1, 0x04, 0x24, 0x07, 0x57, 0x09,
- 0x5f, 0x0b, 0xe6, 0x0d, 0xd1, 0x10, 0x6d, 0x13, 0x8f, 0x15, 0xfb, 0x17,
- 0x43, 0x1a, 0x8e, 0x1c, 0x1a, 0x1f, 0x69, 0x21, 0x80, 0x23, 0x74, 0x25,
- 0x62, 0x27, 0x07, 0x29, 0xa1, 0x2a, 0xa5, 0x2c, 0xdf, 0x2e, 0x57, 0x31,
- 0xff, 0x33, 0xd1, 0x36, 0x6e, 0x39, 0x8a, 0x3b, 0x58, 0x3d, 0x32, 0x3f,
- 0xc8, 0x40, 0x1b, 0x42, 0x22, 0x43, 0x1a, 0x44, 0x25, 0x45, 0xe5, 0x45,
- 0x43, 0x46, 0x9b, 0x46, 0x6a, 0x47, 0x6f, 0x48, 0x69, 0x49, 0x6f, 0x4a,
- 0xc7, 0x4b, 0x0e, 0x4d, 0x03, 0x4e, 0x78, 0x4e, 0xdf, 0x4e, 0x0b, 0x4f,
- 0xea, 0x4e, 0xcb, 0x4e, 0x1b, 0x4f, 0x6e, 0x4f, 0xc3, 0x4f, 0xdc, 0x4f,
- 0xcb, 0x4f, 0xd2, 0x4f, 0x16, 0x50, 0x24, 0x50, 0xf2, 0x4f, 0x00, 0x50,
- 0x37, 0x50, 0x4e, 0x50, 0x5e, 0x50, 0x7c, 0x50, 0xab, 0x50, 0x69, 0x50,
- 0xad, 0x4f, 0xa3, 0x4e, 0xe6, 0x4d, 0x42, 0x4d, 0xdc, 0x4c, 0x7c, 0x4c,
- 0xbe, 0x4b, 0x08, 0x4b, 0x7b, 0x4a, 0xe4, 0x49, 0x14, 0x49, 0x07, 0x48,
- 0x98, 0x46, 0x2f, 0x45, 0x16, 0x44, 0x23, 0x43, 0x55, 0x42, 0xac, 0x41,
- 0x06, 0x41, 0x4b, 0x40, 0x8f, 0x3f, 0xde, 0x3e, 0xe1, 0x3d, 0x75, 0x3c,
- 0xc0, 0x3a, 0xe4, 0x38, 0x83, 0x37, 0x9a, 0x36, 0xe5, 0x35, 0xc0, 0x34,
- 0xf9, 0x32, 0xe1, 0x30, 0xfa, 0x2e, 0xd4, 0x2c, 0x4d, 0x2a, 0xed, 0x27,
- 0xb9, 0x25, 0xb2, 0x23, 0x7d, 0x21, 0xfd, 0x1e, 0x89, 0x1c, 0x38, 0x1a,
- 0xe2, 0x17, 0x67, 0x15, 0xf3, 0x12, 0xb3, 0x10, 0x9e, 0x0e, 0x79, 0x0c,
- 0xea, 0x09, 0x54, 0x07, 0x26, 0x05, 0x0a, 0x03, 0xd7, 0x00, 0x98, 0xfe,
- 0x41, 0xfc, 0x8d, 0xf9, 0x3c, 0xf7, 0x4f, 0xf5, 0x73, 0xf3, 0x7b, 0xf1,
- 0x68, 0xef, 0x6f, 0xed, 0x7a, 0xeb, 0x87, 0xe9, 0x48, 0xe7, 0xc6, 0xe4,
- 0x65, 0xe2, 0xf6, 0xdf, 0x86, 0xdd, 0x9f, 0xdb, 0x1b, 0xda, 0xa6, 0xd8,
- 0xce, 0xd6, 0xe4, 0xd4, 0xe3, 0xd2, 0x84, 0xd0, 0xec, 0xcd, 0x08, 0xcc,
- 0x89, 0xca, 0x1b, 0xc9, 0xe2, 0xc7, 0x9d, 0xc6, 0xe5, 0xc4, 0x79, 0xc3,
- 0x6d, 0xc2, 0xe3, 0xc0, 0x3c, 0xbf, 0xd3, 0xbd, 0x41, 0xbc, 0xd2, 0xba,
- 0x6a, 0xb9, 0xa1, 0xb7, 0xa9, 0xb5, 0x47, 0xb4, 0x91, 0xb3, 0xd5, 0xb2,
- 0xb7, 0xb1, 0x51, 0xb0, 0x14, 0xaf, 0xf5, 0xad, 0x95, 0xac, 0x34, 0xab,
- 0x05, 0xaa, 0xe1, 0xa8, 0xb3, 0xa7, 0xd9, 0xa6, 0x25, 0xa6, 0x6e, 0xa5,
- 0x2b, 0xa5, 0x7b, 0xa5, 0x9a, 0xa5, 0x88, 0xa5, 0xc3, 0xa5, 0xe7, 0xa5,
- 0xaf, 0xa5, 0x8b, 0xa5, 0x80, 0xa5, 0x65, 0xa5, 0x8c, 0xa5, 0x7e, 0xa5,
- 0x22, 0xa5, 0x40, 0xa5, 0xed, 0xa5, 0x27, 0xa6, 0x2b, 0xa6, 0x1c, 0xa6,
- 0xe5, 0xa5, 0x7b, 0xa5, 0x45, 0xa5, 0x37, 0xa5, 0x04, 0xa5, 0x91, 0xa4,
- 0x8d, 0xa4, 0x2d, 0xa5, 0x9f, 0xa5, 0xf6, 0xa5, 0x7e, 0xa6, 0x34, 0xa7,
- 0x14, 0xa8, 0x7e, 0xa8, 0x87, 0xa8, 0xc4, 0xa8, 0x51, 0xa9, 0xec, 0xa9,
- 0x74, 0xaa, 0xf7, 0xaa, 0x40, 0xab, 0xd9, 0xab, 0xca, 0xac, 0x6b, 0xad,
- 0xb3, 0xad, 0x08, 0xae, 0x10, 0xaf, 0x2c, 0xb0, 0xcb, 0xb0, 0x23, 0xb1,
- 0xac, 0xb1, 0x0e, 0xb2, 0x42, 0xb2, 0xd7, 0xb2, 0xef, 0xb3, 0x21, 0xb5,
- 0x30, 0xb6, 0xe9, 0xb6, 0x54, 0xb7, 0xf0, 0xb7, 0x9e, 0xb8, 0x2e, 0xb9,
- 0x03, 0xba, 0x55, 0xbb, 0xdf, 0xbc, 0x5f, 0xbe, 0xb8, 0xbf, 0x01, 0xc1,
- 0x83, 0xc2, 0x0c, 0xc4, 0x65, 0xc5, 0x7e, 0xc6, 0x86, 0xc7, 0xba, 0xc8,
- 0x11, 0xca, 0x66, 0xcb, 0x28, 0xcd, 0x4d, 0xcf, 0x60, 0xd1, 0x69, 0xd3,
- 0x7b, 0xd5, 0x5f, 0xd7, 0xe3, 0xd8, 0xca, 0xda, 0xda, 0xdc, 0xda, 0xde,
- 0xab, 0xe0, 0x59, 0xe2, 0x3b, 0xe4, 0x21, 0xe6, 0xfc, 0xe7, 0xcb, 0xe9,
- 0xbe, 0xeb, 0x9c, 0xed, 0x47, 0xef, 0x0b, 0xf1, 0xd3, 0xf2, 0xbc, 0xf4,
- 0x9c, 0xf6, 0x67, 0xf8, 0x2a, 0xfa, 0xc1, 0xfb, 0x7f, 0xfd, 0x41, 0xff,
- 0x12, 0x01, 0xd2, 0x02, 0xfc, 0x04, 0xe8, 0x06, 0x9a, 0x08, 0x59, 0x0a,
- 0x48, 0x0c, 0x36, 0x0e, 0x37, 0x10, 0x36, 0x12, 0x59, 0x14, 0x62, 0x16,
- 0x86, 0x18, 0xb9, 0x1a, 0xc2, 0x1c, 0xcd, 0x1e, 0xf1, 0x20, 0x27, 0x23,
- 0x7a, 0x25, 0xf9, 0x27, 0x2a, 0x2a, 0x1f, 0x2c, 0xf8, 0x2d, 0xa3, 0x2f,
- 0x23, 0x31, 0xf4, 0x32, 0x2c, 0x35, 0x40, 0x37, 0x23, 0x39, 0xfe, 0x3a,
- 0x11, 0x3d, 0x2c, 0x3f, 0xe8, 0x40, 0x8c, 0x42, 0x55, 0x44, 0x37, 0x46,
- 0x99, 0x47, 0xcb, 0x48, 0x12, 0x4a, 0x60, 0x4b, 0x86, 0x4c, 0x9b, 0x4d,
- 0xc8, 0x4e, 0xec, 0x4f, 0xe3, 0x50, 0x8a, 0x51, 0x23, 0x52, 0xd8, 0x52,
- 0x68, 0x53, 0x9b, 0x53, 0xb1, 0x53, 0x11, 0x54, 0x94, 0x54, 0xf7, 0x54,
- 0x4f, 0x55, 0xa4, 0x55, 0x03, 0x56, 0x51, 0x56, 0x92, 0x56, 0xfa, 0x56,
- 0x59, 0x57, 0xad, 0x57, 0xcd, 0x57, 0xc5, 0x57, 0xa8, 0x57, 0x64, 0x57,
- 0x49, 0x57, 0x63, 0x57, 0x64, 0x57, 0x40, 0x57, 0xf6, 0x56, 0xfc, 0x56,
- 0x36, 0x57, 0x3b, 0x57, 0x1e, 0x57, 0x1c, 0x57, 0x03, 0x57, 0xee, 0x56,
- 0xa5, 0x56, 0x80, 0x56, 0xd4, 0x56, 0xe4, 0x56, 0x92, 0x56, 0xf0, 0x55,
- 0x02, 0x55, 0xab, 0x53, 0xb5, 0x52, 0x51, 0x52, 0x08, 0x52, 0x80, 0x51,
- 0xb4, 0x50, 0xde, 0x4f, 0x27, 0x4f, 0x63, 0x4e, 0x58, 0x4d, 0x72, 0x4c,
- 0x82, 0x4b, 0x81, 0x4a, 0x87, 0x49, 0xb4, 0x48, 0xb1, 0x47, 0x99, 0x46,
- 0xb4, 0x45, 0x34, 0x45, 0xb8, 0x44, 0x2f, 0x44, 0x7f, 0x43, 0xa0, 0x42,
- 0xcb, 0x41, 0xd1, 0x40, 0xeb, 0x3f, 0x28, 0x3f, 0x3d, 0x3e, 0x09, 0x3d,
- 0x9d, 0x3b, 0x40, 0x3a, 0x1c, 0x39, 0xeb, 0x37, 0xd1, 0x36, 0xb3, 0x35,
- 0x8b, 0x34, 0x0b, 0x33, 0x51, 0x31, 0xfb, 0x2f, 0xb9, 0x2e, 0x54, 0x2d,
- 0xaf, 0x2b, 0xdf, 0x29, 0xf1, 0x27, 0x3a, 0x26, 0x6f, 0x24, 0x56, 0x22,
- 0x20, 0x20, 0x0a, 0x1e, 0x3b, 0x1c, 0x55, 0x1a, 0x6c, 0x18, 0xaa, 0x16,
- 0xef, 0x14, 0x0a, 0x13, 0x17, 0x11, 0x1c, 0x0f, 0x22, 0x0d, 0x46, 0x0b,
- 0x53, 0x09, 0x46, 0x07, 0x46, 0x05, 0x4d, 0x03, 0x1a, 0x01, 0xd3, 0xfe,
- 0x94, 0xfc, 0x8c, 0xfa, 0x8f, 0xf8, 0xc1, 0xf6, 0x27, 0xf5, 0x8f, 0xf3,
- 0xf2, 0xf1, 0x74, 0xf0, 0xfa, 0xee, 0x4d, 0xed, 0x9e, 0xeb, 0xa2, 0xe9,
- 0x73, 0xe7, 0xa9, 0xe5, 0x2d, 0xe4, 0xa3, 0xe2, 0xf9, 0xe0, 0x50, 0xdf,
- 0xb9, 0xdd, 0x34, 0xdc, 0xad, 0xda, 0x0b, 0xd9, 0x77, 0xd7, 0xb9, 0xd5,
- 0x37, 0xd4, 0xff, 0xd2, 0x8a, 0xd1, 0x14, 0xd0, 0xba, 0xce, 0x7d, 0xcd,
- 0x2c, 0xcc, 0xa1, 0xca, 0x22, 0xc9, 0xa9, 0xc7, 0x0e, 0xc6, 0x66, 0xc4,
- 0xfc, 0xc2, 0xa5, 0xc1, 0x4a, 0xc0, 0xff, 0xbe, 0xf7, 0xbd, 0x0e, 0xbd,
- 0x1d, 0xbc, 0x16, 0xbb, 0xad, 0xb9, 0x44, 0xb8, 0xd7, 0xb6, 0x9e, 0xb5,
- 0x9f, 0xb4, 0x97, 0xb3, 0x72, 0xb2, 0x5f, 0xb1, 0x67, 0xb0, 0x89, 0xaf,
- 0x9d, 0xae, 0xbe, 0xad, 0x08, 0xad, 0x5d, 0xac, 0x8b, 0xab, 0xad, 0xaa,
- 0xe4, 0xa9, 0x59, 0xa9, 0xc4, 0xa8, 0x02, 0xa8, 0x4d, 0xa7, 0xc2, 0xa6,
- 0x4a, 0xa6, 0x09, 0xa6, 0xd2, 0xa5, 0x50, 0xa5, 0xec, 0xa4, 0xc2, 0xa4,
- 0xd9, 0xa4, 0xbd, 0xa4, 0x97, 0xa4, 0xa5, 0xa4, 0xbf, 0xa4, 0xb4, 0xa4,
- 0x8f, 0xa4, 0x31, 0xa4, 0x39, 0xa4, 0x7d, 0xa4, 0xab, 0xa4, 0xc7, 0xa4,
- 0xb3, 0xa4, 0xab, 0xa4, 0xca, 0xa4, 0x05, 0xa5, 0x1e, 0xa5, 0x2a, 0xa5,
- 0x2c, 0xa5, 0x18, 0xa5, 0x01, 0xa5, 0x33, 0xa5, 0x8c, 0xa5, 0xb2, 0xa5,
- 0x81, 0xa5, 0x5c, 0xa5, 0x6e, 0xa5, 0x79, 0xa5, 0x4e, 0xa5, 0x17, 0xa5,
- 0xff, 0xa4, 0x1c, 0xa5, 0x45, 0xa5, 0x8a, 0xa5, 0xbf, 0xa5, 0xdb, 0xa5,
- 0x41, 0xa6, 0xfb, 0xa6, 0xc6, 0xa7, 0x86, 0xa8, 0x29, 0xa9, 0x97, 0xa9,
- 0x27, 0xaa, 0xd7, 0xaa, 0x6d, 0xab, 0xf4, 0xab, 0x34, 0xac, 0x69, 0xac,
- 0xc6, 0xac, 0x37, 0xad, 0xaa, 0xad, 0x34, 0xae, 0xd3, 0xae, 0x81, 0xaf,
- 0x16, 0xb0, 0x72, 0xb0, 0xc8, 0xb0, 0x36, 0xb1, 0x91, 0xb1, 0xe0, 0xb1,
- 0x3b, 0xb2, 0x8e, 0xb2, 0xe0, 0xb2, 0x2a, 0xb3, 0xab, 0xb3, 0x3a, 0xb4,
- 0xf1, 0xb4, 0xc0, 0xb5, 0xae, 0xb6, 0x91, 0xb7, 0x82, 0xb8, 0x98, 0xb9,
- 0x8f, 0xba, 0x88, 0xbb, 0x65, 0xbc, 0x20, 0xbd, 0xcb, 0xbd, 0xaf, 0xbe,
- 0x94, 0xbf, 0x84, 0xc0, 0x85, 0xc1, 0x7b, 0xc2, 0x67, 0xc3, 0x66, 0xc4,
- 0x7f, 0xc5, 0x89, 0xc6, 0x6b, 0xc7, 0x38, 0xc8, 0x29, 0xc9, 0x4a, 0xca,
- 0x82, 0xcb, 0xc1, 0xcc, 0x12, 0xce, 0x5e, 0xcf, 0xb0, 0xd0, 0x25, 0xd2,
- 0x66, 0xd3, 0xde, 0xd4, 0x6c, 0xd6, 0x28, 0xd8, 0xd7, 0xd9, 0x80, 0xdb,
- 0xf7, 0xdc, 0x6f, 0xde, 0xd0, 0xdf, 0x22, 0xe1, 0x7a, 0xe2, 0xe5, 0xe3,
- 0x7a, 0xe5, 0xea, 0xe6, 0x51, 0xe8, 0xeb, 0xe9, 0x70, 0xeb, 0xb3, 0xec,
- 0x01, 0xee, 0x60, 0xef, 0xcb, 0xf0, 0x1d, 0xf2, 0x7b, 0xf3, 0xcf, 0xf4,
- 0x39, 0xf6, 0xc8, 0xf7, 0x82, 0xf9, 0x4a, 0xfb, 0xf2, 0xfc, 0x8c, 0xfe,
- 0x01, 0x00, 0x68, 0x01, 0x15, 0x03, 0xe6, 0x04, 0xbc, 0x06, 0x42, 0x08,
- 0xbb, 0x09, 0x2b, 0x0b, 0xc7, 0x0c, 0x35, 0x0e, 0x94, 0x0f, 0xf2, 0x10,
- 0x59, 0x12, 0xbc, 0x13, 0x34, 0x15, 0xac, 0x16, 0x1c, 0x18, 0x79, 0x19,
- 0xdc, 0x1a, 0x6d, 0x1c, 0x21, 0x1e, 0xca, 0x1f, 0x70, 0x21, 0x02, 0x23,
- 0x6c, 0x24, 0x9e, 0x25, 0x45, 0x27, 0x02, 0x29, 0x95, 0x2a, 0xff, 0x2b,
- 0x72, 0x2d, 0xe8, 0x2e, 0x48, 0x30, 0x7c, 0x31, 0xd2, 0x32, 0x3d, 0x34,
- 0xac, 0x35, 0x26, 0x37, 0xbc, 0x38, 0x4c, 0x3a, 0x90, 0x3b, 0xef, 0x3c,
- 0x61, 0x3e, 0xe8, 0x3f, 0x59, 0x41, 0xab, 0x42, 0xf7, 0x43, 0x2d, 0x45,
- 0x6c, 0x46, 0x78, 0x47, 0xb4, 0x48, 0x2e, 0x4a, 0x8e, 0x4b, 0xd7, 0x4c,
- 0xf4, 0x4d, 0xee, 0x4e, 0xcb, 0x4f, 0xc3, 0x50, 0xc2, 0x51, 0xac, 0x52,
- 0x61, 0x53, 0xf3, 0x53, 0xac, 0x54, 0x5f, 0x55, 0xf4, 0x55, 0x7f, 0x56,
- 0x04, 0x57, 0x9c, 0x57, 0x1f, 0x58, 0x7c, 0x58, 0xbc, 0x58, 0x0b, 0x59,
- 0x71, 0x59, 0xc1, 0x59, 0x0b, 0x5a, 0x3e, 0x5a, 0x8b, 0x5a, 0xac, 0x5a,
- 0xa9, 0x5a, 0x8a, 0x5a, 0x6c, 0x5a, 0x4c, 0x5a, 0x39, 0x5a, 0x32, 0x5a,
- 0x40, 0x5a, 0x33, 0x5a, 0x44, 0x5a, 0x58, 0x5a, 0x79, 0x5a, 0x7a, 0x5a,
- 0x69, 0x5a, 0x49, 0x5a, 0x54, 0x5a, 0x78, 0x5a, 0x72, 0x5a, 0x5f, 0x5a,
- 0x31, 0x5a, 0x11, 0x5a, 0xf9, 0x59, 0xea, 0x59, 0xd1, 0x59, 0xa1, 0x59,
- 0x48, 0x59, 0xf0, 0x58, 0xa2, 0x58, 0x6e, 0x58, 0x60, 0x58, 0x46, 0x58,
- 0x3f, 0x58, 0x47, 0x58, 0x40, 0x58, 0x08, 0x58, 0x9c, 0x57, 0x11, 0x57,
- 0x83, 0x56, 0xd7, 0x55, 0x42, 0x55, 0xab, 0x54, 0x06, 0x54, 0x63, 0x53,
- 0xa6, 0x52, 0xf0, 0x51, 0x55, 0x51, 0xbc, 0x50, 0x1e, 0x50, 0x8e, 0x4f,
- 0xf3, 0x4e, 0x34, 0x4e, 0x6b, 0x4d, 0xc9, 0x4c, 0x30, 0x4c, 0x7d, 0x4b,
- 0xd8, 0x4a, 0x49, 0x4a, 0xad, 0x49, 0x11, 0x49, 0x6c, 0x48, 0xa4, 0x47,
- 0xec, 0x46, 0x6c, 0x46, 0xde, 0x45, 0x5d, 0x45, 0xbc, 0x44, 0xf1, 0x43,
- 0x34, 0x43, 0x8c, 0x42, 0xf8, 0x41, 0x47, 0x41, 0x6a, 0x40, 0x72, 0x3f,
- 0x8b, 0x3e, 0xb3, 0x3d, 0xf2, 0x3c, 0x2f, 0x3c, 0x5c, 0x3b, 0x96, 0x3a,
- 0xbc, 0x39, 0xb2, 0x38, 0x91, 0x37, 0x8c, 0x36, 0x75, 0x35, 0x63, 0x34,
- 0x5e, 0x33, 0x63, 0x32, 0x4b, 0x31, 0x3c, 0x30, 0x1e, 0x2f, 0x07, 0x2e,
- 0xd0, 0x2c, 0xb2, 0x2b, 0x84, 0x2a, 0x4d, 0x29, 0xfc, 0x27, 0xa5, 0x26,
- 0x2f, 0x25, 0x95, 0x23, 0x1f, 0x22, 0xad, 0x20, 0x3a, 0x1f, 0x9e, 0x1d,
- 0x10, 0x1c, 0x6e, 0x1a, 0xe3, 0x18, 0x56, 0x17, 0xdb, 0x15, 0x58, 0x14,
- 0xba, 0x12, 0x2a, 0x11, 0x8b, 0x0f, 0xf4, 0x0d, 0x5b, 0x0c, 0xd3, 0x0a,
- 0x5f, 0x09, 0xe5, 0x07, 0x4a, 0x06, 0xc0, 0x04, 0x3e, 0x03, 0xb6, 0x01,
- 0x37, 0x00, 0xca, 0xfe, 0x74, 0xfd, 0x00, 0xfc, 0xa5, 0xfa, 0x4a, 0xf9,
- 0xd1, 0xf7, 0x7e, 0xf6, 0x1c, 0xf5, 0x9d, 0xf3, 0x4f, 0xf2, 0x0e, 0xf1,
- 0xc0, 0xef, 0x3a, 0xee, 0xd8, 0xec, 0x69, 0xeb, 0x0c, 0xea, 0xad, 0xe8,
- 0x56, 0xe7, 0xf8, 0xe5, 0xbe, 0xe4, 0x98, 0xe3, 0x61, 0xe2, 0x03, 0xe1,
- 0x99, 0xdf, 0x4d, 0xde, 0x0e, 0xdd, 0xde, 0xdb, 0xad, 0xda, 0x84, 0xd9,
- 0x62, 0xd8, 0x32, 0xd7, 0x01, 0xd6, 0xb7, 0xd4, 0x87, 0xd3, 0x97, 0xd2,
- 0x89, 0xd1, 0x89, 0xd0, 0x6e, 0xcf, 0x65, 0xce, 0x5d, 0xcd, 0x44, 0xcc,
- 0x13, 0xcb, 0xf2, 0xc9, 0xd3, 0xc8, 0xad, 0xc7, 0x9b, 0xc6, 0x94, 0xc5,
- 0x8e, 0xc4, 0x7b, 0xc3, 0x92, 0xc2, 0xad, 0xc1, 0xb2, 0xc0, 0xb9, 0xbf,
- 0xb3, 0xbe, 0xc0, 0xbd, 0xd5, 0xbc, 0xf2, 0xbb, 0xe1, 0xba, 0xc7, 0xb9,
- 0xc7, 0xb8, 0xe8, 0xb7, 0x09, 0xb7, 0x2c, 0xb6, 0x66, 0xb5, 0xb1, 0xb4,
- 0xf6, 0xb3, 0x32, 0xb3, 0x53, 0xb2, 0x92, 0xb1, 0xdb, 0xb0, 0x0d, 0xb0,
- 0x46, 0xaf, 0x62, 0xae, 0x98, 0xad, 0xd1, 0xac, 0x3f, 0xac, 0xb0, 0xab,
- 0x34, 0xab, 0xb1, 0xaa, 0x45, 0xaa, 0xda, 0xa9, 0x6a, 0xa9, 0xf1, 0xa8,
- 0x7d, 0xa8, 0x04, 0xa8, 0xbb, 0xa7, 0x80, 0xa7, 0x41, 0xa7, 0x02, 0xa7,
- 0xb6, 0xa6, 0x68, 0xa6, 0x3b, 0xa6, 0x1c, 0xa6, 0x0d, 0xa6, 0xfc, 0xa5,
- 0xd4, 0xa5, 0xa6, 0xa5, 0x81, 0xa5, 0x76, 0xa5, 0x61, 0xa5, 0x54, 0xa5,
- 0x48, 0xa5, 0x47, 0xa5, 0x4b, 0xa5, 0x49, 0xa5, 0x38, 0xa5, 0x4b, 0xa5,
- 0x6c, 0xa5, 0xa3, 0xa5, 0xda, 0xa5, 0xfe, 0xa5, 0x21, 0xa6, 0x4a, 0xa6,
- 0x8a, 0xa6, 0xb4, 0xa6, 0xe0, 0xa6, 0xf3, 0xa6, 0x1b, 0xa7, 0x17, 0xa7,
- 0x40, 0xa7, 0x8e, 0xa7, 0xcd, 0xa7, 0x06, 0xa8, 0x3e, 0xa8, 0x86, 0xa8,
- 0xbd, 0xa8, 0xde, 0xa8, 0xf6, 0xa8, 0x1c, 0xa9, 0x49, 0xa9, 0x5c, 0xa9,
- 0x79, 0xa9, 0x93, 0xa9, 0xab, 0xa9, 0xe6, 0xa9, 0x2c, 0xaa, 0x82, 0xaa,
- 0xbc, 0xaa, 0xec, 0xaa, 0x32, 0xab, 0x69, 0xab, 0xa7, 0xab, 0xde, 0xab,
- 0x19, 0xac, 0x53, 0xac, 0xbb, 0xac, 0x14, 0xad, 0x8a, 0xad, 0xeb, 0xad,
- 0x6c, 0xae, 0xe1, 0xae, 0x62, 0xaf, 0xd9, 0xaf, 0x58, 0xb0, 0xc0, 0xb0,
- 0x36, 0xb1, 0x99, 0xb1, 0x11, 0xb2, 0x71, 0xb2, 0xdc, 0xb2, 0x58, 0xb3,
- 0xbb, 0xb3, 0x37, 0xb4, 0xb6, 0xb4, 0x46, 0xb5, 0xca, 0xb5, 0x50, 0xb6,
- 0xd9, 0xb6, 0x6c, 0xb7, 0x03, 0xb8, 0x7e, 0xb8, 0xf0, 0xb8, 0x64, 0xb9,
- 0xcf, 0xb9, 0x47, 0xba, 0xd3, 0xba, 0x60, 0xbb, 0xe8, 0xbb, 0x70, 0xbc,
- 0xf3, 0xbc, 0x82, 0xbd, 0x05, 0xbe, 0xa1, 0xbe, 0x2a, 0xbf, 0xae, 0xbf,
- 0x25, 0xc0, 0xac, 0xc0, 0x52, 0xc1, 0xde, 0xc1, 0x75, 0xc2, 0x11, 0xc3,
- 0xb5, 0xc3, 0x42, 0xc4, 0xc5, 0xc4, 0x6d, 0xc5, 0x0b, 0xc6, 0xb2, 0xc6,
- 0x4b, 0xc7, 0xf6, 0xc7, 0x9b, 0xc8, 0x4f, 0xc9, 0x17, 0xca, 0xf3, 0xca,
- 0xc6, 0xcb, 0x9a, 0xcc, 0x7b, 0xcd, 0x54, 0xce, 0x32, 0xcf, 0x09, 0xd0,
- 0xd7, 0xd0, 0xc9, 0xd1, 0xc1, 0xd2, 0xb8, 0xd3, 0xb6, 0xd4, 0xae, 0xd5,
- 0xbc, 0xd6, 0xca, 0xd7, 0xd2, 0xd8, 0xca, 0xd9, 0xbd, 0xda, 0xc8, 0xdb,
- 0xd8, 0xdc, 0xf9, 0xdd, 0x08, 0xdf, 0x1e, 0xe0, 0x39, 0xe1, 0x4e, 0xe2,
- 0x60, 0xe3, 0x7a, 0xe4, 0x96, 0xe5, 0xc1, 0xe6, 0xde, 0xe7, 0x0e, 0xe9,
- 0x2a, 0xea, 0x42, 0xeb, 0x7a, 0xec, 0x9f, 0xed, 0xbb, 0xee, 0xd6, 0xef,
- 0xef, 0xf0, 0x0e, 0xf2, 0x30, 0xf3, 0x55, 0xf4, 0x68, 0xf5, 0x7e, 0xf6,
- 0xa4, 0xf7, 0xc0, 0xf8, 0xea, 0xf9, 0x10, 0xfb, 0x41, 0xfc, 0x7d, 0xfd,
- 0xad, 0xfe, 0xe3, 0xff, 0x10, 0x01, 0x27, 0x02, 0x58, 0x03, 0x74, 0x04,
- 0xa4, 0x05, 0xd5, 0x06, 0x0b, 0x08, 0x36, 0x09, 0x5c, 0x0a, 0x76, 0x0b,
- 0x9a, 0x0c, 0xc1, 0x0d, 0xd8, 0x0e, 0xf5, 0x0f, 0x15, 0x11, 0x3f, 0x12,
- 0x70, 0x13, 0x8e, 0x14, 0xcc, 0x15, 0xf2, 0x16, 0x31, 0x18, 0x4b, 0x19,
- 0x82, 0x1a, 0xa1, 0x1b, 0xbc, 0x1c, 0xde, 0x1d, 0xe9, 0x1e, 0x13, 0x20,
- 0x33, 0x21, 0x6c, 0x22, 0x80, 0x23, 0xa7, 0x24, 0xbc, 0x25, 0xde, 0x26,
- 0xe7, 0x27, 0x07, 0x29, 0x28, 0x2a, 0x36, 0x2b, 0x4d, 0x2c, 0x71, 0x2d,
- 0x91, 0x2e, 0xbe, 0x2f, 0xd6, 0x30, 0xfb, 0x31, 0x20, 0x33, 0x46, 0x34,
- 0x59, 0x35, 0x7a, 0x36, 0xa1, 0x37, 0xc2, 0x38, 0xdf, 0x39, 0x01, 0x3b,
- 0x0f, 0x3c, 0x27, 0x3d, 0x1f, 0x3e, 0x2e, 0x3f, 0x43, 0x40, 0x5b, 0x41,
- 0x73, 0x42, 0x8e, 0x43, 0xaf, 0x44, 0xbc, 0x45, 0xcc, 0x46, 0xd8, 0x47,
- 0xec, 0x48, 0xe1, 0x49, 0xd1, 0x4a, 0xc4, 0x4b, 0xb6, 0x4c, 0xa9, 0x4d,
- 0x9d, 0x4e, 0x88, 0x4f, 0x75, 0x50, 0x4c, 0x51, 0x3b, 0x52, 0x05, 0x53,
- 0xd9, 0x53, 0xa1, 0x54, 0x6f, 0x55, 0x33, 0x56, 0xe5, 0x56, 0x7d, 0x57,
- 0x15, 0x58, 0xb3, 0x58, 0x4e, 0x59, 0xdb, 0x59, 0x55, 0x5a, 0xc8, 0x5a,
- 0x36, 0x5b, 0xa9, 0x5b, 0x09, 0x5c, 0x5a, 0x5c, 0xab, 0x5c, 0xf1, 0x5c,
- 0x34, 0x5d, 0x6a, 0x5d, 0x9e, 0x5d, 0xc1, 0x5d, 0xea, 0x5d, 0x0b, 0x5e,
- 0x28, 0x5e, 0x3d, 0x5e, 0x41, 0x5e, 0x51, 0x5e, 0x5f, 0x5e, 0x69, 0x5e,
- 0x79, 0x5e, 0x6a, 0x5e, 0x78, 0x5e, 0x76, 0x5e, 0x7f, 0x5e, 0x72, 0x5e,
- 0x70, 0x5e, 0x61, 0x5e, 0x61, 0x5e, 0x42, 0x5e, 0x36, 0x5e, 0x2f, 0x5e,
- 0x2c, 0x5e, 0x1a, 0x5e, 0xec, 0x5d, 0xbf, 0x5d, 0x94, 0x5d, 0x71, 0x5d,
- 0x4c, 0x5d, 0x24, 0x5d, 0xfa, 0x5c, 0xc3, 0x5c, 0x8c, 0x5c, 0x59, 0x5c,
- 0x3e, 0x5c, 0x0c, 0x5c, 0xd3, 0x5b, 0xb1, 0x5b, 0x78, 0x5b, 0x45, 0x5b,
- 0x14, 0x5b, 0xed, 0x5a, 0xc0, 0x5a, 0x89, 0x5a, 0x4f, 0x5a, 0x16, 0x5a,
- 0xe5, 0x59, 0xb5, 0x59, 0x84, 0x59, 0x4e, 0x59, 0x0d, 0x59, 0xcf, 0x58,
- 0xa6, 0x58, 0x79, 0x58, 0x3e, 0x58, 0xf8, 0x57, 0xc0, 0x57, 0x83, 0x57,
- 0x38, 0x57, 0x03, 0x57, 0xc1, 0x56, 0x65, 0x56, 0xe0, 0x55, 0x52, 0x55,
- 0xd0, 0x54, 0x4c, 0x54, 0xbe, 0x53, 0x32, 0x53, 0xa7, 0x52, 0x2a, 0x52,
- 0x95, 0x51, 0x09, 0x51, 0x76, 0x50, 0xe9, 0x4f, 0x69, 0x4f, 0xe2, 0x4e,
- 0x49, 0x4e, 0xc0, 0x4d, 0x38, 0x4d, 0xbd, 0x4c, 0x2d, 0x4c, 0x98, 0x4b,
- 0x07, 0x4b, 0x76, 0x4a, 0xdc, 0x49, 0x4a, 0x49, 0xb9, 0x48, 0x2d, 0x48,
- 0x9c, 0x47, 0x19, 0x47, 0x80, 0x46, 0xf9, 0x45, 0x66, 0x45, 0xd6, 0x44,
- 0x47, 0x44, 0xb5, 0x43, 0x14, 0x43, 0x74, 0x42, 0xd4, 0x41, 0x42, 0x41,
- 0xa4, 0x40, 0x18, 0x40, 0x85, 0x3f, 0xeb, 0x3e, 0x52, 0x3e, 0xb2, 0x3d,
- 0x0c, 0x3d, 0x7a, 0x3c, 0xdb, 0x3b, 0x3a, 0x3b, 0x87, 0x3a, 0xe0, 0x39,
- 0x29, 0x39, 0x88, 0x38, 0xd1, 0x37, 0x16, 0x37, 0x4d, 0x36, 0x9e, 0x35,
- 0xdc, 0x34, 0x19, 0x34, 0x4a, 0x33, 0x83, 0x32, 0xb7, 0x31, 0xec, 0x30,
- 0x1c, 0x30, 0x47, 0x2f, 0x71, 0x2e, 0x88, 0x2d, 0xa6, 0x2c, 0xbb, 0x2b,
- 0xd0, 0x2a, 0xd8, 0x29, 0xdb, 0x28, 0xe3, 0x27, 0xf5, 0x26, 0xf1, 0x25,
- 0xf8, 0x24, 0xdc, 0x23, 0xdb, 0x22, 0xca, 0x21, 0xa7, 0x20, 0x85, 0x1f,
- 0x5a, 0x1e, 0x30, 0x1d, 0x0a, 0x1c, 0xd5, 0x1a, 0xa6, 0x19, 0x6d, 0x18,
- 0x3d, 0x17, 0xff, 0x15, 0xbf, 0x14, 0x81, 0x13, 0x57, 0x12, 0x15, 0x11,
- 0xe0, 0x0f, 0xa2, 0x0e, 0x65, 0x0d, 0x27, 0x0c, 0xf1, 0x0a, 0xb2, 0x09,
- 0x77, 0x08, 0x4b, 0x07, 0x0a, 0x06, 0xc9, 0x04, 0x97, 0x03, 0x65, 0x02,
- 0x3b, 0x01, 0x03, 0x00, 0xd2, 0xfe, 0x95, 0xfd, 0x6f, 0xfc, 0x50, 0xfb,
- 0x19, 0xfa, 0xf0, 0xf8, 0xb8, 0xf7, 0x97, 0xf6, 0x65, 0xf5, 0x48, 0xf4,
- 0x24, 0xf3, 0xfe, 0xf1, 0xec, 0xf0, 0xd2, 0xef, 0xa9, 0xee, 0x95, 0xed,
- 0x76, 0xec, 0x64, 0xeb, 0x61, 0xea, 0x43, 0xe9, 0x3a, 0xe8, 0x21, 0xe7,
- 0x14, 0xe6, 0xff, 0xe4, 0x06, 0xe4, 0x04, 0xe3, 0x04, 0xe2, 0x01, 0xe1,
- 0x02, 0xe0, 0x04, 0xdf, 0x16, 0xde, 0x1f, 0xdd, 0x29, 0xdc, 0x2d, 0xdb,
- 0x3d, 0xda, 0x45, 0xd9, 0x5a, 0xd8, 0x6f, 0xd7, 0x74, 0xd6, 0x8a, 0xd5,
- 0x91, 0xd4, 0xa5, 0xd3, 0xbb, 0xd2, 0xdb, 0xd1, 0x01, 0xd1, 0x17, 0xd0,
- 0x42, 0xcf, 0x5e, 0xce, 0x94, 0xcd, 0xb1, 0xcc, 0xe8, 0xcb, 0x04, 0xcb,
- 0x29, 0xca, 0x4e, 0xc9, 0x78, 0xc8, 0x99, 0xc7, 0xc4, 0xc6, 0xff, 0xc5,
- 0x3d, 0xc5, 0x76, 0xc4, 0xa6, 0xc3, 0xe4, 0xc2, 0x17, 0xc2, 0x4e, 0xc1,
- 0x8a, 0xc0, 0xc5, 0xbf, 0x0b, 0xbf, 0x42, 0xbe, 0x8e, 0xbd, 0xd8, 0xbc,
- 0x20, 0xbc, 0x60, 0xbb, 0xbb, 0xba, 0x08, 0xba, 0x5a, 0xb9, 0xba, 0xb8,
- 0x08, 0xb8, 0x64, 0xb7, 0xb1, 0xb6, 0x0c, 0xb6, 0x5d, 0xb5, 0xbf, 0xb4,
- 0x10, 0xb4, 0x7b, 0xb3, 0xd0, 0xb2, 0x3d, 0xb2, 0xa1, 0xb1, 0x0f, 0xb1,
- 0x84, 0xb0, 0xf2, 0xaf, 0x63, 0xaf, 0xd3, 0xae, 0x50, 0xae, 0xbd, 0xad,
- 0x49, 0xad, 0xc1, 0xac, 0x4d, 0xac, 0xc6, 0xab, 0x56, 0xab, 0xe4, 0xaa,
- 0x83, 0xaa, 0x0d, 0xaa, 0xac, 0xa9, 0x49, 0xa9, 0xf3, 0xa8, 0x9e, 0xa8,
- 0x4e, 0xa8, 0x07, 0xa8, 0xc5, 0xa7, 0x8d, 0xa7, 0x56, 0xa7, 0x1d, 0xa7,
- 0xf6, 0xa6, 0xc7, 0xa6, 0xad, 0xa6, 0x8c, 0xa6, 0x74, 0xa6, 0x58, 0xa6,
- 0x47, 0xa6, 0x2d, 0xa6, 0x24, 0xa6, 0x23, 0xa6, 0x21, 0xa6, 0x19, 0xa6,
- 0x20, 0xa6, 0x1f, 0xa6, 0x28, 0xa6, 0x3c, 0xa6, 0x4e, 0xa6, 0x59, 0xa6,
- 0x6e, 0xa6, 0x84, 0xa6, 0x9a, 0xa6, 0xb7, 0xa6, 0xd4, 0xa6, 0xef, 0xa6,
- 0x0a, 0xa7, 0x2f, 0xa7, 0x53, 0xa7, 0x77, 0xa7, 0x9c, 0xa7, 0xbc, 0xa7,
- 0xe5, 0xa7, 0x10, 0xa8, 0x35, 0xa8, 0x6d, 0xa8, 0x9b, 0xa8, 0xcb, 0xa8,
- 0xf5, 0xa8, 0x23, 0xa9, 0x5a, 0xa9, 0x80, 0xa9, 0xb7, 0xa9, 0xee, 0xa9,
- 0x1c, 0xaa, 0x46, 0xaa, 0x78, 0xaa, 0xb2, 0xaa, 0xeb, 0xaa, 0x1a, 0xab,
- 0x57, 0xab, 0x84, 0xab, 0xba, 0xab, 0xef, 0xab, 0x22, 0xac, 0x55, 0xac,
- 0x88, 0xac, 0xc1, 0xac, 0xf5, 0xac, 0x2a, 0xad, 0x67, 0xad, 0x9f, 0xad,
- 0xe0, 0xad, 0x14, 0xae, 0x4c, 0xae, 0x82, 0xae, 0xb8, 0xae, 0xf8, 0xae,
- 0x2c, 0xaf, 0x6a, 0xaf, 0x9d, 0xaf, 0xd4, 0xaf, 0x05, 0xb0, 0x38, 0xb0,
- 0x77, 0xb0, 0xb2, 0xb0, 0xf8, 0xb0, 0x3c, 0xb1, 0x97, 0xb1, 0x05, 0xb2,
- 0x6f, 0xb2, 0xdf, 0xb2, 0x48, 0xb3, 0xb2, 0xb3, 0x16, 0xb4, 0x7b, 0xb4,
- 0xe5, 0xb4, 0x54, 0xb5, 0xc3, 0xb5, 0x26, 0xb6, 0x97, 0xb6, 0x03, 0xb7,
- 0x68, 0xb7, 0xce, 0xb7, 0x44, 0xb8, 0xae, 0xb8, 0x20, 0xb9, 0x87, 0xb9,
- 0xf1, 0xb9, 0x5d, 0xba, 0xc6, 0xba, 0x24, 0xbb, 0xa1, 0xbb, 0x05, 0xbc,
- 0x79, 0xbc, 0xdc, 0xbc, 0x4b, 0xbd, 0xba, 0xbd, 0x24, 0xbe, 0x9b, 0xbe,
- 0x07, 0xbf, 0x72, 0xbf, 0xe5, 0xbf, 0x46, 0xc0, 0xc3, 0xc0, 0x1f, 0xc1,
- 0x91, 0xc1, 0x01, 0xc2, 0x79, 0xc2, 0xf1, 0xc2, 0x66, 0xc3, 0xe5, 0xc3,
- 0x55, 0xc4, 0xc8, 0xc4, 0x3e, 0xc5, 0xb3, 0xc5, 0x2d, 0xc6, 0xa7, 0xc6,
- 0x27, 0xc7, 0x97, 0xc7, 0x1f, 0xc8, 0xa0, 0xc8, 0x29, 0xc9, 0xad, 0xc9,
- 0x36, 0xca, 0xad, 0xca, 0x3d, 0xcb, 0xc0, 0xcb, 0x47, 0xcc, 0xe9, 0xcc,
- 0x6f, 0xcd, 0x06, 0xce, 0x84, 0xce, 0x1a, 0xcf, 0xbb, 0xcf, 0x55, 0xd0,
- 0xf6, 0xd0, 0x8b, 0xd1, 0x30, 0xd2, 0xd2, 0xd2, 0x79, 0xd3, 0x1c, 0xd4,
- 0xcf, 0xd4, 0x83, 0xd5, 0x36, 0xd6, 0xe1, 0xd6, 0x96, 0xd7, 0x5f, 0xd8,
- 0x1c, 0xd9, 0xe2, 0xd9, 0xa8, 0xda, 0x6c, 0xdb, 0x43, 0xdc, 0x04, 0xdd,
- 0xd8, 0xdd, 0xac, 0xde, 0x8a, 0xdf, 0x5b, 0xe0, 0x39, 0xe1, 0x0b, 0xe2,
- 0xf5, 0xe2, 0xde, 0xe3, 0xbc, 0xe4, 0x9e, 0xe5, 0x83, 0xe6, 0x62, 0xe7,
- 0x51, 0xe8, 0x34, 0xe9, 0x1e, 0xea, 0x12, 0xeb, 0xf7, 0xeb, 0xe5, 0xec,
- 0xc5, 0xed, 0xc2, 0xee, 0xb1, 0xef, 0xa6, 0xf0, 0x90, 0xf1, 0x7e, 0xf2,
- 0x6f, 0xf3, 0x56, 0xf4, 0x48, 0xf5, 0x35, 0xf6, 0x29, 0xf7, 0x17, 0xf8,
- 0x0a, 0xf9, 0x00, 0xfa, 0xe7, 0xfa, 0xde, 0xfb, 0xc9, 0xfc, 0xc1, 0xfd,
- 0xac, 0xfe, 0xae, 0xff, 0xa2, 0x00, 0x8d, 0x01, 0x70, 0x02, 0x62, 0x03,
- 0x4e, 0x04, 0x3a, 0x05, 0x26, 0x06, 0x16, 0x07, 0xff, 0x07, 0xf3, 0x08,
- 0xda, 0x09, 0xbe, 0x0a, 0xb9, 0x0b, 0xa1, 0x0c, 0x9b, 0x0d, 0x7d, 0x0e,
- 0x66, 0x0f, 0x54, 0x10, 0x36, 0x11, 0x20, 0x12, 0x11, 0x13, 0xf3, 0x13,
- 0xea, 0x14, 0xd1, 0x15, 0xb6, 0x16, 0x9b, 0x17, 0x83, 0x18, 0x7f, 0x19,
- 0x58, 0x1a, 0x53, 0x1b, 0x37, 0x1c, 0x22, 0x1d, 0x0a, 0x1e, 0xf3, 0x1e,
- 0xda, 0x1f, 0xca, 0x20, 0xb1, 0x21, 0x96, 0x22, 0x70, 0x23, 0x55, 0x24,
- 0x39, 0x25, 0x39, 0x26, 0x1a, 0x27, 0x07, 0x28, 0xe1, 0x28, 0xc5, 0x29,
- 0xa7, 0x2a, 0x85, 0x2b, 0x70, 0x2c, 0x4e, 0x2d, 0x3e, 0x2e, 0x19, 0x2f,
- 0xf3, 0x2f, 0xdf, 0x30, 0xc0, 0x31, 0xaf, 0x32, 0x93, 0x33, 0x77, 0x34,
- 0x48, 0x35, 0x2a, 0x36, 0x0f, 0x37, 0xf8, 0x37, 0xd9, 0x38, 0xbe, 0x39,
- 0x8b, 0x3a, 0x74, 0x3b, 0x48, 0x3c, 0x2d, 0x3d, 0xfa, 0x3d, 0xe7, 0x3e,
- 0xb0, 0x3f, 0x98, 0x40, 0x67, 0x41, 0x3a, 0x42, 0x16, 0x43, 0xf4, 0x43,
- 0xd8, 0x44, 0xa4, 0x45, 0x7c, 0x46, 0x4c, 0x47, 0x2a, 0x48, 0x06, 0x49,
- 0xce, 0x49, 0xa5, 0x4a, 0x77, 0x4b, 0x4e, 0x4c, 0x13, 0x4d, 0xdf, 0x4d,
- 0xaa, 0x4e, 0x74, 0x4f, 0x3d, 0x50, 0xfc, 0x50, 0xbd, 0x51, 0x8c, 0x52,
- 0x3e, 0x53, 0xfe, 0x53, 0x99, 0x54, 0x57, 0x55, 0xfc, 0x55, 0xab, 0x56,
- 0x45, 0x57, 0xd6, 0x57, 0x87, 0x58, 0x2f, 0x59, 0xbf, 0x59, 0x48, 0x5a,
- 0xc7, 0x5a, 0x54, 0x5b, 0xc8, 0x5b, 0x45, 0x5c, 0xb4, 0x5c, 0x25, 0x5d,
- 0x7e, 0x5d, 0xda, 0x5d, 0x36, 0x5e, 0xa5, 0x5e, 0xe9, 0x5e, 0x37, 0x5f,
- 0x72, 0x5f, 0xab, 0x5f, 0xe5, 0x5f, 0x1d, 0x60, 0x4f, 0x60, 0x81, 0x60,
- 0x9c, 0x60, 0xc3, 0x60, 0xdc, 0x60, 0xf7, 0x60, 0x04, 0x61, 0x16, 0x61,
- 0x1b, 0x61, 0x21, 0x61, 0x20, 0x61, 0x0d, 0x61, 0x0b, 0x61, 0xf0, 0x60,
- 0xe5, 0x60, 0xc7, 0x60, 0xb3, 0x60, 0x98, 0x60, 0x7c, 0x60, 0x59, 0x60,
- 0x4c, 0x60, 0x24, 0x60, 0x0d, 0x60, 0xdf, 0x5f, 0xb7, 0x5f, 0x87, 0x5f,
- 0x6b, 0x5f, 0x44, 0x5f, 0x28, 0x5f, 0xf5, 0x5e, 0xbd, 0x5e, 0x8f, 0x5e,
- 0x5c, 0x5e, 0x2a, 0x5e, 0xfe, 0x5d, 0xcd, 0x5d, 0xa4, 0x5d, 0x75, 0x5d,
- 0x4d, 0x5d, 0x11, 0x5d, 0xdf, 0x5c, 0xa9, 0x5c, 0x78, 0x5c, 0x42, 0x5c,
- 0x13, 0x5c, 0xde, 0x5b, 0xaf, 0x5b, 0x75, 0x5b, 0x3e, 0x5b, 0xfd, 0x5a,
- 0xbc, 0x5a, 0x90, 0x5a, 0x54, 0x5a, 0x1f, 0x5a, 0xe5, 0x59, 0xc2, 0x59,
- 0x80, 0x59, 0x39, 0x59, 0x0a, 0x59, 0xd6, 0x58, 0x96, 0x58, 0x55, 0x58,
- 0x1e, 0x58, 0xf1, 0x57, 0xc8, 0x57, 0x7e, 0x57, 0x44, 0x57, 0x11, 0x57,
- 0xd4, 0x56, 0x93, 0x56, 0x4c, 0x56, 0x11, 0x56, 0xd7, 0x55, 0xae, 0x55,
- 0x72, 0x55, 0x3c, 0x55, 0x0c, 0x55, 0xd1, 0x54, 0x98, 0x54, 0x63, 0x54,
- 0x2b, 0x54, 0xf8, 0x53, 0xc6, 0x53, 0x81, 0x53, 0x4b, 0x53, 0x19, 0x53,
- 0xea, 0x52, 0xb2, 0x52, 0x7e, 0x52, 0x30, 0x52, 0xc5, 0x51, 0x46, 0x51,
- 0xca, 0x50, 0x55, 0x50, 0xd7, 0x4f, 0x5d, 0x4f, 0xe4, 0x4e, 0x79, 0x4e,
- 0xfb, 0x4d, 0x83, 0x4d, 0x02, 0x4d, 0x8a, 0x4c, 0x1f, 0x4c, 0x98, 0x4b,
- 0x20, 0x4b, 0xa7, 0x4a, 0x36, 0x4a, 0xc0, 0x49, 0x44, 0x49, 0xc3, 0x48,
- 0x44, 0x48, 0xd5, 0x47, 0x59, 0x47, 0xe6, 0x46, 0x63, 0x46, 0xf8, 0x45,
- 0x79, 0x45, 0xfa, 0x44, 0x80, 0x44, 0x01, 0x44, 0x7a, 0x43, 0x04, 0x43,
- 0x85, 0x42, 0x07, 0x42, 0x92, 0x41, 0x17, 0x41, 0x94, 0x40, 0x16, 0x40,
- 0x9f, 0x3f, 0x20, 0x3f, 0x9c, 0x3e, 0x29, 0x3e, 0x9c, 0x3d, 0x20, 0x3d,
- 0x88, 0x3c, 0x0c, 0x3c, 0x87, 0x3b, 0x07, 0x3b, 0x89, 0x3a, 0xfb, 0x39,
- 0x6f, 0x39, 0xe7, 0x38, 0x55, 0x38, 0xcf, 0x37, 0x43, 0x37, 0xb5, 0x36,
- 0x2a, 0x36, 0x9c, 0x35, 0x0a, 0x35, 0x83, 0x34, 0xe6, 0x33, 0x53, 0x33,
- 0xba, 0x32, 0x1d, 0x32, 0x78, 0x31, 0xcb, 0x30, 0x34, 0x30, 0x8e, 0x2f,
- 0xf6, 0x2e, 0x56, 0x2e, 0xab, 0x2d, 0xfe, 0x2c, 0x4c, 0x2c, 0x9f, 0x2b,
- 0xed, 0x2a, 0x36, 0x2a, 0x7b, 0x29, 0xb9, 0x28, 0x02, 0x28, 0x41, 0x27,
- 0x81, 0x26, 0xb9, 0x25, 0xfb, 0x24, 0x2d, 0x24, 0x66, 0x23, 0x98, 0x22,
- 0xc6, 0x21, 0xe9, 0x20, 0x0d, 0x20, 0x28, 0x1f, 0x4c, 0x1e, 0x64, 0x1d,
- 0x66, 0x1c, 0x8c, 0x1b, 0x96, 0x1a, 0xac, 0x19, 0xb2, 0x18, 0xbb, 0x17,
- 0xc2, 0x16, 0xc7, 0x15, 0xcb, 0x14, 0xcd, 0x13, 0xc4, 0x12, 0xca, 0x11,
- 0xb6, 0x10, 0xb8, 0x0f, 0xa3, 0x0e, 0x9e, 0x0d, 0x88, 0x0c, 0x86, 0x0b,
- 0x7b, 0x0a, 0x7c, 0x09, 0x6d, 0x08, 0x5b, 0x07, 0x4a, 0x06, 0x38, 0x05,
- 0x2f, 0x04, 0x1c, 0x03, 0x10, 0x02, 0xf6, 0x00, 0xe9, 0xff, 0xe5, 0xfe,
- 0xcf, 0xfd, 0xc8, 0xfc, 0xb1, 0xfb, 0xa7, 0xfa, 0x8d, 0xf9, 0x7b, 0xf8,
- 0x7e, 0xf7, 0x77, 0xf6, 0x68, 0xf5, 0x62, 0xf4, 0x49, 0xf3, 0x42, 0xf2,
- 0x41, 0xf1, 0x3e, 0xf0, 0x49, 0xef, 0x47, 0xee, 0x56, 0xed, 0x46, 0xec,
- 0x56, 0xeb, 0x5c, 0xea, 0x6c, 0xe9, 0x7d, 0xe8, 0x9c, 0xe7, 0x99, 0xe6,
- 0xbf, 0xe5, 0xc9, 0xe4, 0xe5, 0xe3, 0xfd, 0xe2, 0x17, 0xe2, 0x26, 0xe1,
- 0x44, 0xe0, 0x6d, 0xdf, 0x9f, 0xde, 0xc5, 0xdd, 0xec, 0xdc, 0x26, 0xdc,
- 0x58, 0xdb, 0x91, 0xda, 0xb7, 0xd9, 0xf5, 0xd8, 0x27, 0xd8, 0x63, 0xd7,
- 0x96, 0xd6, 0xd5, 0xd5, 0x1a, 0xd5, 0x52, 0xd4, 0x9d, 0xd3, 0xde, 0xd2,
- 0x27, 0xd2, 0x6c, 0xd1, 0xb3, 0xd0, 0xf6, 0xcf, 0x51, 0xcf, 0x98, 0xce,
- 0xe9, 0xcd, 0x2f, 0xcd, 0x88, 0xcc, 0xdc, 0xcb, 0x41, 0xcb, 0x9f, 0xca,
- 0x01, 0xca, 0x60, 0xc9, 0xc4, 0xc8, 0x13, 0xc8, 0x7e, 0xc7, 0xe2, 0xc6,
- 0x51, 0xc6, 0xb6, 0xc5, 0x1a, 0xc5, 0x8e, 0xc4, 0xf6, 0xc3, 0x74, 0xc3,
- 0xdf, 0xc2, 0x59, 0xc2, 0xd2, 0xc1, 0x47, 0xc1, 0xbe, 0xc0, 0x3b, 0xc0,
- 0xbe, 0xbf, 0x3e, 0xbf, 0xc4, 0xbe, 0x39, 0xbe, 0xbf, 0xbd, 0x3e, 0xbd,
- 0xd7, 0xbc, 0x5d, 0xbc, 0xec, 0xbb, 0x73, 0xbb, 0x07, 0xbb, 0x96, 0xba,
- 0x24, 0xba, 0xb5, 0xb9, 0x49, 0xb9, 0xdd, 0xb8, 0x76, 0xb8, 0x02, 0xb8,
- 0xa8, 0xb7, 0x3c, 0xb7, 0xee, 0xb6, 0x82, 0xb6, 0x2b, 0xb6, 0xc3, 0xb5,
- 0x6e, 0xb5, 0x14, 0xb5, 0xc4, 0xb4, 0x6b, 0xb4, 0x20, 0xb4, 0xd2, 0xb3,
- 0x78, 0xb3, 0x2c, 0xb3, 0xe6, 0xb2, 0x9e, 0xb2, 0x58, 0xb2, 0x1a, 0xb2,
- 0xea, 0xb1, 0xa6, 0xb1, 0x63, 0xb1, 0x2b, 0xb1, 0xf3, 0xb0, 0xb8, 0xb0,
- 0x7b, 0xb0, 0x4e, 0xb0, 0x20, 0xb0, 0xf9, 0xaf, 0xc6, 0xaf, 0xa2, 0xaf,
- 0x84, 0xaf, 0x5e, 0xaf, 0x44, 0xaf, 0x21, 0xaf, 0x06, 0xaf, 0xe9, 0xae,
- 0xe2, 0xae, 0xd0, 0xae, 0xc3, 0xae, 0xba, 0xae, 0xc1, 0xae, 0xaf, 0xae,
- 0xbc, 0xae, 0xb5, 0xae, 0xc0, 0xae, 0xc3, 0xae, 0xd7, 0xae, 0xdd, 0xae,
- 0xfb, 0xae, 0x0a, 0xaf, 0x16, 0xaf, 0x37, 0xaf, 0x4a, 0xaf, 0x70, 0xaf,
- 0x86, 0xaf, 0xa9, 0xaf, 0xc7, 0xaf, 0xec, 0xaf, 0x12, 0xb0, 0x42, 0xb0,
- 0x66, 0xb0, 0x91, 0xb0, 0xc0, 0xb0, 0xee, 0xb0, 0x1a, 0xb1, 0x4c, 0xb1,
- 0x77, 0xb1, 0xb3, 0xb1, 0xdd, 0xb1, 0x10, 0xb2, 0x47, 0xb2, 0x70, 0xb2,
- 0xb8, 0xb2, 0xef, 0xb2, 0x26, 0xb3, 0x64, 0xb3, 0x90, 0xb3, 0xd8, 0xb3,
- 0x07, 0xb4, 0x4b, 0xb4, 0x83, 0xb4, 0xc7, 0xb4, 0xf4, 0xb4, 0x35, 0xb5,
- 0x70, 0xb5, 0xbc, 0xb5, 0xf0, 0xb5, 0x39, 0xb6, 0x7d, 0xb6, 0xb7, 0xb6,
- 0xfa, 0xb6, 0x2e, 0xb7, 0x7d, 0xb7, 0xbb, 0xb7, 0x01, 0xb8, 0x39, 0xb8,
- 0x80, 0xb8, 0xbd, 0xb8, 0x05, 0xb9, 0x46, 0xb9, 0x94, 0xb9, 0xcd, 0xb9,
- 0x17, 0xba, 0x5b, 0xba, 0x9e, 0xba, 0xdf, 0xba, 0x27, 0xbb, 0x6a, 0xbb,
- 0xbc, 0xbb, 0xf6, 0xbb, 0x3a, 0xbc, 0x83, 0xbc, 0xc3, 0xbc, 0x16, 0xbd,
- 0x58, 0xbd, 0xa2, 0xbd, 0xe0, 0xbd, 0x24, 0xbe, 0x70, 0xbe, 0xa1, 0xbe,
- 0xfa, 0xbe, 0x37, 0xbf, 0x8d, 0xbf, 0xc9, 0xbf, 0x1d, 0xc0, 0x5d, 0xc0,
- 0xa6, 0xc0, 0xe6, 0xc0, 0x2f, 0xc1, 0x7a, 0xc1, 0xcb, 0xc1, 0x2f, 0xc2,
- 0x95, 0xc2, 0xfa, 0xc2, 0x55, 0xc3, 0xbb, 0xc3, 0x1e, 0xc4, 0x86, 0xc4,
- 0xec, 0xc4, 0x4b, 0xc5, 0xab, 0xc5, 0x04, 0xc6, 0x72, 0xc6, 0xc6, 0xc6,
- 0x3a, 0xc7, 0x8e, 0xc7, 0xfd, 0xc7, 0x5a, 0xc8, 0xc0, 0xc8, 0x17, 0xc9,
- 0x79, 0xc9, 0xd5, 0xc9, 0x43, 0xca, 0x98, 0xca, 0x05, 0xcb, 0x64, 0xcb,
- 0xc3, 0xcb, 0x1e, 0xcc, 0x81, 0xcc, 0xe3, 0xcc, 0x40, 0xcd, 0xa6, 0xcd,
- 0x0a, 0xce, 0x6a, 0xce, 0xc0, 0xce, 0x26, 0xcf, 0x81, 0xcf, 0xf0, 0xcf,
- 0x48, 0xd0, 0xad, 0xd0, 0x07, 0xd1, 0x71, 0xd1, 0xca, 0xd1, 0x2b, 0xd2,
- 0x8a, 0xd2, 0xed, 0xd2, 0x50, 0xd3, 0xa1, 0xd3, 0x0f, 0xd4, 0x6f, 0xd4,
- 0xd6, 0xd4, 0x30, 0xd5, 0x93, 0xd5, 0xf6, 0xd5, 0x55, 0xd6, 0xb5, 0xd6,
- 0x12, 0xd7, 0x7b, 0xd7, 0xde, 0xd7, 0x34, 0xd8, 0x93, 0xd8, 0xe9, 0xd8,
- 0x61, 0xd9, 0xbb, 0xd9, 0x2b, 0xda, 0x88, 0xda, 0xeb, 0xda, 0x4f, 0xdb,
- 0xb9, 0xdb, 0x21, 0xdc, 0x80, 0xdc, 0xf7, 0xdc, 0x53, 0xdd, 0xbb, 0xdd,
- 0x2b, 0xde, 0xa4, 0xde, 0x05, 0xdf, 0x74, 0xdf, 0xd8, 0xdf, 0x44, 0xe0,
- 0xb4, 0xe0, 0x26, 0xe1, 0x91, 0xe1, 0x01, 0xe2, 0x77, 0xe2, 0xeb, 0xe2,
- 0x5e, 0xe3, 0xc7, 0xe3, 0x44, 0xe4, 0xb2, 0xe4, 0x25, 0xe5, 0xa3, 0xe5,
- 0x15, 0xe6, 0x97, 0xe6, 0x0b, 0xe7, 0x8b, 0xe7, 0x10, 0xe8, 0x7d, 0xe8,
- 0x06, 0xe9, 0x74, 0xe9, 0xff, 0xe9, 0x82, 0xea, 0x01, 0xeb, 0x85, 0xeb,
- 0xfa, 0xeb, 0x91, 0xec, 0x07, 0xed, 0x8f, 0xed, 0x15, 0xee, 0x9a, 0xee,
- 0x26, 0xef, 0xa5, 0xef, 0x26, 0xf0, 0xb2, 0xf0, 0x3e, 0xf1, 0xca, 0xf1,
- 0x45, 0xf2, 0xcc, 0xf2, 0x51, 0xf3, 0xdc, 0xf3, 0x5c, 0xf4, 0xe8, 0xf4,
- 0x6e, 0xf5, 0xf9, 0xf5, 0x79, 0xf6, 0xf9, 0xf6, 0x7d, 0xf7, 0x08, 0xf8,
- 0x91, 0xf8, 0x18, 0xf9, 0x95, 0xf9, 0x18, 0xfa, 0xa5, 0xfa, 0x21, 0xfb,
- 0xa9, 0xfb, 0x2a, 0xfc, 0xa7, 0xfc, 0x23, 0xfd, 0xa3, 0xfd, 0x2b, 0xfe,
- 0x9c, 0xfe, 0x2b, 0xff, 0xa0, 0xff, 0x1c, 0x00, 0x9a, 0x00, 0x11, 0x01,
- 0x9a, 0x01, 0x14, 0x02, 0x8c, 0x02, 0x07, 0x03, 0x84, 0x03, 0xf7, 0x03,
- 0x75, 0x04, 0xf3, 0x04, 0x65, 0x05, 0xe8, 0x05, 0x54, 0x06, 0xd3, 0x06,
- 0x48, 0x07, 0xc2, 0x07, 0x38, 0x08, 0xad, 0x08, 0x28, 0x09, 0x99, 0x09,
- 0x11, 0x0a, 0x79, 0x0a, 0xf5, 0x0a, 0x5c, 0x0b, 0xd1, 0x0b, 0x3f, 0x0c,
- 0xb5, 0x0c, 0x2c, 0x0d, 0x9a, 0x0d, 0x0b, 0x0e, 0x74, 0x0e, 0xe6, 0x0e,
- 0x45, 0x0f, 0xbd, 0x0f, 0x2f, 0x10, 0x9a, 0x10, 0x05, 0x11, 0x6c, 0x11,
- 0xdb, 0x11, 0x40, 0x12, 0xaa, 0x12, 0x14, 0x13, 0x81, 0x13, 0xe9, 0x13,
- 0x4d, 0x14, 0xb9, 0x14, 0x18, 0x15, 0x88, 0x15, 0xe6, 0x15, 0x58, 0x16,
- 0xb9, 0x16, 0x1c, 0x17, 0x7e, 0x17, 0xe3, 0x17, 0x43, 0x18, 0xac, 0x18,
- 0x08, 0x19, 0x6d, 0x19, 0xce, 0x19, 0x34, 0x1a, 0x90, 0x1a, 0xf5, 0x1a,
- 0x53, 0x1b, 0xbb, 0x1b, 0x07, 0x1c, 0x6f, 0x1c, 0xc2, 0x1c, 0x28, 0x1d,
- 0x84, 0x1d, 0xe8, 0x1d, 0x35, 0x1e, 0xa2, 0x1e, 0xf8, 0x1e, 0x59, 0x1f,
- 0xb8, 0x1f, 0x0c, 0x20, 0x69, 0x20, 0xbe, 0x20, 0x19, 0x21, 0x66, 0x21,
- 0xc6, 0x21, 0x1f, 0x22, 0x70, 0x22, 0xbe, 0x22, 0x18, 0x23, 0x72, 0x23,
- 0xbf, 0x23, 0x0f, 0x24, 0x67, 0x24, 0xc0, 0x24, 0x08, 0x25, 0x51, 0x25,
- 0xa6, 0x25, 0xf4, 0x25, 0x42, 0x26, 0x93, 0x26, 0xd6, 0x26, 0x25, 0x27,
- 0x6c, 0x27, 0xb7, 0x27, 0x07, 0x28, 0x49, 0x28, 0x96, 0x28, 0xda, 0x28,
- 0x22, 0x29, 0x66, 0x29, 0xa4, 0x29, 0xe8, 0x29, 0x20, 0x2a, 0x62, 0x2a,
- 0xa9, 0x2a, 0xe5, 0x2a, 0x21, 0x2b, 0x5a, 0x2b, 0x97, 0x2b, 0xc1, 0x2b,
- 0xfe, 0x2b, 0x28, 0x2c, 0x57, 0x2c, 0x88, 0x2c, 0xae, 0x2c, 0xd3, 0x2c,
- 0xfa, 0x2c, 0x17, 0x2d, 0x33, 0x2d, 0x4b, 0x2d, 0x5d, 0x2d, 0x68, 0x2d,
- 0x81, 0x2d, 0x92, 0x2d, 0x9e, 0x2d, 0xa9, 0x2d, 0xbb, 0x2d, 0xc3, 0x2d,
- 0xcd, 0x2d, 0xd5, 0x2d, 0xcd, 0x2d, 0xdc, 0x2d, 0xe3, 0x2d, 0xe1, 0x2d,
- 0xdd, 0x2d, 0xd9, 0x2d, 0xd7, 0x2d, 0xcf, 0x2d, 0xe0, 0x2d, 0xd2, 0x2d,
- 0xd2, 0x2d, 0xcb, 0x2d, 0xb7, 0x2d, 0xb6, 0x2d, 0xa1, 0x2d, 0x9e, 0x2d,
- 0x8b, 0x2d, 0x84, 0x2d, 0x68, 0x2d, 0x6a, 0x2d, 0x4e, 0x2d, 0x45, 0x2d,
- 0x2f, 0x2d, 0x18, 0x2d, 0x15, 0x2d, 0xef, 0x2c, 0xe8, 0x2c, 0xc9, 0x2c,
- 0xc7, 0x2c, 0xaa, 0x2c, 0x9b, 0x2c, 0x7c, 0x2c, 0x64, 0x2c, 0x3c, 0x2c,
- 0x2e, 0x2c, 0x16, 0x2c, 0x05, 0x2c, 0xe1, 0x2b, 0xc8, 0x2b, 0xb5, 0x2b,
- 0x9a, 0x2b, 0x7c, 0x2b, 0x61, 0x2b, 0x3f, 0x2b, 0x21, 0x2b, 0x01, 0x2b,
- 0xee, 0x2a, 0xd0, 0x2a, 0xb3, 0x2a, 0x95, 0x2a, 0x6d, 0x2a, 0x50, 0x2a,
- 0x2b, 0x2a, 0x0b, 0x2a, 0xe9, 0x29, 0xd1, 0x29, 0xa8, 0x29, 0x97, 0x29,
- 0x6c, 0x29, 0x51, 0x29, 0x24, 0x29, 0x03, 0x29, 0xe6, 0x28, 0xbe, 0x28,
- 0xa1, 0x28, 0x80, 0x28, 0x64, 0x28, 0x38, 0x28, 0x12, 0x28, 0xf0, 0x27,
- 0xd3, 0x27, 0xac, 0x27, 0x94, 0x27, 0x67, 0x27, 0x4a, 0x27, 0x1c, 0x27,
- 0xf7, 0x26, 0xd1, 0x26, 0xb6, 0x26, 0x8d, 0x26, 0x6e, 0x26, 0x4b, 0x26,
- 0x25, 0x26, 0x02, 0x26, 0xd8, 0x25, 0xbe, 0x25, 0x93, 0x25, 0x7c, 0x25,
- 0x4a, 0x25, 0x27, 0x25, 0x07, 0x25, 0xdc, 0x24, 0xbb, 0x24, 0x9a, 0x24,
- 0x78, 0x24, 0x4c, 0x24, 0x26, 0x24, 0x00, 0x24, 0xd7, 0x23, 0xc0, 0x23,
- 0x94, 0x23, 0x71, 0x23, 0x45, 0x23, 0x1c, 0x23, 0x00, 0x23, 0xd4, 0x22,
- 0xb5, 0x22, 0x8e, 0x22, 0x67, 0x22, 0x39, 0x22, 0x00, 0x22, 0xbd, 0x21,
- 0x87, 0x21, 0x46, 0x21, 0x01, 0x21, 0xca, 0x20, 0x89, 0x20, 0x4a, 0x20,
- 0x17, 0x20, 0xd6, 0x1f, 0x9a, 0x1f, 0x5e, 0x1f, 0x20, 0x1f, 0xe0, 0x1e,
- 0xa3, 0x1e, 0x5f, 0x1e, 0x29, 0x1e, 0xf0, 0x1d, 0xb8, 0x1d, 0x78, 0x1d,
- 0x36, 0x1d, 0x04, 0x1d, 0xc6, 0x1c, 0x8b, 0x1c, 0x4d, 0x1c, 0x18, 0x1c,
- 0xd9, 0x1b, 0x97, 0x1b, 0x5c, 0x1b, 0x2b, 0x1b, 0xf4, 0x1a, 0xb1, 0x1a,
- 0x7c, 0x1a, 0x32, 0x1a, 0x02, 0x1a, 0xc6, 0x19, 0x8b, 0x19, 0x59, 0x19,
- 0x10, 0x19, 0xd7, 0x18, 0x9c, 0x18, 0x62, 0x18, 0x22, 0x18, 0xe8, 0x17,
- 0xb1, 0x17, 0x7c, 0x17, 0x34, 0x17, 0xf9, 0x16, 0xc0, 0x16, 0x8b, 0x16,
- 0x55, 0x16, 0x14, 0x16, 0xdd, 0x15, 0x9f, 0x15, 0x65, 0x15, 0x2b, 0x15,
- 0xea, 0x14, 0xb9, 0x14, 0x70, 0x14, 0x3d, 0x14, 0x05, 0x14, 0xc1, 0x13,
- 0x86, 0x13, 0x45, 0x13, 0x09, 0x13, 0xca, 0x12, 0x90, 0x12, 0x57, 0x12,
- 0x1a, 0x12, 0xe1, 0x11, 0x9b, 0x11, 0x61, 0x11, 0x1d, 0x11, 0xe1, 0x10,
- 0x9d, 0x10, 0x64, 0x10, 0x17, 0x10, 0xde, 0x0f, 0xa1, 0x0f, 0x60, 0x0f,
- 0x1b, 0x0f, 0xd8, 0x0e, 0x90, 0x0e, 0x5b, 0x0e, 0x0e, 0x0e, 0xd3, 0x0d,
- 0x86, 0x0d, 0x4d, 0x0d, 0xf5, 0x0c, 0xba, 0x0c, 0x68, 0x0c, 0x2a, 0x0c,
- 0xde, 0x0b, 0x94, 0x0b, 0x4e, 0x0b, 0x07, 0x0b, 0xbb, 0x0a, 0x6c, 0x0a,
- 0x25, 0x0a, 0xd4, 0x09, 0x89, 0x09, 0x39, 0x09, 0xe6, 0x08, 0xa3, 0x08,
- 0x4f, 0x08, 0x02, 0x08, 0xa7, 0x07, 0x5f, 0x07, 0x08, 0x07, 0xba, 0x06,
- 0x68, 0x06, 0x1f, 0x06, 0xc5, 0x05, 0x7a, 0x05, 0x1f, 0x05, 0xd7, 0x04,
- 0x85, 0x04, 0x31, 0x04, 0xde, 0x03, 0x89, 0x03, 0x3a, 0x03, 0xe9, 0x02,
- 0x96, 0x02, 0x47, 0x02, 0xf7, 0x01, 0xa4, 0x01, 0x5d, 0x01, 0x06, 0x01,
- 0xb9, 0x00, 0x00, 0x00
-};
-unsigned int kick_raw_len = 6352;
diff --git a/third-party/TeensyVariablePlayback.O/extras/soundio/save_wav/CMakeLists.txt b/third-party/TeensyVariablePlayback.O/extras/soundio/save_wav/CMakeLists.txt
deleted file mode 100644
index 837c98e..0000000
--- a/third-party/TeensyVariablePlayback.O/extras/soundio/save_wav/CMakeLists.txt
+++ /dev/null
@@ -1,59 +0,0 @@
-cmake_minimum_required(VERSION 3.10)
-set(CMAKE_CXX_STANDARD 11)
-project(save_wav)
-
-find_package(teensy_x86_stubs)
-include_directories(${teensy_x86_stubs_INCLUDE_DIR})
-
-find_package(teensy_x86_sd_stubs)
-include_directories(${teensy_x86_sd_stubs_INCLUDE_DIR})
-
-find_package(teensy_audio_x86_stubs)
-include_directories(${teensy_audio_x86_stubs_INCLUDE_DIR})
-
-find_package(teensy_audio_x86_stubs_soundio)
-if(teensy_audio_x86_stubs_soundio_FOUND)
- include_directories(${teensy_audio_x86_stubs_soundio_INCLUDE_DIR})
-
- include_directories(/usr/local/include) #soundio
- include_directories(../../../src)
-
- add_custom_command(OUTPUT stereo_souljah_wav.c
- COMMAND embedfile stereo_souljah_wav ${CMAKE_SOURCE_DIR}/test/resources/input/stereo_souljah.wav
- )
-
- add_custom_command(OUTPUT mono_souljah_wav.c
- COMMAND embedfile mono_souljah_wav ${CMAKE_SOURCE_DIR}/test/resources/input/mono_souljah.wav
- )
-
- add_executable(save_wav mono_souljah_wav.c stereo_souljah_wav.c save_wav.cpp)
- target_link_libraries(save_wav teensy_variable_playback)
-
- if(WIN32)
- elseif(UNIX AND NOT APPLE)
- set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall")
- SET(SOUNDIO_LIBS -L/usr/lib/x86_64-linux-gnu -lsoundio)
- elseif(APPLE)
- INCLUDE_DIRECTORIES(/System/Library/Frameworks)
- FIND_LIBRARY(glfw3_LIBRARY glfw)
- FIND_LIBRARY(COCOA_LIBRARY Cocoa)
- FIND_LIBRARY(OpenGL_LIBRARY OpenGL)
- FIND_LIBRARY(IOKit_LIBRARY IOKit)
- FIND_LIBRARY(glew_LIBRARY glew)
- FIND_LIBRARY(CoreVideo_LIBRARY CoreVideo)
- MARK_AS_ADVANCED(COCOA_LIBRARY OpenGL_LIBRARY)
- FIND_LIBRARY(FREETYPE_LIBRARIES FreeType)
- SET(APPLE_LIBS ${COCOA_LIBRARY} ${IOKit_LIBRARY} ${OpenGL_LIBRARY} ${CoreVideo_LIBRARY})
- SET(APPLE_LIBS ${APPLE_LIBS} ${GLFW3_LIBRARY} ${ASSIMP_LIBRARY} ${FREETYPE_LIBRARIES} ${glfw3_LIBRARY} ${glew_LIBRARY})
- set(LIBS ${LIBS} ${APPLE_LIBS})
- target_link_libraries(save_wav
- "-framework CoreServices"
- "-framework CoreAudio"
- "-framework Foundation"
- "-framework AudioUnit")
- SET(SOUNDIO_LIBS /usr/local/lib/libsoundio.a)
- endif()
-
- target_link_libraries(save_wav ${LIBS} ${teensy_x86_stubs_LIBS} ${teensy_x86_sd_stubs_LIBS} ${teensy_audio_x86_stubs_LIBS} ${teensy_audio_x86_stubs_soundio_LIBS} ${teensy_st7735_linux_stubs_LIBS} ${teensy_st7735_linux_extras_opengl_LIBS} ${SOUNDIO_LIBS})
-#set(CMAKE_VERBOSE_MAKEFILE 1)
-endif()
\ No newline at end of file
diff --git a/third-party/TeensyVariablePlayback.O/extras/soundio/save_wav/save_wav.cpp b/third-party/TeensyVariablePlayback.O/extras/soundio/save_wav/save_wav.cpp
deleted file mode 100644
index fb70fdc..0000000
--- a/third-party/TeensyVariablePlayback.O/extras/soundio/save_wav/save_wav.cpp
+++ /dev/null
@@ -1,152 +0,0 @@
-// Plays a RAW (16-bit signed) PCM audio file at slower or faster rate
-// this example plays a sample stored in an array
-#include
-#include
-#include "../../../src/playarrayresmp.h"
-#include "output_soundio.h"
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-// GUItool: begin automatically generated code
-AudioPlayArrayResmp rraw_a1; //xy=306,225
-AudioRecordQueue queue1; //xy=609,267
-AudioOutputSoundIO sio_out1; //xy=612,224
-AudioConnection patchCord1(rraw_a1, 0, sio_out1, 0);
-AudioConnection patchCord2(rraw_a1, 0, sio_out1, 1);
-AudioConnection patchCord3(rraw_a1, 0, queue1, 0);
-// GUItool: end automatically generated code
-
-extern unsigned int mono_souljah_wav_len;
-extern unsigned char mono_souljah_wav[];
-
-int16_t buffer[512] = {0};
-File frec;
-
-unsigned long lastSamplePlayed = 0;
-void my_handler(sig_atomic_t i);
-static char stack_body[64*1024];
-static stack_t sigseg_stack;
-static struct sigaction sigseg_handler;
-
-void crash_handler(sig_atomic_t i);
-
-void setup() {
- Serial.begin(9600);
-
- rraw_a1.setPlaybackRate(1.0f);
- rraw_a1.enableInterpolation(true);
- //rraw_a1.play((int16_t*)kick_raw, kick_raw_len/2);
- Serial.println("setup done");
-
- if (SD.exists("RECORD.RAW")) {
- // The SD library writes new data to the end of the
- // file, so to start a new recording, the old file
- // must be deleted before new data is written.
- SD.remove("RECORD.RAW");
- }
- frec = SD.open("RECORD.RAW", O_WRITE);
-
- AudioMemory(120);
-
- if (frec) {
- queue1.begin();
- Serial.println("startRecording");
- } else {
- Serial.println("recording failed...");
- }
-}
-
-void loop() {
- unsigned currentMillis = millis();
- if (currentMillis > lastSamplePlayed + 1000) {
- if (!rraw_a1.isPlaying()) {
- rraw_a1.playWav((int16_t *)mono_souljah_wav, mono_souljah_wav_len/2);
- lastSamplePlayed = currentMillis;
-
- Serial.print("Memory: ");
- Serial.print(AudioMemoryUsage());
- Serial.print(",");
- Serial.print(AudioMemoryUsageMax());
- Serial.println();
- }
- }
-
- if (queue1.available() >= 1) {
- int16_t* incomming = queue1.readBuffer();
- if (incomming != NULL) {
- memcpy(buffer, incomming, 256);
- queue1.freeBuffer();
- frec.write((unsigned char *)buffer, 256);
- frec.flush();
- }
- }
- delay(1);
-}
-
-int main() {
- signal (SIGINT,my_handler);
- signal (SIGSEGV,crash_handler);
-
- sigseg_stack.ss_sp = stack_body;
- sigseg_stack.ss_flags = SS_ONSTACK;
- sigseg_stack.ss_size = sizeof(stack_body);
- // assert(!sigaltstack(&sigseg_stack, nullptr));
- sigseg_handler.sa_flags = SA_ONSTACK;
- sigseg_handler.sa_handler = &crash_handler;
- // assert(!sigaction(SIGSEGV, &sigseg_handler, nullptr));
-
- initialize_mock_arduino();
- SD.setSDCardFolderPath(".");
- setup();
- while(!arduino_should_exit){
- loop();
- }
- delay(1000);
- frec.close();
-}
-
-void my_handler(sig_atomic_t i){
- if ( i== SIGINT) {
- arduino_should_exit = true;
- printf("Caught signal %d\n",i);
- } else
- {
- cerr << "sig seg fault handler" << endl;
- const int asize = 10;
- void *array[asize];
- size_t size;
-
- // get void*'s for all entries on the stack
- size = backtrace(array, asize);
-
- // print out all the frames to stderr
- cerr << "stack trace: " << endl;
- backtrace_symbols_fd(array, size, STDERR_FILENO);
- cerr << "resend SIGSEGV to get core dump" << endl;
- signal(i, SIG_DFL);
- kill(getpid(), i);
- }
-}
-void crash_handler(sig_atomic_t i){
- cerr << "sig seg fault handler" << endl;
- const int asize = 10;
- void *array[asize];
- size_t size;
-
- // get void*'s for all entries on the stack
- size = backtrace(array, asize);
-
- // print out all the frames to stderr
- cerr << "stack trace: " << endl;
- backtrace_symbols_fd(array, size, STDERR_FILENO);
- cerr << "resend SIGSEGV to get core dump" << endl;
- signal(i, SIG_DFL);
- kill(getpid(), i);
-}
diff --git a/third-party/TeensyVariablePlayback.O/extras/soundio/sd_play_all/CMakeLists.txt b/third-party/TeensyVariablePlayback.O/extras/soundio/sd_play_all/CMakeLists.txt
deleted file mode 100644
index 8b3cb8e..0000000
--- a/third-party/TeensyVariablePlayback.O/extras/soundio/sd_play_all/CMakeLists.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-cmake_minimum_required(VERSION 3.10)
-set(CMAKE_CXX_STANDARD 11)
-project(sd_play_all)
-
-find_package(teensy_x86_stubs)
-include_directories(${teensy_x86_stubs_INCLUDE_DIR})
-
-find_package(teensy_x86_sd_stubs)
-include_directories(${teensy_x86_sd_stubs_INCLUDE_DIR})
-
-find_package(teensy_audio_x86_stubs)
-include_directories(${teensy_audio_x86_stubs_INCLUDE_DIR})
-
-find_package(teensy_audio_x86_stubs_soundio)
-if(teensy_audio_x86_stubs_soundio_FOUND)
- include_directories(${teensy_audio_x86_stubs_soundio_INCLUDE_DIR})
-
- include_directories(../../../src)
- include_directories(/usr/local/include) #soundio
-
- add_executable(sd_play_all sd_play_all.cpp)
- target_link_libraries(sd_play_all teensy_variable_playback)
-
- if(WIN32)
- elseif(UNIX AND NOT APPLE)
- set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall")
- SET(SOUNDIO_LIBS -L/usr/lib/x86_64-linux-gnu -lsoundio)
- elseif(APPLE)
- INCLUDE_DIRECTORIES(/System/Library/Frameworks)
- FIND_LIBRARY(glfw3_LIBRARY glfw)
- FIND_LIBRARY(COCOA_LIBRARY Cocoa)
- FIND_LIBRARY(OpenGL_LIBRARY OpenGL)
- FIND_LIBRARY(IOKit_LIBRARY IOKit)
- FIND_LIBRARY(glew_LIBRARY glew)
- FIND_LIBRARY(CoreVideo_LIBRARY CoreVideo)
- MARK_AS_ADVANCED(COCOA_LIBRARY OpenGL_LIBRARY)
- FIND_LIBRARY(FREETYPE_LIBRARIES FreeType)
- SET(APPLE_LIBS ${COCOA_LIBRARY} ${IOKit_LIBRARY} ${OpenGL_LIBRARY} ${CoreVideo_LIBRARY})
- SET(APPLE_LIBS ${APPLE_LIBS} ${GLFW3_LIBRARY} ${ASSIMP_LIBRARY} ${FREETYPE_LIBRARIES} ${glfw3_LIBRARY} ${glew_LIBRARY})
- set(LIBS ${LIBS} ${APPLE_LIBS})
- target_link_libraries(sd_play_all
- "-framework CoreServices"
- "-framework CoreAudio"
- "-framework Foundation"
- "-framework AudioUnit")
- SET(SOUNDIO_LIBS /usr/local/lib/libsoundio.a)
- endif()
-
- target_link_libraries(sd_play_all ${LIBS} ${teensy_x86_stubs_LIBS} ${teensy_x86_sd_stubs_LIBS} ${teensy_audio_x86_stubs_LIBS} ${teensy_audio_x86_stubs_soundio_LIBS} ${teensy_st7735_linux_stubs_LIBS} ${teensy_st7735_linux_extras_opengl_LIBS} ${SOUNDIO_LIBS})
- #set(CMAKE_VERBOSE_MAKEFILE 1)
-endif()
\ No newline at end of file
diff --git a/third-party/TeensyVariablePlayback.O/extras/soundio/sd_play_all/sd_play_all.cpp b/third-party/TeensyVariablePlayback.O/extras/soundio/sd_play_all/sd_play_all.cpp
deleted file mode 100644
index f8fba59..0000000
--- a/third-party/TeensyVariablePlayback.O/extras/soundio/sd_play_all/sd_play_all.cpp
+++ /dev/null
@@ -1,784 +0,0 @@
-// Plays a RAW (16-bit signed) PCM audio file at slower or faster rate
-// this example plays a sample stored in an array
-#include
-#include
-#include "playsdresmp.h"
-#include "output_soundio.h"
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-// GUItool: begin automatically generated code
-AudioPlaySdResmp playSd1; //xy=306,225
-AudioRecordQueue queue1; //xy=609,267
-AudioOutputSoundIO sio_out1; //xy=612,224
-AudioConnection patchCord1(playSd1, 0, sio_out1, 0);
-AudioConnection patchCord2(playSd1, 1, sio_out1, 1);
-AudioConnection patchCord3(playSd1, 0, queue1, 0);
-// GUItool: end automatically generated code
-
-char** _filenames = nullptr;
-uint16_t _fileIndex = 0;
-uint16_t _numWaveFiles = 0;
-
-int16_t buffer[512] = {0};
-File frec;
-
-unsigned long lastSamplePlayed = 0;
-void my_handler(sig_atomic_t i);
-static char stack_body[64*1024];
-static stack_t sigseg_stack;
-static struct sigaction sigseg_handler;
-
-void crash_handler(sig_atomic_t i);
-
-
-
-uint16_t getNumWavFilesInDirectory(char *directory);
-void populateFilenames(char *directory, char **filenames);
-
-
-void setup() {
- Serial.begin(9600);
-
- playSd1.setPlaybackRate(1.0f);
- playSd1.enableInterpolation(true);
- //rraw_a1.play((int16_t*)kick_raw, kick_raw_len/2);
- Serial.println("setup done");
-
- if (SD.exists("RECORD_SD.RAW")) {
- // The SD library writes new data to the end of the
- // file, so to start a new recording, the old file
- // must be deleted before new data is written.
- SD.remove("RECORD_SD.RAW");
- }
- frec = SD.open("RECORD_SD.RAW", O_WRITE);
-
- _numWaveFiles = getNumWavFilesInDirectory("/");
- Serial.printf("Num wave files: %d\n", _numWaveFiles);
- _filenames = new char*[_numWaveFiles];
- populateFilenames("/", _filenames);
-
- Serial.println("Populated...");
-
- AudioMemory(120);
-
- if (frec) {
- queue1.begin();
- Serial.println("startRecording");
- } else {
- Serial.println("recording failed...");
- }
-}
-
-void loop() {
- unsigned currentMillis = millis();
- if (currentMillis > lastSamplePlayed + 1000) {
- if (!playSd1.isPlaying()) {
- if (playSd1.playWav(_filenames[_fileIndex])) {
- lastSamplePlayed = currentMillis;
- Serial.printf("playing %s\n", _filenames[_fileIndex]);
- } else
- Serial.printf("failed to play%s\n", _filenames[_fileIndex]);
- _fileIndex++;
- _fileIndex %= _numWaveFiles;
-
- Serial.print("Memory: ");
- Serial.print(AudioMemoryUsage());
- Serial.print(",");
- Serial.print(AudioMemoryUsageMax());
- Serial.println();
- }
- }
-
- if (queue1.available() >= 1) {
- int16_t* incomming = queue1.readBuffer();
- //Serial.printf("sizeof(incomming)=%i\n", sizeof(incomming));
- //if (incomming != NULL && sizeof(incomming) >= 256) {
- if (incomming != NULL) {
- memcpy(buffer, incomming, 256);
- queue1.freeBuffer();
- frec.write((unsigned char *)buffer, 256);
- frec.flush();
- }
- //else {
- // arduino_should_exit = true;
- //Serial.printf("sizeof(incomming)=%i\n", sizeof(incomming));
- //}
- }
- delay(1);
-}
-
-int main(int numArgs, char **args) {
-
- if (numArgs < 2)
- {
- std::cout << "usage: " << args[0] << " ";
- exit(0);
- }
- std::cout << args[1] << std::endl;
- signal (SIGINT,my_handler);
- signal (SIGSEGV,crash_handler);
-
- sigseg_stack.ss_sp = stack_body;
- sigseg_stack.ss_flags = SS_ONSTACK;
- sigseg_stack.ss_size = sizeof(stack_body);
- // assert(!sigaltstack(&sigseg_stack, nullptr));
- sigseg_handler.sa_flags = SA_ONSTACK;
- sigseg_handler.sa_handler = &crash_handler;
- // assert(!sigaction(SIGSEGV, &sigseg_handler, nullptr));
-
- initialize_mock_arduino();
- //SD.setSDCardFileData((char *) kick_raw, kick_raw_len);
- SD.setSDCardFolderPath(args[1]);
- setup();
- while(!arduino_should_exit){
- loop();
- }
- delay(1000);
- frec.close();
-}
-
-
-uint16_t getNumWavFilesInDirectory(char *directory) {
- File dir = SD.open(directory);
- uint16_t numWaveFiles = 0;
-
- while (true) {
-
- File files = dir.openNextFile();
- if (!files) {
- //If no more files, break out.
- break;
- }
-
- String curfile = files.name(); //put file in string
-
- int m = curfile.lastIndexOf(".WAV");
- int a = curfile.lastIndexOf(".wav");
- int underscore = curfile.indexOf("_");
- int underscore2 = curfile.indexOf("._");
- // if returned results is more then 0 add them to the list.
- if ((m > 0 || a > 0) && (underscore != 0) && (underscore2 != 0)) {
- numWaveFiles++;
- }
-
- files.close();
- }
- // close
- dir.close();
- return numWaveFiles;
-}
-
-void populateFilenames(char *directory, char **filenames) {
- File dir = SD.open(directory);
- uint16_t index = 0;
-
- while (true) {
-
- File files = dir.openNextFile();
- if (!files) {
- //If no more files, break out.
- break;
- }
-
- String curfile = files.name(); //put file in string
-
- int m = curfile.lastIndexOf(".WAV");
- int a = curfile.lastIndexOf(".wav");
- int underscore = curfile.indexOf("_");
- int underscore2 = curfile.indexOf("._");
- // if returned results is more then 0 add them to the list.
- if ((m > 0 || a > 0) && (underscore != 0) && (underscore2 != 0) ) {
-
- Serial.printf(" ---- %s\n", curfile.c_str());
- filenames[index] = new char[curfile.length()+1] {0};
- memcpy(filenames[index], curfile.c_str(), curfile.length()+1);
- Serial.printf(" ------ %s\n", filenames[index]);
- index++;
- }
- files.close();
- }
- // close
- dir.close();
-}
-
-
-void my_handler(sig_atomic_t i){
- if ( i== SIGINT) {
- arduino_should_exit = true;
- printf("Caught signal %d\n",i);
- } else
- {
- cerr << "sig seg fault handler" << endl;
- const int asize = 10;
- void *array[asize];
- size_t size;
-
- // get void*'s for all entries on the stack
- size = backtrace(array, asize);
-
- // print out all the frames to stderr
- cerr << "stack trace: " << endl;
- backtrace_symbols_fd(array, size, STDERR_FILENO);
- cerr << "resend SIGSEGV to get core dump" << endl;
- signal(i, SIG_DFL);
- kill(getpid(), i);
- }
-}
-void crash_handler(sig_atomic_t i){
- cerr << "sig seg fault handler" << endl;
- const int asize = 10;
- void *array[asize];
- size_t size;
-
- // get void*'s for all entries on the stack
- size = backtrace(array, asize);
-
- // print out all the frames to stderr
- cerr << "stack trace: " << endl;
- backtrace_symbols_fd(array, size, STDERR_FILENO);
- cerr << "resend SIGSEGV to get core dump" << endl;
- signal(i, SIG_DFL);
- kill(getpid(), i);
-}
-
-unsigned char kick_raw[] = {
- 0x99, 0x02, 0xd7, 0x02, 0xfa, 0x02, 0x5f, 0x03, 0xc1, 0x03, 0x2a, 0x04,
- 0xad, 0x04, 0xa5, 0x05, 0x76, 0x06, 0x2f, 0x07, 0x9e, 0x07, 0xe2, 0x07,
- 0x43, 0x08, 0x92, 0x08, 0xb2, 0x08, 0xe8, 0x08, 0x16, 0x09, 0xda, 0x08,
- 0x51, 0x08, 0x01, 0x08, 0x25, 0x08, 0x70, 0x08, 0xc3, 0x08, 0x23, 0x09,
- 0x95, 0x09, 0x19, 0x0a, 0x83, 0x0a, 0x7e, 0x0a, 0xd0, 0x0a, 0x65, 0x0b,
- 0xf6, 0x0b, 0x89, 0x0c, 0xd1, 0x0c, 0xcf, 0x0c, 0x1a, 0x0d, 0xe5, 0x0d,
- 0x5e, 0x0e, 0xbb, 0x0e, 0xec, 0x0e, 0xd9, 0x0e, 0x07, 0x0f, 0xc8, 0x0f,
- 0x2a, 0x10, 0x04, 0x10, 0x28, 0x10, 0x54, 0x11, 0x8e, 0x13, 0x4b, 0x16,
- 0x09, 0x19, 0x91, 0x1b, 0xf7, 0x1d, 0x55, 0x20, 0xd1, 0x22, 0xcb, 0x25,
- 0x4d, 0x29, 0xa8, 0x2c, 0x7f, 0x2f, 0xda, 0x31, 0xac, 0x34, 0x0a, 0x3a,
- 0x24, 0x47, 0x9d, 0x5b, 0xe9, 0x67, 0x29, 0x67, 0x24, 0x66, 0x26, 0x66,
- 0xd2, 0x65, 0x9c, 0x65, 0x38, 0x65, 0x05, 0x65, 0x9f, 0x64, 0x64, 0x64,
- 0x12, 0x64, 0xce, 0x63, 0x7c, 0x63, 0x32, 0x63, 0xe6, 0x62, 0x97, 0x62,
- 0x49, 0x62, 0x01, 0x62, 0xb3, 0x61, 0x63, 0x61, 0x15, 0x61, 0xc4, 0x60,
- 0x75, 0x60, 0x20, 0x60, 0xce, 0x5f, 0x7a, 0x5f, 0x28, 0x5f, 0xd5, 0x5e,
- 0x81, 0x5e, 0x2d, 0x5e, 0xd3, 0x5d, 0x80, 0x5d, 0x2e, 0x5d, 0xe6, 0x5c,
- 0x1a, 0x5c, 0x16, 0x5a, 0x01, 0x58, 0xb9, 0x56, 0x6d, 0x55, 0xf4, 0x53,
- 0x49, 0x52, 0x83, 0x50, 0x87, 0x4e, 0x5f, 0x4c, 0x68, 0x4a, 0x5c, 0x48,
- 0x62, 0x46, 0x5a, 0x44, 0xe2, 0x41, 0x08, 0x3f, 0x1c, 0x3c, 0x44, 0x39,
- 0x35, 0x36, 0xcb, 0x32, 0xaf, 0x2f, 0xc8, 0x2c, 0xf8, 0x29, 0x55, 0x27,
- 0x6a, 0x24, 0x0f, 0x21, 0x5e, 0x1d, 0xc3, 0x19, 0x7b, 0x16, 0x71, 0x13,
- 0x6c, 0x10, 0x00, 0x0d, 0xd2, 0x08, 0x7f, 0x04, 0x7a, 0x01, 0x43, 0xff,
- 0xb9, 0xfc, 0xfa, 0xf9, 0x3b, 0xf7, 0xcb, 0xf4, 0x2b, 0xf2, 0x02, 0xef,
- 0x0c, 0xec, 0x3d, 0xe9, 0x21, 0xe6, 0xa6, 0xe2, 0x8a, 0xdf, 0x00, 0xdd,
- 0xbc, 0xda, 0x9e, 0xd8, 0xc1, 0xd6, 0xd6, 0xd4, 0xd6, 0xd2, 0xad, 0xd0,
- 0x5f, 0xce, 0xf0, 0xcb, 0xe9, 0xc9, 0x61, 0xc8, 0x75, 0xc7, 0x97, 0xc6,
- 0x3e, 0xc5, 0x07, 0xc4, 0x8e, 0xc3, 0x18, 0xc3, 0x3a, 0xc2, 0x15, 0xc1,
- 0x0e, 0xc0, 0xb3, 0xbf, 0xcf, 0xbf, 0xf8, 0xbf, 0xcc, 0xbf, 0x72, 0xbf,
- 0x41, 0xbf, 0x2b, 0xbf, 0xe2, 0xbe, 0x99, 0xbe, 0x4e, 0xbe, 0x0e, 0xbe,
- 0xcd, 0xbd, 0x7c, 0xbd, 0x8a, 0xbd, 0x88, 0xbd, 0x04, 0xbd, 0x0c, 0xbc,
- 0xb3, 0xbb, 0xf6, 0xbb, 0xf1, 0xbb, 0x12, 0xbc, 0x6f, 0xbc, 0xcb, 0xbc,
- 0xe4, 0xbc, 0x33, 0xbd, 0x1b, 0xbe, 0xac, 0xbe, 0x1e, 0xbf, 0x91, 0xbf,
- 0x50, 0xc0, 0x40, 0xc1, 0x3d, 0xc2, 0x32, 0xc3, 0xdf, 0xc3, 0xad, 0xc4,
- 0x77, 0xc5, 0xbe, 0xc6, 0xc7, 0xc8, 0x1d, 0xcb, 0x0e, 0xcd, 0x83, 0xce,
- 0xf1, 0xcf, 0xb4, 0xd1, 0x7d, 0xd3, 0x86, 0xd5, 0x89, 0xd7, 0xd2, 0xd9,
- 0x34, 0xdc, 0x28, 0xde, 0x23, 0xe0, 0x33, 0xe2, 0x0a, 0xe4, 0x59, 0xe5,
- 0xfc, 0xe6, 0x98, 0xe9, 0x30, 0xec, 0x91, 0xee, 0xc2, 0xf0, 0x0d, 0xf3,
- 0x35, 0xf5, 0xf3, 0xf6, 0xc4, 0xf8, 0xcb, 0xfa, 0xef, 0xfc, 0x65, 0xff,
- 0x05, 0x02, 0x7c, 0x04, 0xde, 0x06, 0x75, 0x09, 0x2b, 0x0c, 0x9b, 0x0e,
- 0xf3, 0x10, 0xb3, 0x13, 0x3a, 0x16, 0xeb, 0x18, 0x55, 0x1c, 0xad, 0x1f,
- 0xa8, 0x22, 0x54, 0x25, 0xae, 0x27, 0x33, 0x2a, 0x16, 0x2d, 0x36, 0x30,
- 0x84, 0x33, 0x94, 0x36, 0xbd, 0x38, 0xa2, 0x3a, 0x7d, 0x3c, 0x06, 0x3e,
- 0x24, 0x3f, 0x27, 0x40, 0x7c, 0x41, 0xef, 0x42, 0x14, 0x44, 0xeb, 0x44,
- 0x06, 0x46, 0x53, 0x47, 0x47, 0x48, 0x9b, 0x48, 0xaf, 0x48, 0xd7, 0x48,
- 0x4c, 0x49, 0xa0, 0x49, 0xbe, 0x49, 0xd4, 0x49, 0xfa, 0x49, 0x5e, 0x4a,
- 0xcc, 0x4a, 0x14, 0x4b, 0xfe, 0x4a, 0x22, 0x4b, 0x10, 0x4c, 0x0c, 0x4d,
- 0xb2, 0x4d, 0x4c, 0x4e, 0x3e, 0x4e, 0x77, 0x4d, 0x98, 0x4c, 0xf6, 0x4b,
- 0x67, 0x4b, 0xf0, 0x4a, 0x2a, 0x4a, 0xea, 0x48, 0x06, 0x48, 0x47, 0x47,
- 0xb2, 0x46, 0xda, 0x45, 0xad, 0x44, 0x5c, 0x43, 0x43, 0x42, 0x9e, 0x41,
- 0x0a, 0x41, 0x49, 0x40, 0xa6, 0x3f, 0x9d, 0x3e, 0x3c, 0x3d, 0xc6, 0x3b,
- 0xf6, 0x39, 0x87, 0x37, 0xf6, 0x34, 0x87, 0x32, 0x2b, 0x30, 0x6f, 0x2d,
- 0xfa, 0x2a, 0x3d, 0x29, 0x48, 0x27, 0xc2, 0x24, 0x49, 0x22, 0xca, 0x1f,
- 0xa0, 0x1c, 0x7c, 0x19, 0x06, 0x17, 0xbf, 0x14, 0x9f, 0x12, 0x96, 0x10,
- 0xf9, 0x0d, 0x3e, 0x0b, 0xe8, 0x08, 0x5c, 0x06, 0xe7, 0x02, 0x6e, 0xff,
- 0xca, 0xfc, 0x5b, 0xfa, 0xa0, 0xf7, 0xe9, 0xf4, 0x9c, 0xf2, 0x66, 0xf0,
- 0xaf, 0xed, 0xfd, 0xea, 0xcc, 0xe8, 0x6e, 0xe6, 0x82, 0xe3, 0x97, 0xe0,
- 0xed, 0xdd, 0x62, 0xdb, 0x7b, 0xd8, 0xd3, 0xd5, 0x5f, 0xd3, 0x1a, 0xd1,
- 0x44, 0xcf, 0xeb, 0xcd, 0x89, 0xcc, 0xca, 0xca, 0x4d, 0xc9, 0x35, 0xc8,
- 0x53, 0xc7, 0x0c, 0xc6, 0x06, 0xc4, 0xca, 0xc1, 0x09, 0xc0, 0x9c, 0xbe,
- 0xa8, 0xbd, 0xfd, 0xbc, 0xf2, 0xbb, 0x9b, 0xba, 0x20, 0xb9, 0xe4, 0xb7,
- 0xc1, 0xb6, 0xcd, 0xb5, 0x12, 0xb5, 0x55, 0xb4, 0xd1, 0xb3, 0x86, 0xb3,
- 0x19, 0xb3, 0xe8, 0xb2, 0xd7, 0xb2, 0x72, 0xb2, 0x27, 0xb2, 0xb7, 0xb1,
- 0x67, 0xb1, 0x65, 0xb1, 0xae, 0xb1, 0x6b, 0xb1, 0xf2, 0xb0, 0xeb, 0xb0,
- 0x0f, 0xb1, 0xfe, 0xb0, 0xeb, 0xb0, 0xcf, 0xb0, 0x94, 0xb0, 0x3e, 0xb0,
- 0x29, 0xb0, 0x56, 0xb0, 0x0c, 0xb0, 0xb7, 0xaf, 0xfb, 0xaf, 0x37, 0xb0,
- 0x96, 0xb0, 0x42, 0xb1, 0xe8, 0xb1, 0xb5, 0xb2, 0xc5, 0xb3, 0x93, 0xb4,
- 0x93, 0xb4, 0xee, 0xb4, 0x59, 0xb6, 0xca, 0xb7, 0x87, 0xb8, 0x6f, 0xb8,
- 0x33, 0xb8, 0xaf, 0xb8, 0x4a, 0xb9, 0x9d, 0xb9, 0xf2, 0xb9, 0x48, 0xba,
- 0xd0, 0xba, 0xe5, 0xbb, 0x4e, 0xbd, 0xaf, 0xbe, 0xe9, 0xbf, 0xba, 0xc1,
- 0xc2, 0xc3, 0x73, 0xc5, 0xa6, 0xc6, 0x6a, 0xc7, 0x83, 0xc8, 0x42, 0xca,
- 0xc8, 0xcb, 0x34, 0xcd, 0x94, 0xce, 0xcc, 0xcf, 0x31, 0xd1, 0x27, 0xd3,
- 0x8c, 0xd5, 0x61, 0xd7, 0x78, 0xd9, 0x3b, 0xdc, 0x40, 0xdf, 0xdd, 0xe1,
- 0x0c, 0xe4, 0xe4, 0xe5, 0xd0, 0xe7, 0x65, 0xea, 0xc9, 0xec, 0xd7, 0xee,
- 0xfc, 0xf0, 0x7c, 0xf3, 0xf6, 0xf5, 0x09, 0xf8, 0xde, 0xf9, 0xca, 0xfb,
- 0xac, 0xfd, 0xc3, 0xff, 0x33, 0x02, 0xb1, 0x04, 0x24, 0x07, 0x57, 0x09,
- 0x5f, 0x0b, 0xe6, 0x0d, 0xd1, 0x10, 0x6d, 0x13, 0x8f, 0x15, 0xfb, 0x17,
- 0x43, 0x1a, 0x8e, 0x1c, 0x1a, 0x1f, 0x69, 0x21, 0x80, 0x23, 0x74, 0x25,
- 0x62, 0x27, 0x07, 0x29, 0xa1, 0x2a, 0xa5, 0x2c, 0xdf, 0x2e, 0x57, 0x31,
- 0xff, 0x33, 0xd1, 0x36, 0x6e, 0x39, 0x8a, 0x3b, 0x58, 0x3d, 0x32, 0x3f,
- 0xc8, 0x40, 0x1b, 0x42, 0x22, 0x43, 0x1a, 0x44, 0x25, 0x45, 0xe5, 0x45,
- 0x43, 0x46, 0x9b, 0x46, 0x6a, 0x47, 0x6f, 0x48, 0x69, 0x49, 0x6f, 0x4a,
- 0xc7, 0x4b, 0x0e, 0x4d, 0x03, 0x4e, 0x78, 0x4e, 0xdf, 0x4e, 0x0b, 0x4f,
- 0xea, 0x4e, 0xcb, 0x4e, 0x1b, 0x4f, 0x6e, 0x4f, 0xc3, 0x4f, 0xdc, 0x4f,
- 0xcb, 0x4f, 0xd2, 0x4f, 0x16, 0x50, 0x24, 0x50, 0xf2, 0x4f, 0x00, 0x50,
- 0x37, 0x50, 0x4e, 0x50, 0x5e, 0x50, 0x7c, 0x50, 0xab, 0x50, 0x69, 0x50,
- 0xad, 0x4f, 0xa3, 0x4e, 0xe6, 0x4d, 0x42, 0x4d, 0xdc, 0x4c, 0x7c, 0x4c,
- 0xbe, 0x4b, 0x08, 0x4b, 0x7b, 0x4a, 0xe4, 0x49, 0x14, 0x49, 0x07, 0x48,
- 0x98, 0x46, 0x2f, 0x45, 0x16, 0x44, 0x23, 0x43, 0x55, 0x42, 0xac, 0x41,
- 0x06, 0x41, 0x4b, 0x40, 0x8f, 0x3f, 0xde, 0x3e, 0xe1, 0x3d, 0x75, 0x3c,
- 0xc0, 0x3a, 0xe4, 0x38, 0x83, 0x37, 0x9a, 0x36, 0xe5, 0x35, 0xc0, 0x34,
- 0xf9, 0x32, 0xe1, 0x30, 0xfa, 0x2e, 0xd4, 0x2c, 0x4d, 0x2a, 0xed, 0x27,
- 0xb9, 0x25, 0xb2, 0x23, 0x7d, 0x21, 0xfd, 0x1e, 0x89, 0x1c, 0x38, 0x1a,
- 0xe2, 0x17, 0x67, 0x15, 0xf3, 0x12, 0xb3, 0x10, 0x9e, 0x0e, 0x79, 0x0c,
- 0xea, 0x09, 0x54, 0x07, 0x26, 0x05, 0x0a, 0x03, 0xd7, 0x00, 0x98, 0xfe,
- 0x41, 0xfc, 0x8d, 0xf9, 0x3c, 0xf7, 0x4f, 0xf5, 0x73, 0xf3, 0x7b, 0xf1,
- 0x68, 0xef, 0x6f, 0xed, 0x7a, 0xeb, 0x87, 0xe9, 0x48, 0xe7, 0xc6, 0xe4,
- 0x65, 0xe2, 0xf6, 0xdf, 0x86, 0xdd, 0x9f, 0xdb, 0x1b, 0xda, 0xa6, 0xd8,
- 0xce, 0xd6, 0xe4, 0xd4, 0xe3, 0xd2, 0x84, 0xd0, 0xec, 0xcd, 0x08, 0xcc,
- 0x89, 0xca, 0x1b, 0xc9, 0xe2, 0xc7, 0x9d, 0xc6, 0xe5, 0xc4, 0x79, 0xc3,
- 0x6d, 0xc2, 0xe3, 0xc0, 0x3c, 0xbf, 0xd3, 0xbd, 0x41, 0xbc, 0xd2, 0xba,
- 0x6a, 0xb9, 0xa1, 0xb7, 0xa9, 0xb5, 0x47, 0xb4, 0x91, 0xb3, 0xd5, 0xb2,
- 0xb7, 0xb1, 0x51, 0xb0, 0x14, 0xaf, 0xf5, 0xad, 0x95, 0xac, 0x34, 0xab,
- 0x05, 0xaa, 0xe1, 0xa8, 0xb3, 0xa7, 0xd9, 0xa6, 0x25, 0xa6, 0x6e, 0xa5,
- 0x2b, 0xa5, 0x7b, 0xa5, 0x9a, 0xa5, 0x88, 0xa5, 0xc3, 0xa5, 0xe7, 0xa5,
- 0xaf, 0xa5, 0x8b, 0xa5, 0x80, 0xa5, 0x65, 0xa5, 0x8c, 0xa5, 0x7e, 0xa5,
- 0x22, 0xa5, 0x40, 0xa5, 0xed, 0xa5, 0x27, 0xa6, 0x2b, 0xa6, 0x1c, 0xa6,
- 0xe5, 0xa5, 0x7b, 0xa5, 0x45, 0xa5, 0x37, 0xa5, 0x04, 0xa5, 0x91, 0xa4,
- 0x8d, 0xa4, 0x2d, 0xa5, 0x9f, 0xa5, 0xf6, 0xa5, 0x7e, 0xa6, 0x34, 0xa7,
- 0x14, 0xa8, 0x7e, 0xa8, 0x87, 0xa8, 0xc4, 0xa8, 0x51, 0xa9, 0xec, 0xa9,
- 0x74, 0xaa, 0xf7, 0xaa, 0x40, 0xab, 0xd9, 0xab, 0xca, 0xac, 0x6b, 0xad,
- 0xb3, 0xad, 0x08, 0xae, 0x10, 0xaf, 0x2c, 0xb0, 0xcb, 0xb0, 0x23, 0xb1,
- 0xac, 0xb1, 0x0e, 0xb2, 0x42, 0xb2, 0xd7, 0xb2, 0xef, 0xb3, 0x21, 0xb5,
- 0x30, 0xb6, 0xe9, 0xb6, 0x54, 0xb7, 0xf0, 0xb7, 0x9e, 0xb8, 0x2e, 0xb9,
- 0x03, 0xba, 0x55, 0xbb, 0xdf, 0xbc, 0x5f, 0xbe, 0xb8, 0xbf, 0x01, 0xc1,
- 0x83, 0xc2, 0x0c, 0xc4, 0x65, 0xc5, 0x7e, 0xc6, 0x86, 0xc7, 0xba, 0xc8,
- 0x11, 0xca, 0x66, 0xcb, 0x28, 0xcd, 0x4d, 0xcf, 0x60, 0xd1, 0x69, 0xd3,
- 0x7b, 0xd5, 0x5f, 0xd7, 0xe3, 0xd8, 0xca, 0xda, 0xda, 0xdc, 0xda, 0xde,
- 0xab, 0xe0, 0x59, 0xe2, 0x3b, 0xe4, 0x21, 0xe6, 0xfc, 0xe7, 0xcb, 0xe9,
- 0xbe, 0xeb, 0x9c, 0xed, 0x47, 0xef, 0x0b, 0xf1, 0xd3, 0xf2, 0xbc, 0xf4,
- 0x9c, 0xf6, 0x67, 0xf8, 0x2a, 0xfa, 0xc1, 0xfb, 0x7f, 0xfd, 0x41, 0xff,
- 0x12, 0x01, 0xd2, 0x02, 0xfc, 0x04, 0xe8, 0x06, 0x9a, 0x08, 0x59, 0x0a,
- 0x48, 0x0c, 0x36, 0x0e, 0x37, 0x10, 0x36, 0x12, 0x59, 0x14, 0x62, 0x16,
- 0x86, 0x18, 0xb9, 0x1a, 0xc2, 0x1c, 0xcd, 0x1e, 0xf1, 0x20, 0x27, 0x23,
- 0x7a, 0x25, 0xf9, 0x27, 0x2a, 0x2a, 0x1f, 0x2c, 0xf8, 0x2d, 0xa3, 0x2f,
- 0x23, 0x31, 0xf4, 0x32, 0x2c, 0x35, 0x40, 0x37, 0x23, 0x39, 0xfe, 0x3a,
- 0x11, 0x3d, 0x2c, 0x3f, 0xe8, 0x40, 0x8c, 0x42, 0x55, 0x44, 0x37, 0x46,
- 0x99, 0x47, 0xcb, 0x48, 0x12, 0x4a, 0x60, 0x4b, 0x86, 0x4c, 0x9b, 0x4d,
- 0xc8, 0x4e, 0xec, 0x4f, 0xe3, 0x50, 0x8a, 0x51, 0x23, 0x52, 0xd8, 0x52,
- 0x68, 0x53, 0x9b, 0x53, 0xb1, 0x53, 0x11, 0x54, 0x94, 0x54, 0xf7, 0x54,
- 0x4f, 0x55, 0xa4, 0x55, 0x03, 0x56, 0x51, 0x56, 0x92, 0x56, 0xfa, 0x56,
- 0x59, 0x57, 0xad, 0x57, 0xcd, 0x57, 0xc5, 0x57, 0xa8, 0x57, 0x64, 0x57,
- 0x49, 0x57, 0x63, 0x57, 0x64, 0x57, 0x40, 0x57, 0xf6, 0x56, 0xfc, 0x56,
- 0x36, 0x57, 0x3b, 0x57, 0x1e, 0x57, 0x1c, 0x57, 0x03, 0x57, 0xee, 0x56,
- 0xa5, 0x56, 0x80, 0x56, 0xd4, 0x56, 0xe4, 0x56, 0x92, 0x56, 0xf0, 0x55,
- 0x02, 0x55, 0xab, 0x53, 0xb5, 0x52, 0x51, 0x52, 0x08, 0x52, 0x80, 0x51,
- 0xb4, 0x50, 0xde, 0x4f, 0x27, 0x4f, 0x63, 0x4e, 0x58, 0x4d, 0x72, 0x4c,
- 0x82, 0x4b, 0x81, 0x4a, 0x87, 0x49, 0xb4, 0x48, 0xb1, 0x47, 0x99, 0x46,
- 0xb4, 0x45, 0x34, 0x45, 0xb8, 0x44, 0x2f, 0x44, 0x7f, 0x43, 0xa0, 0x42,
- 0xcb, 0x41, 0xd1, 0x40, 0xeb, 0x3f, 0x28, 0x3f, 0x3d, 0x3e, 0x09, 0x3d,
- 0x9d, 0x3b, 0x40, 0x3a, 0x1c, 0x39, 0xeb, 0x37, 0xd1, 0x36, 0xb3, 0x35,
- 0x8b, 0x34, 0x0b, 0x33, 0x51, 0x31, 0xfb, 0x2f, 0xb9, 0x2e, 0x54, 0x2d,
- 0xaf, 0x2b, 0xdf, 0x29, 0xf1, 0x27, 0x3a, 0x26, 0x6f, 0x24, 0x56, 0x22,
- 0x20, 0x20, 0x0a, 0x1e, 0x3b, 0x1c, 0x55, 0x1a, 0x6c, 0x18, 0xaa, 0x16,
- 0xef, 0x14, 0x0a, 0x13, 0x17, 0x11, 0x1c, 0x0f, 0x22, 0x0d, 0x46, 0x0b,
- 0x53, 0x09, 0x46, 0x07, 0x46, 0x05, 0x4d, 0x03, 0x1a, 0x01, 0xd3, 0xfe,
- 0x94, 0xfc, 0x8c, 0xfa, 0x8f, 0xf8, 0xc1, 0xf6, 0x27, 0xf5, 0x8f, 0xf3,
- 0xf2, 0xf1, 0x74, 0xf0, 0xfa, 0xee, 0x4d, 0xed, 0x9e, 0xeb, 0xa2, 0xe9,
- 0x73, 0xe7, 0xa9, 0xe5, 0x2d, 0xe4, 0xa3, 0xe2, 0xf9, 0xe0, 0x50, 0xdf,
- 0xb9, 0xdd, 0x34, 0xdc, 0xad, 0xda, 0x0b, 0xd9, 0x77, 0xd7, 0xb9, 0xd5,
- 0x37, 0xd4, 0xff, 0xd2, 0x8a, 0xd1, 0x14, 0xd0, 0xba, 0xce, 0x7d, 0xcd,
- 0x2c, 0xcc, 0xa1, 0xca, 0x22, 0xc9, 0xa9, 0xc7, 0x0e, 0xc6, 0x66, 0xc4,
- 0xfc, 0xc2, 0xa5, 0xc1, 0x4a, 0xc0, 0xff, 0xbe, 0xf7, 0xbd, 0x0e, 0xbd,
- 0x1d, 0xbc, 0x16, 0xbb, 0xad, 0xb9, 0x44, 0xb8, 0xd7, 0xb6, 0x9e, 0xb5,
- 0x9f, 0xb4, 0x97, 0xb3, 0x72, 0xb2, 0x5f, 0xb1, 0x67, 0xb0, 0x89, 0xaf,
- 0x9d, 0xae, 0xbe, 0xad, 0x08, 0xad, 0x5d, 0xac, 0x8b, 0xab, 0xad, 0xaa,
- 0xe4, 0xa9, 0x59, 0xa9, 0xc4, 0xa8, 0x02, 0xa8, 0x4d, 0xa7, 0xc2, 0xa6,
- 0x4a, 0xa6, 0x09, 0xa6, 0xd2, 0xa5, 0x50, 0xa5, 0xec, 0xa4, 0xc2, 0xa4,
- 0xd9, 0xa4, 0xbd, 0xa4, 0x97, 0xa4, 0xa5, 0xa4, 0xbf, 0xa4, 0xb4, 0xa4,
- 0x8f, 0xa4, 0x31, 0xa4, 0x39, 0xa4, 0x7d, 0xa4, 0xab, 0xa4, 0xc7, 0xa4,
- 0xb3, 0xa4, 0xab, 0xa4, 0xca, 0xa4, 0x05, 0xa5, 0x1e, 0xa5, 0x2a, 0xa5,
- 0x2c, 0xa5, 0x18, 0xa5, 0x01, 0xa5, 0x33, 0xa5, 0x8c, 0xa5, 0xb2, 0xa5,
- 0x81, 0xa5, 0x5c, 0xa5, 0x6e, 0xa5, 0x79, 0xa5, 0x4e, 0xa5, 0x17, 0xa5,
- 0xff, 0xa4, 0x1c, 0xa5, 0x45, 0xa5, 0x8a, 0xa5, 0xbf, 0xa5, 0xdb, 0xa5,
- 0x41, 0xa6, 0xfb, 0xa6, 0xc6, 0xa7, 0x86, 0xa8, 0x29, 0xa9, 0x97, 0xa9,
- 0x27, 0xaa, 0xd7, 0xaa, 0x6d, 0xab, 0xf4, 0xab, 0x34, 0xac, 0x69, 0xac,
- 0xc6, 0xac, 0x37, 0xad, 0xaa, 0xad, 0x34, 0xae, 0xd3, 0xae, 0x81, 0xaf,
- 0x16, 0xb0, 0x72, 0xb0, 0xc8, 0xb0, 0x36, 0xb1, 0x91, 0xb1, 0xe0, 0xb1,
- 0x3b, 0xb2, 0x8e, 0xb2, 0xe0, 0xb2, 0x2a, 0xb3, 0xab, 0xb3, 0x3a, 0xb4,
- 0xf1, 0xb4, 0xc0, 0xb5, 0xae, 0xb6, 0x91, 0xb7, 0x82, 0xb8, 0x98, 0xb9,
- 0x8f, 0xba, 0x88, 0xbb, 0x65, 0xbc, 0x20, 0xbd, 0xcb, 0xbd, 0xaf, 0xbe,
- 0x94, 0xbf, 0x84, 0xc0, 0x85, 0xc1, 0x7b, 0xc2, 0x67, 0xc3, 0x66, 0xc4,
- 0x7f, 0xc5, 0x89, 0xc6, 0x6b, 0xc7, 0x38, 0xc8, 0x29, 0xc9, 0x4a, 0xca,
- 0x82, 0xcb, 0xc1, 0xcc, 0x12, 0xce, 0x5e, 0xcf, 0xb0, 0xd0, 0x25, 0xd2,
- 0x66, 0xd3, 0xde, 0xd4, 0x6c, 0xd6, 0x28, 0xd8, 0xd7, 0xd9, 0x80, 0xdb,
- 0xf7, 0xdc, 0x6f, 0xde, 0xd0, 0xdf, 0x22, 0xe1, 0x7a, 0xe2, 0xe5, 0xe3,
- 0x7a, 0xe5, 0xea, 0xe6, 0x51, 0xe8, 0xeb, 0xe9, 0x70, 0xeb, 0xb3, 0xec,
- 0x01, 0xee, 0x60, 0xef, 0xcb, 0xf0, 0x1d, 0xf2, 0x7b, 0xf3, 0xcf, 0xf4,
- 0x39, 0xf6, 0xc8, 0xf7, 0x82, 0xf9, 0x4a, 0xfb, 0xf2, 0xfc, 0x8c, 0xfe,
- 0x01, 0x00, 0x68, 0x01, 0x15, 0x03, 0xe6, 0x04, 0xbc, 0x06, 0x42, 0x08,
- 0xbb, 0x09, 0x2b, 0x0b, 0xc7, 0x0c, 0x35, 0x0e, 0x94, 0x0f, 0xf2, 0x10,
- 0x59, 0x12, 0xbc, 0x13, 0x34, 0x15, 0xac, 0x16, 0x1c, 0x18, 0x79, 0x19,
- 0xdc, 0x1a, 0x6d, 0x1c, 0x21, 0x1e, 0xca, 0x1f, 0x70, 0x21, 0x02, 0x23,
- 0x6c, 0x24, 0x9e, 0x25, 0x45, 0x27, 0x02, 0x29, 0x95, 0x2a, 0xff, 0x2b,
- 0x72, 0x2d, 0xe8, 0x2e, 0x48, 0x30, 0x7c, 0x31, 0xd2, 0x32, 0x3d, 0x34,
- 0xac, 0x35, 0x26, 0x37, 0xbc, 0x38, 0x4c, 0x3a, 0x90, 0x3b, 0xef, 0x3c,
- 0x61, 0x3e, 0xe8, 0x3f, 0x59, 0x41, 0xab, 0x42, 0xf7, 0x43, 0x2d, 0x45,
- 0x6c, 0x46, 0x78, 0x47, 0xb4, 0x48, 0x2e, 0x4a, 0x8e, 0x4b, 0xd7, 0x4c,
- 0xf4, 0x4d, 0xee, 0x4e, 0xcb, 0x4f, 0xc3, 0x50, 0xc2, 0x51, 0xac, 0x52,
- 0x61, 0x53, 0xf3, 0x53, 0xac, 0x54, 0x5f, 0x55, 0xf4, 0x55, 0x7f, 0x56,
- 0x04, 0x57, 0x9c, 0x57, 0x1f, 0x58, 0x7c, 0x58, 0xbc, 0x58, 0x0b, 0x59,
- 0x71, 0x59, 0xc1, 0x59, 0x0b, 0x5a, 0x3e, 0x5a, 0x8b, 0x5a, 0xac, 0x5a,
- 0xa9, 0x5a, 0x8a, 0x5a, 0x6c, 0x5a, 0x4c, 0x5a, 0x39, 0x5a, 0x32, 0x5a,
- 0x40, 0x5a, 0x33, 0x5a, 0x44, 0x5a, 0x58, 0x5a, 0x79, 0x5a, 0x7a, 0x5a,
- 0x69, 0x5a, 0x49, 0x5a, 0x54, 0x5a, 0x78, 0x5a, 0x72, 0x5a, 0x5f, 0x5a,
- 0x31, 0x5a, 0x11, 0x5a, 0xf9, 0x59, 0xea, 0x59, 0xd1, 0x59, 0xa1, 0x59,
- 0x48, 0x59, 0xf0, 0x58, 0xa2, 0x58, 0x6e, 0x58, 0x60, 0x58, 0x46, 0x58,
- 0x3f, 0x58, 0x47, 0x58, 0x40, 0x58, 0x08, 0x58, 0x9c, 0x57, 0x11, 0x57,
- 0x83, 0x56, 0xd7, 0x55, 0x42, 0x55, 0xab, 0x54, 0x06, 0x54, 0x63, 0x53,
- 0xa6, 0x52, 0xf0, 0x51, 0x55, 0x51, 0xbc, 0x50, 0x1e, 0x50, 0x8e, 0x4f,
- 0xf3, 0x4e, 0x34, 0x4e, 0x6b, 0x4d, 0xc9, 0x4c, 0x30, 0x4c, 0x7d, 0x4b,
- 0xd8, 0x4a, 0x49, 0x4a, 0xad, 0x49, 0x11, 0x49, 0x6c, 0x48, 0xa4, 0x47,
- 0xec, 0x46, 0x6c, 0x46, 0xde, 0x45, 0x5d, 0x45, 0xbc, 0x44, 0xf1, 0x43,
- 0x34, 0x43, 0x8c, 0x42, 0xf8, 0x41, 0x47, 0x41, 0x6a, 0x40, 0x72, 0x3f,
- 0x8b, 0x3e, 0xb3, 0x3d, 0xf2, 0x3c, 0x2f, 0x3c, 0x5c, 0x3b, 0x96, 0x3a,
- 0xbc, 0x39, 0xb2, 0x38, 0x91, 0x37, 0x8c, 0x36, 0x75, 0x35, 0x63, 0x34,
- 0x5e, 0x33, 0x63, 0x32, 0x4b, 0x31, 0x3c, 0x30, 0x1e, 0x2f, 0x07, 0x2e,
- 0xd0, 0x2c, 0xb2, 0x2b, 0x84, 0x2a, 0x4d, 0x29, 0xfc, 0x27, 0xa5, 0x26,
- 0x2f, 0x25, 0x95, 0x23, 0x1f, 0x22, 0xad, 0x20, 0x3a, 0x1f, 0x9e, 0x1d,
- 0x10, 0x1c, 0x6e, 0x1a, 0xe3, 0x18, 0x56, 0x17, 0xdb, 0x15, 0x58, 0x14,
- 0xba, 0x12, 0x2a, 0x11, 0x8b, 0x0f, 0xf4, 0x0d, 0x5b, 0x0c, 0xd3, 0x0a,
- 0x5f, 0x09, 0xe5, 0x07, 0x4a, 0x06, 0xc0, 0x04, 0x3e, 0x03, 0xb6, 0x01,
- 0x37, 0x00, 0xca, 0xfe, 0x74, 0xfd, 0x00, 0xfc, 0xa5, 0xfa, 0x4a, 0xf9,
- 0xd1, 0xf7, 0x7e, 0xf6, 0x1c, 0xf5, 0x9d, 0xf3, 0x4f, 0xf2, 0x0e, 0xf1,
- 0xc0, 0xef, 0x3a, 0xee, 0xd8, 0xec, 0x69, 0xeb, 0x0c, 0xea, 0xad, 0xe8,
- 0x56, 0xe7, 0xf8, 0xe5, 0xbe, 0xe4, 0x98, 0xe3, 0x61, 0xe2, 0x03, 0xe1,
- 0x99, 0xdf, 0x4d, 0xde, 0x0e, 0xdd, 0xde, 0xdb, 0xad, 0xda, 0x84, 0xd9,
- 0x62, 0xd8, 0x32, 0xd7, 0x01, 0xd6, 0xb7, 0xd4, 0x87, 0xd3, 0x97, 0xd2,
- 0x89, 0xd1, 0x89, 0xd0, 0x6e, 0xcf, 0x65, 0xce, 0x5d, 0xcd, 0x44, 0xcc,
- 0x13, 0xcb, 0xf2, 0xc9, 0xd3, 0xc8, 0xad, 0xc7, 0x9b, 0xc6, 0x94, 0xc5,
- 0x8e, 0xc4, 0x7b, 0xc3, 0x92, 0xc2, 0xad, 0xc1, 0xb2, 0xc0, 0xb9, 0xbf,
- 0xb3, 0xbe, 0xc0, 0xbd, 0xd5, 0xbc, 0xf2, 0xbb, 0xe1, 0xba, 0xc7, 0xb9,
- 0xc7, 0xb8, 0xe8, 0xb7, 0x09, 0xb7, 0x2c, 0xb6, 0x66, 0xb5, 0xb1, 0xb4,
- 0xf6, 0xb3, 0x32, 0xb3, 0x53, 0xb2, 0x92, 0xb1, 0xdb, 0xb0, 0x0d, 0xb0,
- 0x46, 0xaf, 0x62, 0xae, 0x98, 0xad, 0xd1, 0xac, 0x3f, 0xac, 0xb0, 0xab,
- 0x34, 0xab, 0xb1, 0xaa, 0x45, 0xaa, 0xda, 0xa9, 0x6a, 0xa9, 0xf1, 0xa8,
- 0x7d, 0xa8, 0x04, 0xa8, 0xbb, 0xa7, 0x80, 0xa7, 0x41, 0xa7, 0x02, 0xa7,
- 0xb6, 0xa6, 0x68, 0xa6, 0x3b, 0xa6, 0x1c, 0xa6, 0x0d, 0xa6, 0xfc, 0xa5,
- 0xd4, 0xa5, 0xa6, 0xa5, 0x81, 0xa5, 0x76, 0xa5, 0x61, 0xa5, 0x54, 0xa5,
- 0x48, 0xa5, 0x47, 0xa5, 0x4b, 0xa5, 0x49, 0xa5, 0x38, 0xa5, 0x4b, 0xa5,
- 0x6c, 0xa5, 0xa3, 0xa5, 0xda, 0xa5, 0xfe, 0xa5, 0x21, 0xa6, 0x4a, 0xa6,
- 0x8a, 0xa6, 0xb4, 0xa6, 0xe0, 0xa6, 0xf3, 0xa6, 0x1b, 0xa7, 0x17, 0xa7,
- 0x40, 0xa7, 0x8e, 0xa7, 0xcd, 0xa7, 0x06, 0xa8, 0x3e, 0xa8, 0x86, 0xa8,
- 0xbd, 0xa8, 0xde, 0xa8, 0xf6, 0xa8, 0x1c, 0xa9, 0x49, 0xa9, 0x5c, 0xa9,
- 0x79, 0xa9, 0x93, 0xa9, 0xab, 0xa9, 0xe6, 0xa9, 0x2c, 0xaa, 0x82, 0xaa,
- 0xbc, 0xaa, 0xec, 0xaa, 0x32, 0xab, 0x69, 0xab, 0xa7, 0xab, 0xde, 0xab,
- 0x19, 0xac, 0x53, 0xac, 0xbb, 0xac, 0x14, 0xad, 0x8a, 0xad, 0xeb, 0xad,
- 0x6c, 0xae, 0xe1, 0xae, 0x62, 0xaf, 0xd9, 0xaf, 0x58, 0xb0, 0xc0, 0xb0,
- 0x36, 0xb1, 0x99, 0xb1, 0x11, 0xb2, 0x71, 0xb2, 0xdc, 0xb2, 0x58, 0xb3,
- 0xbb, 0xb3, 0x37, 0xb4, 0xb6, 0xb4, 0x46, 0xb5, 0xca, 0xb5, 0x50, 0xb6,
- 0xd9, 0xb6, 0x6c, 0xb7, 0x03, 0xb8, 0x7e, 0xb8, 0xf0, 0xb8, 0x64, 0xb9,
- 0xcf, 0xb9, 0x47, 0xba, 0xd3, 0xba, 0x60, 0xbb, 0xe8, 0xbb, 0x70, 0xbc,
- 0xf3, 0xbc, 0x82, 0xbd, 0x05, 0xbe, 0xa1, 0xbe, 0x2a, 0xbf, 0xae, 0xbf,
- 0x25, 0xc0, 0xac, 0xc0, 0x52, 0xc1, 0xde, 0xc1, 0x75, 0xc2, 0x11, 0xc3,
- 0xb5, 0xc3, 0x42, 0xc4, 0xc5, 0xc4, 0x6d, 0xc5, 0x0b, 0xc6, 0xb2, 0xc6,
- 0x4b, 0xc7, 0xf6, 0xc7, 0x9b, 0xc8, 0x4f, 0xc9, 0x17, 0xca, 0xf3, 0xca,
- 0xc6, 0xcb, 0x9a, 0xcc, 0x7b, 0xcd, 0x54, 0xce, 0x32, 0xcf, 0x09, 0xd0,
- 0xd7, 0xd0, 0xc9, 0xd1, 0xc1, 0xd2, 0xb8, 0xd3, 0xb6, 0xd4, 0xae, 0xd5,
- 0xbc, 0xd6, 0xca, 0xd7, 0xd2, 0xd8, 0xca, 0xd9, 0xbd, 0xda, 0xc8, 0xdb,
- 0xd8, 0xdc, 0xf9, 0xdd, 0x08, 0xdf, 0x1e, 0xe0, 0x39, 0xe1, 0x4e, 0xe2,
- 0x60, 0xe3, 0x7a, 0xe4, 0x96, 0xe5, 0xc1, 0xe6, 0xde, 0xe7, 0x0e, 0xe9,
- 0x2a, 0xea, 0x42, 0xeb, 0x7a, 0xec, 0x9f, 0xed, 0xbb, 0xee, 0xd6, 0xef,
- 0xef, 0xf0, 0x0e, 0xf2, 0x30, 0xf3, 0x55, 0xf4, 0x68, 0xf5, 0x7e, 0xf6,
- 0xa4, 0xf7, 0xc0, 0xf8, 0xea, 0xf9, 0x10, 0xfb, 0x41, 0xfc, 0x7d, 0xfd,
- 0xad, 0xfe, 0xe3, 0xff, 0x10, 0x01, 0x27, 0x02, 0x58, 0x03, 0x74, 0x04,
- 0xa4, 0x05, 0xd5, 0x06, 0x0b, 0x08, 0x36, 0x09, 0x5c, 0x0a, 0x76, 0x0b,
- 0x9a, 0x0c, 0xc1, 0x0d, 0xd8, 0x0e, 0xf5, 0x0f, 0x15, 0x11, 0x3f, 0x12,
- 0x70, 0x13, 0x8e, 0x14, 0xcc, 0x15, 0xf2, 0x16, 0x31, 0x18, 0x4b, 0x19,
- 0x82, 0x1a, 0xa1, 0x1b, 0xbc, 0x1c, 0xde, 0x1d, 0xe9, 0x1e, 0x13, 0x20,
- 0x33, 0x21, 0x6c, 0x22, 0x80, 0x23, 0xa7, 0x24, 0xbc, 0x25, 0xde, 0x26,
- 0xe7, 0x27, 0x07, 0x29, 0x28, 0x2a, 0x36, 0x2b, 0x4d, 0x2c, 0x71, 0x2d,
- 0x91, 0x2e, 0xbe, 0x2f, 0xd6, 0x30, 0xfb, 0x31, 0x20, 0x33, 0x46, 0x34,
- 0x59, 0x35, 0x7a, 0x36, 0xa1, 0x37, 0xc2, 0x38, 0xdf, 0x39, 0x01, 0x3b,
- 0x0f, 0x3c, 0x27, 0x3d, 0x1f, 0x3e, 0x2e, 0x3f, 0x43, 0x40, 0x5b, 0x41,
- 0x73, 0x42, 0x8e, 0x43, 0xaf, 0x44, 0xbc, 0x45, 0xcc, 0x46, 0xd8, 0x47,
- 0xec, 0x48, 0xe1, 0x49, 0xd1, 0x4a, 0xc4, 0x4b, 0xb6, 0x4c, 0xa9, 0x4d,
- 0x9d, 0x4e, 0x88, 0x4f, 0x75, 0x50, 0x4c, 0x51, 0x3b, 0x52, 0x05, 0x53,
- 0xd9, 0x53, 0xa1, 0x54, 0x6f, 0x55, 0x33, 0x56, 0xe5, 0x56, 0x7d, 0x57,
- 0x15, 0x58, 0xb3, 0x58, 0x4e, 0x59, 0xdb, 0x59, 0x55, 0x5a, 0xc8, 0x5a,
- 0x36, 0x5b, 0xa9, 0x5b, 0x09, 0x5c, 0x5a, 0x5c, 0xab, 0x5c, 0xf1, 0x5c,
- 0x34, 0x5d, 0x6a, 0x5d, 0x9e, 0x5d, 0xc1, 0x5d, 0xea, 0x5d, 0x0b, 0x5e,
- 0x28, 0x5e, 0x3d, 0x5e, 0x41, 0x5e, 0x51, 0x5e, 0x5f, 0x5e, 0x69, 0x5e,
- 0x79, 0x5e, 0x6a, 0x5e, 0x78, 0x5e, 0x76, 0x5e, 0x7f, 0x5e, 0x72, 0x5e,
- 0x70, 0x5e, 0x61, 0x5e, 0x61, 0x5e, 0x42, 0x5e, 0x36, 0x5e, 0x2f, 0x5e,
- 0x2c, 0x5e, 0x1a, 0x5e, 0xec, 0x5d, 0xbf, 0x5d, 0x94, 0x5d, 0x71, 0x5d,
- 0x4c, 0x5d, 0x24, 0x5d, 0xfa, 0x5c, 0xc3, 0x5c, 0x8c, 0x5c, 0x59, 0x5c,
- 0x3e, 0x5c, 0x0c, 0x5c, 0xd3, 0x5b, 0xb1, 0x5b, 0x78, 0x5b, 0x45, 0x5b,
- 0x14, 0x5b, 0xed, 0x5a, 0xc0, 0x5a, 0x89, 0x5a, 0x4f, 0x5a, 0x16, 0x5a,
- 0xe5, 0x59, 0xb5, 0x59, 0x84, 0x59, 0x4e, 0x59, 0x0d, 0x59, 0xcf, 0x58,
- 0xa6, 0x58, 0x79, 0x58, 0x3e, 0x58, 0xf8, 0x57, 0xc0, 0x57, 0x83, 0x57,
- 0x38, 0x57, 0x03, 0x57, 0xc1, 0x56, 0x65, 0x56, 0xe0, 0x55, 0x52, 0x55,
- 0xd0, 0x54, 0x4c, 0x54, 0xbe, 0x53, 0x32, 0x53, 0xa7, 0x52, 0x2a, 0x52,
- 0x95, 0x51, 0x09, 0x51, 0x76, 0x50, 0xe9, 0x4f, 0x69, 0x4f, 0xe2, 0x4e,
- 0x49, 0x4e, 0xc0, 0x4d, 0x38, 0x4d, 0xbd, 0x4c, 0x2d, 0x4c, 0x98, 0x4b,
- 0x07, 0x4b, 0x76, 0x4a, 0xdc, 0x49, 0x4a, 0x49, 0xb9, 0x48, 0x2d, 0x48,
- 0x9c, 0x47, 0x19, 0x47, 0x80, 0x46, 0xf9, 0x45, 0x66, 0x45, 0xd6, 0x44,
- 0x47, 0x44, 0xb5, 0x43, 0x14, 0x43, 0x74, 0x42, 0xd4, 0x41, 0x42, 0x41,
- 0xa4, 0x40, 0x18, 0x40, 0x85, 0x3f, 0xeb, 0x3e, 0x52, 0x3e, 0xb2, 0x3d,
- 0x0c, 0x3d, 0x7a, 0x3c, 0xdb, 0x3b, 0x3a, 0x3b, 0x87, 0x3a, 0xe0, 0x39,
- 0x29, 0x39, 0x88, 0x38, 0xd1, 0x37, 0x16, 0x37, 0x4d, 0x36, 0x9e, 0x35,
- 0xdc, 0x34, 0x19, 0x34, 0x4a, 0x33, 0x83, 0x32, 0xb7, 0x31, 0xec, 0x30,
- 0x1c, 0x30, 0x47, 0x2f, 0x71, 0x2e, 0x88, 0x2d, 0xa6, 0x2c, 0xbb, 0x2b,
- 0xd0, 0x2a, 0xd8, 0x29, 0xdb, 0x28, 0xe3, 0x27, 0xf5, 0x26, 0xf1, 0x25,
- 0xf8, 0x24, 0xdc, 0x23, 0xdb, 0x22, 0xca, 0x21, 0xa7, 0x20, 0x85, 0x1f,
- 0x5a, 0x1e, 0x30, 0x1d, 0x0a, 0x1c, 0xd5, 0x1a, 0xa6, 0x19, 0x6d, 0x18,
- 0x3d, 0x17, 0xff, 0x15, 0xbf, 0x14, 0x81, 0x13, 0x57, 0x12, 0x15, 0x11,
- 0xe0, 0x0f, 0xa2, 0x0e, 0x65, 0x0d, 0x27, 0x0c, 0xf1, 0x0a, 0xb2, 0x09,
- 0x77, 0x08, 0x4b, 0x07, 0x0a, 0x06, 0xc9, 0x04, 0x97, 0x03, 0x65, 0x02,
- 0x3b, 0x01, 0x03, 0x00, 0xd2, 0xfe, 0x95, 0xfd, 0x6f, 0xfc, 0x50, 0xfb,
- 0x19, 0xfa, 0xf0, 0xf8, 0xb8, 0xf7, 0x97, 0xf6, 0x65, 0xf5, 0x48, 0xf4,
- 0x24, 0xf3, 0xfe, 0xf1, 0xec, 0xf0, 0xd2, 0xef, 0xa9, 0xee, 0x95, 0xed,
- 0x76, 0xec, 0x64, 0xeb, 0x61, 0xea, 0x43, 0xe9, 0x3a, 0xe8, 0x21, 0xe7,
- 0x14, 0xe6, 0xff, 0xe4, 0x06, 0xe4, 0x04, 0xe3, 0x04, 0xe2, 0x01, 0xe1,
- 0x02, 0xe0, 0x04, 0xdf, 0x16, 0xde, 0x1f, 0xdd, 0x29, 0xdc, 0x2d, 0xdb,
- 0x3d, 0xda, 0x45, 0xd9, 0x5a, 0xd8, 0x6f, 0xd7, 0x74, 0xd6, 0x8a, 0xd5,
- 0x91, 0xd4, 0xa5, 0xd3, 0xbb, 0xd2, 0xdb, 0xd1, 0x01, 0xd1, 0x17, 0xd0,
- 0x42, 0xcf, 0x5e, 0xce, 0x94, 0xcd, 0xb1, 0xcc, 0xe8, 0xcb, 0x04, 0xcb,
- 0x29, 0xca, 0x4e, 0xc9, 0x78, 0xc8, 0x99, 0xc7, 0xc4, 0xc6, 0xff, 0xc5,
- 0x3d, 0xc5, 0x76, 0xc4, 0xa6, 0xc3, 0xe4, 0xc2, 0x17, 0xc2, 0x4e, 0xc1,
- 0x8a, 0xc0, 0xc5, 0xbf, 0x0b, 0xbf, 0x42, 0xbe, 0x8e, 0xbd, 0xd8, 0xbc,
- 0x20, 0xbc, 0x60, 0xbb, 0xbb, 0xba, 0x08, 0xba, 0x5a, 0xb9, 0xba, 0xb8,
- 0x08, 0xb8, 0x64, 0xb7, 0xb1, 0xb6, 0x0c, 0xb6, 0x5d, 0xb5, 0xbf, 0xb4,
- 0x10, 0xb4, 0x7b, 0xb3, 0xd0, 0xb2, 0x3d, 0xb2, 0xa1, 0xb1, 0x0f, 0xb1,
- 0x84, 0xb0, 0xf2, 0xaf, 0x63, 0xaf, 0xd3, 0xae, 0x50, 0xae, 0xbd, 0xad,
- 0x49, 0xad, 0xc1, 0xac, 0x4d, 0xac, 0xc6, 0xab, 0x56, 0xab, 0xe4, 0xaa,
- 0x83, 0xaa, 0x0d, 0xaa, 0xac, 0xa9, 0x49, 0xa9, 0xf3, 0xa8, 0x9e, 0xa8,
- 0x4e, 0xa8, 0x07, 0xa8, 0xc5, 0xa7, 0x8d, 0xa7, 0x56, 0xa7, 0x1d, 0xa7,
- 0xf6, 0xa6, 0xc7, 0xa6, 0xad, 0xa6, 0x8c, 0xa6, 0x74, 0xa6, 0x58, 0xa6,
- 0x47, 0xa6, 0x2d, 0xa6, 0x24, 0xa6, 0x23, 0xa6, 0x21, 0xa6, 0x19, 0xa6,
- 0x20, 0xa6, 0x1f, 0xa6, 0x28, 0xa6, 0x3c, 0xa6, 0x4e, 0xa6, 0x59, 0xa6,
- 0x6e, 0xa6, 0x84, 0xa6, 0x9a, 0xa6, 0xb7, 0xa6, 0xd4, 0xa6, 0xef, 0xa6,
- 0x0a, 0xa7, 0x2f, 0xa7, 0x53, 0xa7, 0x77, 0xa7, 0x9c, 0xa7, 0xbc, 0xa7,
- 0xe5, 0xa7, 0x10, 0xa8, 0x35, 0xa8, 0x6d, 0xa8, 0x9b, 0xa8, 0xcb, 0xa8,
- 0xf5, 0xa8, 0x23, 0xa9, 0x5a, 0xa9, 0x80, 0xa9, 0xb7, 0xa9, 0xee, 0xa9,
- 0x1c, 0xaa, 0x46, 0xaa, 0x78, 0xaa, 0xb2, 0xaa, 0xeb, 0xaa, 0x1a, 0xab,
- 0x57, 0xab, 0x84, 0xab, 0xba, 0xab, 0xef, 0xab, 0x22, 0xac, 0x55, 0xac,
- 0x88, 0xac, 0xc1, 0xac, 0xf5, 0xac, 0x2a, 0xad, 0x67, 0xad, 0x9f, 0xad,
- 0xe0, 0xad, 0x14, 0xae, 0x4c, 0xae, 0x82, 0xae, 0xb8, 0xae, 0xf8, 0xae,
- 0x2c, 0xaf, 0x6a, 0xaf, 0x9d, 0xaf, 0xd4, 0xaf, 0x05, 0xb0, 0x38, 0xb0,
- 0x77, 0xb0, 0xb2, 0xb0, 0xf8, 0xb0, 0x3c, 0xb1, 0x97, 0xb1, 0x05, 0xb2,
- 0x6f, 0xb2, 0xdf, 0xb2, 0x48, 0xb3, 0xb2, 0xb3, 0x16, 0xb4, 0x7b, 0xb4,
- 0xe5, 0xb4, 0x54, 0xb5, 0xc3, 0xb5, 0x26, 0xb6, 0x97, 0xb6, 0x03, 0xb7,
- 0x68, 0xb7, 0xce, 0xb7, 0x44, 0xb8, 0xae, 0xb8, 0x20, 0xb9, 0x87, 0xb9,
- 0xf1, 0xb9, 0x5d, 0xba, 0xc6, 0xba, 0x24, 0xbb, 0xa1, 0xbb, 0x05, 0xbc,
- 0x79, 0xbc, 0xdc, 0xbc, 0x4b, 0xbd, 0xba, 0xbd, 0x24, 0xbe, 0x9b, 0xbe,
- 0x07, 0xbf, 0x72, 0xbf, 0xe5, 0xbf, 0x46, 0xc0, 0xc3, 0xc0, 0x1f, 0xc1,
- 0x91, 0xc1, 0x01, 0xc2, 0x79, 0xc2, 0xf1, 0xc2, 0x66, 0xc3, 0xe5, 0xc3,
- 0x55, 0xc4, 0xc8, 0xc4, 0x3e, 0xc5, 0xb3, 0xc5, 0x2d, 0xc6, 0xa7, 0xc6,
- 0x27, 0xc7, 0x97, 0xc7, 0x1f, 0xc8, 0xa0, 0xc8, 0x29, 0xc9, 0xad, 0xc9,
- 0x36, 0xca, 0xad, 0xca, 0x3d, 0xcb, 0xc0, 0xcb, 0x47, 0xcc, 0xe9, 0xcc,
- 0x6f, 0xcd, 0x06, 0xce, 0x84, 0xce, 0x1a, 0xcf, 0xbb, 0xcf, 0x55, 0xd0,
- 0xf6, 0xd0, 0x8b, 0xd1, 0x30, 0xd2, 0xd2, 0xd2, 0x79, 0xd3, 0x1c, 0xd4,
- 0xcf, 0xd4, 0x83, 0xd5, 0x36, 0xd6, 0xe1, 0xd6, 0x96, 0xd7, 0x5f, 0xd8,
- 0x1c, 0xd9, 0xe2, 0xd9, 0xa8, 0xda, 0x6c, 0xdb, 0x43, 0xdc, 0x04, 0xdd,
- 0xd8, 0xdd, 0xac, 0xde, 0x8a, 0xdf, 0x5b, 0xe0, 0x39, 0xe1, 0x0b, 0xe2,
- 0xf5, 0xe2, 0xde, 0xe3, 0xbc, 0xe4, 0x9e, 0xe5, 0x83, 0xe6, 0x62, 0xe7,
- 0x51, 0xe8, 0x34, 0xe9, 0x1e, 0xea, 0x12, 0xeb, 0xf7, 0xeb, 0xe5, 0xec,
- 0xc5, 0xed, 0xc2, 0xee, 0xb1, 0xef, 0xa6, 0xf0, 0x90, 0xf1, 0x7e, 0xf2,
- 0x6f, 0xf3, 0x56, 0xf4, 0x48, 0xf5, 0x35, 0xf6, 0x29, 0xf7, 0x17, 0xf8,
- 0x0a, 0xf9, 0x00, 0xfa, 0xe7, 0xfa, 0xde, 0xfb, 0xc9, 0xfc, 0xc1, 0xfd,
- 0xac, 0xfe, 0xae, 0xff, 0xa2, 0x00, 0x8d, 0x01, 0x70, 0x02, 0x62, 0x03,
- 0x4e, 0x04, 0x3a, 0x05, 0x26, 0x06, 0x16, 0x07, 0xff, 0x07, 0xf3, 0x08,
- 0xda, 0x09, 0xbe, 0x0a, 0xb9, 0x0b, 0xa1, 0x0c, 0x9b, 0x0d, 0x7d, 0x0e,
- 0x66, 0x0f, 0x54, 0x10, 0x36, 0x11, 0x20, 0x12, 0x11, 0x13, 0xf3, 0x13,
- 0xea, 0x14, 0xd1, 0x15, 0xb6, 0x16, 0x9b, 0x17, 0x83, 0x18, 0x7f, 0x19,
- 0x58, 0x1a, 0x53, 0x1b, 0x37, 0x1c, 0x22, 0x1d, 0x0a, 0x1e, 0xf3, 0x1e,
- 0xda, 0x1f, 0xca, 0x20, 0xb1, 0x21, 0x96, 0x22, 0x70, 0x23, 0x55, 0x24,
- 0x39, 0x25, 0x39, 0x26, 0x1a, 0x27, 0x07, 0x28, 0xe1, 0x28, 0xc5, 0x29,
- 0xa7, 0x2a, 0x85, 0x2b, 0x70, 0x2c, 0x4e, 0x2d, 0x3e, 0x2e, 0x19, 0x2f,
- 0xf3, 0x2f, 0xdf, 0x30, 0xc0, 0x31, 0xaf, 0x32, 0x93, 0x33, 0x77, 0x34,
- 0x48, 0x35, 0x2a, 0x36, 0x0f, 0x37, 0xf8, 0x37, 0xd9, 0x38, 0xbe, 0x39,
- 0x8b, 0x3a, 0x74, 0x3b, 0x48, 0x3c, 0x2d, 0x3d, 0xfa, 0x3d, 0xe7, 0x3e,
- 0xb0, 0x3f, 0x98, 0x40, 0x67, 0x41, 0x3a, 0x42, 0x16, 0x43, 0xf4, 0x43,
- 0xd8, 0x44, 0xa4, 0x45, 0x7c, 0x46, 0x4c, 0x47, 0x2a, 0x48, 0x06, 0x49,
- 0xce, 0x49, 0xa5, 0x4a, 0x77, 0x4b, 0x4e, 0x4c, 0x13, 0x4d, 0xdf, 0x4d,
- 0xaa, 0x4e, 0x74, 0x4f, 0x3d, 0x50, 0xfc, 0x50, 0xbd, 0x51, 0x8c, 0x52,
- 0x3e, 0x53, 0xfe, 0x53, 0x99, 0x54, 0x57, 0x55, 0xfc, 0x55, 0xab, 0x56,
- 0x45, 0x57, 0xd6, 0x57, 0x87, 0x58, 0x2f, 0x59, 0xbf, 0x59, 0x48, 0x5a,
- 0xc7, 0x5a, 0x54, 0x5b, 0xc8, 0x5b, 0x45, 0x5c, 0xb4, 0x5c, 0x25, 0x5d,
- 0x7e, 0x5d, 0xda, 0x5d, 0x36, 0x5e, 0xa5, 0x5e, 0xe9, 0x5e, 0x37, 0x5f,
- 0x72, 0x5f, 0xab, 0x5f, 0xe5, 0x5f, 0x1d, 0x60, 0x4f, 0x60, 0x81, 0x60,
- 0x9c, 0x60, 0xc3, 0x60, 0xdc, 0x60, 0xf7, 0x60, 0x04, 0x61, 0x16, 0x61,
- 0x1b, 0x61, 0x21, 0x61, 0x20, 0x61, 0x0d, 0x61, 0x0b, 0x61, 0xf0, 0x60,
- 0xe5, 0x60, 0xc7, 0x60, 0xb3, 0x60, 0x98, 0x60, 0x7c, 0x60, 0x59, 0x60,
- 0x4c, 0x60, 0x24, 0x60, 0x0d, 0x60, 0xdf, 0x5f, 0xb7, 0x5f, 0x87, 0x5f,
- 0x6b, 0x5f, 0x44, 0x5f, 0x28, 0x5f, 0xf5, 0x5e, 0xbd, 0x5e, 0x8f, 0x5e,
- 0x5c, 0x5e, 0x2a, 0x5e, 0xfe, 0x5d, 0xcd, 0x5d, 0xa4, 0x5d, 0x75, 0x5d,
- 0x4d, 0x5d, 0x11, 0x5d, 0xdf, 0x5c, 0xa9, 0x5c, 0x78, 0x5c, 0x42, 0x5c,
- 0x13, 0x5c, 0xde, 0x5b, 0xaf, 0x5b, 0x75, 0x5b, 0x3e, 0x5b, 0xfd, 0x5a,
- 0xbc, 0x5a, 0x90, 0x5a, 0x54, 0x5a, 0x1f, 0x5a, 0xe5, 0x59, 0xc2, 0x59,
- 0x80, 0x59, 0x39, 0x59, 0x0a, 0x59, 0xd6, 0x58, 0x96, 0x58, 0x55, 0x58,
- 0x1e, 0x58, 0xf1, 0x57, 0xc8, 0x57, 0x7e, 0x57, 0x44, 0x57, 0x11, 0x57,
- 0xd4, 0x56, 0x93, 0x56, 0x4c, 0x56, 0x11, 0x56, 0xd7, 0x55, 0xae, 0x55,
- 0x72, 0x55, 0x3c, 0x55, 0x0c, 0x55, 0xd1, 0x54, 0x98, 0x54, 0x63, 0x54,
- 0x2b, 0x54, 0xf8, 0x53, 0xc6, 0x53, 0x81, 0x53, 0x4b, 0x53, 0x19, 0x53,
- 0xea, 0x52, 0xb2, 0x52, 0x7e, 0x52, 0x30, 0x52, 0xc5, 0x51, 0x46, 0x51,
- 0xca, 0x50, 0x55, 0x50, 0xd7, 0x4f, 0x5d, 0x4f, 0xe4, 0x4e, 0x79, 0x4e,
- 0xfb, 0x4d, 0x83, 0x4d, 0x02, 0x4d, 0x8a, 0x4c, 0x1f, 0x4c, 0x98, 0x4b,
- 0x20, 0x4b, 0xa7, 0x4a, 0x36, 0x4a, 0xc0, 0x49, 0x44, 0x49, 0xc3, 0x48,
- 0x44, 0x48, 0xd5, 0x47, 0x59, 0x47, 0xe6, 0x46, 0x63, 0x46, 0xf8, 0x45,
- 0x79, 0x45, 0xfa, 0x44, 0x80, 0x44, 0x01, 0x44, 0x7a, 0x43, 0x04, 0x43,
- 0x85, 0x42, 0x07, 0x42, 0x92, 0x41, 0x17, 0x41, 0x94, 0x40, 0x16, 0x40,
- 0x9f, 0x3f, 0x20, 0x3f, 0x9c, 0x3e, 0x29, 0x3e, 0x9c, 0x3d, 0x20, 0x3d,
- 0x88, 0x3c, 0x0c, 0x3c, 0x87, 0x3b, 0x07, 0x3b, 0x89, 0x3a, 0xfb, 0x39,
- 0x6f, 0x39, 0xe7, 0x38, 0x55, 0x38, 0xcf, 0x37, 0x43, 0x37, 0xb5, 0x36,
- 0x2a, 0x36, 0x9c, 0x35, 0x0a, 0x35, 0x83, 0x34, 0xe6, 0x33, 0x53, 0x33,
- 0xba, 0x32, 0x1d, 0x32, 0x78, 0x31, 0xcb, 0x30, 0x34, 0x30, 0x8e, 0x2f,
- 0xf6, 0x2e, 0x56, 0x2e, 0xab, 0x2d, 0xfe, 0x2c, 0x4c, 0x2c, 0x9f, 0x2b,
- 0xed, 0x2a, 0x36, 0x2a, 0x7b, 0x29, 0xb9, 0x28, 0x02, 0x28, 0x41, 0x27,
- 0x81, 0x26, 0xb9, 0x25, 0xfb, 0x24, 0x2d, 0x24, 0x66, 0x23, 0x98, 0x22,
- 0xc6, 0x21, 0xe9, 0x20, 0x0d, 0x20, 0x28, 0x1f, 0x4c, 0x1e, 0x64, 0x1d,
- 0x66, 0x1c, 0x8c, 0x1b, 0x96, 0x1a, 0xac, 0x19, 0xb2, 0x18, 0xbb, 0x17,
- 0xc2, 0x16, 0xc7, 0x15, 0xcb, 0x14, 0xcd, 0x13, 0xc4, 0x12, 0xca, 0x11,
- 0xb6, 0x10, 0xb8, 0x0f, 0xa3, 0x0e, 0x9e, 0x0d, 0x88, 0x0c, 0x86, 0x0b,
- 0x7b, 0x0a, 0x7c, 0x09, 0x6d, 0x08, 0x5b, 0x07, 0x4a, 0x06, 0x38, 0x05,
- 0x2f, 0x04, 0x1c, 0x03, 0x10, 0x02, 0xf6, 0x00, 0xe9, 0xff, 0xe5, 0xfe,
- 0xcf, 0xfd, 0xc8, 0xfc, 0xb1, 0xfb, 0xa7, 0xfa, 0x8d, 0xf9, 0x7b, 0xf8,
- 0x7e, 0xf7, 0x77, 0xf6, 0x68, 0xf5, 0x62, 0xf4, 0x49, 0xf3, 0x42, 0xf2,
- 0x41, 0xf1, 0x3e, 0xf0, 0x49, 0xef, 0x47, 0xee, 0x56, 0xed, 0x46, 0xec,
- 0x56, 0xeb, 0x5c, 0xea, 0x6c, 0xe9, 0x7d, 0xe8, 0x9c, 0xe7, 0x99, 0xe6,
- 0xbf, 0xe5, 0xc9, 0xe4, 0xe5, 0xe3, 0xfd, 0xe2, 0x17, 0xe2, 0x26, 0xe1,
- 0x44, 0xe0, 0x6d, 0xdf, 0x9f, 0xde, 0xc5, 0xdd, 0xec, 0xdc, 0x26, 0xdc,
- 0x58, 0xdb, 0x91, 0xda, 0xb7, 0xd9, 0xf5, 0xd8, 0x27, 0xd8, 0x63, 0xd7,
- 0x96, 0xd6, 0xd5, 0xd5, 0x1a, 0xd5, 0x52, 0xd4, 0x9d, 0xd3, 0xde, 0xd2,
- 0x27, 0xd2, 0x6c, 0xd1, 0xb3, 0xd0, 0xf6, 0xcf, 0x51, 0xcf, 0x98, 0xce,
- 0xe9, 0xcd, 0x2f, 0xcd, 0x88, 0xcc, 0xdc, 0xcb, 0x41, 0xcb, 0x9f, 0xca,
- 0x01, 0xca, 0x60, 0xc9, 0xc4, 0xc8, 0x13, 0xc8, 0x7e, 0xc7, 0xe2, 0xc6,
- 0x51, 0xc6, 0xb6, 0xc5, 0x1a, 0xc5, 0x8e, 0xc4, 0xf6, 0xc3, 0x74, 0xc3,
- 0xdf, 0xc2, 0x59, 0xc2, 0xd2, 0xc1, 0x47, 0xc1, 0xbe, 0xc0, 0x3b, 0xc0,
- 0xbe, 0xbf, 0x3e, 0xbf, 0xc4, 0xbe, 0x39, 0xbe, 0xbf, 0xbd, 0x3e, 0xbd,
- 0xd7, 0xbc, 0x5d, 0xbc, 0xec, 0xbb, 0x73, 0xbb, 0x07, 0xbb, 0x96, 0xba,
- 0x24, 0xba, 0xb5, 0xb9, 0x49, 0xb9, 0xdd, 0xb8, 0x76, 0xb8, 0x02, 0xb8,
- 0xa8, 0xb7, 0x3c, 0xb7, 0xee, 0xb6, 0x82, 0xb6, 0x2b, 0xb6, 0xc3, 0xb5,
- 0x6e, 0xb5, 0x14, 0xb5, 0xc4, 0xb4, 0x6b, 0xb4, 0x20, 0xb4, 0xd2, 0xb3,
- 0x78, 0xb3, 0x2c, 0xb3, 0xe6, 0xb2, 0x9e, 0xb2, 0x58, 0xb2, 0x1a, 0xb2,
- 0xea, 0xb1, 0xa6, 0xb1, 0x63, 0xb1, 0x2b, 0xb1, 0xf3, 0xb0, 0xb8, 0xb0,
- 0x7b, 0xb0, 0x4e, 0xb0, 0x20, 0xb0, 0xf9, 0xaf, 0xc6, 0xaf, 0xa2, 0xaf,
- 0x84, 0xaf, 0x5e, 0xaf, 0x44, 0xaf, 0x21, 0xaf, 0x06, 0xaf, 0xe9, 0xae,
- 0xe2, 0xae, 0xd0, 0xae, 0xc3, 0xae, 0xba, 0xae, 0xc1, 0xae, 0xaf, 0xae,
- 0xbc, 0xae, 0xb5, 0xae, 0xc0, 0xae, 0xc3, 0xae, 0xd7, 0xae, 0xdd, 0xae,
- 0xfb, 0xae, 0x0a, 0xaf, 0x16, 0xaf, 0x37, 0xaf, 0x4a, 0xaf, 0x70, 0xaf,
- 0x86, 0xaf, 0xa9, 0xaf, 0xc7, 0xaf, 0xec, 0xaf, 0x12, 0xb0, 0x42, 0xb0,
- 0x66, 0xb0, 0x91, 0xb0, 0xc0, 0xb0, 0xee, 0xb0, 0x1a, 0xb1, 0x4c, 0xb1,
- 0x77, 0xb1, 0xb3, 0xb1, 0xdd, 0xb1, 0x10, 0xb2, 0x47, 0xb2, 0x70, 0xb2,
- 0xb8, 0xb2, 0xef, 0xb2, 0x26, 0xb3, 0x64, 0xb3, 0x90, 0xb3, 0xd8, 0xb3,
- 0x07, 0xb4, 0x4b, 0xb4, 0x83, 0xb4, 0xc7, 0xb4, 0xf4, 0xb4, 0x35, 0xb5,
- 0x70, 0xb5, 0xbc, 0xb5, 0xf0, 0xb5, 0x39, 0xb6, 0x7d, 0xb6, 0xb7, 0xb6,
- 0xfa, 0xb6, 0x2e, 0xb7, 0x7d, 0xb7, 0xbb, 0xb7, 0x01, 0xb8, 0x39, 0xb8,
- 0x80, 0xb8, 0xbd, 0xb8, 0x05, 0xb9, 0x46, 0xb9, 0x94, 0xb9, 0xcd, 0xb9,
- 0x17, 0xba, 0x5b, 0xba, 0x9e, 0xba, 0xdf, 0xba, 0x27, 0xbb, 0x6a, 0xbb,
- 0xbc, 0xbb, 0xf6, 0xbb, 0x3a, 0xbc, 0x83, 0xbc, 0xc3, 0xbc, 0x16, 0xbd,
- 0x58, 0xbd, 0xa2, 0xbd, 0xe0, 0xbd, 0x24, 0xbe, 0x70, 0xbe, 0xa1, 0xbe,
- 0xfa, 0xbe, 0x37, 0xbf, 0x8d, 0xbf, 0xc9, 0xbf, 0x1d, 0xc0, 0x5d, 0xc0,
- 0xa6, 0xc0, 0xe6, 0xc0, 0x2f, 0xc1, 0x7a, 0xc1, 0xcb, 0xc1, 0x2f, 0xc2,
- 0x95, 0xc2, 0xfa, 0xc2, 0x55, 0xc3, 0xbb, 0xc3, 0x1e, 0xc4, 0x86, 0xc4,
- 0xec, 0xc4, 0x4b, 0xc5, 0xab, 0xc5, 0x04, 0xc6, 0x72, 0xc6, 0xc6, 0xc6,
- 0x3a, 0xc7, 0x8e, 0xc7, 0xfd, 0xc7, 0x5a, 0xc8, 0xc0, 0xc8, 0x17, 0xc9,
- 0x79, 0xc9, 0xd5, 0xc9, 0x43, 0xca, 0x98, 0xca, 0x05, 0xcb, 0x64, 0xcb,
- 0xc3, 0xcb, 0x1e, 0xcc, 0x81, 0xcc, 0xe3, 0xcc, 0x40, 0xcd, 0xa6, 0xcd,
- 0x0a, 0xce, 0x6a, 0xce, 0xc0, 0xce, 0x26, 0xcf, 0x81, 0xcf, 0xf0, 0xcf,
- 0x48, 0xd0, 0xad, 0xd0, 0x07, 0xd1, 0x71, 0xd1, 0xca, 0xd1, 0x2b, 0xd2,
- 0x8a, 0xd2, 0xed, 0xd2, 0x50, 0xd3, 0xa1, 0xd3, 0x0f, 0xd4, 0x6f, 0xd4,
- 0xd6, 0xd4, 0x30, 0xd5, 0x93, 0xd5, 0xf6, 0xd5, 0x55, 0xd6, 0xb5, 0xd6,
- 0x12, 0xd7, 0x7b, 0xd7, 0xde, 0xd7, 0x34, 0xd8, 0x93, 0xd8, 0xe9, 0xd8,
- 0x61, 0xd9, 0xbb, 0xd9, 0x2b, 0xda, 0x88, 0xda, 0xeb, 0xda, 0x4f, 0xdb,
- 0xb9, 0xdb, 0x21, 0xdc, 0x80, 0xdc, 0xf7, 0xdc, 0x53, 0xdd, 0xbb, 0xdd,
- 0x2b, 0xde, 0xa4, 0xde, 0x05, 0xdf, 0x74, 0xdf, 0xd8, 0xdf, 0x44, 0xe0,
- 0xb4, 0xe0, 0x26, 0xe1, 0x91, 0xe1, 0x01, 0xe2, 0x77, 0xe2, 0xeb, 0xe2,
- 0x5e, 0xe3, 0xc7, 0xe3, 0x44, 0xe4, 0xb2, 0xe4, 0x25, 0xe5, 0xa3, 0xe5,
- 0x15, 0xe6, 0x97, 0xe6, 0x0b, 0xe7, 0x8b, 0xe7, 0x10, 0xe8, 0x7d, 0xe8,
- 0x06, 0xe9, 0x74, 0xe9, 0xff, 0xe9, 0x82, 0xea, 0x01, 0xeb, 0x85, 0xeb,
- 0xfa, 0xeb, 0x91, 0xec, 0x07, 0xed, 0x8f, 0xed, 0x15, 0xee, 0x9a, 0xee,
- 0x26, 0xef, 0xa5, 0xef, 0x26, 0xf0, 0xb2, 0xf0, 0x3e, 0xf1, 0xca, 0xf1,
- 0x45, 0xf2, 0xcc, 0xf2, 0x51, 0xf3, 0xdc, 0xf3, 0x5c, 0xf4, 0xe8, 0xf4,
- 0x6e, 0xf5, 0xf9, 0xf5, 0x79, 0xf6, 0xf9, 0xf6, 0x7d, 0xf7, 0x08, 0xf8,
- 0x91, 0xf8, 0x18, 0xf9, 0x95, 0xf9, 0x18, 0xfa, 0xa5, 0xfa, 0x21, 0xfb,
- 0xa9, 0xfb, 0x2a, 0xfc, 0xa7, 0xfc, 0x23, 0xfd, 0xa3, 0xfd, 0x2b, 0xfe,
- 0x9c, 0xfe, 0x2b, 0xff, 0xa0, 0xff, 0x1c, 0x00, 0x9a, 0x00, 0x11, 0x01,
- 0x9a, 0x01, 0x14, 0x02, 0x8c, 0x02, 0x07, 0x03, 0x84, 0x03, 0xf7, 0x03,
- 0x75, 0x04, 0xf3, 0x04, 0x65, 0x05, 0xe8, 0x05, 0x54, 0x06, 0xd3, 0x06,
- 0x48, 0x07, 0xc2, 0x07, 0x38, 0x08, 0xad, 0x08, 0x28, 0x09, 0x99, 0x09,
- 0x11, 0x0a, 0x79, 0x0a, 0xf5, 0x0a, 0x5c, 0x0b, 0xd1, 0x0b, 0x3f, 0x0c,
- 0xb5, 0x0c, 0x2c, 0x0d, 0x9a, 0x0d, 0x0b, 0x0e, 0x74, 0x0e, 0xe6, 0x0e,
- 0x45, 0x0f, 0xbd, 0x0f, 0x2f, 0x10, 0x9a, 0x10, 0x05, 0x11, 0x6c, 0x11,
- 0xdb, 0x11, 0x40, 0x12, 0xaa, 0x12, 0x14, 0x13, 0x81, 0x13, 0xe9, 0x13,
- 0x4d, 0x14, 0xb9, 0x14, 0x18, 0x15, 0x88, 0x15, 0xe6, 0x15, 0x58, 0x16,
- 0xb9, 0x16, 0x1c, 0x17, 0x7e, 0x17, 0xe3, 0x17, 0x43, 0x18, 0xac, 0x18,
- 0x08, 0x19, 0x6d, 0x19, 0xce, 0x19, 0x34, 0x1a, 0x90, 0x1a, 0xf5, 0x1a,
- 0x53, 0x1b, 0xbb, 0x1b, 0x07, 0x1c, 0x6f, 0x1c, 0xc2, 0x1c, 0x28, 0x1d,
- 0x84, 0x1d, 0xe8, 0x1d, 0x35, 0x1e, 0xa2, 0x1e, 0xf8, 0x1e, 0x59, 0x1f,
- 0xb8, 0x1f, 0x0c, 0x20, 0x69, 0x20, 0xbe, 0x20, 0x19, 0x21, 0x66, 0x21,
- 0xc6, 0x21, 0x1f, 0x22, 0x70, 0x22, 0xbe, 0x22, 0x18, 0x23, 0x72, 0x23,
- 0xbf, 0x23, 0x0f, 0x24, 0x67, 0x24, 0xc0, 0x24, 0x08, 0x25, 0x51, 0x25,
- 0xa6, 0x25, 0xf4, 0x25, 0x42, 0x26, 0x93, 0x26, 0xd6, 0x26, 0x25, 0x27,
- 0x6c, 0x27, 0xb7, 0x27, 0x07, 0x28, 0x49, 0x28, 0x96, 0x28, 0xda, 0x28,
- 0x22, 0x29, 0x66, 0x29, 0xa4, 0x29, 0xe8, 0x29, 0x20, 0x2a, 0x62, 0x2a,
- 0xa9, 0x2a, 0xe5, 0x2a, 0x21, 0x2b, 0x5a, 0x2b, 0x97, 0x2b, 0xc1, 0x2b,
- 0xfe, 0x2b, 0x28, 0x2c, 0x57, 0x2c, 0x88, 0x2c, 0xae, 0x2c, 0xd3, 0x2c,
- 0xfa, 0x2c, 0x17, 0x2d, 0x33, 0x2d, 0x4b, 0x2d, 0x5d, 0x2d, 0x68, 0x2d,
- 0x81, 0x2d, 0x92, 0x2d, 0x9e, 0x2d, 0xa9, 0x2d, 0xbb, 0x2d, 0xc3, 0x2d,
- 0xcd, 0x2d, 0xd5, 0x2d, 0xcd, 0x2d, 0xdc, 0x2d, 0xe3, 0x2d, 0xe1, 0x2d,
- 0xdd, 0x2d, 0xd9, 0x2d, 0xd7, 0x2d, 0xcf, 0x2d, 0xe0, 0x2d, 0xd2, 0x2d,
- 0xd2, 0x2d, 0xcb, 0x2d, 0xb7, 0x2d, 0xb6, 0x2d, 0xa1, 0x2d, 0x9e, 0x2d,
- 0x8b, 0x2d, 0x84, 0x2d, 0x68, 0x2d, 0x6a, 0x2d, 0x4e, 0x2d, 0x45, 0x2d,
- 0x2f, 0x2d, 0x18, 0x2d, 0x15, 0x2d, 0xef, 0x2c, 0xe8, 0x2c, 0xc9, 0x2c,
- 0xc7, 0x2c, 0xaa, 0x2c, 0x9b, 0x2c, 0x7c, 0x2c, 0x64, 0x2c, 0x3c, 0x2c,
- 0x2e, 0x2c, 0x16, 0x2c, 0x05, 0x2c, 0xe1, 0x2b, 0xc8, 0x2b, 0xb5, 0x2b,
- 0x9a, 0x2b, 0x7c, 0x2b, 0x61, 0x2b, 0x3f, 0x2b, 0x21, 0x2b, 0x01, 0x2b,
- 0xee, 0x2a, 0xd0, 0x2a, 0xb3, 0x2a, 0x95, 0x2a, 0x6d, 0x2a, 0x50, 0x2a,
- 0x2b, 0x2a, 0x0b, 0x2a, 0xe9, 0x29, 0xd1, 0x29, 0xa8, 0x29, 0x97, 0x29,
- 0x6c, 0x29, 0x51, 0x29, 0x24, 0x29, 0x03, 0x29, 0xe6, 0x28, 0xbe, 0x28,
- 0xa1, 0x28, 0x80, 0x28, 0x64, 0x28, 0x38, 0x28, 0x12, 0x28, 0xf0, 0x27,
- 0xd3, 0x27, 0xac, 0x27, 0x94, 0x27, 0x67, 0x27, 0x4a, 0x27, 0x1c, 0x27,
- 0xf7, 0x26, 0xd1, 0x26, 0xb6, 0x26, 0x8d, 0x26, 0x6e, 0x26, 0x4b, 0x26,
- 0x25, 0x26, 0x02, 0x26, 0xd8, 0x25, 0xbe, 0x25, 0x93, 0x25, 0x7c, 0x25,
- 0x4a, 0x25, 0x27, 0x25, 0x07, 0x25, 0xdc, 0x24, 0xbb, 0x24, 0x9a, 0x24,
- 0x78, 0x24, 0x4c, 0x24, 0x26, 0x24, 0x00, 0x24, 0xd7, 0x23, 0xc0, 0x23,
- 0x94, 0x23, 0x71, 0x23, 0x45, 0x23, 0x1c, 0x23, 0x00, 0x23, 0xd4, 0x22,
- 0xb5, 0x22, 0x8e, 0x22, 0x67, 0x22, 0x39, 0x22, 0x00, 0x22, 0xbd, 0x21,
- 0x87, 0x21, 0x46, 0x21, 0x01, 0x21, 0xca, 0x20, 0x89, 0x20, 0x4a, 0x20,
- 0x17, 0x20, 0xd6, 0x1f, 0x9a, 0x1f, 0x5e, 0x1f, 0x20, 0x1f, 0xe0, 0x1e,
- 0xa3, 0x1e, 0x5f, 0x1e, 0x29, 0x1e, 0xf0, 0x1d, 0xb8, 0x1d, 0x78, 0x1d,
- 0x36, 0x1d, 0x04, 0x1d, 0xc6, 0x1c, 0x8b, 0x1c, 0x4d, 0x1c, 0x18, 0x1c,
- 0xd9, 0x1b, 0x97, 0x1b, 0x5c, 0x1b, 0x2b, 0x1b, 0xf4, 0x1a, 0xb1, 0x1a,
- 0x7c, 0x1a, 0x32, 0x1a, 0x02, 0x1a, 0xc6, 0x19, 0x8b, 0x19, 0x59, 0x19,
- 0x10, 0x19, 0xd7, 0x18, 0x9c, 0x18, 0x62, 0x18, 0x22, 0x18, 0xe8, 0x17,
- 0xb1, 0x17, 0x7c, 0x17, 0x34, 0x17, 0xf9, 0x16, 0xc0, 0x16, 0x8b, 0x16,
- 0x55, 0x16, 0x14, 0x16, 0xdd, 0x15, 0x9f, 0x15, 0x65, 0x15, 0x2b, 0x15,
- 0xea, 0x14, 0xb9, 0x14, 0x70, 0x14, 0x3d, 0x14, 0x05, 0x14, 0xc1, 0x13,
- 0x86, 0x13, 0x45, 0x13, 0x09, 0x13, 0xca, 0x12, 0x90, 0x12, 0x57, 0x12,
- 0x1a, 0x12, 0xe1, 0x11, 0x9b, 0x11, 0x61, 0x11, 0x1d, 0x11, 0xe1, 0x10,
- 0x9d, 0x10, 0x64, 0x10, 0x17, 0x10, 0xde, 0x0f, 0xa1, 0x0f, 0x60, 0x0f,
- 0x1b, 0x0f, 0xd8, 0x0e, 0x90, 0x0e, 0x5b, 0x0e, 0x0e, 0x0e, 0xd3, 0x0d,
- 0x86, 0x0d, 0x4d, 0x0d, 0xf5, 0x0c, 0xba, 0x0c, 0x68, 0x0c, 0x2a, 0x0c,
- 0xde, 0x0b, 0x94, 0x0b, 0x4e, 0x0b, 0x07, 0x0b, 0xbb, 0x0a, 0x6c, 0x0a,
- 0x25, 0x0a, 0xd4, 0x09, 0x89, 0x09, 0x39, 0x09, 0xe6, 0x08, 0xa3, 0x08,
- 0x4f, 0x08, 0x02, 0x08, 0xa7, 0x07, 0x5f, 0x07, 0x08, 0x07, 0xba, 0x06,
- 0x68, 0x06, 0x1f, 0x06, 0xc5, 0x05, 0x7a, 0x05, 0x1f, 0x05, 0xd7, 0x04,
- 0x85, 0x04, 0x31, 0x04, 0xde, 0x03, 0x89, 0x03, 0x3a, 0x03, 0xe9, 0x02,
- 0x96, 0x02, 0x47, 0x02, 0xf7, 0x01, 0xa4, 0x01, 0x5d, 0x01, 0x06, 0x01,
- 0xb9, 0x00, 0x00, 0x00
-};
-unsigned int kick_raw_len = 6352;
diff --git a/third-party/TeensyVariablePlayback.O/keywords.txt b/third-party/TeensyVariablePlayback.O/keywords.txt
deleted file mode 100644
index 6f5a33f..0000000
--- a/third-party/TeensyVariablePlayback.O/keywords.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-AudioPlayArrayResmp KEYWORD2
-AudioPlaySdResmp KEYWORD2
-playRaw KEYWORD2
-playWav KEYWORD2
-isPlaying KEYWORD2
-setPlaybackRate KEYWORD2
-setLoopType KEYWORD2
-startLoop KEYWORD2
-enableInterpolation KEYWORD2
-looptype_none LITERAL1
-looptype_repeat LITERAL1
-looptype_pingpong LITERAL1
\ No newline at end of file
diff --git a/third-party/TeensyVariablePlayback.O/library.json b/third-party/TeensyVariablePlayback.O/library.json
deleted file mode 100644
index da4a8d5..0000000
--- a/third-party/TeensyVariablePlayback.O/library.json
+++ /dev/null
@@ -1,37 +0,0 @@
-{
- "name": "TeensyVariablePlayback",
- "frameworks": "Arduino",
- "platforms": "Teensy",
- "keywords": "sound, audio, sample, resample, pitch, interpolation, legrange, sampler, playback, speed, loop",
- "description": "Teensy Variable Playback",
- "url": "https://github.com/newdigate/teensy-variable-playback",
- "version": "1.0.16",
- "export": {
- "exclude": [
- ".vscode",
- ".github",
- "extras",
- "test",
- "cmake",
- "docs"
- ]
- },
- "authors":
- {
- "name": "Nic Newdigate",
- "maintainer": true
- },
- "repository":
- {
- "type": "git",
- "url": "https://github.com/newdigate/teensy-variable-playback"
- },
- "dependencies":[{
- "name": "Audio",
- "frameworks": "arduino"
- }],
- "examples": [
- "examples/*/*.ino",
- "examples/*/*/*.ino"
- ]
- }
\ No newline at end of file
diff --git a/third-party/TeensyVariablePlayback.O/library.properties b/third-party/TeensyVariablePlayback.O/library.properties
deleted file mode 100644
index 803798f..0000000
--- a/third-party/TeensyVariablePlayback.O/library.properties
+++ /dev/null
@@ -1,9 +0,0 @@
-name=TeensyVariablePlayback
-version=1.0.16
-author=Nic Newdigate
-maintainer=Nic Newdigate
-sentence=Play samples at variable pitch using Teensy Audio Library
-paragraph=Adds AudioPlaySdRawResmp, AudioPlaySdWavResmp, AudioPlayArrayResmp objects to with pitch and loop controls
-category=Signal Input/Output
-url=https://github.com/newdigate/teensy-variable-playback
-architectures=*
diff --git a/third-party/TeensyVariablePlayback.O/src/CMakeLists.linux.cmake.in b/third-party/TeensyVariablePlayback.O/src/CMakeLists.linux.cmake.in
deleted file mode 100644
index d551486..0000000
--- a/third-party/TeensyVariablePlayback.O/src/CMakeLists.linux.cmake.in
+++ /dev/null
@@ -1,52 +0,0 @@
-message("building for linux...")
-add_definitions(-DBUILD_FOR_LINUX)
-
-set(INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/include/teensy_variable_playback/)
-set(LIB_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/lib/teensy_variable_playback )
-
-find_package(teensy_x86_stubs)
-include_directories(${teensy_x86_stubs_INCLUDE_DIR})
-
-find_package(teensy_audio_x86_stubs)
-include_directories(${teensy_audio_x86_stubs_INCLUDE_DIR})
-
-find_package(teensy_x86_sd_stubs)
-include_directories(${teensy_x86_sd_stubs_INCLUDE_DIR})
-
-add_library(teensy_variable_playback STATIC
- ${HEADER_FILES}
- ${SOURCE_FILES}
- )
-
-set_target_properties(teensy_variable_playback PROPERTIES PUBLIC_HEADER "${HEADER_FILES}")
-set_target_properties(teensy_variable_playback PROPERTIES LINKER_LANGUAGE C)
-
-include(CMakePackageConfigHelpers)
-configure_package_config_file(../cmake/teensy_variable_playback.cmake.in
- ${CMAKE_CURRENT_BINARY_DIR}/teensy_variable_playbackConfig.cmake
- INSTALL_DESTINATION ${LIB_INSTALL_DIR}/teensy_variable_playback/cmake
- PATH_VARS)
-
-write_basic_package_version_file(
- ${CMAKE_CURRENT_BINARY_DIR}/teensy_variable_playbackConfigVersion.cmake
- VERSION ${teensy_variable_playback_VERSION}
- COMPATIBILITY SameMajorVersion )
-
-install(TARGETS teensy_variable_playback DESTINATION
- LIBRARY DESTINATION ${LIB_INSTALL_DIR}
- ARCHIVE DESTINATION ${LIB_INSTALL_DIR}
- PUBLIC_HEADER DESTINATION "include/teensy_variable_playback"
- )
-
-install(FILES
- ${CMAKE_CURRENT_BINARY_DIR}/teensy_variable_playbackConfig.cmake
- ${CMAKE_CURRENT_BINARY_DIR}/teensy_variable_playbackConfigVersion.cmake
- ${CMAKE_CURRENT_SOURCE_DIR}/../cmake/uninstall.cmake
- DESTINATION "lib/cmake/teensy_variable_playback" )
-
-##
-# copied from: https://gist.github.com/royvandam/3033428
-# Add uninstall target
-# Requirements: Copy the uninstall.cmake file to the appropriate CMAKE_MODULE_PATH.
-add_custom_target(uninstall
- "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_SOURCE_DIR}/cmake/uninstall.cmake")
\ No newline at end of file
diff --git a/third-party/TeensyVariablePlayback.O/src/CMakeLists.txt b/third-party/TeensyVariablePlayback.O/src/CMakeLists.txt
deleted file mode 100644
index cbb2657..0000000
--- a/third-party/TeensyVariablePlayback.O/src/CMakeLists.txt
+++ /dev/null
@@ -1,41 +0,0 @@
-cmake_minimum_required(VERSION 3.5)
-project(teensy_variable_playback C CXX)
-set(teensy_variable_playback_VERSION 1.0.0)
-set(CMAKE_CXX_STANDARD 11)
-set(SOURCE_FILES
- interpolation.cpp
- )
-
-set(HEADER_FILES
- loop_type.h
- playresmp.h
- playsdresmp.h
- ResamplingSdReader.h
- waveheaderparser.h
- ResamplingArrayReader.h
- ResamplingReader.h
- playarrayresmp.h
- interpolation.h
- TeensyVariablePlayback.h
- IndexableFile.h
- IndexableSerialFlashFile.h
- IndexableLittleFSFile.h
- IndexableSDFile.h
- ResamplingLfsReader.h
- ResamplingSerialFlashReader.h
- playlfsresmp.h
- playserialflashresmp.h
- )
-
-#set(CMAKE_VERBOSE_MAKEFILE 1)
-if (NOT DEFINED TEENSY_VERSION)
- include(CMakeLists.linux.cmake.in)
-else()
- teensy_add_library(
- teensy_variable_playback
- ${SOURCE_FILES}
- )
-
- add_custom_target(installarduino
- "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_SOURCE_DIR}/../cmake/install_arduino_library.cmake")
-endif()
\ No newline at end of file
diff --git a/third-party/TeensyVariablePlayback.O/src/IndexableFile.h b/third-party/TeensyVariablePlayback.O/src/IndexableFile.h
deleted file mode 100644
index a4d4ea6..0000000
--- a/third-party/TeensyVariablePlayback.O/src/IndexableFile.h
+++ /dev/null
@@ -1,108 +0,0 @@
-#ifndef TEENSY_RESAMPLING_INDEXABLE_FILE_H
-#define TEENSY_RESAMPLING_INDEXABLE_FILE_H
-
-#include
-#include
-#include
-
-namespace newdigate {
-
-
-struct indexedbuffer {
- uint32_t index;
- int16_t buffer_size;
- int16_t *buffer;
-};
-
-constexpr bool isPowerOf2(size_t value){
- return !(value == 0) && !(value & (value - 1));
-}
-
-template // BUFFER_SIZE needs to be a power of two
-class IndexableFile {
-public:
- static_assert(isPowerOf2(BUFFER_SIZE), "BUFFER_SIZE must be a power of 2");
-
- virtual TFile open(const char *filename) = 0;
-
- static constexpr size_t element_size = sizeof(int16_t);
- size_t buffer_to_index_shift;
- IndexableFile(const char *filename) :
- _buffers(),
- buffer_to_index_shift(log2(BUFFER_SIZE))
- {
- _filename = new char[strlen(filename)+1] {0};
- memcpy(_filename, filename, strlen(filename));
- }
-
- virtual ~IndexableFile() {
- close();
- }
-
- int16_t &operator[](int i) {
- int32_t indexFor_i = i >> buffer_to_index_shift;
- indexedbuffer *match = find_with_index(indexFor_i);
- if (match == nullptr) {
- if (_buffers.size() > MAX_NUM_BUFFERS - 1) {
- indexedbuffer *first = _buffers[0];
- _buffers.erase(_buffers.begin());
- delete [] first->buffer;
- delete first;
- }
- indexedbuffer *next = new indexedbuffer();
- next->index = indexFor_i;
- next->buffer = new int16_t[BUFFER_SIZE];
- size_t basePos = indexFor_i << buffer_to_index_shift;
- size_t seekPos = basePos * element_size;
- _file.seek(seekPos);
- int16_t bytesRead = _file.read(next->buffer, BUFFER_SIZE * element_size);
- #ifndef TEENSYDUINO
- if (!_file.available()){
- _file.close();
- _file = open(_filename);
- }
- #endif
- next->buffer_size = bytesRead;
- _buffers.push_back(next);
- match = next;
- }
- return match->buffer[i % BUFFER_SIZE];
- }
-
- void close() {
- if (_file.available()) {
- _file.close();
- }
-
- for (auto && x : _buffers){
- delete [] x->buffer;
- delete x;
- }
- _buffers.clear();
-
- if (_filename != nullptr) {
- delete [] _filename;
- _filename = nullptr;
- }
- }
-
-protected:
- TFile _file;
- char *_filename;
- std::vector _buffers;
-
- indexedbuffer* find_with_index(uint32_t i) {
- for (auto && x : _buffers){
- if (x->index == i) {
- return x;
- }
- }
- return nullptr;
- }
-};
-
-}
-
-
-
-#endif
diff --git a/third-party/TeensyVariablePlayback.O/src/IndexableLittleFSFile.h b/third-party/TeensyVariablePlayback.O/src/IndexableLittleFSFile.h
deleted file mode 100644
index e60ec3b..0000000
--- a/third-party/TeensyVariablePlayback.O/src/IndexableLittleFSFile.h
+++ /dev/null
@@ -1,43 +0,0 @@
-#ifndef TEENSY_RESAMPLING_INDEXABLELITTLEFS_FILE_H
-#define TEENSY_RESAMPLING_INDEXABLELITTLEFS_FILE_H
-
-#include
-#include "IndexableFile.h"
-#include
-#include
-
-namespace newdigate {
-
-template // BUFFER_SIZE needs to be a power of two
-class IndexableLittleFSFile : public IndexableFile {
-public:
- static_assert(isPowerOf2(BUFFER_SIZE), "BUFFER_SIZE must be a power of 2");
-
- IndexableLittleFSFile(LittleFS &fs, const char *filename) :
- IndexableFile(filename),
- _myFS(fs)
- {
- IndexableFile::_file = _myFS.open(filename);
- }
-
- File open(const char *filename) override {
- return _myFS.open(filename);
- }
-
- virtual ~IndexableLittleFSFile() {
- IndexableFile::close();
- }
-
- int16_t &operator[](int i) {
- return IndexableFile::operator[](i);
- }
-
-private:
- LittleFS &_myFS;
-};
-
-}
-
-
-
-#endif //TEENSY_RESAMPLING_INDEXABLELITTLEFS_FILE_H
diff --git a/third-party/TeensyVariablePlayback.O/src/IndexableSDFile.h b/third-party/TeensyVariablePlayback.O/src/IndexableSDFile.h
deleted file mode 100644
index 83eb218..0000000
--- a/third-party/TeensyVariablePlayback.O/src/IndexableSDFile.h
+++ /dev/null
@@ -1,38 +0,0 @@
-#ifndef TEENSY_RESAMPLING_INDEXABLESD_FILE_H
-#define TEENSY_RESAMPLING_INDEXABLESD_FILE_H
-
-#include
-#include "IndexableFile.h"
-#include
-#include
-
-namespace newdigate {
-
-template // BUFFER_SIZE needs to be a power of two
-class IndexableSDFile : public IndexableFile {
-public:
- static_assert(isPowerOf2(BUFFER_SIZE), "BUFFER_SIZE must be a power of 2");
-
- IndexableSDFile(const char *filename) :
- IndexableFile(filename) {
- IndexableFile::_file = open(filename);
- }
-
- File open(const char *filename) override {
- return SD.open(filename);
- }
-
- virtual ~IndexableSDFile() {
- IndexableFile::close();
- }
-
- int16_t &operator[](int i) {
- return IndexableFile::operator[](i);
- }
-};
-
-}
-
-
-
-#endif
diff --git a/third-party/TeensyVariablePlayback.O/src/IndexableSerialFlashFile.h b/third-party/TeensyVariablePlayback.O/src/IndexableSerialFlashFile.h
deleted file mode 100644
index fc401aa..0000000
--- a/third-party/TeensyVariablePlayback.O/src/IndexableSerialFlashFile.h
+++ /dev/null
@@ -1,43 +0,0 @@
-#ifndef TEENSY_RESAMPLING_INDEXABLESERIALFLASH_FILE_H
-#define TEENSY_RESAMPLING_INDEXABLESERIALFLASH_FILE_H
-
-#include
-#include "IndexableFile.h"
-#include
-#include
-
-namespace newdigate {
-
-template // BUFFER_SIZE needs to be a power of two
-class IndexableSerialFlashFile : public IndexableFile {
-public:
- static_assert(isPowerOf2(BUFFER_SIZE), "BUFFER_SIZE must be a power of 2");
-
- IndexableSerialFlashFile(SerialFlashChip &fs, const char *filename) :
- IndexableFile(filename),
- _myFS(fs)
- {
- IndexableFile::_file = _myFS.open(filename);
- }
-
- SerialFlashFile open(const char *filename) override {
- return _myFS.open(filename);
- }
-
- virtual ~IndexableSerialFlashFile() {
- IndexableFile::close();
- }
-
- int16_t &operator[](int i) {
- return IndexableFile::operator[](i);
- }
-
-private:
- SerialFlashChip &_myFS;
-};
-
-}
-
-
-
-#endif //TEENSY_RESAMPLING_INDEXABLESERIALFLASH_FILE_H
diff --git a/third-party/TeensyVariablePlayback.O/src/ResamplingArrayReader.h b/third-party/TeensyVariablePlayback.O/src/ResamplingArrayReader.h
deleted file mode 100644
index 5e87fb2..0000000
--- a/third-party/TeensyVariablePlayback.O/src/ResamplingArrayReader.h
+++ /dev/null
@@ -1,49 +0,0 @@
-#ifndef TEENSYAUDIOLIBRARY_RESAMPLINGARRAYREADER_H
-#define TEENSYAUDIOLIBRARY_RESAMPLINGARRAYREADER_H
-
-#include
-#include "SD.h"
-#include
-#include "loop_type.h"
-#include "interpolation.h"
-#include "ResamplingReader.h"
-
-namespace newdigate {
-
-class ResamplingArrayReader : public ResamplingReader {
-public:
- ResamplingArrayReader() :
- ResamplingReader() {
- }
-
- virtual ~ResamplingArrayReader() {
- }
-
- int16_t getSourceBufferValue(long index) override {
- return _sourceBuffer[index];
- }
-
- int available(void) {
- return _playing;
- }
-
- int16_t* createSourceBuffer() override {
- return _sourceBuffer;
- }
-
- void close(void) override {
- if (_playing) {
- stop();
- deleteInterpolationPoints();
- }
- }
-
- File open(char *filename) override {
- return File();
- }
-protected:
-};
-
-}
-
-#endif //TEENSYAUDIOLIBRARY_RESAMPLINGARRAYREADER_H
diff --git a/third-party/TeensyVariablePlayback.O/src/ResamplingLfsReader.h b/third-party/TeensyVariablePlayback.O/src/ResamplingLfsReader.h
deleted file mode 100644
index 606286e..0000000
--- a/third-party/TeensyVariablePlayback.O/src/ResamplingLfsReader.h
+++ /dev/null
@@ -1,85 +0,0 @@
-//
-// Created by Nicholas Newdigate on 10/02/2019.
-//
-
-#ifndef TEENSYAUDIOLIBRARY_RESAMPLINGLFSREADER_H
-#define TEENSYAUDIOLIBRARY_RESAMPLINGLFSREADER_H
-
-#include
-#include "IndexableLittleFSFile.h"
-#include "ResamplingReader.h"
-#include "LittleFS.h"
-
-#define RESAMPLE_BUFFER_SAMPLE_SIZE 128
-
-#define B2M (uint32_t)((double)4294967296000.0 / AUDIO_SAMPLE_RATE_EXACT / 2.0) // 97352592
-
-namespace newdigate {
-
-class ResamplingLfsReader : public ResamplingReader< IndexableLittleFSFile<128, 2>, File > {
-public:
- ResamplingLfsReader(LittleFS &fs) :
- ResamplingReader(),
- _myFS(fs)
- {
- }
- virtual ~ResamplingLfsReader() {
- }
-
- int16_t getSourceBufferValue(long index) override {
- return (*_sourceBuffer)[index];
- }
-
- int available(void)
- {
- return _playing;
- }
-
- File open(char *filename) override {
- return _myFS.open(filename);
- }
-
- void close(void) override
- {
- if (_playing)
- stop();
- if (_sourceBuffer != nullptr) {
- _sourceBuffer->close();
- delete _sourceBuffer;
- _sourceBuffer = nullptr;
- }
- if (_filename != nullptr) {
- delete [] _filename;
- _filename = nullptr;
- }
- deleteInterpolationPoints();
- }
-
- IndexableLittleFSFile<128, 2>* createSourceBuffer() override {
- return new IndexableLittleFSFile<128, 2>(_myFS, _filename);
- }
-
- uint32_t positionMillis(void) {
- if (_file_size == 0) return 0;
- if (!_useDualPlaybackHead) {
- return (uint32_t) (( (double)_bufferPosition1 * lengthMillis() ) / (double)(_file_size/2));
- } else
- {
- if (_crossfade < 0.5)
- return (uint32_t) (( (double)_bufferPosition1 * lengthMillis() ) / (double)(_file_size/2));
- else
- return (uint32_t) (( (double)_bufferPosition2 * lengthMillis() ) / (double)(_file_size/2));
- }
- }
-
- uint32_t lengthMillis(void) {
- return ((uint64_t)_file_size * B2M) >> 32;
- }
-
-protected:
- LittleFS &_myFS;
-};
-
-}
-
-#endif //TEENSYAUDIOLIBRARY_RESAMPLINGLFSREADER_H
diff --git a/third-party/TeensyVariablePlayback.O/src/ResamplingReader.h b/third-party/TeensyVariablePlayback.O/src/ResamplingReader.h
deleted file mode 100644
index 6c25f2f..0000000
--- a/third-party/TeensyVariablePlayback.O/src/ResamplingReader.h
+++ /dev/null
@@ -1,631 +0,0 @@
-#ifndef TEENSYAUDIOLIBRARY_RESAMPLINGREADER_H
-#define TEENSYAUDIOLIBRARY_RESAMPLINGREADER_H
-
-#include
-#include
-#include "loop_type.h"
-#include "interpolation.h"
-#include "waveheaderparser.h"
-
-namespace newdigate {
-
-template
-class ResamplingReader {
-public:
- ResamplingReader() {
- }
- virtual ~ResamplingReader() {
- }
-
- virtual TFile open(char *filename) = 0;
- virtual TArray* createSourceBuffer() = 0;
- virtual int16_t getSourceBufferValue(long index) = 0;
- virtual void close(void) = 0;
-
- void begin(void)
- {
- if (_interpolationType != ResampleInterpolationType::resampleinterpolation_none) {
- initializeInterpolationPoints();
- }
- _playing = false;
- _crossfade = 0.0;
- if (_play_start == play_start::play_start_sample)
- _bufferPosition1 = _header_offset;
- else
- _bufferPosition1 = _loop_start;
- _file_size = 0;
- }
-
- bool playRaw(TArray *array, uint32_t length, uint16_t numChannels)
- {
- _sourceBuffer = array;
- stop();
-
- _header_offset = 0;
- _file_size = length * 2;
- _loop_start = 0;
- _loop_finish = length;
- setNumChannels(numChannels);
-
- reset();
- _playing = true;
- return true;
- }
-
- bool playRaw(TArray *array, uint16_t numChannels) {
- return playRaw(array, false, numChannels);
- }
-
- bool playWav(TArray *array, uint32_t length) {
- return playRaw(array, true);
- }
-
- bool play(const char *filename, bool isWave, uint16_t numChannelsIfRaw = 0)
- {
- close();
-
- if (!isWave) // if raw file, then hardcode the numChannels as per the parameter
- setNumChannels(numChannelsIfRaw);
-
- _filename = new char[strlen(filename)+1] {0};
- memcpy(_filename, filename, strlen(filename) + 1);
-
- TFile file = open(_filename);
- if (!file) {
- Serial.printf("Not able to open file: %s\n", _filename);
- if (_filename) delete [] _filename;
- _filename = nullptr;
- return false;
- }
-
- _file_size = file.size();
- if (isWave) {
- wav_header wav_header;
- wav_data_header data_header;
-
- WaveHeaderParser wavHeaderParser;
- char buffer[36];
- size_t bytesRead = file.read(buffer, 36);
-
- wavHeaderParser.readWaveHeaderFromBuffer((const char *) buffer, wav_header);
- if (wav_header.bit_depth != 16) {
- Serial.printf("Needs 16 bit audio! Aborting.... (got %d)", wav_header.bit_depth);
- return false;
- }
- setNumChannels(wav_header.num_channels);
-
- bytesRead = file.read(buffer, 8);
- unsigned infoTagsSize;
- if (!wavHeaderParser.readInfoTags((unsigned char *)buffer, 0, infoTagsSize))
- {
- Serial.println("Not able to read header! Aborting...");
- return false;
- }
-
- file.seek(36 + infoTagsSize);
- bytesRead = file.read(buffer, 8);
-
- if (!wavHeaderParser.readDataHeader((unsigned char *)buffer, 0, data_header)) {
- Serial.println("Not able to read header! Aborting...");
- return false;
- }
-
- _header_offset = (44 + infoTagsSize) / 2;
- _loop_finish = ((data_header.data_bytes) / 2) + _header_offset;
- } else
- _loop_finish = _file_size / 2;
-
- file.close();
-
- if (_file_size <= _header_offset * sizeof(int16_t)) {
- _playing = false;
- if (_filename) delete [] _filename;
- _filename = nullptr;
- Serial.printf("Wave file contains no samples: %s\n", filename);
- return false;
- }
-
- _sourceBuffer = createSourceBuffer();
- _loop_start = _header_offset;
-
- reset();
- _playing = true;
- return true;
- }
-
- bool playRaw(const char *filename, uint16_t numChannelsIfRaw){
- return play(filename, false, numChannelsIfRaw);
- }
-
- bool playWav(const char *filename){
- return play(filename, true);
- }
-
- bool play()
- {
- stop();
- reset();
- _playing = true;
- return true;
- }
-
- void stop(void)
- {
- if (_playing) {
- _playing = false;
- }
- }
-
- bool isPlaying(void) { return _playing; }
-
- unsigned int read(void **buf, uint16_t nsamples) {
- if (!_playing) return 0;
-
- int16_t *index[_numChannels];
- unsigned int count = 0;
- for (int channel=0; channel < _numChannels; channel++) {
- index[channel] = (int16_t*)buf[channel];
- }
-
- while (count < nsamples) {
- for (int channel=0; channel < _numChannels; channel++) {
- if (readNextValue(index[channel], channel)) {
- if (channel == _numChannels - 1)
- count++;
- index[channel]++;
- }
- else {
- // we have reached the end of the file
-
- switch (_loopType) {
- case looptype_repeat:
- {
- _crossfade = 0.0;
- if (_playbackRate >= 0.0)
- _bufferPosition1 = _loop_start;
- else
- _bufferPosition1 = _loop_finish - _numChannels;
-
- break;
- }
-
- case looptype_pingpong:
- {
- if (_playbackRate >= 0.0) {
- _bufferPosition1 = _loop_finish - _numChannels;
- }
- else {
- if (_play_start == play_start::play_start_sample)
- _bufferPosition1 = _header_offset;
- else
- _bufferPosition1 = _loop_start;
- }
- _playbackRate = -_playbackRate;
- break;
- }
-
- case looptype_none:
- default:
- {
- //Serial.printf("end of loop...\n");
- /* no looping - return the number of (resampled) bytes returned... */
- close();
- return count;
- }
- }
- }
- }
- }
- return count;
- }
-
- // read the sample value for given channel and store it at the location pointed to by the pointer 'value'
- bool readNextValue(int16_t *value, uint16_t channel) {
- if (!_useDualPlaybackHead) {
- if (_playbackRate >= 0 ) {
- //forward playback
- if (_bufferPosition1 >= _loop_finish )
- return false;
- } else if (_playbackRate < 0) {
- // reverse playback
- if (_play_start == play_start::play_start_sample) {
- if (_bufferPosition1 < _header_offset)
- return false;
- } else {
- if (_bufferPosition1 < _loop_start)
- return false;
- }
- }
- } else {
- if (_playbackRate >= 0.0) {
- if (_crossfade == 0.0 && _bufferPosition1 > (_loop_finish - _numChannels) - _crossfadeDurationInSamples) {
- _bufferPosition2 = _loop_start;
- _crossfade = 1.0 - (( (_loop_finish-_numChannels) - _bufferPosition1 ) / static_cast(_crossfadeDurationInSamples));
- _crossfadeState = 1;
- } else if (_crossfade == 1.0 && _bufferPosition2 > (_loop_finish - _numChannels)- _crossfadeDurationInSamples) {
- _bufferPosition1 = _loop_start;
- _crossfade = ((_loop_finish - _numChannels) - _bufferPosition2) / static_cast(_crossfadeDurationInSamples);
- _crossfadeState = 2;
- } else if (_crossfadeState == 1) {
- _crossfade = 1.0 - (((_loop_finish - _numChannels) - _bufferPosition1) / static_cast(_crossfadeDurationInSamples));
- if (_crossfade >= 1.0) {
- _crossfadeState = 0;
- _crossfade = 1.0;
- }
- } else if (_crossfadeState == 2) {
- _crossfade = ( (_loop_finish - _numChannels) - _bufferPosition2 ) / static_cast(_crossfadeDurationInSamples);
- if (_crossfade <= 0.0) {
- _crossfadeState = 0;
- _crossfade = 0.0;
- }
- }
- } else {
- if (_crossfade == 0.0 && _bufferPosition1 < _crossfadeDurationInSamples + _header_offset) {
- _bufferPosition2 = _loop_finish - _numChannels;
- _crossfade = 1.0 - (_bufferPosition1 - _header_offset) / static_cast(_crossfadeDurationInSamples);
- _crossfadeState = 1;
- } else if (_crossfade == 1.0 && _bufferPosition2 < _crossfadeDurationInSamples + _header_offset) {
- _bufferPosition1 = _loop_finish - _numChannels;
- _crossfade = (_bufferPosition2 - _header_offset) / static_cast(_crossfadeDurationInSamples);
- _crossfadeState = 2;
- } else if (_crossfadeState == 1) {
- _crossfade = 1.0 - (_bufferPosition1 - _header_offset) / static_cast(_crossfadeDurationInSamples);
- if (_crossfade >= 1.0) {
- _crossfadeState = 0;
- _crossfade = 1.0;
- }
- } else if (_crossfadeState == 2) {
- _crossfade = (_bufferPosition2 - _header_offset) / static_cast(_crossfadeDurationInSamples);
- if (_crossfade <= 0.0) {
- _crossfadeState = 0;
- _crossfade = 0.0;
- }
- }
- }
- }
-
- int16_t result = 0;
- if (!_useDualPlaybackHead || _crossfade == 0.0) {
- result = getSourceBufferValue(_bufferPosition1 + channel);
- } else if (_crossfade == 1.0){
- result = getSourceBufferValue(_bufferPosition2 + channel);
- } else{
- int result1 = getSourceBufferValue(_bufferPosition1 + channel);
- int result2 = getSourceBufferValue(_bufferPosition2 + channel);
- result = ((1.0 - _crossfade ) * result1) + ((_crossfade) * result2);
- }
-
- if (_interpolationType == ResampleInterpolationType::resampleinterpolation_linear) {
- double abs_remainder = abs(_remainder);
- if (abs_remainder > 0.0) {
-
- if (_playbackRate > 0) {
- if (_remainder - _playbackRate < 0.0){
- // we crossed over a whole number, make sure we update the samples for interpolation
- if (!_useDualPlaybackHead) {
- if ( _numInterpolationPoints < 2 &&_playbackRate > 1.0 && _bufferPosition1 - _numChannels > _header_offset * 2 ) {
- // need to update last sample
- _interpolationPoints[channel][1].y = getSourceBufferValue(_bufferPosition1 - _numChannels);
- }
- }
- _interpolationPoints[channel][0].y = _interpolationPoints[channel][1].y;
- _interpolationPoints[channel][1].y = result;
- if (_numInterpolationPoints < 2)
- _numInterpolationPoints++;
- }
- }
- else if (_playbackRate < 0) {
- if (_remainder - _playbackRate > 0.0){
- // we crossed over a whole number, make sure we update the samples for interpolation
- if (!_useDualPlaybackHead) {
- if (_numInterpolationPoints < 2 && _playbackRate < -1.0) {
- // need to update last sample
- _interpolationPoints[channel][1].y = getSourceBufferValue(_bufferPosition1 + _numChannels);
- }
- }
- _interpolationPoints[channel][0].y = _interpolationPoints[channel][1].y;
- _interpolationPoints[channel][1].y = result;
- if (_numInterpolationPoints < 2)
- _numInterpolationPoints++;
- }
- }
-
- if (_numInterpolationPoints > 1) {
- result = abs_remainder * _interpolationPoints[channel][1].y + (1.0 - abs_remainder) * _interpolationPoints[channel][0].y;
- }
- } else {
- _interpolationPoints[channel][0].y = _interpolationPoints[channel][1].y;
- _interpolationPoints[channel][1].y = result;
- if (_numInterpolationPoints < 2)
- _numInterpolationPoints++;
-
- result =_interpolationPoints[channel][0].y;
- }
- }
- else if (_interpolationType == ResampleInterpolationType::resampleinterpolation_quadratic) {
- double abs_remainder = abs(_remainder);
- if (abs_remainder > 0.0) {
- if (_playbackRate > 0) {
- if (_remainder - _playbackRate < 0.0){
- // we crossed over a whole number, make sure we update the samples for interpolation
- int numberOfSamplesToUpdate = - floor(_remainder - _playbackRate);
- if (numberOfSamplesToUpdate > 4)
- numberOfSamplesToUpdate = 4; // if playbackrate > 4, only need to pop last 4 samples
- for (int i=numberOfSamplesToUpdate; i > 0; i--) {
- _interpolationPoints[channel][0].y = _interpolationPoints[channel][1].y;
- _interpolationPoints[channel][1].y = _interpolationPoints[channel][2].y;
- _interpolationPoints[channel][2].y = _interpolationPoints[channel][3].y;
- if (!_useDualPlaybackHead) {
- _interpolationPoints[channel][3].y = getSourceBufferValue(_bufferPosition1-(i*_numChannels)+1+channel);
- } else
- {
- _interpolationPoints[channel][3].y = result;
- }
- if (_numInterpolationPoints < 4) _numInterpolationPoints++;
- }
- }
- }
- else if (_playbackRate < 0) {
- if (_remainder - _playbackRate > 0.0){
- // we crossed over a whole number, make sure we update the samples for interpolation
- int numberOfSamplesToUpdate = ceil(_remainder - _playbackRate);
- if (numberOfSamplesToUpdate > 4)
- numberOfSamplesToUpdate = 4; // if playbackrate > 4, only need to pop last 4 samples
- for (int i=numberOfSamplesToUpdate; i > 0; i--) {
- _interpolationPoints[channel][0].y = _interpolationPoints[channel][1].y;
- _interpolationPoints[channel][1].y = _interpolationPoints[channel][2].y;
- _interpolationPoints[channel][2].y = _interpolationPoints[channel][3].y;
- if (!_useDualPlaybackHead) {
- _interpolationPoints[channel][3].y = getSourceBufferValue(_bufferPosition1+(i*_numChannels)-1+channel);
- } else
- {
- _interpolationPoints[channel][3].y = result;
- }
- if (_numInterpolationPoints < 4) _numInterpolationPoints++;
- }
- }
- }
-
- if (_numInterpolationPoints >= 4) {
- //int16_t interpolation = interpolate(_interpolationPoints, 1.0 + abs_remainder, 4);
- int16_t interpolation
- = fastinterpolate(
- _interpolationPoints[channel][0].y,
- _interpolationPoints[channel][1].y,
- _interpolationPoints[channel][2].y,
- _interpolationPoints[channel][3].y,
- 1.0 + abs_remainder);
- result = interpolation;
- //Serial.printf("[%f]\n", interpolation);
- } else
- result = 0;
- } else {
- _interpolationPoints[channel][0].y = _interpolationPoints[channel][1].y;
- _interpolationPoints[channel][1].y = _interpolationPoints[channel][2].y;
- _interpolationPoints[channel][2].y = _interpolationPoints[channel][3].y;
- _interpolationPoints[channel][3].y = result;
- if (_numInterpolationPoints < 4) {
- _numInterpolationPoints++;
- result = 0;
- } else
- result = _interpolationPoints[channel][1].y;
- //Serial.printf("%f\n", result);
- }
- }
-
- if (channel == _numChannels - 1) {
- _remainder += _playbackRate;
-
- auto delta = static_cast(_remainder);
- _remainder -= static_cast(delta);
- if (!_useDualPlaybackHead) {
- _bufferPosition1 += (delta * _numChannels);
- } else {
- if (_crossfade < 1.0)
- _bufferPosition1 += (delta * _numChannels);
-
- if (_crossfade > 0.0)
- _bufferPosition2 += (delta * _numChannels);
- }
- }
-
- *value = result;
- return true;
- }
-
- void setPlaybackRate(double f) {
- _playbackRate = f;
- if (!_useDualPlaybackHead) {
- if (f < 0.0) {
- if (_bufferPosition1 <= _header_offset) {
- if (_play_start == play_start::play_start_sample)
- _bufferPosition1 = _file_size/2 - _numChannels;
- else
- _bufferPosition1 = _loop_finish - _numChannels;
- }
- } else {
- if (f >= 0.0 && _bufferPosition1 < _header_offset) {
- if (_play_start == play_start::play_start_sample)
- _bufferPosition1 = _header_offset;
- else
- _bufferPosition1 = _loop_start;
- }
- }
- } else {
- // _useDualPlaybackHead == true
- if (_crossfade == 0.0) {
- if (f < 0.0) {
- if( _bufferPosition1 <= _header_offset) {
- if (_play_start == play_start::play_start_sample)
- _bufferPosition1 = _file_size/2 - _numChannels;
- else
- _bufferPosition1 = _loop_finish - _numChannels;
- }
- } else {
- if (f >= 0.0 && _bufferPosition1 < _header_offset) {
- _bufferPosition1 = _header_offset;
- }
- }
- }
- }
- }
-
- float playbackRate() {
- return _playbackRate;
- }
-
- void loop(uint32_t numSamples) {
- int bufferPosition = (_crossfade < 1.0)? _bufferPosition1 : _bufferPosition2;
- _loop_start = bufferPosition;
- _loop_finish = bufferPosition + numSamples * _numChannels;
- _loopType = loop_type::looptype_repeat;
- }
-
- void setLoopType(loop_type loopType)
- {
- _loopType = loopType;
- }
-
- loop_type getLoopType() {
- return _loopType;
- }
-
- int available(void) {
- return _playing;
- }
-
- void reset(void) {
- if (_interpolationType != ResampleInterpolationType::resampleinterpolation_none) {
- initializeInterpolationPoints();
- }
- _numInterpolationPoints = 0;
- if (_playbackRate > 0.0) {
- // forward playabck - set _file_offset to first audio block in file
- if (_play_start == play_start::play_start_sample)
- _bufferPosition1 = _header_offset;
- else
- _bufferPosition1 = _loop_start;
- } else {
- // reverse playback - forward _file_offset to last audio block in file
- if (_play_start == play_start::play_start_sample)
- _bufferPosition1 = _file_size/2 - _numChannels;
- else
- _bufferPosition1 = _loop_finish - _numChannels;
- }
- _crossfade = 0.0;
- }
-
- void setLoopStart(uint32_t loop_start) {
- _loop_start = _header_offset + (loop_start * _numChannels);
- }
-
- void setLoopFinish(uint32_t loop_finish) {
- // sample number, (NOT byte number)
- _loop_finish = _header_offset + (loop_finish * _numChannels);
- }
-
- void setUseDualPlaybackHead(bool useDualPlaybackHead) {
- _useDualPlaybackHead = useDualPlaybackHead;
- }
-
- void setCrossfadeDurationInSamples(unsigned int crossfadeDurationInSamples) {
- _crossfadeDurationInSamples = crossfadeDurationInSamples;
- }
-
- void setInterpolationType(ResampleInterpolationType interpolationType) {
- if (interpolationType != _interpolationType) {
- _interpolationType = interpolationType;
- initializeInterpolationPoints();
- }
- }
-
- int16_t getNumChannels() {
- return _numChannels;
- }
-
- void setNumChannels(uint16_t numChannels) {
- if (numChannels != _numChannels) {
- _numChannels = numChannels;
- initializeInterpolationPoints();
- }
- }
-
- void setHeaderSizeInBytes(uint32_t headerSizeInBytes) {
- _header_offset = headerSizeInBytes / 2;
- }
-
- void setPlayStart(play_start start) {
- _play_start = start;
- }
-
- #define B2M (uint32_t)((double)4294967296000.0 / AUDIO_SAMPLE_RATE_EXACT / 2.0) // 97352592
- uint32_t positionMillis()
- {
- return ((uint64_t)_file_size * B2M) >> 32;
- }
-
- uint32_t lengthMillis()
- {
- return ((uint64_t)_file_size * B2M) >> 32;
- }
-
-protected:
- volatile bool _playing = false;
-
- int32_t _file_size;
- int32_t _header_offset = 0; // == (header size in bytes ) / 2
-
- double _playbackRate = 1.0;
- double _remainder = 0.0;
- loop_type _loopType = loop_type::looptype_none;
- play_start _play_start = play_start::play_start_sample;
- int _bufferPosition1 = 0;
- int _bufferPosition2 = 0;
- double _crossfade = 0.0;
- bool _useDualPlaybackHead = false;
- unsigned int _crossfadeDurationInSamples = 256;
- int _crossfadeState = 0;
- int32_t _loop_start = 0;
- int32_t _loop_finish = 0;
- int16_t _numChannels = -1;
- uint16_t _numInterpolationPointsChannels = 0;
- char *_filename = nullptr;
- TArray *_sourceBuffer = nullptr;
-
- ResampleInterpolationType _interpolationType = ResampleInterpolationType::resampleinterpolation_none;
- unsigned int _numInterpolationPoints = 0;
- InterpolationData **_interpolationPoints = nullptr;
-
- void initializeInterpolationPoints(void) {
- if (_numChannels < 0)
- return;
-
- deleteInterpolationPoints();
- _interpolationPoints = new InterpolationData*[_numChannels];
- for (int channel=0; channel < _numChannels; channel++) {
- InterpolationData *interpolation = new InterpolationData[4];
- interpolation[0].y = 0.0;
- interpolation[1].y = 0.0;
- interpolation[2].y = 0.0;
- interpolation[3].y = 0.0;
- _interpolationPoints[channel] = interpolation ;
- }
- _numInterpolationPointsChannels = _numChannels;
- }
-
- void deleteInterpolationPoints(void)
- {
- if (!_interpolationPoints) return;
- for (int i=0; i<_numInterpolationPointsChannels; i++) {
- delete [] _interpolationPoints[i];
- }
- delete [] _interpolationPoints;
- _interpolationPoints = nullptr;
- _numInterpolationPointsChannels = 0;
- }
-
-};
-
-}
-
-#endif //TEENSYAUDIOLIBRARY_RESAMPLINGREADER_H
diff --git a/third-party/TeensyVariablePlayback.O/src/ResamplingSdReader.h b/third-party/TeensyVariablePlayback.O/src/ResamplingSdReader.h
deleted file mode 100644
index fae4ca2..0000000
--- a/third-party/TeensyVariablePlayback.O/src/ResamplingSdReader.h
+++ /dev/null
@@ -1,88 +0,0 @@
-//
-// Created by Nicholas Newdigate on 10/02/2019.
-//
-
-#ifndef TEENSYAUDIOLIBRARY_RESAMPLINGSDREADER_H
-#define TEENSYAUDIOLIBRARY_RESAMPLINGSDREADER_H
-
-#include "SD.h"
-#include
-#include "spi_interrupt.h"
-#include "loop_type.h"
-#include "interpolation.h"
-#include "IndexableSDFile.h"
-#include "ResamplingReader.h"
-
-#define RESAMPLE_BUFFER_SAMPLE_SIZE 128
-
-#define B2M (uint32_t)((double)4294967296000.0 / AUDIO_SAMPLE_RATE_EXACT / 2.0) // 97352592
-
-namespace newdigate {
-
-class ResamplingSdReader : public ResamplingReader< IndexableSDFile<128, 4>, File > {
-public:
- ResamplingSdReader() :
- ResamplingReader()
- {
- }
-
- virtual ~ResamplingSdReader() {
- }
-
- int16_t getSourceBufferValue(long index) override {
- return (*_sourceBuffer)[index];
- }
-
- int available(void)
- {
- return _playing;
- }
-
- File open(char *filename) override {
- return SD.open(filename);
- }
-
- void close(void) override
- {
- if (_playing)
- stop();
- if (_sourceBuffer != nullptr) {
- _sourceBuffer->close();
- delete _sourceBuffer;
- _sourceBuffer = nullptr;
- }
- if (_filename != nullptr) {
- delete [] _filename;
- _filename = nullptr;
- }
- deleteInterpolationPoints();
- }
-
- IndexableSDFile<128, 4>* createSourceBuffer() override {
- return new IndexableSDFile<128, 4>(_filename);
- }
-
- uint32_t positionMillis(void) {
- if (_file_size == 0) return 0;
- if (!_useDualPlaybackHead) {
- return (uint32_t) (( (double)_bufferPosition1 * lengthMillis() ) / (double)(_file_size/2));
- } else
- {
- if (_crossfade < 0.5)
- return (uint32_t) (( (double)_bufferPosition1 * lengthMillis() ) / (double)(_file_size/2));
- else
- return (uint32_t) (( (double)_bufferPosition2 * lengthMillis() ) / (double)(_file_size/2));
- }
- }
-
- uint32_t lengthMillis(void) {
- return ((uint64_t)_file_size * B2M) >> 32;
- }
-
-protected:
-
-};
-
-}
-
-#endif //TEENSYAUDIOLIBRARY_RESAMPLINGSDREADER_H
diff --git a/third-party/TeensyVariablePlayback.O/src/ResamplingSerialFlashReader.h b/third-party/TeensyVariablePlayback.O/src/ResamplingSerialFlashReader.h
deleted file mode 100644
index 8dafd13..0000000
--- a/third-party/TeensyVariablePlayback.O/src/ResamplingSerialFlashReader.h
+++ /dev/null
@@ -1,89 +0,0 @@
-//
-// Created by Nicholas Newdigate on 10/02/2019.
-//
-
-#ifndef TEENSYAUDIOLIBRARY_RESAMPLINGSERIALFLASHREADER_H
-#define TEENSYAUDIOLIBRARY_RESAMPLINGSERIALFLASHREADER_H
-
-#include
-#include "spi_interrupt.h"
-#include "loop_type.h"
-#include "interpolation.h"
-#include "IndexableSerialFlashFile.h"
-#include "ResamplingReader.h"
-#include "SerialFlash.h"
-
-#define RESAMPLE_BUFFER_SAMPLE_SIZE 128
-
-#define B2M (uint32_t)((double)4294967296000.0 / AUDIO_SAMPLE_RATE_EXACT / 2.0) // 97352592
-
-namespace newdigate {
-
-class ResamplingSerialFlashReader : public ResamplingReader< IndexableSerialFlashFile<128, 2>, SerialFlashFile > {
-public:
- ResamplingSerialFlashReader(SerialFlashChip &fs) :
- ResamplingReader(),
- _myFS(fs)
- {
- }
-
- virtual ~ResamplingSerialFlashReader() {
- }
-
- int16_t getSourceBufferValue(long index) override {
- return (*_sourceBuffer)[index];
- }
-
- int available(void)
- {
- return _playing;
- }
-
- SerialFlashFile open(char *filename) override {
- return _myFS.open(filename);
- }
-
- void close(void) override
- {
- if (_playing)
- stop();
- if (_sourceBuffer != nullptr) {
- _sourceBuffer->close();
- delete _sourceBuffer;
- _sourceBuffer = nullptr;
- }
- if (_filename != nullptr) {
- delete [] _filename;
- _filename = nullptr;
- }
- deleteInterpolationPoints();
- }
-
- IndexableSerialFlashFile<128, 2>* createSourceBuffer() override {
- return new IndexableSerialFlashFile<128, 2>(_myFS, _filename);
- }
-
- uint32_t positionMillis(void) {
- if (_file_size == 0) return 0;
- if (!_useDualPlaybackHead) {
- return (uint32_t) (( (double)_bufferPosition1 * lengthMillis() ) / (double)(_file_size/2));
- } else
- {
- if (_crossfade < 0.5)
- return (uint32_t) (( (double)_bufferPosition1 * lengthMillis() ) / (double)(_file_size/2));
- else
- return (uint32_t) (( (double)_bufferPosition2 * lengthMillis() ) / (double)(_file_size/2));
- }
- }
-
- uint32_t lengthMillis(void) {
- return ((uint64_t)_file_size * B2M) >> 32;
- }
-
-protected:
- SerialFlashChip &_myFS;
-};
-
-}
-
-#endif //TEENSYAUDIOLIBRARY_RESAMPLINGSERIALFLASHREADER_H
diff --git a/third-party/TeensyVariablePlayback.O/src/TeensyVariablePlayback.h b/third-party/TeensyVariablePlayback.O/src/TeensyVariablePlayback.h
deleted file mode 100644
index eec731d..0000000
--- a/third-party/TeensyVariablePlayback.O/src/TeensyVariablePlayback.h
+++ /dev/null
@@ -1,17 +0,0 @@
-//
-// Created by Nicholas Newdigate on 21/07/2020.
-//
-
-#ifndef TEENSY_RESAMPLING_ARDUINO_SAMPLER_H
-#define TEENSY_RESAMPLING_ARDUINO_SAMPLER_H
-
-#include "waveheaderparser.h"
-#include "ResamplingSdReader.h"
-#include "ResamplingArrayReader.h"
-#include "ResamplingLfsReader.h"
-#include "ResamplingSerialFlashReader.h"
-#include "playsdresmp.h"
-#include "playarrayresmp.h"
-#include "playlfsresmp.h"
-#include "playserialflashresmp.h"
-#endif //TEENSY_RESAMPLING_ARDUINO_SAMPLER_H
diff --git a/third-party/TeensyVariablePlayback.O/src/interpolation.cpp b/third-party/TeensyVariablePlayback.O/src/interpolation.cpp
deleted file mode 100644
index fff75f5..0000000
--- a/third-party/TeensyVariablePlayback.O/src/interpolation.cpp
+++ /dev/null
@@ -1,56 +0,0 @@
-//
-// Created by Nicholas Newdigate on 24/05/2021.
-//
-#include "interpolation.h"
-
-// https://en.wikipedia.org/wiki/Lagrange_polynomial
-// https://www.geeksforgeeks.org/lagranges-interpolation/
-// function to interpolate the given data points using Lagrange's formula
-// xi corresponds to the new data point whose value is to be obtained
-// n represents the number of known data points
-int16_t interpolate(InterpolationData *f, double xi, int n) {
- double result = 0.0; // Initialize result
- for (int i=0; i 32767)
- return 32767;
- return untruncated;
-}
-
-
-int16_t fastinterpolate(int16_t d1, int16_t d2, int16_t d3, int16_t d4, float x) {
- float x_1 = x * 1000.0;
- float x_2 = x_1 * x_1;
- float x_3 = x_2 * x_1;
-
- //Serial.printf("%i,%i,%i,%i @ x=%f \n", d1,d2,d3,d4,x);
-
- return d1 * (x_3 - 6000 * x_2 + 11000000 * x_1 - 6000000000 ) / - 6000000000
- + d2 * (x_3 - 5000 * x_2 + 6000000 * x_1 ) / 2000000000
- + d3 * (x_3 - 4000 * x_2 + 3000000 * x_1 ) / - 2000000000
- + d4 * (x_3 - 3000 * x_2 + 2000000 * x_1 ) / 6000000000;
-
-/*
- int32_t untruncated = result;
- if (untruncated < -32768)
- return -32768;
- if (untruncated > 32767)
- return 32767;
- return result;
- */
-}
\ No newline at end of file
diff --git a/third-party/TeensyVariablePlayback.O/src/interpolation.h b/third-party/TeensyVariablePlayback.O/src/interpolation.h
deleted file mode 100644
index fcb46e6..0000000
--- a/third-party/TeensyVariablePlayback.O/src/interpolation.h
+++ /dev/null
@@ -1,29 +0,0 @@
-//
-// Created by Nicholas Newdigate on 24/05/2021.
-//
-#ifndef TEENSY_RESAMPLING_SDREADER_INTERPOLATION_H
-#define TEENSY_RESAMPLING_SDREADER_INTERPOLATION_H
-
-#include
-#include
-
-
-enum ResampleInterpolationType {
- resampleinterpolation_none = 1,
- resampleinterpolation_linear = 2,
- resampleinterpolation_quadratic = 3,
-};
-
-struct InterpolationData
-{
- int16_t x, y;
-};
-
-// https://en.wikipedia.org/wiki/Lagrange_polynomial
-// https://www.geeksforgeeks.org/lagranges-interpolation/
-// function to interpolate the given data points using Lagrange's formula
-// xi corresponds to the new data point whose value is to be obtained
-// n represents the number of known data points
-int16_t interpolate(InterpolationData *f, double xi, int n);
-int16_t fastinterpolate(int16_t d1, int16_t d2, int16_t d3, int16_t d4, float x);
-#endif //TEENSY_RESAMPLING_SDREADER_INTERPOLATION_H
diff --git a/third-party/TeensyVariablePlayback.O/src/loop_type.h b/third-party/TeensyVariablePlayback.O/src/loop_type.h
deleted file mode 100644
index 5364ef0..0000000
--- a/third-party/TeensyVariablePlayback.O/src/loop_type.h
+++ /dev/null
@@ -1,19 +0,0 @@
-//
-// Created by Nicholas Newdigate on 25/04/2021.
-//
-
-#ifndef TEENSY_RESAMPLING_LOOP_TYPE_H
-#define TEENSY_RESAMPLING_LOOP_TYPE_H
-
-typedef enum loop_type {
- looptype_none,
- looptype_repeat,
- looptype_pingpong
-} loop_type;
-
-typedef enum play_start {
- play_start_sample,
- play_start_loop,
-} play_start;
-
-#endif //TEENSY_RESAMPLING_LOOP_TYPE_H
diff --git a/third-party/TeensyVariablePlayback.O/src/playarrayresmp.h b/third-party/TeensyVariablePlayback.O/src/playarrayresmp.h
deleted file mode 100644
index 4f37701..0000000
--- a/third-party/TeensyVariablePlayback.O/src/playarrayresmp.h
+++ /dev/null
@@ -1,30 +0,0 @@
-//
-// Created by Nicholas Newdigate on 18/07/2020.
-//
-
-#ifndef TEENSY_RESAMPLING_SDREADER_PLAYARRAYRESMP_H
-#define TEENSY_RESAMPLING_SDREADER_PLAYARRAYRESMP_H
-
-
-#include "Arduino.h"
-#include "AudioStream.h"
-#include "ResamplingArrayReader.h"
-#include "playresmp.h"
-
-class AudioPlayArrayResmp : public AudioPlayResmp
-{
-public:
- AudioPlayArrayResmp(void) :
- AudioPlayResmp()
- {
- reader = new newdigate::ResamplingArrayReader();
- begin();
- }
-
- virtual ~AudioPlayArrayResmp() {
- delete reader;
- }
-};
-
-
-#endif //TEENSY_RESAMPLING_SDREADER_PLAYARRAYRESMP_H
diff --git a/third-party/TeensyVariablePlayback.O/src/playlfsresmp.h b/third-party/TeensyVariablePlayback.O/src/playlfsresmp.h
deleted file mode 100644
index 5774441..0000000
--- a/third-party/TeensyVariablePlayback.O/src/playlfsresmp.h
+++ /dev/null
@@ -1,26 +0,0 @@
-//
-// Created by Nicholas Newdigate on 18/07/2020.
-//
-
-#ifndef TEENSY_RESAMPLING_SDREADER_PLAYLFSRAWRESMP_H
-#define TEENSY_RESAMPLING_SDREADER_PLAYLFSRAWRESMP_H
-
-#include "ResamplingLfsReader.h"
-
-class AudioPlayLfsResmp : public AudioPlayResmp
-{
-public:
- AudioPlayLfsResmp(LittleFS &fs) :
- AudioPlayResmp()
- {
- reader = new newdigate::ResamplingLfsReader(fs);
- begin();
- }
-
- virtual ~AudioPlayLfsResmp() {
- delete reader;
- }
-};
-
-
-#endif //TEENSY_RESAMPLING_SDREADER_PLAYLFSRAWRESMP_H
diff --git a/third-party/TeensyVariablePlayback.O/src/playresmp.h b/third-party/TeensyVariablePlayback.O/src/playresmp.h
deleted file mode 100644
index e02ab76..0000000
--- a/third-party/TeensyVariablePlayback.O/src/playresmp.h
+++ /dev/null
@@ -1,151 +0,0 @@
-#ifndef TEENSY_RESAMPLING_SDREADER_PLAYRESMP_H
-#define TEENSY_RESAMPLING_SDREADER_PLAYRESMP_H
-
-#include "Arduino.h"
-#include "Audio.h"
-#include "loop_type.h"
-
-template
-class AudioPlayResmp : public AudioStream
-{
- public:
- AudioPlayResmp(): AudioStream(0, NULL), reader(nullptr)
- {
- }
-
- virtual ~AudioPlayResmp() {
- }
-
- void begin(void)
- {
- reader->begin();
- }
-
- bool playRaw(const char *filename, uint16_t numChannels)
- {
- stop();
- return reader->play(filename, false, numChannels);
- }
-
- bool playWav(const char *filename)
- {
- stop();
- return reader->play(filename, true, 0);
- }
-
- bool playRaw(int16_t *data, uint32_t numSamples, uint16_t numChannels)
- {
- stop();
- return reader->playRaw(data, numSamples, numChannels);
- }
-
- bool playRaw(const unsigned int *data, uint32_t numSamples, uint16_t numChannels)
- {
- return playRaw((int16_t *) data, numSamples, numChannels);
- }
-
- bool playWav(int16_t *data, uint32_t fileSize)
- {
- stop();
- return reader->playWav(data, fileSize);
- }
-
- bool playWav(const unsigned int *data, uint32_t fileSize) {
- return playWav((int16_t *) data, fileSize);
- }
-
- void setPlaybackRate(float f) {
- reader->setPlaybackRate(f);
- }
-
- void setLoopType(loop_type t) {
- reader->setLoopType(t);
- }
-
- void setLoopStart(uint32_t loop_start) {
- reader->setLoopStart(loop_start);
- }
-
- void setLoopFinish(uint32_t loop_finish) {
- reader->setLoopFinish(loop_finish);
- }
-
- void setUseDualPlaybackHead(bool useDualPlaybackHead) {
- reader->setUseDualPlaybackHead(useDualPlaybackHead);
- }
-
- void setCrossfadeDurationInSamples(unsigned int crossfadeDurationInSamples) {
- reader->setCrossfadeDurationInSamples(crossfadeDurationInSamples);
- }
-
- void setPlayStart(play_start start) {
- reader->setPlayStart(start);
- }
-
- void enableInterpolation(bool enable) {
- if (enable)
- reader->setInterpolationType(ResampleInterpolationType::resampleinterpolation_quadratic);
- else
- reader->setInterpolationType(ResampleInterpolationType::resampleinterpolation_none);
- }
-
- bool isPlaying(void) {
- return reader->isPlaying();
- };
-
- void stop() {
- reader->stop();
- }
-
- void update()
- {
- int _numChannels = reader->getNumChannels();
- if (_numChannels == -1)
- return;
-
- unsigned int i, n;
- audio_block_t *blocks[_numChannels];
- int16_t *data[_numChannels];
- // only update if we're playing
- if (!reader->isPlaying()) return;
-
- // allocate the audio blocks to transmit
- for (int i=0; i < _numChannels; i++) {
- blocks[i] = allocate();
- if (blocks[i] == nullptr) return;
- data[i] = blocks[i]->data;
- }
-
- if (reader->available()) {
- // we can read more data from the file...
- n = reader->read((void**)data, AUDIO_BLOCK_SAMPLES);
- for (int channel=0; channel < _numChannels; channel++) {
- memset( &blocks[channel]->data[n], 0, (AUDIO_BLOCK_SAMPLES - n) * 2);
- transmit(blocks[channel], channel);
- }
-
- if(_numChannels == 1) {
- transmit(blocks[0], 1);
- }
- } else {
- reader->close();
- }
- for (int channel=0; channel < _numChannels; channel++) {
- release(blocks[channel]);
- }
- }
- uint32_t positionMillis()
- {
- return reader->positionMillis();
- }
-
- uint32_t lengthMillis()
- {
- return reader->lengthMillis();
- }
-
- protected:
- TResamplingReader *reader;
-};
-
-#endif // TEENSY_RESAMPLING_SDREADER_PLAYRESMP_H
\ No newline at end of file
diff --git a/third-party/TeensyVariablePlayback.O/src/playsdresmp.h b/third-party/TeensyVariablePlayback.O/src/playsdresmp.h
deleted file mode 100644
index fdc039d..0000000
--- a/third-party/TeensyVariablePlayback.O/src/playsdresmp.h
+++ /dev/null
@@ -1,32 +0,0 @@
-//
-// Created by Nicholas Newdigate on 18/07/2020.
-//
-
-#ifndef TEENSY_RESAMPLING_SDREADER_PLAYSDRAWRESMP_H
-#define TEENSY_RESAMPLING_SDREADER_PLAYSDRAWRESMP_H
-
-
-#include "Arduino.h"
-#include "AudioStream.h"
-#include "SD.h"
-#include "stdint.h"
-#include "ResamplingSdReader.h"
-#include "playresmp.h"
-
-class AudioPlaySdResmp : public AudioPlayResmp
-{
-public:
- AudioPlaySdResmp(void) :
- AudioPlayResmp()
- {
- reader = new newdigate::ResamplingSdReader();
- begin();
- }
-
- virtual ~AudioPlaySdResmp() {
- delete reader;
- }
-};
-
-
-#endif //TEENSY_RESAMPLING_SDREADER_PLAYSDRAWRESMP_H
diff --git a/third-party/TeensyVariablePlayback.O/src/playserialflashresmp.h b/third-party/TeensyVariablePlayback.O/src/playserialflashresmp.h
deleted file mode 100644
index 6dc56d5..0000000
--- a/third-party/TeensyVariablePlayback.O/src/playserialflashresmp.h
+++ /dev/null
@@ -1,31 +0,0 @@
-//
-// Created by Nicholas Newdigate on 18/07/2020.
-//
-
-#ifndef TEENSY_RESAMPLING_SDREADER_PLAYSERIALFLASHRAWRESMP_H
-#define TEENSY_RESAMPLING_SDREADER_PLAYSERIALFLASHRAWRESMP_H
-
-#include "Arduino.h"
-#include "AudioStream.h"
-#include "SerialFlash.h"
-#include "stdint.h"
-#include "ResamplingSerialFlashReader.h"
-#include "playresmp.h"
-
-class AudioPlaySerialFlashResmp : public AudioPlayResmp
-{
-public:
- AudioPlaySerialFlashResmp(SerialFlashChip &fs) :
- AudioPlayResmp()
- {
- reader = new newdigate::ResamplingSerialFlashReader(fs);
- begin();
- }
-
- virtual ~AudioPlaySerialFlashResmp() {
- delete reader;
- }
-};
-
-
-#endif //TEENSY_RESAMPLING_SDREADER_PLAYSERIALFLASHRAWRESMP_H
diff --git a/third-party/TeensyVariablePlayback.O/src/waveheaderparser.h b/third-party/TeensyVariablePlayback.O/src/waveheaderparser.h
deleted file mode 100644
index e8d7a56..0000000
--- a/third-party/TeensyVariablePlayback.O/src/waveheaderparser.h
+++ /dev/null
@@ -1,181 +0,0 @@
-//
-// Created by Nicholas Newdigate on 20/07/2020.
-//
-#ifndef TEENSY_RESAMPLING_SDREADER_WAVEHEADERPARSER_H
-#define TEENSY_RESAMPLING_SDREADER_WAVEHEADERPARSER_H
-
-#include
-#include
-#include
-#include "spi_interrupt.h"
-
-using namespace std;
-
-// from https://gist.github.com/Jon-Schneider/8b7c53d27a7a13346a643dac9c19d34f
-struct wav_header {
- // RIFF Header
- char riff_header[4] = {0,0,0,0}; // 00 - 03 - Contains "RIFF"
- int header_chunk_size = 0; // 04 - 07 - Size of the wav portion of the file, which follows the first 8 bytes. File size - 8
- char wave_header[4] = {0,0,0,0}; // 08 - 11 - Contains "WAVE"
-
- // Format Header
- char fmt_header[4] = {0,0,0,0}; // 12 - 15 - Contains "fmt " (includes trailing space)
- int fmt_chunk_size = 0; // 16 - 19 - Should be 16 for PCM
- short audio_format = 0; // 20 - 21 - Should be 1 for PCM. 3 for IEEE Float
- short num_channels = 0; // 22 - 23
- int sample_rate = 0; // 24 - 27
- int byte_rate = 0; // 28 - 31
- short sample_alignment = 0; // 32 - 33
- short bit_depth = 0; // 34 - 35
-};
-
-struct wav_data_header {
- // Data
- char data_header[4] = {0,0,0,0}; // 36 - 39
- unsigned int data_bytes = 0;// 40 - 43
-};
-
-class WaveHeaderParser {
-public:
- bool readWaveHeader(const char *filename, wav_header &header, wav_data_header &wav_data_header) {
- File wavFile = SD.open(filename);
- if (!wavFile) {
- Serial.printf("Not able to open wave file... %s\n", filename);
- return false;
- }
- bool result = readWaveHeader(filename, header, wavFile);
- if (result) {
- wavFile.seek(36);
- unsigned char buffer[8];
- size_t bytesRead = wavFile.read(buffer, 8);
- if (bytesRead != 8) {
- Serial.printf("Not able to read header... %s\n", filename);
- result = false;
- }
-
- if (result) {
- unsigned infoTagsSize;
- result = readInfoTags(buffer, 0, infoTagsSize);
-
- if (result) {
- wavFile.seek(36 + infoTagsSize);
- bytesRead = wavFile.read(buffer, 8);
- if (bytesRead != 8) {
- Serial.printf("Not able to read header... %s\n", filename);
- return false;
- }
-
- result = readDataHeader(buffer, 0, wav_data_header);
- }
- }
- }
- wavFile.close();
- return result;
- }
-
- bool readWaveHeader(const char *filename, wav_header &header, File &wavFile) {
- char buffer[36];
- int bytesRead = wavFile.read(buffer, 36);
- if (bytesRead != 36) {
- Serial.printf("expected 36 bytes (was %d)\n", bytesRead);
- return false;
- }
- return readWaveHeaderFromBuffer(buffer, header);
- }
-
- bool readWaveHeaderFromBuffer(const char *buffer, wav_header &header) {
- if (buffer[0] != 'R' || buffer[1] != 'I' || buffer[2] != 'F' || buffer[3] != 'F') {
- Serial.printf("expected RIFF (was %s)\n", buffer);
- return false;
- }
- for (int i=0; i < 4; i++)
- header.riff_header[i] = buffer[i];
-
- unsigned char *b = (unsigned char*)buffer;
-
- auto header_chunk_size = static_cast(b[7] << 24 | b[6] << 16 | b[5] << 8 | b[4]);
- header.header_chunk_size = header_chunk_size;
-
- for (int i=0; i < 4; i++)
- header.wave_header[i] = buffer[i+8];
- if (buffer[8] != 'W' || buffer[9] != 'A' || buffer[10] != 'V' || buffer[11] != 'E') {
- Serial.printf("expected WAVE (was %s)\n", buffer[8]);
- return false;
- }
-
- for (int i=0; i < 4; i++)
- header.fmt_header[i] = buffer[i+12];
- if (buffer[12] != 'f' || buffer[13] != 'm' || buffer[14] != 't' || buffer[15] != ' ') {
- Serial.printf("expected 'fmt ' (was %s)\n", buffer[12]);
- return false;
- }
-
- auto fmt_chunk_size = static_cast(b[19] << 24 | b[18] << 16 | b[17] << 8 | b[16]);
- header.fmt_chunk_size = fmt_chunk_size;
- if (fmt_chunk_size != 16) {
- Serial.printf("chunk size should be 16 for PCM wave data... (was %d)\n", fmt_chunk_size);
- return false;
- }
-
- auto audio_format = static_cast((b[21] << 8) | b[20]);
- header.audio_format = audio_format;
-
- auto num_channels = static_cast((b[23] << 8) | b[22]);
- header.num_channels = num_channels;
-
- uint32_t sample_rate = static_cast(b[27] << 24 | b[26] << 16 | b[25] << 8 | b[24]);
- header.sample_rate = sample_rate;
-
- uint32_t byte_rate = static_cast(b[31] << 24 | b[30] << 16 | b[29] << 8 | b[28]);
- header.byte_rate = byte_rate;
-
- auto sample_alignment = static_cast((b[33] << 8) | b[32]);
- header.sample_alignment = sample_alignment;
-
- auto bit_depth = static_cast(b[35] << 8 | b[34]);
- header.bit_depth = bit_depth;
-
- return true;
- }
-
- bool readInfoTags(unsigned char *buffer, size_t offset, unsigned &infoTagsSize) {
- if ( buffer[offset+0] == 'L'
- && buffer[offset+1] == 'I'
- && buffer[offset+2] == 'S'
- && buffer[offset+3] == 'T') {
- infoTagsSize = static_cast(buffer[offset+7] << 24 | buffer[offset+6] << 16 | buffer[offset+5] << 8 | buffer[offset+4]);
- infoTagsSize += 8;
- return true;
- }
-
- if ( buffer[offset+0] == 'd'
- && buffer[offset+1] == 'a'
- && buffer[offset+2] == 't'
- && buffer[offset+3] == 'a') {
- infoTagsSize = 0;
- return true;
- }
-
- Serial.println("expected 'data' or 'LIST'...");
- return false;
- }
-
- bool readDataHeader(unsigned char *buffer, size_t offset, wav_data_header &data_header) {
-
- for (int i=0; i < 4; i++)
- data_header.data_header[i] = buffer[i+offset];
-
- if (buffer[offset+0] != 'd' || buffer[offset+1] != 'a' || buffer[offset+2] != 't' || buffer[offset+3] != 'a') {
- Serial.printf("expected data... (was %d)\n", buffer);
- return false;
- }
-
- auto data_bytes = static_cast(buffer[offset+7] << 24 | buffer[offset+6] << 16 | buffer[offset+5] << 8 | buffer[offset+4]);
- data_header.data_bytes = data_bytes;
- return true;
- }
-private:
-};
-
-
-#endif //TEENSY_RESAMPLING_SDREADER_WAVEHEADERPARSER_H
diff --git a/third-party/TeensyVariablePlayback.O/test.sh b/third-party/TeensyVariablePlayback.O/test.sh
deleted file mode 100755
index b31b446..0000000
--- a/third-party/TeensyVariablePlayback.O/test.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/bash
-cd cmake-build-debug/test/
-./tests
diff --git a/third-party/TeensyVariablePlayback.O/test/CMakeLists.txt b/third-party/TeensyVariablePlayback.O/test/CMakeLists.txt
deleted file mode 100644
index 74b6efc..0000000
--- a/third-party/TeensyVariablePlayback.O/test/CMakeLists.txt
+++ /dev/null
@@ -1,87 +0,0 @@
-cmake_minimum_required(VERSION 3.5)
-project(tests C CXX)
-if (DEFINED BUILD_FOR_LINUX)
- set(CMAKE_CXX_STANDARD 17)
-
- set (Boost_USE_STATIC_LIBS OFF)
- find_package (Boost REQUIRED COMPONENTS unit_test_framework)
- include_directories (${Boost_INCLUDE_DIRS})
-
- find_package(teensy_x86_stubs)
- include_directories(${teensy_x86_stubs_INCLUDE_DIR})
- message(STATUS "include-dir: teensy_x86_stubs: ${teensy_x86_stubs_INCLUDE_DIR}")
-
- find_package(teensy_audio_x86_stubs)
- include_directories(${teensy_audio_x86_stubs_INCLUDE_DIR})
-
- find_package(teensy_x86_sd_stubs)
- include_directories(${teensy_x86_sd_stubs_INCLUDE_DIR})
-
- include_directories(../src)
- include_directories(../test/audio)
-
- add_executable(embedfile embedfile.c)
-
- add_custom_command(OUTPUT kick_raw.c
- COMMAND embedfile kick_raw ${CMAKE_SOURCE_DIR}/test/resources/input/kick.raw
- )
-
- add_custom_command(OUTPUT stereo_souljah_raw.c
- COMMAND embedfile stereo_souljah_raw ${CMAKE_SOURCE_DIR}/test/resources/input/stereo_souljah.raw
- )
-
- add_custom_command(OUTPUT stereo_souljah_wav.c
- COMMAND embedfile stereo_souljah_wav ${CMAKE_SOURCE_DIR}/test/resources/input/stereo_souljah.wav
- )
-
- add_custom_command(OUTPUT mono_souljah_wav.c
- COMMAND embedfile mono_souljah_wav ${CMAKE_SOURCE_DIR}/test/resources/input/mono_souljah.wav
- )
-
- add_custom_command(OUTPUT PNO1C1_raw.c
- COMMAND embedfile PNO1C1_raw ${CMAKE_SOURCE_DIR}/test/resources/input/PNO1C1.raw
- )
-
- add_executable(tests
- kick_raw.c
- stereo_souljah_raw.c
- stereo_souljah_wav.c
- mono_souljah_wav.c
- PNO1C1_raw.c
- audio/output_test.cpp
-
- audio/array/AudioArrayFixture.h
- audio/array/test_array_mono_loop_forward_playback.cpp
- audio/array/test_array_stereo_loop_forward_playback.cpp
-
- audio/wav/AudioWavFixture.h
- audio/wav/test_wav_mono_loop_forward_playback.cpp
- audio/wav/test_wav_stereo_loop_forward_playback.cpp
- audio/wav/test_wav_tags.cpp
-
- low_level/sd/ResamplingReaderFixture.h
- low_level/sd/test_raw_mono_noloop_forward_playback.cpp
- low_level/sd/test_raw_mono_noloop_forward_double_rate_playback.cpp
- low_level/sd/test_raw_mono_loop_forward_playback.cpp
- low_level/sd/test_wav_mono_noloop_forward_playback.cpp
- low_level/sd/test_wav_mono_loop_forward_playback.cpp
- low_level/sd/test_wav_mono_noloop_backward_playback.cpp
-
- low_level/wav_header/test_parse_wave_header.cpp
-
- low_level/array/test_array_mono_loop_forward_playback.cpp
- low_level/array/test_array_stereo_loop_forward_playback.cpp
-
- low_level/arraywav/test_array_mono_loop_forward_playback.cpp
- low_level/arraywav/test_array_stereo_loop_forward_playback.cpp
-
- low_level/indexedfile/test_indexablefile.cpp
- )
-
- target_link_libraries(tests ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY})
- target_link_libraries(tests ${teensy_x86_stubs_LIBS})
- target_link_libraries(tests ${teensy_audio_x86_stubs_LIBS})
- target_link_libraries(tests ${teensy_x86_sd_stubs_LIBS})
- target_link_libraries(tests teensy_variable_playback)
- message(STATUS ${teensy_x86_stubs_LIBS})
-endif()
\ No newline at end of file
diff --git a/third-party/TeensyVariablePlayback.O/test/audio/array/AudioArrayFixture.h b/third-party/TeensyVariablePlayback.O/test/audio/array/AudioArrayFixture.h
deleted file mode 100644
index 5a38de9..0000000
--- a/third-party/TeensyVariablePlayback.O/test/audio/array/AudioArrayFixture.h
+++ /dev/null
@@ -1,24 +0,0 @@
-//
-// Created by Nicholas Newdigate on 17/06/2021.
-//
-#ifndef TEENSY_RESAMPLING_SDREADER_RESAMPLINGARRAYFIXTURE_H
-#define TEENSY_RESAMPLING_SDREADER_RESAMPLINGARRAYFIXTURE_H
-
-#include
-#include
-#include
-#include "output_test.h"
-#include "playarrayresmp.h"
-
-struct AudioArrayFixture {
-
- AudioArrayFixture() {
- AudioMemory(20);
- }
-
- ~AudioArrayFixture() {
- arduino_should_exit = true;
- }
-};
-
-#endif //TEENSY_RESAMPLING_SDREADER_RESAMPLINGARRAYFIXTURE_H
diff --git a/third-party/TeensyVariablePlayback.O/test/audio/array/test_array_mono_loop_forward_playback.cpp b/third-party/TeensyVariablePlayback.O/test/audio/array/test_array_mono_loop_forward_playback.cpp
deleted file mode 100644
index 0428821..0000000
--- a/third-party/TeensyVariablePlayback.O/test/audio/array/test_array_mono_loop_forward_playback.cpp
+++ /dev/null
@@ -1,234 +0,0 @@
-//
-// Created by Nicholas Newdigate on 18/07/2020.
-//
-
-#ifndef TEENSY_AUDIO_ARRAY_READERTESTS_CPP
-#define TEENSY_AUDIO_ARRAY_READERTESTS_CPP
-
-#include
-#include "AudioArrayFixture.h"
-
-extern unsigned char kick_raw[];
-extern unsigned int kick_raw_len; // in bytes, divide by 2 to get samples
-
-BOOST_AUTO_TEST_SUITE(test_audio_array_mono_loop_forward_playback)
-
- const uint16_t numberOfChannels = 1;
-
- const std::string referencePath = "test/resources/reference/";
- const std::string inputPath = "test/resources/input/";
- const std::string outputPath = "output/";
-
- BOOST_FIXTURE_TEST_CASE(Array_fwd_1_0000_quadratic_mono_noloop, AudioArrayFixture) {
-
- // GUItool: begin automatically generated code
- AudioPlayArrayResmp memory; //xy=306,225
- TestAudioOutput testout; //xy=612,224
- AudioConnection patchCord1(memory, 0, testout, 0);
- // GUItool: end automatically generated code
-
- const double playbackRate = 1.0;
- const std::string testName = "Array_fwd_1_0000_quadratic_mono_noloop";
- const std::string outputFile = testName+".wav";
- const std::string outputFileName = outputPath + outputFile;
- const std::string referenceFileName = referencePath+testName+".wav";
-
- testout.saveOutputFile(outputPath.c_str(), outputFile.c_str());
- memory.begin();
- memory.enableInterpolation(true);
- memory.setPlaybackRate(playbackRate);
- memory.playRaw((int16_t*)kick_raw, kick_raw_len / 2, numberOfChannels);
- for (int i=0; i < ((kick_raw_len)/128) + 20; i++) {
- testout.isr();
- }
- testout.closeOutputfile(numberOfChannels);
- patchCord1.disconnect();
- AudioConnection::reset();
- arduino_should_exit = true;
-
- std::ifstream ifs1(outputFileName);
- std::ifstream ifs2(referenceFileName);
- std::istream_iterator b1(ifs1), e1;
- std::istream_iterator b2(ifs2), e2;
-
- BOOST_CHECK_EQUAL_COLLECTIONS(b1, e1, b2, e2);
- }
-
- BOOST_FIXTURE_TEST_CASE(Array_fwd_0_5000_quadratic_mono_noloop, AudioArrayFixture) {
-
- // GUItool: begin automatically generated code
- AudioPlayArrayResmp memory; //xy=306,225
- TestAudioOutput testout; //xy=612,224
- AudioConnection patchCord1(memory, 0, testout, 0);
- // GUItool: end automatically generated code
- const double playbackRate = 0.5;
- const std::string testName = "Array_fwd_0_5000_quadratic_mono_noloop";
- const std::string outputFile = testName+".wav";
- const std::string outputFileName = outputPath + outputFile;
- const std::string referenceFileName = referencePath+testName+".wav";
-
- testout.saveOutputFile(outputPath.c_str(), outputFile.c_str());
- memory.begin();
- memory.enableInterpolation(true);
- memory.setPlaybackRate(playbackRate);
- memory.playRaw((int16_t*)kick_raw, kick_raw_len / 2, numberOfChannels);
- for (int i=0; i < ((kick_raw_len)/128) + 20; i++) {
- testout.isr();
- }
- testout.closeOutputfile(numberOfChannels);
- patchCord1.disconnect();
- AudioConnection::reset();
- arduino_should_exit = true;
-
- std::ifstream ifs1(outputFileName);
- std::ifstream ifs2(referenceFileName);
- std::istream_iterator b1(ifs1), e1;
- std::istream_iterator b2(ifs2), e2;
-
- BOOST_CHECK_EQUAL_COLLECTIONS(b1, e1, b2, e2);
- }
-
- BOOST_FIXTURE_TEST_CASE(Array_fwd_2_0000_quadratic_mono_noloop, AudioArrayFixture) {
-
- // GUItool: begin automatically generated code
- AudioPlayArrayResmp memory; //xy=306,225
- TestAudioOutput testout; //xy=612,224
- AudioConnection patchCord1(memory, 0, testout, 0);
- // GUItool: end automatically generated code
-
- const double playbackRate = 2.0;
- const std::string testName = "Array_fwd_2_0000_quadratic_mono_noloop";
- const std::string outputFile = testName+".wav";
- const std::string outputFileName = outputPath + outputFile;
- const std::string referenceFileName = referencePath+testName+".wav";
-
- testout.saveOutputFile(outputPath.c_str(), outputFile.c_str());
- memory.begin();
- memory.enableInterpolation(true);
- memory.setPlaybackRate(playbackRate);
- memory.playRaw((int16_t*)kick_raw, kick_raw_len / 2, numberOfChannels);
- for (int i=0; i < ((kick_raw_len)/128) + 20; i++) {
- testout.isr();
- }
- testout.closeOutputfile(numberOfChannels);
- patchCord1.disconnect();
- AudioConnection::reset();
- arduino_should_exit = true;
-
- std::ifstream ifs1(outputFileName);
- std::ifstream ifs2(referenceFileName);
- std::istream_iterator b1(ifs1), e1;
- std::istream_iterator b2(ifs2), e2;
-
- BOOST_CHECK_EQUAL_COLLECTIONS(b1, e1, b2, e2);
- }
-
- BOOST_FIXTURE_TEST_CASE(Array_fwd_0_7437_quadratic_mono_noloop, AudioArrayFixture) {
-
- // GUItool: begin automatically generated code
- AudioPlayArrayResmp memory; //xy=306,225
- TestAudioOutput testout; //xy=612,224
- AudioConnection patchCord1(memory, 0, testout, 0);
- // GUItool: end automatically generated code
-
- const double playbackRate = 0.7437;
- const std::string testName = "Array_fwd_0_7437_quadratic_mono_noloop";
- const std::string outputFile = testName+".wav";
- const std::string outputFileName = outputPath + outputFile;
- const std::string referenceFileName = referencePath+testName+".wav";
-
- testout.saveOutputFile(outputPath.c_str(), outputFile.c_str());
- memory.begin();
- memory.enableInterpolation(true);
- memory.setPlaybackRate(playbackRate);
- memory.playRaw((int16_t*)kick_raw, kick_raw_len / 2, numberOfChannels);
- for (int i=0; i < ((kick_raw_len)/128) + 20; i++) {
- testout.isr();
- }
- testout.closeOutputfile(numberOfChannels);
- patchCord1.disconnect();
- AudioConnection::reset();
- arduino_should_exit = true;
-
- std::ifstream ifs1(outputFileName);
- std::ifstream ifs2(referenceFileName);
- std::istream_iterator b1(ifs1), e1;
- std::istream_iterator b2(ifs2), e2;
-
- BOOST_CHECK_EQUAL_COLLECTIONS(b1, e1, b2, e2);
-
- }
-
- BOOST_FIXTURE_TEST_CASE(Array_fwd_1_7437_quadratic_mono_noloop, AudioArrayFixture) {
-
- // GUItool: begin automatically generated code
- AudioPlayArrayResmp memory; //xy=306,225
- TestAudioOutput testout; //xy=612,224
- AudioConnection patchCord1(memory, 0, testout, 0);
- // GUItool: end automatically generated code
-
- const double playbackRate = 1.7437;
- const std::string testName = "Array_fwd_1_7437_quadratic_mono_noloop";
- const std::string outputFile = testName+".wav";
- const std::string outputFileName = outputPath + outputFile;
- const std::string referenceFileName = referencePath+testName+".wav";
-
- testout.saveOutputFile(outputPath.c_str(), outputFile.c_str());
- memory.begin();
- memory.enableInterpolation(true);
- memory.setPlaybackRate(playbackRate);
- memory.playRaw((int16_t*)kick_raw, kick_raw_len / 2, numberOfChannels);
- for (int i=0; i < ((kick_raw_len)/128) + 20; i++) {
- testout.isr();
- }
- testout.closeOutputfile(numberOfChannels);
- patchCord1.disconnect();
- AudioConnection::reset();
- arduino_should_exit = true;
-
- std::ifstream ifs1(outputFileName);
- std::ifstream ifs2(referenceFileName);
- std::istream_iterator b1(ifs1), e1;
- std::istream_iterator b2(ifs2), e2;
-
- BOOST_CHECK_EQUAL_COLLECTIONS(b1, e1, b2, e2);
- }
-
- BOOST_FIXTURE_TEST_CASE(Array_fwd_8_7437_quadratic_mono_noloop, AudioArrayFixture) {
-
- // GUItool: begin automatically generated code
- AudioPlayArrayResmp memory; //xy=306,225
- TestAudioOutput testout; //xy=612,224
- AudioConnection patchCord1(memory, 0, testout, 0);
- // GUItool: end automatically generated code
-
- const double playbackRate = 8.7437;
- const std::string testName = "Array_fwd_8_7437_quadratic_mono_noloop";
- const std::string outputFile = testName+".wav";
- const std::string outputFileName = outputPath + outputFile;
- const std::string referenceFileName = referencePath+testName+".wav";
-
- testout.saveOutputFile(outputPath.c_str(), outputFile.c_str());
- memory.begin();
- memory.enableInterpolation(true);
- memory.setPlaybackRate(playbackRate);
- memory.playRaw((int16_t*)kick_raw, kick_raw_len / 2, numberOfChannels);
- for (int i=0; i < ((kick_raw_len)/128) + 20; i++) {
- testout.isr();
- }
- testout.closeOutputfile(numberOfChannels);
- patchCord1.disconnect();
- AudioConnection::reset();
- arduino_should_exit = true;
-
- std::ifstream ifs1(outputFileName);
- std::ifstream ifs2(referenceFileName);
- std::istream_iterator b1(ifs1), e1;
- std::istream_iterator b2(ifs2), e2;
-
- BOOST_CHECK_EQUAL_COLLECTIONS(b1, e1, b2, e2);
- }
-
-BOOST_AUTO_TEST_SUITE_END()
-
-#endif //TEENSY_AUDIO_ARRAY_READERTESTS_CPP
diff --git a/third-party/TeensyVariablePlayback.O/test/audio/array/test_array_stereo_loop_forward_playback.cpp b/third-party/TeensyVariablePlayback.O/test/audio/array/test_array_stereo_loop_forward_playback.cpp
deleted file mode 100644
index f0e83fc..0000000
--- a/third-party/TeensyVariablePlayback.O/test/audio/array/test_array_stereo_loop_forward_playback.cpp
+++ /dev/null
@@ -1,239 +0,0 @@
-//
-// Created by Nicholas Newdigate on 18/07/2020.
-//
-
-#ifndef TEENSY_AUDIO_ARRAY_READERTESTS_CPP
-#define TEENSY_AUDIO_ARRAY_READERTESTS_CPP
-
-#include
-#include "AudioArrayFixture.h"
-
-extern unsigned char stereo_souljah_raw[];
-extern unsigned int stereo_souljah_raw_len;
-
-BOOST_AUTO_TEST_SUITE(test_audio_array_stereo_loop_forward_playback)
-
- const uint16_t numberOfChannels = 2;
- const std::string referencePath = "test/resources/reference/";
- const std::string inputPath = "test/resources/input/";
- const std::string outputPath = "output/";
-
- BOOST_FIXTURE_TEST_CASE(Array_fwd_1_0000_quadratic_stereo_noloop, AudioArrayFixture) {
-
- // GUItool: begin automatically generated code
- AudioPlayArrayResmp memory; //xy=306,225
- TestAudioOutput testout; //xy=612,224
- AudioConnection patchCord1(memory, 0, testout, 0);
- AudioConnection patchCord2(memory, 1, testout, 1);
- // GUItool: end automatically generated code
-
- const double playbackRate = 1.0;
- const std::string testName = "Array_fwd_1_0000_quadratic_stereo_noloop";
- const std::string outputFile = testName+".wav";
- const std::string outputFileName = outputPath + outputFile;
- const std::string referenceFileName = referencePath+testName+".wav";
-
- testout.saveOutputFile(outputPath.c_str(), outputFile.c_str());
- memory.begin();
- memory.enableInterpolation(true);
- memory.setPlaybackRate(playbackRate);
- memory.playRaw((int16_t*)stereo_souljah_raw, stereo_souljah_raw_len / 2, numberOfChannels);
- for (int i=0; i < ((stereo_souljah_raw_len)/128) + 20; i++) {
- testout.isr();
- }
- testout.closeOutputfile(numberOfChannels);
- patchCord1.disconnect();
- AudioConnection::reset();
- arduino_should_exit = true;
-
- std::ifstream ifs1(outputFileName);
- std::ifstream ifs2(referenceFileName);
- std::istream_iterator b1(ifs1), e1;
- std::istream_iterator b2(ifs2), e2;
-
- BOOST_CHECK_EQUAL_COLLECTIONS(b1, e1, b2, e2);
- }
-
- BOOST_FIXTURE_TEST_CASE(Array_fwd_0_5000_quadratic_stereo_noloop, AudioArrayFixture) {
-
- // GUItool: begin automatically generated code
- AudioPlayArrayResmp memory; //xy=306,225
- TestAudioOutput testout; //xy=612,224
- AudioConnection patchCord1(memory, 0, testout, 0);
- AudioConnection patchCord2(memory, 1, testout, 1);
- // GUItool: end automatically generated code
- const double playbackRate = 0.5;
- const std::string testName = "Array_fwd_0_5000_quadratic_stereo_noloop";
- const std::string outputFile = testName+".wav";
- const std::string outputFileName = outputPath + outputFile;
- const std::string referenceFileName = referencePath+testName+".wav";
-
- testout.saveOutputFile(outputPath.c_str(), outputFile.c_str());
- memory.begin();
- memory.enableInterpolation(true);
- memory.setPlaybackRate(playbackRate);
- memory.playRaw((int16_t*)stereo_souljah_raw, stereo_souljah_raw_len / 2, numberOfChannels);
- for (int i=0; i < ((stereo_souljah_raw_len)/128) + 20; i++) {
- testout.isr();
- }
- testout.closeOutputfile(numberOfChannels);
- patchCord1.disconnect();
- AudioConnection::reset();
- arduino_should_exit = true;
-
- std::ifstream ifs1(outputFileName);
- std::ifstream ifs2(referenceFileName);
- std::istream_iterator b1(ifs1), e1;
- std::istream_iterator b2(ifs2), e2;
-
- BOOST_CHECK_EQUAL_COLLECTIONS(b1, e1, b2, e2);
- }
-
- BOOST_FIXTURE_TEST_CASE(Array_fwd_2_0000_quadratic_stereo_noloop, AudioArrayFixture) {
-
- // GUItool: begin automatically generated code
- AudioPlayArrayResmp memory; //xy=306,225
- TestAudioOutput testout; //xy=612,224
- AudioConnection patchCord1(memory, 0, testout, 0);
- AudioConnection patchCord2(memory, 1, testout, 1);
- // GUItool: end automatically generated code
-
- const double playbackRate = 2.0;
- const std::string testName = "Array_fwd_2_0000_quadratic_stereo_noloop";
- const std::string outputFile = testName+".wav";
- const std::string outputFileName = outputPath + outputFile;
- const std::string referenceFileName = referencePath+testName+".wav";
-
- testout.saveOutputFile(outputPath.c_str(), outputFile.c_str());
- memory.begin();
- memory.enableInterpolation(true);
- memory.setPlaybackRate(playbackRate);
- memory.playRaw((int16_t*)stereo_souljah_raw, stereo_souljah_raw_len / 2, numberOfChannels);
- for (int i=0; i < ((stereo_souljah_raw_len)/128) + 20; i++) {
- testout.isr();
- }
- testout.closeOutputfile(numberOfChannels);
- patchCord1.disconnect();
- AudioConnection::reset();
- arduino_should_exit = true;
-
- std::ifstream ifs1(outputFileName);
- std::ifstream ifs2(referenceFileName);
- std::istream_iterator b1(ifs1), e1;
- std::istream_iterator b2(ifs2), e2;
-
- BOOST_CHECK_EQUAL_COLLECTIONS(b1, e1, b2, e2);
- }
-
- BOOST_FIXTURE_TEST_CASE(Array_fwd_0_7437_quadratic_stereo_noloop, AudioArrayFixture) {
-
- // GUItool: begin automatically generated code
- AudioPlayArrayResmp memory; //xy=306,225
- TestAudioOutput testout; //xy=612,224
- AudioConnection patchCord1(memory, 0, testout, 0);
- AudioConnection patchCord2(memory, 1, testout, 1);
- // GUItool: end automatically generated code
-
- const double playbackRate = 0.7437;
- const std::string testName = "Array_fwd_0_7437_quadratic_stereo_noloop";
- const std::string outputFile = testName+".wav";
- const std::string outputFileName = outputPath + outputFile;
- const std::string referenceFileName = referencePath+testName+".wav";
-
- testout.saveOutputFile(outputPath.c_str(), outputFile.c_str());
- memory.begin();
- memory.enableInterpolation(true);
- memory.setPlaybackRate(playbackRate);
- memory.playRaw((int16_t*)stereo_souljah_raw, stereo_souljah_raw_len / 2, numberOfChannels);
- for (int i=0; i < ((stereo_souljah_raw_len)/128) + 20; i++) {
- testout.isr();
- }
- testout.closeOutputfile(numberOfChannels);
- patchCord1.disconnect();
- AudioConnection::reset();
- arduino_should_exit = true;
-
- std::ifstream ifs1(outputFileName);
- std::ifstream ifs2(referenceFileName);
- std::istream_iterator b1(ifs1), e1;
- std::istream_iterator b2(ifs2), e2;
-
- BOOST_CHECK_EQUAL_COLLECTIONS(b1, e1, b2, e2);
-
- }
-
- BOOST_FIXTURE_TEST_CASE(Array_fwd_1_7437_quadratic_stereo_noloop, AudioArrayFixture) {
-
- // GUItool: begin automatically generated code
- AudioPlayArrayResmp memory; //xy=306,225
- TestAudioOutput testout; //xy=612,224
- AudioConnection patchCord1(memory, 0, testout, 0);
- AudioConnection patchCord2(memory, 1, testout, 1);
- // GUItool: end automatically generated code
-
- const double playbackRate = 1.7437;
- const std::string testName = "Array_fwd_1_7437_quadratic_stereo_noloop";
- const std::string outputFile = testName+".wav";
- const std::string outputFileName = outputPath + outputFile;
- const std::string referenceFileName = referencePath+testName+".wav";
-
- testout.saveOutputFile(outputPath.c_str(), outputFile.c_str());
- memory.begin();
- memory.enableInterpolation(true);
- memory.setPlaybackRate(playbackRate);
- memory.playRaw((int16_t*)stereo_souljah_raw, stereo_souljah_raw_len / 2, numberOfChannels);
- for (int i=0; i < ((stereo_souljah_raw_len)/128) + 20; i++) {
- testout.isr();
- }
- testout.closeOutputfile(numberOfChannels);
- patchCord1.disconnect();
- AudioConnection::reset();
- arduino_should_exit = true;
-
- std::ifstream ifs1(outputFileName);
- std::ifstream ifs2(referenceFileName);
- std::istream_iterator b1(ifs1), e1;
- std::istream_iterator b2(ifs2), e2;
-
- BOOST_CHECK_EQUAL_COLLECTIONS(b1, e1, b2, e2);
- }
-
- BOOST_FIXTURE_TEST_CASE(Array_fwd_8_7437_quadratic_stereo_noloop, AudioArrayFixture) {
-
- // GUItool: begin automatically generated code
- AudioPlayArrayResmp memory; //xy=306,225
- TestAudioOutput testout; //xy=612,224
- AudioConnection patchCord1(memory, 0, testout, 0);
- AudioConnection patchCord2(memory, 1, testout, 1);
- // GUItool: end automatically generated code
-
- const double playbackRate = 8.7437;
- const std::string testName = "Array_fwd_8_7437_quadratic_stereo_noloop";
- const std::string outputFile = testName+".wav";
- const std::string outputFileName = outputPath + outputFile;
- const std::string referenceFileName = referencePath+testName+".wav";
-
- testout.saveOutputFile(outputPath.c_str(), outputFile.c_str());
- memory.begin();
- memory.enableInterpolation(true);
- memory.setPlaybackRate(playbackRate);
- memory.playRaw((int16_t*)stereo_souljah_raw, stereo_souljah_raw_len / 2, numberOfChannels);
- for (int i=0; i < ((stereo_souljah_raw_len)/128) + 20; i++) {
- testout.isr();
- }
- testout.closeOutputfile(numberOfChannels);
- patchCord1.disconnect();
- AudioConnection::reset();
- arduino_should_exit = true;
-
- std::ifstream ifs1(outputFileName);
- std::ifstream ifs2(referenceFileName);
- std::istream_iterator b1(ifs1), e1;
- std::istream_iterator b2(ifs2), e2;
-
- BOOST_CHECK_EQUAL_COLLECTIONS(b1, e1, b2, e2);
- }
-
-BOOST_AUTO_TEST_SUITE_END()
-
-#endif //TEENSY_AUDIO_ARRAY_READERTESTS_CPP
diff --git a/third-party/TeensyVariablePlayback.O/test/audio/output_test.cpp b/third-party/TeensyVariablePlayback.O/test/audio/output_test.cpp
deleted file mode 100644
index 0170502..0000000
--- a/third-party/TeensyVariablePlayback.O/test/audio/output_test.cpp
+++ /dev/null
@@ -1,92 +0,0 @@
-#include "output_test.h"
-
-audio_block_t * TestAudioOutput::block_left_1st = NULL;
-audio_block_t * TestAudioOutput::block_right_1st = NULL;
-bool TestAudioOutput::update_responsibility = false;
-
-void TestAudioOutput::begin(void)
-{
- update_responsibility = update_setup();
- active = true;
-}
-
-void TestAudioOutput::isr(void)
-{
- if (TestAudioOutput::update_responsibility) AudioStream::update_all();
-}
-
-void TestAudioOutput::update(void)
-{
- // null audio device: discard all incoming data
- if (!active) return;
- audio_block_t *block = receiveReadOnly(0);
- audio_block_t *blockRight = receiveReadOnly(1);
- if (block) {
-
- if (_saveToFile) {
- if (!blockRight){
- _outputFile.write((char*)block->data, 256);
- _dataSize += 256;
- } else {
-
- int16_t interleaved[256];
-
- if (blockRight) {
- memcpy_tdm_tx(interleaved, block->data, blockRight->data);
- } else
- memset(interleaved, 0, 512);
-
- _outputFile.write((char*)interleaved, 512);
- _dataSize += 512;
- }
-
- }
-
- /*
- Serial.print("Ch1:");
- for (int i=0; idata[i] < 0)
- Serial.printf("-%04x ", -block->data[i]);
- else
- Serial.printf(" %04x ", block->data[i]);
- }
- Serial.println();
- */
- release(block);
-
- if (blockRight) {
- /*
- Serial.print("Ch2:");
- for (int i=0; idata[i] < 0)
- Serial.printf("-%04x ", -blockRight->data[i]);
- else
- Serial.printf(" %04x ", blockRight->data[i]);
- }
- Serial.println();
- */
- release(blockRight);
- }
- } else {
- //Serial.print(" empty block \n");
- }
-}
-
-// Taken from https://github.com/PaulStoffregen/Audio/blob/master/output_tdm.cpp
-void TestAudioOutput::memcpy_tdm_tx(int16_t *dest, int16_t *src1, int16_t *src2)
-{
- int16_t i, in1, in2, out1, out2;
-
- for (i=0; i < AUDIO_BLOCK_SAMPLES; i++) {
- *dest = *src1++;
- *(dest + 1) = *src2++;
- dest += 2;
- }
-}
-
-unsigned char TestAudioOutput::test_output_wav_header[] = {
- 0x52, 0x49, 0x46, 0x46, 0x38, 0x00, 0x00, 0x00, 0x57, 0x41, 0x56, 0x45,
- 0x66, 0x6d, 0x74, 0x20, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
- 0x44, 0xac, 0x00, 0x00, 0x10, 0xb1, 0x02, 0x00, 0x04, 0x00, 0x10, 0x00,
- 0x64, 0x61, 0x74, 0x61, 0x14, 0x00, 0x00, 0x00
-};
diff --git a/third-party/TeensyVariablePlayback.O/test/audio/output_test.h b/third-party/TeensyVariablePlayback.O/test/audio/output_test.h
deleted file mode 100644
index 2eb9232..0000000
--- a/third-party/TeensyVariablePlayback.O/test/audio/output_test.h
+++ /dev/null
@@ -1,101 +0,0 @@
-#ifndef output_test_h_
-#define output_test_h_
-
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-#ifdef __APPLE__
-#define __filesystem std::__fs::filesystem
-#else
-#define __filesystem std::filesystem
-#endif
-class TestAudioOutput : public AudioStream
-{
-public:
- TestAudioOutput(void) : AudioStream(2, inputQueueArray) { begin(); }
- virtual void update(void);
- void begin(void);
- static void isr(void);
- bool saveOutputFile(const char * path, const char* filename){
- if (num_inputs == 0) return false;
- char cwd[500];
- if (getcwd(cwd, sizeof(cwd)) != NULL) {
- printf("Current working dir: %s\n", cwd);
- } else {
- perror("getcwd() error");
- }
- std::string outputPath = std::string(cwd) + "/" + std::string(path);
- __filesystem::path p(outputPath);
- if (! __filesystem::exists(p) )
- __filesystem::create_directories(outputPath);
-
- _filePath = outputPath + std::string(filename);
- std::cout << "saving output audio .wav file to " << _filePath << std::endl;
- _outputFile.open(_filePath, std::ios_base::trunc | std::ios_base::out);
- if (!_outputFile.is_open()) {
- Serial.printf("couldn't open file for recording...%s\n", _filePath.c_str());
- return false;
- } else {
- _filename = filename;
- _outputFile.write((char*)test_output_wav_header, 44);
- _saveToFile = true;
- return true;
- }
- }
- void closeOutputfile(uint16_t numChannels) {
- if (!_saveToFile) return;
- if (_outputFile.is_open()) {
- _saveToFile = false;
- char buf[4];
- buf[1] = numChannels >> 8;
- buf[0] = numChannels;
- _outputFile.seekp(22, std::ios_base::beg);
- _outputFile.write(buf, 2);
-
- long bytespersecond = numChannels * 2 * 44100;
- buf[3] = bytespersecond >> 24;
- buf[2] = bytespersecond >> 16;
- buf[1] = bytespersecond >> 8;
- buf[0] = bytespersecond;
- _outputFile.seekp(28, std::ios_base::beg);
- _outputFile.write(buf, 4);
-
- short bytespersampleframe = numChannels * 2;
- buf[1] = bytespersampleframe >> 8;
- buf[0] = bytespersampleframe;
- _outputFile.seekp(32, std::ios_base::beg);
- _outputFile.write(buf, 2);
-
- buf[3] = _dataSize >> 24;
- buf[2] = _dataSize >> 16;
- buf[1] = _dataSize >> 8;
- buf[0] = _dataSize;
- _outputFile.seekp(40, std::ios_base::beg);
- _outputFile.write(buf, 4);
- _outputFile.close();
- _filename = nullptr;
- }
- }
-protected:
- std::ofstream _outputFile;
- std::string _filePath;
- static audio_block_t *block_left_1st;
- static audio_block_t *block_right_1st;
- static bool update_responsibility;
- bool _saveToFile = false;
- unsigned int _dataSize = 0;
- const char *_filename;
- static void memcpy_tdm_tx(int16_t *dest, int16_t *src1, int16_t *src2);
-
-private:
- audio_block_t *inputQueueArray[2];
- static unsigned char test_output_wav_header[];
-};
-
-
-#endif
diff --git a/third-party/TeensyVariablePlayback.O/test/audio/wav/AudioWavFixture.h b/third-party/TeensyVariablePlayback.O/test/audio/wav/AudioWavFixture.h
deleted file mode 100644
index 2cb5bba..0000000
--- a/third-party/TeensyVariablePlayback.O/test/audio/wav/AudioWavFixture.h
+++ /dev/null
@@ -1,25 +0,0 @@
-//
-// Created by Nicholas Newdigate on 17/06/2021.
-//
-#ifndef TEENSY_RESAMPLING_SDREADER_RESAMPLINGWAVFIXTURE_H
-#define TEENSY_RESAMPLING_SDREADER_RESAMPLINGWAVFIXTURE_H
-
-#include
-#include
-#include
-#include
-#include "output_test.h"
-#include "playsdresmp.h"
-
-struct AudioWavFixture {
-
- AudioWavFixture() {
- AudioMemory(20);
- }
-
- ~AudioWavFixture() {
- arduino_should_exit = true;
- }
-};
-
-#endif //TEENSY_RESAMPLING_SDREADER_RESAMPLINGWAVFIXTURE_H
diff --git a/third-party/TeensyVariablePlayback.O/test/audio/wav/test_wav_mono_loop_forward_playback.cpp b/third-party/TeensyVariablePlayback.O/test/audio/wav/test_wav_mono_loop_forward_playback.cpp
deleted file mode 100644
index a771dd5..0000000
--- a/third-party/TeensyVariablePlayback.O/test/audio/wav/test_wav_mono_loop_forward_playback.cpp
+++ /dev/null
@@ -1,238 +0,0 @@
-//
-// Created by Nicholas Newdigate on 18/07/2020.
-//
-
-#ifndef TEENSY_AUDIO_SDWAV_MONO_READERTESTS_CPP
-#define TEENSY_AUDIO_SDWAV_MONO_READERTESTS_CPP
-
-#include
-#include "AudioWavFixture.h"
-
-BOOST_AUTO_TEST_SUITE(test_audio_wav_mono_loop_forward_playback)
-
- const uint16_t numberOfChannels = 1;
-
- const std::string referencePath = "test/resources/reference/";
- const std::string inputPath = "test/resources/input/";
- const std::string outputPath = "output/";
-
- BOOST_FIXTURE_TEST_CASE(Wav_fwd_1_0000_quadratic_mono_noloop, AudioWavFixture) {
-
- // GUItool: begin automatically generated code
- AudioPlaySdResmp wave; //xy=306,225
- TestAudioOutput testout; //xy=612,224
- AudioConnection patchCord1(wave, 0, testout, 0);
- // GUItool: end automatically generated code
-
- const double playbackRate = 1.0;
- const std::string testName = "Wav_fwd_1_0000_quadratic_mono_noloop";
- const std::string outputFile = testName+".wav";
- const std::string outputFileName = outputPath + outputFile;
- const std::string referenceFileName = referencePath + testName + ".wav";
- SD.setSDCardFolderPath(inputPath);
-
- testout.saveOutputFile(outputPath.c_str(), outputFile.c_str());
-
- wave.begin();
- wave.enableInterpolation(true);
- wave.setPlaybackRate(playbackRate);
- wave.playWav("kick.wav");
- while (wave.isPlaying()) {
- testout.isr();
- }
- testout.closeOutputfile(numberOfChannels);
- patchCord1.disconnect();
- AudioConnection::reset();
- arduino_should_exit = true;
-
- std::ifstream ifs1(outputFileName);
- std::ifstream ifs2(referenceFileName);
- std::istream_iterator b1(ifs1), e1;
- std::istream_iterator b2(ifs2), e2;
-
- BOOST_CHECK_EQUAL_COLLECTIONS(b1, e1, b2, e2);
- }
-
- BOOST_FIXTURE_TEST_CASE(Wav_fwd_0_5000_quadratic_mono_noloop, AudioWavFixture) {
-
- // GUItool: begin automatically generated code
- AudioPlaySdResmp wave; //xy=306,225
- TestAudioOutput testout; //xy=612,224
- AudioConnection patchCord1(wave, 0, testout, 0);
- // GUItool: end automatically generated code
- const double playbackRate = 0.5;
- const std::string testName = "Wav_fwd_0_5000_quadratic_mono_noloop";
- const std::string outputFile = testName+".wav";
- const std::string outputFileName = outputPath + outputFile;
- const std::string referenceFileName = referencePath + testName + ".wav";
- SD.setSDCardFolderPath(inputPath);
-
- testout.saveOutputFile(outputPath.c_str(), outputFile.c_str());
- wave.begin();
- wave.enableInterpolation(true);
- wave.setPlaybackRate(playbackRate);
- wave.playWav("kick.wav");
- while (wave.isPlaying()) {
- testout.isr();
- }
- testout.closeOutputfile(numberOfChannels);
- patchCord1.disconnect();
- AudioConnection::reset();
- arduino_should_exit = true;
-
- std::ifstream ifs1(outputFileName);
- std::ifstream ifs2(referenceFileName);
- std::istream_iterator b1(ifs1), e1;
- std::istream_iterator b2(ifs2), e2;
-
- BOOST_CHECK_EQUAL_COLLECTIONS(b1, e1, b2, e2);
- }
-
- BOOST_FIXTURE_TEST_CASE(Wav_fwd_2_0000_quadratic_mono_noloop, AudioWavFixture) {
-
- // GUItool: begin automatically generated code
- AudioPlaySdResmp wave; //xy=306,225
- TestAudioOutput testout; //xy=612,224
- AudioConnection patchCord1(wave, 0, testout, 0);
- // GUItool: end automatically generated code
-
- const double playbackRate = 2.0;
- const std::string testName = "Wav_fwd_2_0000_quadratic_mono_noloop";
- const std::string outputFile = testName+".wav";
- const std::string outputFileName = outputPath + outputFile;
- const std::string referenceFileName = referencePath + testName + ".wav";
- SD.setSDCardFolderPath(inputPath);
-
- testout.saveOutputFile(outputPath.c_str(), outputFile.c_str());
- wave.begin();
- wave.enableInterpolation(true);
- wave.setPlaybackRate(playbackRate);
- wave.playWav("kick.wav");
- while (wave.isPlaying()) {
- testout.isr();
- }
- testout.closeOutputfile(numberOfChannels);
- patchCord1.disconnect();
- AudioConnection::reset();
- arduino_should_exit = true;
-
- std::ifstream ifs1(outputFileName);
- std::ifstream ifs2(referenceFileName);
- std::istream_iterator b1(ifs1), e1;
- std::istream_iterator b2(ifs2), e2;
-
- BOOST_CHECK_EQUAL_COLLECTIONS(b1, e1, b2, e2);
- }
-
- BOOST_FIXTURE_TEST_CASE(Wav_fwd_0_7437_quadratic_mono_noloop, AudioWavFixture) {
-
- // GUItool: begin automatically generated code
- AudioPlaySdResmp wave; //xy=306,225
- TestAudioOutput testout; //xy=612,224
- AudioConnection patchCord1(wave, 0, testout, 0);
- // GUItool: end automatically generated code
-
- const double playbackRate = 0.7437;
- const std::string testName = "Wav_fwd_0_7437_quadratic_mono_noloop";
- const std::string outputFile = testName+".wav";
- const std::string outputFileName = outputPath + outputFile;
- const std::string referenceFileName = referencePath + testName + ".wav";
- SD.setSDCardFolderPath(inputPath);
-
- testout.saveOutputFile(outputPath.c_str(), outputFile.c_str());
- wave.begin();
- wave.enableInterpolation(true);
- wave.setPlaybackRate(playbackRate);
- wave.playWav("kick.wav");
- while (wave.isPlaying()) {
- testout.isr();
- }
- testout.closeOutputfile(numberOfChannels);
- patchCord1.disconnect();
- AudioConnection::reset();
- arduino_should_exit = true;
-
- std::ifstream ifs1(outputFileName);
- std::ifstream ifs2(referenceFileName);
- std::istream_iterator b1(ifs1), e1;
- std::istream_iterator b2(ifs2), e2;
-
- BOOST_CHECK_EQUAL_COLLECTIONS(b1, e1, b2, e2);
-
- }
-
- BOOST_FIXTURE_TEST_CASE(Wav_fwd_1_7437_quadratic_mono_noloop, AudioWavFixture) {
-
- // GUItool: begin automatically generated code
- AudioPlaySdResmp wave; //xy=306,225
- TestAudioOutput testout; //xy=612,224
- AudioConnection patchCord1(wave, 0, testout, 0);
- // GUItool: end automatically generated code
-
- const double playbackRate = 1.7437;
- const std::string testName = "Wav_fwd_1_7437_quadratic_mono_noloop";
- const std::string outputFile = testName+".wav";
- const std::string outputFileName = outputPath + outputFile;
- const std::string referenceFileName = referencePath + testName + ".wav";
- SD.setSDCardFolderPath(inputPath);
-
- testout.saveOutputFile(outputPath.c_str(), outputFile.c_str());
- wave.begin();
- wave.enableInterpolation(true);
- wave.setPlaybackRate(playbackRate);
- wave.playWav("kick.wav");
- while (wave.isPlaying()) {
- testout.isr();
- }
- testout.closeOutputfile(numberOfChannels);
- patchCord1.disconnect();
- AudioConnection::reset();
- arduino_should_exit = true;
-
- std::ifstream ifs1(outputFileName);
- std::ifstream ifs2(referenceFileName);
- std::istream_iterator b1(ifs1), e1;
- std::istream_iterator b2(ifs2), e2;
-
- BOOST_CHECK_EQUAL_COLLECTIONS(b1, e1, b2, e2);
- }
-
- BOOST_FIXTURE_TEST_CASE(Wav_fwd_8_7437_quadratic_mono_noloop, AudioWavFixture) {
-
- // GUItool: begin automatically generated code
- AudioPlaySdResmp wave; //xy=306,225
- TestAudioOutput testout; //xy=612,224
- AudioConnection patchCord1(wave, 0, testout, 0);
- // GUItool: end automatically generated code
-
- const double playbackRate = 8.7437;
- const std::string testName = "Wav_fwd_8_7437_quadratic_mono_noloop";
- const std::string outputFile = testName+".wav";
- const std::string outputFileName = outputPath + outputFile;
- const std::string referenceFileName = referencePath + testName + ".wav";
- SD.setSDCardFolderPath(inputPath);
-
- testout.saveOutputFile(outputPath.c_str(), outputFile.c_str());
- wave.begin();
- wave.enableInterpolation(true);
- wave.setPlaybackRate(playbackRate);
- wave.playWav("kick.wav");
- while (wave.isPlaying()) {
- testout.isr();
- }
- testout.closeOutputfile(numberOfChannels);
- patchCord1.disconnect();
- AudioConnection::reset();
- arduino_should_exit = true;
-
- std::ifstream ifs1(outputFileName);
- std::ifstream ifs2(referenceFileName);
- std::istream_iterator b1(ifs1), e1;
- std::istream_iterator b2(ifs2), e2;
-
- BOOST_CHECK_EQUAL_COLLECTIONS(b1, e1, b2, e2);
- }
-
-BOOST_AUTO_TEST_SUITE_END()
-
-#endif //TEENSY_AUDIO_SDWAV_MONO_READERTESTS_CPP
diff --git a/third-party/TeensyVariablePlayback.O/test/audio/wav/test_wav_stereo_loop_forward_playback.cpp b/third-party/TeensyVariablePlayback.O/test/audio/wav/test_wav_stereo_loop_forward_playback.cpp
deleted file mode 100644
index fa1738d..0000000
--- a/third-party/TeensyVariablePlayback.O/test/audio/wav/test_wav_stereo_loop_forward_playback.cpp
+++ /dev/null
@@ -1,244 +0,0 @@
-//
-// Created by Nicholas Newdigate on 18/07/2020.
-//
-
-#ifndef TEENSY_AUDIO_SDWAV_STEREO_READERTESTS_CPP
-#define TEENSY_AUDIO_SDWAV_STEREO_READERTESTS_CPP
-
-#include
-#include "AudioWavFixture.h"
-
-BOOST_AUTO_TEST_SUITE(test_audio_wav_stereo_loop_forward_playback)
-
- const uint16_t numberOfChannels = 2;
-
- const std::string referencePath = "test/resources/reference/";
- const std::string inputPath = "test/resources/input/";
- const std::string outputPath = "output/";
-
- BOOST_FIXTURE_TEST_CASE(Wav_fwd_1_0000_quadratic_stereo_noloop, AudioWavFixture) {
-
- // GUItool: begin automatically generated code
- AudioPlaySdResmp wave; //xy=306,225
- TestAudioOutput testout; //xy=612,224
- AudioConnection patchCord1(wave, 0, testout, 0);
- AudioConnection patchCord2(wave, 1, testout, 1);
- // GUItool: end automatically generated code
-
- const double playbackRate = 1.0;
- const std::string testName = "Wav_fwd_1_0000_quadratic_stereo_noloop";
- const std::string outputFile = testName+".wav";
- const std::string outputFileName = outputPath + outputFile;
- const std::string referenceFileName = referencePath + testName + ".wav";
- SD.setSDCardFolderPath(inputPath);
-
- testout.saveOutputFile(outputPath.c_str(), outputFile.c_str());
- wave.begin();
- wave.enableInterpolation(true);
- wave.setPlaybackRate(playbackRate);
- wave.playWav("stereo_souljah.wav");
- while (wave.isPlaying()) {
- testout.isr();
- }
- testout.closeOutputfile(numberOfChannels);
- patchCord1.disconnect();
- AudioConnection::reset();
- arduino_should_exit = true;
-
- std::ifstream ifs1(outputFileName);
- std::ifstream ifs2(referenceFileName);
- std::istream_iterator b1(ifs1), e1;
- std::istream_iterator b2(ifs2), e2;
-
- BOOST_CHECK_EQUAL_COLLECTIONS(b1, e1, b2, e2);
- }
-
- BOOST_FIXTURE_TEST_CASE(Wav_fwd_0_5000_quadratic_stereo_noloop, AudioWavFixture) {
-
- // GUItool: begin automatically generated code
- AudioPlaySdResmp wave; //xy=306,225
- TestAudioOutput testout; //xy=612,224
- AudioConnection patchCord1(wave, 0, testout, 0);
- AudioConnection patchCord2(wave, 1, testout, 1);
- // GUItool: end automatically generated code
- const double playbackRate = 0.5;
- const std::string testName = "Wav_fwd_0_5000_quadratic_stereo_noloop";
- const std::string outputFile = testName+".wav";
- const std::string outputFileName = outputPath + outputFile;
- const std::string referenceFileName = referencePath + testName + ".wav";
- SD.setSDCardFolderPath(inputPath);
-
- testout.saveOutputFile(outputPath.c_str(), outputFile.c_str());
-
- wave.begin();
- wave.enableInterpolation(true);
- wave.setPlaybackRate(playbackRate);
- wave.playWav("stereo_souljah.wav");
- while (wave.isPlaying()) {
- testout.isr();
- }
- testout.closeOutputfile(numberOfChannels);
- patchCord1.disconnect();
- AudioConnection::reset();
- arduino_should_exit = true;
-
- std::ifstream ifs1(outputFileName);
- std::ifstream ifs2(referenceFileName);
- std::istream_iterator b1(ifs1), e1;
- std::istream_iterator b2(ifs2), e2;
-
- BOOST_CHECK_EQUAL_COLLECTIONS(b1, e1, b2, e2);
- }
-
- BOOST_FIXTURE_TEST_CASE(Wav_fwd_2_0000_quadratic_stereo_noloop, AudioWavFixture) {
-
- // GUItool: begin automatically generated code
- AudioPlaySdResmp wave; //xy=306,225
- TestAudioOutput testout; //xy=612,224
- AudioConnection patchCord1(wave, 0, testout, 0);
- AudioConnection patchCord2(wave, 1, testout, 1);
- // GUItool: end automatically generated code
-
- const double playbackRate = 2.0;
- const std::string testName = "Wav_fwd_2_0000_quadratic_stereo_noloop";
- const std::string outputFile = testName+".wav";
- const std::string outputFileName = outputPath + outputFile;
- const std::string referenceFileName = referencePath + testName + ".wav";
- SD.setSDCardFolderPath(inputPath);
-
- testout.saveOutputFile(outputPath.c_str(), outputFile.c_str());
- wave.begin();
- wave.enableInterpolation(true);
- wave.setPlaybackRate(playbackRate);
- wave.playWav("stereo_souljah.wav");
- while (wave.isPlaying()) {
- testout.isr();
- }
- testout.closeOutputfile(numberOfChannels);
- patchCord1.disconnect();
- AudioConnection::reset();
- arduino_should_exit = true;
-
- std::ifstream ifs1(outputFileName);
- std::ifstream ifs2(referenceFileName);
- std::istream_iterator b1(ifs1), e1;
- std::istream_iterator b2(ifs2), e2;
-
- BOOST_CHECK_EQUAL_COLLECTIONS(b1, e1, b2, e2);
- }
-
- BOOST_FIXTURE_TEST_CASE(Wav_fwd_0_7437_quadratic_stereo_noloop, AudioWavFixture) {
-
- // GUItool: begin automatically generated code
- AudioPlaySdResmp wave; //xy=306,225
- TestAudioOutput testout; //xy=612,224
- AudioConnection patchCord1(wave, 0, testout, 0);
- AudioConnection patchCord2(wave, 1, testout, 1);
- // GUItool: end automatically generated code
-
- const double playbackRate = 0.7437;
- const std::string testName = "Wav_fwd_0_7437_quadratic_stereo_noloop";
- const std::string outputFile = testName+".wav";
- const std::string outputFileName = outputPath + outputFile;
- const std::string referenceFileName = referencePath + testName + ".wav";
- SD.setSDCardFolderPath(inputPath);
-
- testout.saveOutputFile(outputPath.c_str(), outputFile.c_str());
- wave.begin();
- wave.enableInterpolation(true);
- wave.setPlaybackRate(playbackRate);
- wave.playWav("stereo_souljah.wav");
- while (wave.isPlaying()) {
- testout.isr();
- }
- testout.closeOutputfile(numberOfChannels);
- patchCord1.disconnect();
- AudioConnection::reset();
- arduino_should_exit = true;
-
- std::ifstream ifs1(outputFileName);
- std::ifstream ifs2(referenceFileName);
- std::istream_iterator b1(ifs1), e1;
- std::istream_iterator b2(ifs2), e2;
-
- BOOST_CHECK_EQUAL_COLLECTIONS(b1, e1, b2, e2);
-
- }
-
- BOOST_FIXTURE_TEST_CASE(Wav_fwd_1_7437_quadratic_stereo_noloop, AudioWavFixture) {
-
- // GUItool: begin automatically generated code
- AudioPlaySdResmp wave; //xy=306,225
- TestAudioOutput testout; //xy=612,224
- AudioConnection patchCord1(wave, 0, testout, 0);
- AudioConnection patchCord2(wave, 1, testout, 1);
- // GUItool: end automatically generated code
-
- const double playbackRate = 1.7437;
- const std::string testName = "Wav_fwd_1_7437_quadratic_stereo_noloop";
- const std::string outputFile = testName+".wav";
- const std::string outputFileName = outputPath + outputFile;
- const std::string referenceFileName = referencePath + testName + ".wav";
- SD.setSDCardFolderPath(inputPath);
-
- testout.saveOutputFile(outputPath.c_str(), outputFile.c_str());
- wave.begin();
- wave.enableInterpolation(true);
- wave.setPlaybackRate(playbackRate);
- wave.playWav("stereo_souljah.wav");
- while (wave.isPlaying()) {
- testout.isr();
- }
- testout.closeOutputfile(numberOfChannels);
- patchCord1.disconnect();
- AudioConnection::reset();
- arduino_should_exit = true;
-
- std::ifstream ifs1(outputFileName);
- std::ifstream ifs2(referenceFileName);
- std::istream_iterator b1(ifs1), e1;
- std::istream_iterator b2(ifs2), e2;
-
- BOOST_CHECK_EQUAL_COLLECTIONS(b1, e1, b2, e2);
- }
-
- BOOST_FIXTURE_TEST_CASE(Wav_fwd_8_7437_quadratic_stereo_noloop, AudioWavFixture) {
-
- // GUItool: begin automatically generated code
- AudioPlaySdResmp wave; //xy=306,225
- TestAudioOutput testout; //xy=612,224
- AudioConnection patchCord1(wave, 0, testout, 0);
- AudioConnection patchCord2(wave, 1, testout, 1);
- // GUItool: end automatically generated code
-
- const double playbackRate = 8.7437;
- const std::string testName = "Wav_fwd_8_7437_quadratic_stereo_noloop";
- const std::string outputFile = testName+".wav";
- const std::string outputFileName = outputPath + outputFile;
- const std::string referenceFileName = referencePath + testName + ".wav";
- SD.setSDCardFolderPath(inputPath);
-
- testout.saveOutputFile(outputPath.c_str(), outputFile.c_str());
- wave.begin();
- wave.enableInterpolation(true);
- wave.setPlaybackRate(playbackRate);
- wave.playWav("stereo_souljah.wav");
- while (wave.isPlaying()) {
- testout.isr();
- }
- testout.closeOutputfile(numberOfChannels);
- patchCord1.disconnect();
- AudioConnection::reset();
- arduino_should_exit = true;
-
- std::ifstream ifs1(outputFileName);
- std::ifstream ifs2(referenceFileName);
- std::istream_iterator b1(ifs1), e1;
- std::istream_iterator b2(ifs2), e2;
-
- BOOST_CHECK_EQUAL_COLLECTIONS(b1, e1, b2, e2);
- }
-
-BOOST_AUTO_TEST_SUITE_END()
-
-#endif //TEENSY_AUDIO_SDWAV_STEREO_READERTESTS_CPP
diff --git a/third-party/TeensyVariablePlayback.O/test/audio/wav/test_wav_tags.cpp b/third-party/TeensyVariablePlayback.O/test/audio/wav/test_wav_tags.cpp
deleted file mode 100644
index 5b9226a..0000000
--- a/third-party/TeensyVariablePlayback.O/test/audio/wav/test_wav_tags.cpp
+++ /dev/null
@@ -1,118 +0,0 @@
-//
-// Created by Nicholas Newdigate on 18/07/2020.
-//
-
-#ifndef TEENSY_AUDIO_SDWAV_STEREO_READERTESTS_CPP
-#define TEENSY_AUDIO_SDWAV_STEREO_READERTESTS_CPP
-
-#include
-#include "AudioWavFixture.h"
-
-BOOST_AUTO_TEST_SUITE(test_audio_wav_tags_in_header)
-
- const uint16_t numberOfChannels = 2;
- const std::string referencePath = "test/resources/reference/";
- const std::string inputPath = "test/resources/input/";
- const std::string outputPath = "output/";
-
- BOOST_FIXTURE_TEST_CASE(Wav_with_tags_in_header_1, AudioWavFixture) {
-
- // GUItool: begin automatically generated code
- AudioPlaySdResmp wave; //xy=306,225
- TestAudioOutput testout; //xy=612,224
- AudioConnection patchCord1(wave, 0, testout, 0);
- AudioConnection patchCord2(wave, 1, testout, 1);
- // GUItool: end automatically generated code
-
- const double playbackRate = 1.0;
- const std::string testName = "SDTEST1";
- const std::string outputFile = testName+".wav";
- const std::string outputFileName = outputPath + outputFile;
- const std::string referenceFileName = referencePath + testName + ".wav";
- SD.setSDCardFolderPath(inputPath);
-
- if (!testout.saveOutputFile(outputPath.c_str(), outputFile.c_str())) {
- std::cout << "not able to save output file..." << std::endl;
- BOOST_ERROR("not able to save output file (1)...");
- }
- wave.begin();
- wave.enableInterpolation(true);
- wave.setPlaybackRate(playbackRate);
- bool isPlaying = wave.playWav(outputFile.c_str());
- if (!isPlaying) {
- std::cout << "input audio file is not able to play..." << std::endl;
- BOOST_ERROR("input audio file is not able to play (1)...");
- }
- if (!wave.isPlaying()) {
- std::cout << "input audio file is not able to play..." << std::endl;
- BOOST_ERROR("input audio file is not able to play (2)...");
- }
-
- while (wave.isPlaying()) {
- testout.isr();
- }
- testout.closeOutputfile(numberOfChannels);
- patchCord1.disconnect();
- AudioConnection::reset();
- arduino_should_exit = true;
-
- std::cout << "comparing " << outputFileName << " with " << referenceFileName << ";" << std::endl;
-
- std::ifstream ifs1(outputFileName);
- std::ifstream ifs2(referenceFileName);
- std::istream_iterator b1(ifs1), e1;
- std::istream_iterator b2(ifs2), e2;
-
- BOOST_CHECK_EQUAL_COLLECTIONS(b1, e1, b2, e2);
- }
- BOOST_FIXTURE_TEST_CASE(Wav_with_tags_in_header_2, AudioWavFixture) {
-
- // GUItool: begin automatically generated code
- AudioPlaySdResmp wave; //xy=306,225
- TestAudioOutput testout; //xy=612,224
- AudioConnection patchCord1(wave, 0, testout, 0);
- AudioConnection patchCord2(wave, 1, testout, 1);
- // GUItool: end automatically generated code
-
- const double playbackRate = 1.0;
- const std::string testName = "SDTEST2";
- const std::string outputFile = testName+".wav";
- const std::string outputFileName = outputPath + outputFile;
- const std::string referenceFileName = referencePath + testName + ".wav";
- SD.setSDCardFolderPath(inputPath);
-
- if (!testout.saveOutputFile(outputPath.c_str(), outputFile.c_str())) {
- std::cout << "not able to save output file..." << std::endl;
- BOOST_CHECK(false);
- return;
- }
- wave.begin();
- wave.enableInterpolation(true);
- wave.setPlaybackRate(playbackRate);
- wave.playWav(outputFile.c_str());
-
- if (!wave.isPlaying()) {
- std::cout << "input audio file is not able to play..." << std::endl;
- BOOST_CHECK(false);
- return;
- }
-
- while (wave.isPlaying()) {
- testout.isr();
- }
- testout.closeOutputfile(numberOfChannels);
- patchCord1.disconnect();
- AudioConnection::reset();
- arduino_should_exit = true;
-
- std::ifstream ifs1(outputFileName);
- std::ifstream ifs2(referenceFileName);
- std::istream_iterator b1(ifs1), e1;
- std::istream_iterator b2(ifs2), e2;
-
- BOOST_CHECK_EQUAL_COLLECTIONS(b1, e1, b2, e2);
- }
-
-BOOST_AUTO_TEST_SUITE_END()
-
-#endif //TEENSY_AUDIO_SDWAV_STEREO_READERTESTS_CPP
diff --git a/third-party/TeensyVariablePlayback.O/test/boost-to-junit-xml.xslt b/third-party/TeensyVariablePlayback.O/test/boost-to-junit-xml.xslt
deleted file mode 100644
index bee89f9..0000000
--- a/third-party/TeensyVariablePlayback.O/test/boost-to-junit-xml.xslt
+++ /dev/null
@@ -1,71 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- True
- False
-
-
- True
- 0
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/third-party/TeensyVariablePlayback.O/test/embedfile.c b/third-party/TeensyVariablePlayback.O/test/embedfile.c
deleted file mode 100644
index f08244b..0000000
--- a/third-party/TeensyVariablePlayback.O/test/embedfile.c
+++ /dev/null
@@ -1,53 +0,0 @@
-// taken from https://stackoverflow.com/a/11814544/4634140
-#include
-#include
-
-FILE* open_or_exit(const char* fname, const char* mode)
-{
- FILE* f = fopen(fname, mode);
- if (f == NULL) {
- perror(fname);
- exit(EXIT_FAILURE);
- }
- return f;
-}
-
-int main(int argc, char** argv)
-{
- if (argc < 3) {
- fprintf(stderr, "USAGE: %s {sym} {rsrc}\n\n"
- " Creates {sym}.c from the contents of {rsrc}\n",
- argv[0]);
- return EXIT_FAILURE;
- }
-
- const char* sym = argv[1];
- FILE* in = open_or_exit(argv[2], "r");
-
- char symfile[256];
- snprintf(symfile, sizeof(symfile), "%s.c", sym);
-
- FILE* out = open_or_exit(symfile,"w");
- fprintf(out, "#include \n");
- fprintf(out, "const char %s[] = {\n", sym);
-
- unsigned char buf[256];
- size_t nread = 0;
- size_t linecount = 0;
- do {
- nread = fread(buf, 1, sizeof(buf), in);
- size_t i;
- for (i=0; i < nread; i++) {
- fprintf(out, "0x%02x, ", buf[i]);
- if (++linecount == 10) { fprintf(out, "\n"); linecount = 0; }
- }
- } while (nread > 0);
- if (linecount > 0) fprintf(out, "\n");
- fprintf(out, "};\n");
- fprintf(out, "const size_t %s_len = sizeof(%s);\n\n",sym,sym);
-
- fclose(in);
- fclose(out);
-
- return EXIT_SUCCESS;
-}
\ No newline at end of file
diff --git a/third-party/TeensyVariablePlayback.O/test/low_level/array/ResamplingArrayFixture.h b/third-party/TeensyVariablePlayback.O/test/low_level/array/ResamplingArrayFixture.h
deleted file mode 100644
index 0490daf..0000000
--- a/third-party/TeensyVariablePlayback.O/test/low_level/array/ResamplingArrayFixture.h
+++ /dev/null
@@ -1,23 +0,0 @@
-//
-// Created by Nicholas Newdigate on 17/06/2021.
-//
-
-#ifndef TEENSY_RESAMPLING_SDREADER_RESAMPLINGARRAYFIXTURE_H
-#define TEENSY_RESAMPLING_SDREADER_RESAMPLINGARRAYFIXTURE_H
-
-#include "ResamplingArrayReader.h"
-
-struct ResamplingArrayFixture {
-
- ResamplingArrayFixture() {
- resamplingArrayReader = new newdigate::ResamplingArrayReader();
- }
-
- ~ResamplingArrayFixture() {
- delete resamplingArrayReader;
- }
-
- newdigate::ResamplingArrayReader * resamplingArrayReader;
-};
-
-#endif //TEENSY_RESAMPLING_SDREADER_RESAMPLINGARRAYFIXTURE_H
diff --git a/third-party/TeensyVariablePlayback.O/test/low_level/array/test_array_mono_loop_forward_playback.cpp b/third-party/TeensyVariablePlayback.O/test/low_level/array/test_array_mono_loop_forward_playback.cpp
deleted file mode 100644
index acd2c1b..0000000
--- a/third-party/TeensyVariablePlayback.O/test/low_level/array/test_array_mono_loop_forward_playback.cpp
+++ /dev/null
@@ -1,43 +0,0 @@
-//
-// Created by Nicholas Newdigate on 18/07/2020.
-//
-
-#ifndef TEENSY_RESAMPLING_SDREADER_ARRAY_READERTESTS_CPP
-#define TEENSY_RESAMPLING_SDREADER_ARRAY_READERTESTS_CPP
-
-#include
-#include "ResamplingArrayFixture.h"
-extern unsigned char kick_raw[];
-extern unsigned int kick_raw_len; // in bytes, divide by 2 to get samples
-
-BOOST_AUTO_TEST_SUITE(test_array_mono_loop_forward_playback)
-
- BOOST_FIXTURE_TEST_CASE(ReadForwardLoopAtRegularPlaybackRate, ResamplingArrayFixture) {
-
- const uint32_t expectedDataSize = kick_raw_len; // 32 16bit samples = 64 bytes of space
- printf("ReadForwardAtRegularPlaybackRate(%d)\n", expectedDataSize);
-
- resamplingArrayReader->begin();
- resamplingArrayReader->setPlaybackRate(1.0f);
- resamplingArrayReader->playRaw((int16_t*)kick_raw, kick_raw_len/2, 1);
- resamplingArrayReader->setInterpolationType(ResampleInterpolationType::resampleinterpolation_linear);
- int16_t actual[256];
- int16_t *buffers[1] = { actual };
-
- int j = 0, bytesRead = 0, total_bytes_read = 0, currentExpected = 0;
- bool assertionsPass = true;
- do {
- bytesRead = resamplingArrayReader->read((void**)buffers, 256 ); // 256 samples
- total_bytes_read += bytesRead;
- //printf("j:%d bytesRead: %d \n", j, bytesRead);
- //printf("\n");
- j++;
- } while (j < 3);
- printf("total_bytes_read: %d \n", total_bytes_read);
- resamplingArrayReader->close();
- BOOST_CHECK_EQUAL(true, true);
- }
-
-BOOST_AUTO_TEST_SUITE_END()
-
-#endif //TEENSY_RESAMPLING_SDREADER_READERTESTS_CPP
diff --git a/third-party/TeensyVariablePlayback.O/test/low_level/array/test_array_stereo_loop_forward_playback.cpp b/third-party/TeensyVariablePlayback.O/test/low_level/array/test_array_stereo_loop_forward_playback.cpp
deleted file mode 100644
index cc88552..0000000
--- a/third-party/TeensyVariablePlayback.O/test/low_level/array/test_array_stereo_loop_forward_playback.cpp
+++ /dev/null
@@ -1,54 +0,0 @@
-//
-// Created by Nicholas Newdigate on 18/07/2020.
-//
-
-#ifndef TEENSY_RESAMPLING_SDREADER_ARRAY_READERTESTS_CPP
-#define TEENSY_RESAMPLING_SDREADER_ARRAY_READERTESTS_CPP
-
-#include
-#include "ResamplingArrayFixture.h"
-#include "AudioStream.h"
-
-extern unsigned char stereo_souljah_raw[];
-extern unsigned int stereo_souljah_raw_len;
-BOOST_AUTO_TEST_SUITE(test_array_stereo_loop_forward_playback)
-
- unsigned char stereo_raw[] = {
- 0x00, 0x00, 0x10, 0x00,
- 0x01, 0x00, 0x11, 0x00,
- 0x02, 0x00, 0x12, 0x00,
- 0x03, 0x00, 0x13, 0x00,
- 0x04, 0x00, 0x14, 0x00,
- 0x05, 0x00, 0x15, 0x00 };
-
- unsigned int stereo_raw_length = 24;
-
- BOOST_FIXTURE_TEST_CASE(ReadForwardLoopAtRegularPlaybackRate, ResamplingArrayFixture) {
-
- const uint32_t expectedDataSize = stereo_souljah_raw_len; // 32 16bit samples = 64 bytes of space
- printf("ReadForwardAtRegularPlaybackRate(%d)\n", expectedDataSize);
-
- resamplingArrayReader->begin();
- resamplingArrayReader->setPlaybackRate(0.5f);
- resamplingArrayReader->playRaw((int16_t*)stereo_raw, stereo_raw_length/4, 1);
- resamplingArrayReader->setInterpolationType(ResampleInterpolationType::resampleinterpolation_none);
- int16_t actual_left[256];
- int16_t actual_right[256];
- int16_t *buffers[2] = { actual_left, actual_right };
-
- int j = 0, bytesRead = 0, total_bytes_read = 0, currentExpected = 0;
- bool assertionsPass = true;
- do {
- bytesRead = resamplingArrayReader->read((void**)buffers, 256 ); // 256 samples
- total_bytes_read += bytesRead;
- //printf("j:%d bytesRead: %d \n", j, bytesRead);
- j++;
- } while (j < 3);
- printf("total_bytes_read: %d \n", total_bytes_read);
- resamplingArrayReader->close();
- BOOST_CHECK_EQUAL(true, true);
- }
-
-BOOST_AUTO_TEST_SUITE_END()
-
-#endif //TEENSY_RESAMPLING_SDREADER_READERTESTS_CPP
diff --git a/third-party/TeensyVariablePlayback.O/test/low_level/arraywav/ResamplingArrayWavFixture.h b/third-party/TeensyVariablePlayback.O/test/low_level/arraywav/ResamplingArrayWavFixture.h
deleted file mode 100644
index f954704..0000000
--- a/third-party/TeensyVariablePlayback.O/test/low_level/arraywav/ResamplingArrayWavFixture.h
+++ /dev/null
@@ -1,23 +0,0 @@
-//
-// Created by Nicholas Newdigate on 17/06/2021.
-//
-
-#ifndef TEENSY_RESAMPLING_SDREADER_RESAMPLINGARRAYWAVFIXTURE_H
-#define TEENSY_RESAMPLING_SDREADER_RESAMPLINGARRAYWAVFIXTURE_H
-
-#include "ResamplingArrayReader.h"
-
-struct ResamplingArrayWavFixture {
-
- ResamplingArrayWavFixture() {
- resamplingArrayReader = new newdigate::ResamplingArrayReader();
- }
-
- ~ResamplingArrayWavFixture() {
- delete resamplingArrayReader;
- }
-
- newdigate::ResamplingArrayReader * resamplingArrayReader;
-};
-
-#endif //TEENSY_RESAMPLING_SDREADER_RESAMPLINGARRAYWAVFIXTURE_H
diff --git a/third-party/TeensyVariablePlayback.O/test/low_level/arraywav/test_array_mono_loop_forward_playback.cpp b/third-party/TeensyVariablePlayback.O/test/low_level/arraywav/test_array_mono_loop_forward_playback.cpp
deleted file mode 100644
index 7d16e68..0000000
--- a/third-party/TeensyVariablePlayback.O/test/low_level/arraywav/test_array_mono_loop_forward_playback.cpp
+++ /dev/null
@@ -1,44 +0,0 @@
-//
-// Created by Nicholas Newdigate on 18/07/2020.
-//
-
-#ifndef TEENSY_RESAMPLING_SDREADER_ARRAYWAV_MONO_READERTESTS_CPP
-#define TEENSY_RESAMPLING_SDREADER_ARRAYWAV_MONO_READERTESTS_CPP
-
-#include
-#include "ResamplingArrayWavFixture.h"
-
-extern unsigned char mono_souljah_wav[];
-extern unsigned int mono_souljah_wav_len;
-
-BOOST_AUTO_TEST_SUITE(test_array_mono)
-
- BOOST_FIXTURE_TEST_CASE(ReadForwardLoopAtRegularPlaybackRate, ResamplingArrayWavFixture) {
-
- const uint32_t expectedDataSize = mono_souljah_wav_len; // 32 16bit samples = 64 bytes of space
- printf("ReadForwardAtRegularPlaybackRate(%d)\n", expectedDataSize);
-
- resamplingArrayReader->begin();
- resamplingArrayReader->setPlaybackRate(0.5f);
- resamplingArrayReader->playWav((int16_t*)mono_souljah_wav, mono_souljah_wav_len/2);
- resamplingArrayReader->setInterpolationType(ResampleInterpolationType::resampleinterpolation_linear);
- int16_t actual[256];
- int16_t *buffers[1] = { actual };
-
- int j = 0, bytesRead = 0, total_bytes_read = 0, currentExpected = 0;
- bool assertionsPass = true;
- do {
- bytesRead = resamplingArrayReader->read((void**)buffers, 256 ); // 256 samples
- total_bytes_read += bytesRead;
- //printf("j:%d bytesRead: %d \n", j, bytesRead);
- //printf("\n");
- j++;
- } while (bytesRead > 0);
- printf("total_bytes_read: %d \n", total_bytes_read);
- resamplingArrayReader->close();
- BOOST_CHECK_EQUAL(true, true);
- }
-
-BOOST_AUTO_TEST_SUITE_END()
-
-#endif //TEENSY_RESAMPLING_SDREADER_ARRAYWAV_MONO_READERTESTS_CPP
diff --git a/third-party/TeensyVariablePlayback.O/test/low_level/arraywav/test_array_stereo_loop_forward_playback.cpp b/third-party/TeensyVariablePlayback.O/test/low_level/arraywav/test_array_stereo_loop_forward_playback.cpp
deleted file mode 100644
index 7364f28..0000000
--- a/third-party/TeensyVariablePlayback.O/test/low_level/arraywav/test_array_stereo_loop_forward_playback.cpp
+++ /dev/null
@@ -1,44 +0,0 @@
-//
-// Created by Nicholas Newdigate on 18/07/2020.
-//
-
-#ifndef TEENSY_RESAMPLING_SDREADER_ARRAYWAV_STEREO_READERTESTS_CPP
-#define TEENSY_RESAMPLING_SDREADER_ARRAYWAV_STEREO_READERTESTS_CPP
-
-#include
-#include "ResamplingArrayWavFixture.h"
-
-extern unsigned char stereo_souljah_wav[];
-extern unsigned int stereo_souljah_wav_len;
-
-BOOST_AUTO_TEST_SUITE(test_array_stereo)
-
- BOOST_FIXTURE_TEST_CASE(ReadForwardLoopAtRegularPlaybackRate, ResamplingArrayWavFixture) {
-
- const uint32_t expectedDataSize = stereo_souljah_wav_len; // 32 16bit samples = 64 bytes of space
- printf("ReadForwardAtRegularPlaybackRate(%d)\n", expectedDataSize);
-
- resamplingArrayReader->begin();
- resamplingArrayReader->setPlaybackRate(1.0f);
- resamplingArrayReader->playWav((int16_t*)stereo_souljah_wav, stereo_souljah_wav_len/2);
- resamplingArrayReader->setInterpolationType(ResampleInterpolationType::resampleinterpolation_linear);
- int16_t actualLeft[256], actualRight[256];
- int16_t *buffers[2] = { actualLeft, actualRight };
-
- int j = 0, bytesRead = 0, total_bytes_read = 0, currentExpected = 0;
- bool assertionsPass = true;
- do {
- bytesRead = resamplingArrayReader->read((void**)buffers, 256 ); // 256 samples
- total_bytes_read += bytesRead;
- //printf("j:%d bytesRead: %d \n", j, bytesRead);
- //printf("\n");
- j++;
- } while (bytesRead > 0);
- printf("total_bytes_read: %d \n", total_bytes_read);
- resamplingArrayReader->close();
- BOOST_CHECK_EQUAL(true, true);
- }
-
-BOOST_AUTO_TEST_SUITE_END()
-
-#endif //TEENSY_RESAMPLING_SDREADER_ARRAYWAV_STEREO_READERTESTS_CPP
\ No newline at end of file
diff --git a/third-party/TeensyVariablePlayback.O/test/low_level/indexedfile/IndexedFileFixture.h b/third-party/TeensyVariablePlayback.O/test/low_level/indexedfile/IndexedFileFixture.h
deleted file mode 100644
index 967d844..0000000
--- a/third-party/TeensyVariablePlayback.O/test/low_level/indexedfile/IndexedFileFixture.h
+++ /dev/null
@@ -1,16 +0,0 @@
-#ifndef TEENSY_VARIABLE_PLAYBACK_TEST_LOWLEVEL_INDEXEDFILE_INDEXEDFILEFIXTURE_H
-#define TEENSY_VARIABLE_PLAYBACK_TEST_LOWLEVEL_INDEXEDFILE_INDEXEDFILEFIXTURE_H
-
-#include "IndexableFile.h"
-
-struct IndexableFileFixture {
-
- IndexableFileFixture() {
- }
-
- ~IndexableFileFixture() {
- }
-
-};
-
-#endif //TEENSY_VARIABLE_PLAYBACK_TEST_LOWLEVEL_INDEXEDFILE_INDEXEDFILEFIXTURE_H
diff --git a/third-party/TeensyVariablePlayback.O/test/low_level/indexedfile/test_indexablefile.cpp b/third-party/TeensyVariablePlayback.O/test/low_level/indexedfile/test_indexablefile.cpp
deleted file mode 100644
index 017d38c..0000000
--- a/third-party/TeensyVariablePlayback.O/test/low_level/indexedfile/test_indexablefile.cpp
+++ /dev/null
@@ -1,32 +0,0 @@
-#include
-#include "IndexedFileFixture.h"
-
-#include
-#include "IndexableSDFile.h"
-
-BOOST_AUTO_TEST_SUITE(test_indexablefile)
-
- BOOST_FIXTURE_TEST_CASE(basic_test, IndexableFileFixture) {
-
- const uint16_t sample_size = 30;
- int16_t file_contents[sample_size] = {0};
- for (int i=0; i indexable("blah.h"); // use max 2 buffers, with 16 elements each....
-
- /*
- for (int i=0; i0; i--) {
- std::cout << i-1 << " " << (int)indexable[i-1] << std::endl;
- }
- */
- indexable.close();
- }
-
-BOOST_AUTO_TEST_SUITE_END()
diff --git a/third-party/TeensyVariablePlayback.O/test/low_level/sd/ResamplingReaderFixture.h b/third-party/TeensyVariablePlayback.O/test/low_level/sd/ResamplingReaderFixture.h
deleted file mode 100644
index 692829a..0000000
--- a/third-party/TeensyVariablePlayback.O/test/low_level/sd/ResamplingReaderFixture.h
+++ /dev/null
@@ -1,23 +0,0 @@
-//
-// Created by Nicholas Newdigate on 18/07/2020.
-//
-
-#ifndef TEENSY_RESAMPLING_SDREADER_RESAMPLINGREADERFIXTURE_H
-#define TEENSY_RESAMPLING_SDREADER_RESAMPLINGREADERFIXTURE_H
-
-#include "ResamplingSdReader.h"
-
-struct ResamplingReaderFixture {
-
- ResamplingReaderFixture() {
- resamplingSdReader = new newdigate::ResamplingSdReader();
- }
-
- ~ResamplingReaderFixture() {
- delete resamplingSdReader;
- }
-
- newdigate::ResamplingSdReader * resamplingSdReader;
-};
-
-#endif //TEENSY_RESAMPLING_SDREADER_RESAMPLINGREADERFIXTURE_H
diff --git a/third-party/TeensyVariablePlayback.O/test/low_level/sd/readme.MD b/third-party/TeensyVariablePlayback.O/test/low_level/sd/readme.MD
deleted file mode 100755
index fcaf731..0000000
--- a/third-party/TeensyVariablePlayback.O/test/low_level/sd/readme.MD
+++ /dev/null
@@ -1,5 +0,0 @@
-#Don't Run Unit Tests on the Arduino Device or Emulator
-https://stackoverflow.com/a/11437456
-
-includes code from the following repos:
-https://github.com/IronSavior/dsm2_tx
\ No newline at end of file
diff --git a/third-party/TeensyVariablePlayback.O/test/low_level/sd/test_raw_mono_loop_forward_playback.cpp b/third-party/TeensyVariablePlayback.O/test/low_level/sd/test_raw_mono_loop_forward_playback.cpp
deleted file mode 100644
index f899930..0000000
--- a/third-party/TeensyVariablePlayback.O/test/low_level/sd/test_raw_mono_loop_forward_playback.cpp
+++ /dev/null
@@ -1,97 +0,0 @@
-//
-// Created by Nicholas Newdigate on 18/07/2020.
-//
-
-#ifndef TEENSY_RESAMPLING_SDREADER_READER_MONO_LOOP_TESTS_CPP
-#define TEENSY_RESAMPLING_SDREADER_READER_MONO_LOOP_TESTS_CPP
-#include
-#include "ResamplingReaderFixture.h"
-
-BOOST_AUTO_TEST_SUITE(test_raw_mono_loop_forward_playback)
-
- BOOST_FIXTURE_TEST_CASE(ReadForwardLoopAtRegularPlaybackRate, ResamplingReaderFixture) {
-
- const uint32_t expectedDataSize = 32; // 32 16bit samples = 64 bytes of space
- printf("ReadForwardAtRegularPlaybackRate(%d)\n", expectedDataSize);
- int16_t expected[expectedDataSize];
- for (int16_t i = 0; i < expectedDataSize; i++) {
- expected[i] = i;
- }
- SD.setSDCardFileData((char*) expected, expectedDataSize * 2);
-
- resamplingSdReader->begin();
- resamplingSdReader->setPlaybackRate(1.0);
- resamplingSdReader->playRaw("test2.bin", 1);
- resamplingSdReader->setLoopType(looptype_repeat);
- int16_t actual[256];
- int16_t *buffers[1] = { actual };
- int j = 0, samplesRead = 0, total_bytes_read = 0, currentExpected = 0;
- bool assertionsPass = true;
- do {
- samplesRead = resamplingSdReader->read((void**)buffers, 256 ); // 256 samples
- total_bytes_read += samplesRead * 2;
- printf("j:%d samplesRead: %d \n", j, samplesRead);
-
- for (int i=0; i < samplesRead; i++) {
- printf("\t\t[%x]:%x", currentExpected, actual[i]);
-
- if (currentExpected != actual[i]) {
- assertionsPass = false;
- BOOST_FAIL("Value not as expected!!!");
- }
-
- currentExpected++;
- currentExpected %= expectedDataSize;
- }
-
- printf("\n");
- j++;
- } while (j < 100);
- printf("total_bytes_read: %d \n", total_bytes_read);
- resamplingSdReader->close();
-
- }
-
- BOOST_FIXTURE_TEST_CASE(ReadForwardLoopAtHalfPlaybackRate, ResamplingReaderFixture) {
-
- const uint32_t size_of_datasource = 800;
- printf("ReadForwardAtRegularPlaybackRate(%d)\n", size_of_datasource);
- int16_t dataSource[size_of_datasource];
- for (int16_t i = 0; i < size_of_datasource; i++) {
- dataSource[i] = i;
- }
- SD.setSDCardFileData((char*) dataSource, size_of_datasource * 2);
-
- const int16_t expectedSize = size_of_datasource * 2;
- int16_t expected[expectedSize];
- for (int16_t i = 0; i < expectedSize; i++) {
- expected[i] = i / 2;
- }
-
- resamplingSdReader->begin();
- resamplingSdReader->setPlaybackRate(0.5);
- resamplingSdReader->playRaw("test2.bin", 1);
- resamplingSdReader->setLoopType(looptype_none);
- int16_t actual[expectedSize];
- int16_t *buffers[1] = { actual };
- int j = 0, samplesRead = 0, total_bytes_read = 0;
- do {
- samplesRead = resamplingSdReader->read((void**)buffers, 256 );
- total_bytes_read += samplesRead * 2;
- printf("j:%d samplesRead: %d: ", j, samplesRead);
- for (int i=0; i < samplesRead; i++) {
- printf("\t\t[%x]:%x", expected[j * 256 + i], actual[i]);
- }
- printf("\n");
-
- if (samplesRead != 0)
- BOOST_CHECK_EQUAL_COLLECTIONS(&expected[j * 256], &expected[j * 256 + samplesRead - 1], &actual[0], &actual[samplesRead - 1]);
- j++;
- } while (samplesRead > 0);
- printf("total_bytes_read: %d \n", total_bytes_read);
- resamplingSdReader->close();
- }
-
-BOOST_AUTO_TEST_SUITE_END()
-
-#endif //TEENSY_RESAMPLING_SDREADER_READER_MONO_LOOP_TESTS_CPP
diff --git a/third-party/TeensyVariablePlayback.O/test/low_level/sd/test_raw_mono_noloop_forward_double_rate_playback.cpp b/third-party/TeensyVariablePlayback.O/test/low_level/sd/test_raw_mono_noloop_forward_double_rate_playback.cpp
deleted file mode 100644
index 2928607..0000000
--- a/third-party/TeensyVariablePlayback.O/test/low_level/sd/test_raw_mono_noloop_forward_double_rate_playback.cpp
+++ /dev/null
@@ -1,115 +0,0 @@
-//
-// Created by Nicholas Newdigate on 18/07/2020.
-//
-
-#ifndef TEENSY_RESAMPLING_SDREADER_READER_MONO_NOLOOP_TESTS_CPP
-#define TEENSY_RESAMPLING_SDREADER_READER_MONO_NOLOOP_TESTS_CPP
-#include
-#include "ResamplingReaderFixture.h"
-#include
-
-BOOST_AUTO_TEST_SUITE(test_raw_mono_noloop_forward_double_rate_playback)
- const double playBackRate = 2.0;
-
- void populateDataSourceAndSetSDCardMockData(const uint32_t size_of_datasource, int16_t dataSource[]) {
- for (int16_t i = 0; i < size_of_datasource; i++) {
- dataSource[i] = i;
- }
- SD.setSDCardFileData((char *) dataSource, size_of_datasource * 2);
- }
-
- void testReadForwardAtDoublePlaybackRate(const uint32_t size_of_datasource, newdigate::ResamplingSdReader *resamplingSdReader) {
- printf("test_raw_mono_noloop_forward_double_rate_playback::testReadForwardAtDoublePlaybackRate(rate:%.2f\tsamples:%d)\n", playBackRate, size_of_datasource);
-
- int16_t dataSource[size_of_datasource];
- populateDataSourceAndSetSDCardMockData(size_of_datasource, dataSource);
-
- const int16_t expectedSize = ceil(size_of_datasource / 2.0);
- int16_t expected[expectedSize];
- for (int16_t i = 0; i < expectedSize; i++) {
- expected[i] = i * 2;
- }
-
- resamplingSdReader->begin();
- resamplingSdReader->setPlaybackRate(playBackRate);
- resamplingSdReader->playRaw("test2.bin", 1);
- resamplingSdReader->setLoopType(looptype_none);
- int16_t actual[256];
- int16_t *buffers[1] = { actual };
-
- int j = 0, samplesRead = 0, total_bytes_read = 0;
- do {
- samplesRead = resamplingSdReader->read((void**)buffers, 256);
- total_bytes_read += samplesRead * 2;
- printf("j:%d samplesRead: %d: ", j, samplesRead);
- for (int i = 0; i < samplesRead; i++) {
- printf("\t\t[%x]:%x", expected[j * 256 + i], actual[i]);
- }
- printf("\n");
- if (samplesRead != 0)
- BOOST_CHECK_EQUAL_COLLECTIONS(&expected[j * 256], &expected[j * 256 + samplesRead - 1], &actual[0], &actual[samplesRead - 1]);
- j++;
- } while (samplesRead > 0);
- printf("actual: bytes read: %d; samples read: %d \t\texpected: bytes read: %d; samples read:%d\n",
- total_bytes_read, total_bytes_read / 2, expectedSize * 2, expectedSize);
- resamplingSdReader->close();
-
- BOOST_CHECK_EQUAL(expectedSize * 2, total_bytes_read );
- }
-
- BOOST_FIXTURE_TEST_CASE(RawFileHas0Samples, ResamplingReaderFixture)
- {
- testReadForwardAtDoublePlaybackRate(0, resamplingSdReader);
- }
-
- BOOST_FIXTURE_TEST_CASE(RawFileHas1Sample, ResamplingReaderFixture) {
- testReadForwardAtDoublePlaybackRate(1, resamplingSdReader);
- }
-
- BOOST_FIXTURE_TEST_CASE(RawFileHas2Samples, ResamplingReaderFixture) {
- testReadForwardAtDoublePlaybackRate(2, resamplingSdReader);
- }
-
- BOOST_FIXTURE_TEST_CASE(RawFileHas4Samples, ResamplingReaderFixture) {
- testReadForwardAtDoublePlaybackRate(2, resamplingSdReader);
- }
-
- BOOST_FIXTURE_TEST_CASE(RawFileHas255Samples, ResamplingReaderFixture) {
- testReadForwardAtDoublePlaybackRate(255, resamplingSdReader);
- }
-
- BOOST_FIXTURE_TEST_CASE(RawFileHas256Samples, ResamplingReaderFixture) {
- testReadForwardAtDoublePlaybackRate(256, resamplingSdReader);
- }
-
- BOOST_FIXTURE_TEST_CASE(RawFileHas257Samples, ResamplingReaderFixture) {
- testReadForwardAtDoublePlaybackRate(257, resamplingSdReader);
- }
-
- BOOST_FIXTURE_TEST_CASE(RawFileHas500Samples, ResamplingReaderFixture) {
- testReadForwardAtDoublePlaybackRate(500, resamplingSdReader);
- }
-
- BOOST_FIXTURE_TEST_CASE(RawFileHas512Samples, ResamplingReaderFixture) {
- testReadForwardAtDoublePlaybackRate(512, resamplingSdReader);
- }
-
- BOOST_FIXTURE_TEST_CASE(RawFileHas800Samples, ResamplingReaderFixture) {
- testReadForwardAtDoublePlaybackRate(800, resamplingSdReader);
- }
-
- BOOST_FIXTURE_TEST_CASE(RawFileHas1023Samples, ResamplingReaderFixture) {
- testReadForwardAtDoublePlaybackRate(1023, resamplingSdReader);
- }
-
- BOOST_FIXTURE_TEST_CASE(RawFileHas1024Samples, ResamplingReaderFixture) {
- testReadForwardAtDoublePlaybackRate(1024, resamplingSdReader);
- }
-
- BOOST_FIXTURE_TEST_CASE(RawFileHas1025Samples, ResamplingReaderFixture) {
- testReadForwardAtDoublePlaybackRate(1025, resamplingSdReader);
- }
-
-BOOST_AUTO_TEST_SUITE_END()
-
-#endif //TEENSY_RESAMPLING_SDREADER_READER_MONO_NOLOOP_TESTS_CPP
\ No newline at end of file
diff --git a/third-party/TeensyVariablePlayback.O/test/low_level/sd/test_raw_mono_noloop_forward_playback.cpp b/third-party/TeensyVariablePlayback.O/test/low_level/sd/test_raw_mono_noloop_forward_playback.cpp
deleted file mode 100644
index e575ceb..0000000
--- a/third-party/TeensyVariablePlayback.O/test/low_level/sd/test_raw_mono_noloop_forward_playback.cpp
+++ /dev/null
@@ -1,95 +0,0 @@
-//
-// Created by Nicholas Newdigate on 18/07/2020.
-//
-
-#ifndef TEENSY_RESAMPLING_SDREADER_READER_MONO_FORWARD_TESTS_CPP
-#define TEENSY_RESAMPLING_SDREADER_READER_MONO_FORWARD_TESTS_CPP
-#define BOOST_AUTO_TEST_MAIN
-#define BOOST_TEST_MODULE ResamplingReaderTests
-#define BOOST_TEST_DYN_LINK
-#include
-#include "ResamplingReaderFixture.h"
-
-BOOST_AUTO_TEST_SUITE(test_raw_mono_noloop_forward_playback)
-
- BOOST_FIXTURE_TEST_CASE(ReadForwardAtRegularPlaybackRate, ResamplingReaderFixture) {
-
- const uint32_t expectedDataSize = 1600;
- printf("ReadForwardAtRegularPlaybackRate(%d)\n", expectedDataSize);
- int16_t expected[expectedDataSize];
- for (int16_t i = 0; i < expectedDataSize; i++) {
- expected[i] = i;
- }
- SD.setSDCardFileData((char*) expected, expectedDataSize * 2);
-
- resamplingSdReader->begin();
- resamplingSdReader->setPlaybackRate(1.0);
- resamplingSdReader->play("test2.bin", false, 1);
- resamplingSdReader->setLoopType(looptype_none);
- resamplingSdReader->setInterpolationType(ResampleInterpolationType::resampleinterpolation_quadratic);
- int16_t actual[1024];
- int16_t *buffers[1] = { actual };
- int j = 0, samplesRead = 0, total_bytes_read = 0;
- do {
- samplesRead = resamplingSdReader->read((void**)buffers, 256 );
- total_bytes_read += samplesRead * 2;
- printf("j:%d samplesRead: %d \n", j, samplesRead);
-
- for (int i=0; i < samplesRead; i++) {
- printf("\t\t[%x]:%x", expected[j * 256 + i], actual[j + i]);
- }
- printf("\n");
- j++;
- } while (samplesRead > 0);
- printf("total_bytes_read: %d \n", total_bytes_read);
- resamplingSdReader->close();
-
- //BOOST_CHECK_EQUAL_COLLECTIONS(&expected[0], &expected[expectedDataSize-1], &actual[0], &actual[(total_bytes_read / 2)-1]);
- }
-
- BOOST_FIXTURE_TEST_CASE(ReadForwardAtHalfPlaybackRate, ResamplingReaderFixture) {
-
- const uint32_t size_of_datasource = 800;
- printf("ReadForwardAtRegularPlaybackRate(%d)\n", size_of_datasource);
- int16_t dataSource[size_of_datasource];
- for (int16_t i = 0; i < size_of_datasource; i++) {
- dataSource[i] = i;
- }
- SD.setSDCardFileData((char*) dataSource, size_of_datasource * 2);
-
- const int16_t expectedSize = size_of_datasource * 2;
- int16_t expected[expectedSize];
- for (int16_t i = 0; i < expectedSize; i++) {
- expected[i] = i / 2;
- }
-
- resamplingSdReader->begin();
- resamplingSdReader->setPlaybackRate(0.5);
- resamplingSdReader->playRaw("test2.bin", 1);
- resamplingSdReader->setLoopType(looptype_none);
- //resamplingSdReader->setInterpolationType(ResampleInterpolationType::resampleinterpolation_quadratic);
-
- int16_t actual[expectedSize];
- int16_t *buffers[1] = { actual };
- int j = 0, samplesRead = 0, total_bytes_read = 0;
- do {
- samplesRead = resamplingSdReader->read((void**)buffers, 256 );
- total_bytes_read += samplesRead * 2;
- printf("j:%d samplesRead: %d: ", j, samplesRead);
- for (int i=0; i < samplesRead; i++) {
- printf("\t\t[%x]:%x", expected[j * 256 + i], actual[i]);
- }
- printf("\n");
- if (samplesRead != 0)
- BOOST_CHECK_EQUAL_COLLECTIONS(&expected[j * 256], &expected[j * 256 + samplesRead - 1], &actual[0], &actual[samplesRead - 1]);
-
- j++;
- } while (samplesRead > 0);
- printf("total_bytes_read: %d \n", total_bytes_read);
- resamplingSdReader->close();
-
- }
-
-BOOST_AUTO_TEST_SUITE_END()
-
-#endif //TEENSY_RESAMPLING_SDREADER_READER_MONO_FORWARD_TESTS_CPP
diff --git a/third-party/TeensyVariablePlayback.O/test/low_level/sd/test_wav_mono_loop_forward_playback.cpp b/third-party/TeensyVariablePlayback.O/test/low_level/sd/test_wav_mono_loop_forward_playback.cpp
deleted file mode 100644
index f708675..0000000
--- a/third-party/TeensyVariablePlayback.O/test/low_level/sd/test_wav_mono_loop_forward_playback.cpp
+++ /dev/null
@@ -1,214 +0,0 @@
-//
-// Created by Nicholas Newdigate on 18/07/2020.
-//
-
-#ifndef TEENSY_RESAMPLING_WAVSDREADER_READER_MONO_LOOP_FORWARD_TESTS_CPP
-#define TEENSY_RESAMPLING_WAVSDREADER_READER_MONO_LOOP_FORWARD_TESTS_CPP
-#include
-#include "ResamplingReaderFixture.h"
-
-BOOST_AUTO_TEST_SUITE(test_wav_mono_loop_forward_playback)
- uint16_t test_sndhdrdata_sndhdr_wav[] = {
- 0x4952, 0x4646, 0x0038, 0x0000, 0x4157, 0x4556,
- 0x6d66, 0x2074, 0x0010, 0x0000, 0x0001, 0x0001,
- 0xac44, 0x0000, 0xb110, 0x0002, 0x0004, 0x0010,
- 0x6164, 0x6174, 0x0014, 0x0000
- };
- unsigned int test_sndhdrdata_sndhdr_wav_len = 22; // 22 int16_t = 44 bytes = size of wave header
-
- BOOST_FIXTURE_TEST_CASE(ReadForwardLoopAtRegularPlaybackRate, ResamplingReaderFixture) {
-
- const uint32_t expectedDataSize = 32; // = 64 bytes
- test_sndhdrdata_sndhdr_wav[20] = expectedDataSize * 2;
- printf("test_wav_mono_loop_forward_playback::ReadForwardAtRegularPlaybackRate(%d)\n", expectedDataSize);
- int16_t mockFileBytes[expectedDataSize + test_sndhdrdata_sndhdr_wav_len];
- for (int16_t i = 0; i < test_sndhdrdata_sndhdr_wav_len; i++) {
- mockFileBytes[i] = test_sndhdrdata_sndhdr_wav[i];
- }
- for (int16_t i = 0; i < expectedDataSize; i++) {
- mockFileBytes[i + test_sndhdrdata_sndhdr_wav_len] = i;
- }
- SD.setSDCardFileData((char*) mockFileBytes, (expectedDataSize + test_sndhdrdata_sndhdr_wav_len) * 2);
-
- resamplingSdReader->begin();
- resamplingSdReader->setPlaybackRate(1.0);
- resamplingSdReader->playWav("test2.bin");
- resamplingSdReader->setLoopType(looptype_repeat);
- int16_t actual[256];
- int16_t *buffers[1] = { actual };
- int j = 0, bytesRead = 0, total_bytes_read = 0, currentExpected = 0;
- bool assertionsPass = true;
- do {
- bytesRead = resamplingSdReader->read((void**)buffers, 256 ); // 256 samples
- total_bytes_read += bytesRead;
- //printf("j:%d bytesRead: %d \n", j, bytesRead);
-
- for (int i=0; i < bytesRead/2; i++) {
- printf("\t\t[%x]:%x", currentExpected, actual[i]);
-
- if (currentExpected != actual[i]) {
- assertionsPass = false;
- BOOST_FAIL("Value not as expected!!!");
- }
-
- currentExpected++;
- currentExpected %= expectedDataSize;
- }
-
- printf("\n");
- j++;
- } while (j < 100);
- printf("total_bytes_read: %d \n", total_bytes_read);
- resamplingSdReader->close();
-
- BOOST_CHECK_EQUAL( true, assertionsPass);
-
- }
-
- BOOST_FIXTURE_TEST_CASE(ReadForwardLoopAtRegularPlaybackRateWithLoopFinish, ResamplingReaderFixture) {
-
- const uint32_t expectedDataSize = 32; // = 64 bytes
- test_sndhdrdata_sndhdr_wav[20] = expectedDataSize * 2;
-
- printf("test_wav_mono_loop_forward_playback::ReadForwardAtRegularPlaybackRate(%d)\n", expectedDataSize);
- int16_t mockFileBytes[expectedDataSize + test_sndhdrdata_sndhdr_wav_len];
- for (int16_t i = 0; i < test_sndhdrdata_sndhdr_wav_len; i++) {
- mockFileBytes[i] = test_sndhdrdata_sndhdr_wav[i];
- }
- for (int16_t i = 0; i < expectedDataSize; i++) {
- mockFileBytes[i + test_sndhdrdata_sndhdr_wav_len] = i;
- }
- SD.setSDCardFileData((char*) mockFileBytes, (expectedDataSize + test_sndhdrdata_sndhdr_wav_len) * 2);
-
- resamplingSdReader->begin();
- resamplingSdReader->setPlaybackRate(1.0);
- resamplingSdReader->playWav("test2.bin");
- resamplingSdReader->setLoopType(looptype_repeat);
- resamplingSdReader->setLoopFinish(8);
-
- int16_t actual[256];
- int16_t *buffers[1] = { actual };
- int j = 0, samplesRead = 0, total_bytes_read = 0, currentExpected = 0;
- bool assertionsPass = true;
- do {
- samplesRead = resamplingSdReader->read((void**)buffers, 256 ); // 256 samples
- total_bytes_read += samplesRead * 2;
- printf("j:%d samplesRead: %d \n", j, samplesRead);
-
- for (int i=0; i < samplesRead; i++) {
- printf("\t\t[%x]:%x", currentExpected, actual[i]);
-
- if (currentExpected != actual[i]) {
- assertionsPass = false;
- BOOST_FAIL("Value not as expected!!!");
- }
-
- currentExpected++;
- currentExpected %= 8;
- }
-
- printf("\n");
- j++;
- } while (j < 100);
- printf("total_bytes_read: %d \n", total_bytes_read);
- resamplingSdReader->close();
-
- BOOST_CHECK_EQUAL( true, assertionsPass);
-
- }
-
- BOOST_FIXTURE_TEST_CASE(ReadForwardLoopAtRegularPlaybackRateWithLoopStartAndFinish, ResamplingReaderFixture) {
-
- const uint32_t expectedDataSize = 32; // = 64 bytes
- test_sndhdrdata_sndhdr_wav[20] = expectedDataSize * 2;
- printf("test_wav_mono_loop_forward_playback::ReadForwardAtRegularPlaybackRate(%d)\n", expectedDataSize);
- int16_t mockFileBytes[expectedDataSize + test_sndhdrdata_sndhdr_wav_len];
- for (int16_t i = 0; i < test_sndhdrdata_sndhdr_wav_len; i++) {
- mockFileBytes[i] = test_sndhdrdata_sndhdr_wav[i];
- }
- for (int16_t i = 0; i < expectedDataSize; i++) {
- mockFileBytes[i + test_sndhdrdata_sndhdr_wav_len] = i;
- }
- SD.setSDCardFileData((char*) mockFileBytes, (expectedDataSize + test_sndhdrdata_sndhdr_wav_len) * 2);
-
- resamplingSdReader->begin();
- resamplingSdReader->setPlaybackRate(1.0);
- resamplingSdReader->playWav("test2.bin");
- resamplingSdReader->setLoopType(looptype_repeat);
- resamplingSdReader->setLoopFinish(8);
-
- int16_t actual[256];
- int16_t *buffers[1] = { actual };
- int j = 0, samplesRead = 0, total_bytes_read = 0, currentExpected = 0;
- bool assertionsPass = true;
- do {
- samplesRead = resamplingSdReader->read((void**)buffers, 256 ); // 256 samples
- total_bytes_read += samplesRead * 2;
- printf("j:%d bytesRead: %d \n", j, total_bytes_read);
-
- for (int i=0; i < samplesRead; i++) {
- printf("\t\t[%x]:%x", currentExpected, actual[i]);
-
- if (currentExpected != actual[i]) {
- assertionsPass = false;
- BOOST_FAIL("Value not as expected!!!");
- }
-
- currentExpected++;
- currentExpected %= 8;
- }
-
- printf("\n");
- j++;
- } while (j < 100);
- printf("total_bytes_read: %d \n", total_bytes_read);
- resamplingSdReader->close();
-
- BOOST_CHECK_EQUAL( true, assertionsPass);
-
- }
-
- BOOST_FIXTURE_TEST_CASE(ReadForwardLoopAtHalfPlaybackRate, ResamplingReaderFixture) {
-
- const uint32_t size_of_datasource = 800;
- test_sndhdrdata_sndhdr_wav[20] = size_of_datasource * 2;
- printf("ReadForwardAtRegularPlaybackRate(%d)\n", size_of_datasource);
- int16_t dataSource[size_of_datasource];
- for (int16_t i = 0; i < size_of_datasource; i++) {
- dataSource[i] = i;
- }
- SD.setSDCardFileData((char*) dataSource, size_of_datasource * 2);
-
- const int16_t expectedSize = size_of_datasource * 2;
- int16_t expected[expectedSize];
- for (int16_t i = 0; i < expectedSize; i++) {
- expected[i] = i / 2;
- }
-
- resamplingSdReader->begin();
- resamplingSdReader->setPlaybackRate(0.5);
- resamplingSdReader->playWav("test2.bin");
- resamplingSdReader->setLoopType(looptype_none);
- int16_t actual[expectedSize];
- int16_t *buffers[1] = { actual };
- int j = 0, samplesRead = 0, total_bytes_read = 0;
- do {
- samplesRead = resamplingSdReader->read((void**)buffers, 256 );
- total_bytes_read += samplesRead * 2;
- printf("j:%d samplesRead: %d: ", j, samplesRead);
- for (int i=0; i < samplesRead; i++) {
- printf("\t\t[%x]:%x", expected[j * 256 + i], actual[j + i]);
- }
- printf("\n");
-
- if (samplesRead != 0)
- BOOST_CHECK_EQUAL_COLLECTIONS(&expected[j * 256], &expected[j * 256 + samplesRead - 1], &actual[0], &actual[samplesRead - 1]);
- j++;
- } while (samplesRead > 0);
- printf("total_bytes_read: %d \n", total_bytes_read);
- resamplingSdReader->close();
- }
-
-BOOST_AUTO_TEST_SUITE_END()
-
-#endif //TEENSY_RESAMPLING_WAVSDREADER_READER_MONO_LOOP_FORWARD_TESTS_CPP
diff --git a/third-party/TeensyVariablePlayback.O/test/low_level/sd/test_wav_mono_noloop_backward_playback.cpp b/third-party/TeensyVariablePlayback.O/test/low_level/sd/test_wav_mono_noloop_backward_playback.cpp
deleted file mode 100644
index d185763..0000000
--- a/third-party/TeensyVariablePlayback.O/test/low_level/sd/test_wav_mono_noloop_backward_playback.cpp
+++ /dev/null
@@ -1,107 +0,0 @@
-//
-// Created by Nicholas Newdigate on 18/07/2020.
-//
-
-#ifndef TEENSY_RESAMPLING_WAVSDREADER_READER_MONO_NOLOOP_BACKWARD_TESTS_CPP
-#define TEENSY_RESAMPLING_WAVSDREADER_READER_MONO_NOLOOP_BACKWARD_TESTS_CPP
-#include
-#include "ResamplingReaderFixture.h"
-
-BOOST_AUTO_TEST_SUITE(test_wav_mono_noloop_backward_playback)
-
- uint16_t test_sndhdrdata_sndhdr_wav[] = {
- 0x4952, 0x4646, 0x0038, 0x0000, 0x4157, 0x4556,
- 0x6d66, 0x2074, 0x0010, 0x0000, 0x0001, 0x0001,
- 0xac44, 0x0000, 0xb110, 0x0002, 0x0004, 0x0010,
- 0x6164, 0x6174, 0x0014, 0x0000
- };
- unsigned int test_sndhdrdata_sndhdr_wav_len = 22; // 22 int16_t = 44 bytes = size of wave header
-
- BOOST_FIXTURE_TEST_CASE(ReadBackwardAtRegularPlaybackRate, ResamplingReaderFixture) {
-
- const uint32_t expectedDataSize = 258;
-
- test_sndhdrdata_sndhdr_wav[20] = expectedDataSize * 2;
- printf("test_wav_mono_noloop_forward_playback::ReadForwardAtRegularPlaybackRate(%d)\n", expectedDataSize);
- int16_t mockFileBytes[expectedDataSize + test_sndhdrdata_sndhdr_wav_len];
- int16_t expected[expectedDataSize];
- for (int16_t i = 0; i < test_sndhdrdata_sndhdr_wav_len; i++) {
- mockFileBytes[i] = test_sndhdrdata_sndhdr_wav[i];
- }
- for (int16_t i = 0; i < expectedDataSize; i++) {
- mockFileBytes[i + test_sndhdrdata_sndhdr_wav_len] = i;
- expected[i] = expectedDataSize - i - 1;
- }
- SD.setSDCardFileData((char*) mockFileBytes, (expectedDataSize + test_sndhdrdata_sndhdr_wav_len) * 2);
-
- resamplingSdReader->begin();
- resamplingSdReader->setPlaybackRate(-1.0);
- resamplingSdReader->playWav("test2.bin");
- resamplingSdReader->setLoopType(looptype_none);
- int16_t actual[1024];
- int16_t *buffers[1] = { actual };
- int j = 0, samplesRead = 0, total_bytes_read = 0;
- do {
- samplesRead = resamplingSdReader->read((void**)buffers, 256 );
- total_bytes_read += samplesRead * 2;
- printf("j:%d bytessamplesReadRead: %d \n", j, samplesRead);
-
- for (int i=0; i < samplesRead; i++) {
- printf("\t\t[%x]:%x", expected[j * 256 + i], actual[i]);
- }
- printf("\n");
- if (samplesRead != 0)
- BOOST_CHECK_EQUAL_COLLECTIONS(&expected[j * 256], &expected[j * 256 + samplesRead - 1], &actual[0], &actual[samplesRead - 1]);
-
- j++;
- } while (samplesRead > 0);
- printf("total_bytes_read: %d \n", total_bytes_read);
- BOOST_CHECK_EQUAL(resamplingSdReader->isPlaying(), false);
- resamplingSdReader->close();
- }
-
- BOOST_FIXTURE_TEST_CASE(ReadBackwardAtHalfPlaybackRate, ResamplingReaderFixture) {
-
- const uint32_t expectedDataSize = 258;
- test_sndhdrdata_sndhdr_wav[20] = expectedDataSize * 2;
- printf("test_wav_mono_noloop_forward_playback::ReadForwardAtRegularPlaybackRate(%d)\n", expectedDataSize);
- int16_t mockFileBytes[expectedDataSize + test_sndhdrdata_sndhdr_wav_len];
- int16_t expected[expectedDataSize * 2];
- for (int16_t i = 0; i < test_sndhdrdata_sndhdr_wav_len; i++) {
- mockFileBytes[i] = test_sndhdrdata_sndhdr_wav[i];
- }
- for (int16_t i = 0; i < expectedDataSize; i++) {
- mockFileBytes[i + test_sndhdrdata_sndhdr_wav_len] = i;
- }
- for (int16_t i = 0; i < expectedDataSize * 2; i++) {
- expected[i] = expectedDataSize - (i/2) - 1;
- }
-
- SD.setSDCardFileData((char*) mockFileBytes, (expectedDataSize + test_sndhdrdata_sndhdr_wav_len) * 2);
-
- resamplingSdReader->begin();
- resamplingSdReader->setPlaybackRate(-0.5);
- resamplingSdReader->playWav("test2.bin");
- resamplingSdReader->setLoopType(looptype_none);
- int16_t actual[expectedDataSize*2];
- int16_t *buffers[1] = { actual };
- int j = 0, samplesRead = 0, total_bytes_read = 0;
- do {
- samplesRead = resamplingSdReader->read((void**)buffers, 256 );
- total_bytes_read += samplesRead;
- printf("j:%d samplesRead: %d: ", j, samplesRead);
- for (int i=0; i < samplesRead; i++) {
- printf("\t\t[%x]:%x", expected[j * 256 + i], actual[j + i]);
- }
- printf("\n");
- if (samplesRead != 0)
- BOOST_CHECK_EQUAL_COLLECTIONS(&expected[j * 256], &expected[j * 256 + samplesRead - 1], &actual[0], &actual[samplesRead - 1]);
- j++;
- } while (samplesRead > 0);
- printf("total_bytes_read: %d \n", total_bytes_read);
- resamplingSdReader->close();
- }
-
-BOOST_AUTO_TEST_SUITE_END()
-
-#endif //TEENSY_RESAMPLING_WAVSDREADER_READER_MONO_NOLOOP_BACKWARD_TESTS_CPP
diff --git a/third-party/TeensyVariablePlayback.O/test/low_level/sd/test_wav_mono_noloop_forward_playback.cpp b/third-party/TeensyVariablePlayback.O/test/low_level/sd/test_wav_mono_noloop_forward_playback.cpp
deleted file mode 100644
index 09f249d..0000000
--- a/third-party/TeensyVariablePlayback.O/test/low_level/sd/test_wav_mono_noloop_forward_playback.cpp
+++ /dev/null
@@ -1,103 +0,0 @@
-//
-// Created by Nicholas Newdigate on 18/07/2020.
-//
-
-#ifndef TEENSY_RESAMPLING_WAVSDREADER_READER_MONO_NOLOOP_FORWARD_TESTS_CPP
-#define TEENSY_RESAMPLING_WAVSDREADER_READER_MONO_NOLOOP_FORWARD_TESTS_CPP
-#include
-#include "ResamplingReaderFixture.h"
-
-BOOST_AUTO_TEST_SUITE(test_wav_mono_noloop_forward_playback)
-
- uint16_t test_sndhdrdata_sndhdr_wav[] = {
- 0x4952, 0x4646, 0x0038, 0x0000, 0x4157, 0x4556,
- 0x6d66, 0x2074, 0x0010, 0x0000, 0x0001, 0x0001,
- 0xac44, 0x0000, 0xb110, 0x0002, 0x0004, 0x0010,
- 0x6164, 0x6174, 0x0014, 0x0000
- };
- unsigned int test_sndhdrdata_sndhdr_wav_len = 22; // 22 int16_t = 44 bytes = size of wave header
-
- BOOST_FIXTURE_TEST_CASE(ReadForwardAtRegularPlaybackRate, ResamplingReaderFixture) {
-
- const uint32_t expectedDataSize = 257;
- test_sndhdrdata_sndhdr_wav[20] = expectedDataSize * 2;
- printf("test_wav_mono_noloop_forward_playback::ReadForwardAtRegularPlaybackRate(%d)\n", expectedDataSize);
- int16_t mockFileBytes[expectedDataSize + test_sndhdrdata_sndhdr_wav_len];
- int16_t expected[expectedDataSize];
- for (int16_t i = 0; i < test_sndhdrdata_sndhdr_wav_len; i++) {
- mockFileBytes[i] = test_sndhdrdata_sndhdr_wav[i];
- }
- for (int16_t i = 0; i < expectedDataSize; i++) {
- mockFileBytes[i + test_sndhdrdata_sndhdr_wav_len] = i;
- expected[i] = i;
- }
- SD.setSDCardFileData((char*) mockFileBytes, (expectedDataSize + test_sndhdrdata_sndhdr_wav_len) * 2);
-
- resamplingSdReader->begin();
- resamplingSdReader->setPlaybackRate(1.0);
- resamplingSdReader->playWav("test2.bin");
- resamplingSdReader->setLoopType(looptype_none);
- int16_t actual[1024];
- int16_t *buffers[1] = { actual };
- int j = 0, samplesRead = 0, total_bytes_read = 0;
- do {
- samplesRead = resamplingSdReader->read((void**)buffers, 256 );
- total_bytes_read += samplesRead * 2;
- //printf("j:%d bytesRead: %d \n", j, samplesRead);
-
- for (int i=0; i < samplesRead; i++) {
- printf("\t\t[%x]:%x", expected[j * 256 + i], actual[j + i]);
- }
- printf("\n");
- if (samplesRead != 0)
- BOOST_CHECK_EQUAL_COLLECTIONS(&expected[j * 256], &expected[j * 256 + samplesRead - 1], &actual[0], &actual[samplesRead - 1]);
- j++;
- } while (samplesRead > 0);
- printf("total_bytes_read: %d \n", total_bytes_read);
- BOOST_CHECK_EQUAL(resamplingSdReader->isPlaying(), false);
- resamplingSdReader->close();
- }
-
- BOOST_FIXTURE_TEST_CASE(ReadForwardAtHalfPlaybackRate, ResamplingReaderFixture) {
-
- const uint32_t size_of_datasource = 800;
- test_sndhdrdata_sndhdr_wav[20] = size_of_datasource * 2;
- printf("ReadForwardAtRegularPlaybackRate(%d)\n", size_of_datasource);
- int16_t dataSource[size_of_datasource];
- for (int16_t i = 0; i < size_of_datasource; i++) {
- dataSource[i] = i;
- }
- SD.setSDCardFileData((char*) dataSource, size_of_datasource * 2);
-
- const int16_t expectedSize = size_of_datasource * 2;
- int16_t expected[expectedSize];
- for (int16_t i = 0; i < expectedSize; i++) {
- expected[i] = i / 2;
- }
-
- resamplingSdReader->begin();
- resamplingSdReader->setPlaybackRate(0.5);
- resamplingSdReader->playWav("test2.bin");
- resamplingSdReader->setLoopType(looptype_none);
- int16_t actual[expectedSize];
- int16_t *buffers[1] = { actual };
- int j = 0, samplesRead = 0, total_bytes_read = 0;
- do {
- samplesRead = resamplingSdReader->read((void**)buffers, 256 );
- total_bytes_read += samplesRead * 2;
- printf("j:%d samplesRead: %d: ", j, samplesRead);
- for (int i=0; i < samplesRead; i++) {
- printf("\t\t[%x]:%x", expected[j * 256 + i], actual[j + i]);
- }
- printf("\n");
- if (samplesRead != 0)
- BOOST_CHECK_EQUAL_COLLECTIONS(&expected[j * 256], &expected[j * 256 + samplesRead - 1], &actual[0], &actual[samplesRead - 1]);
- j++;
- } while (samplesRead > 0);
- printf("total_bytes_read: %d \n", total_bytes_read);
- resamplingSdReader->close();
- }
-
-BOOST_AUTO_TEST_SUITE_END()
-
-#endif //TEENSY_RESAMPLING_WAVSDREADER_READER_MONO_NOLOOP_FORWARD_TESTS_CPP
diff --git a/third-party/TeensyVariablePlayback.O/test/low_level/wav_header/WaveHeaderParserFixture.h b/third-party/TeensyVariablePlayback.O/test/low_level/wav_header/WaveHeaderParserFixture.h
deleted file mode 100644
index aacd82e..0000000
--- a/third-party/TeensyVariablePlayback.O/test/low_level/wav_header/WaveHeaderParserFixture.h
+++ /dev/null
@@ -1,23 +0,0 @@
-//
-// Created by Nicholas Newdigate on 18/07/2020.
-//
-
-#ifndef TEENSY_RESAMPLING_SDREADER_RESAMPLINGREADERFIXTURE_H
-#define TEENSY_RESAMPLING_SDREADER_RESAMPLINGREADERFIXTURE_H
-
-#include "waveheaderparser.h"
-
-struct WaveHeaderParserFixture {
-
- WaveHeaderParserFixture() {
- waveHeaderParser = new WaveHeaderParser();
- }
-
- ~WaveHeaderParserFixture() {
- delete waveHeaderParser;
- }
-
- WaveHeaderParser * waveHeaderParser;
-};
-
-#endif //TEENSY_RESAMPLING_SDREADER_RESAMPLINGREADERFIXTURE_H
diff --git a/third-party/TeensyVariablePlayback.O/test/low_level/wav_header/test_parse_wave_header.cpp b/third-party/TeensyVariablePlayback.O/test/low_level/wav_header/test_parse_wave_header.cpp
deleted file mode 100644
index 59096e2..0000000
--- a/third-party/TeensyVariablePlayback.O/test/low_level/wav_header/test_parse_wave_header.cpp
+++ /dev/null
@@ -1,43 +0,0 @@
-//
-// Created by Nicholas Newdigate on 18/07/2020.
-//
-
-#ifndef TEENSY_RESAMPLING_WAVEHEADER_PARSER_TESTS_CPP
-#define TEENSY_RESAMPLING_WAVEHEADER_PARSER_TESTS_CPP
-
-#include
-#include "WaveHeaderParserFixture.h"
-
-BOOST_AUTO_TEST_SUITE(WaveHeaderParsingTests)
-
- BOOST_FIXTURE_TEST_CASE(ReadWaveHeader, WaveHeaderParserFixture) {
-
- unsigned char test_sndhdrdata_sndhdr_wav[] = {
- 0x52, 0x49, 0x46, 0x46, 0x38, 0x00, 0x00, 0x00, 0x57, 0x41, 0x56, 0x45,
- 0x66, 0x6d, 0x74, 0x20, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
- 0x44, 0xac, 0x00, 0x00, 0x10, 0xb1, 0x02, 0x00, 0x04, 0x00, 0x10, 0x00,
- 0x64, 0x61, 0x74, 0x61, 0x14, 0x00, 0x00, 0x00
- };
- unsigned int test_sndhdrdata_sndhdr_wav_len = 44;
-
- SD.setSDCardFileData((char*) test_sndhdrdata_sndhdr_wav, test_sndhdrdata_sndhdr_wav_len);
-
- wav_header header;
- wav_data_header data_header;
- bool success = waveHeaderParser->readWaveHeader("blah.wav", header, data_header);
- BOOST_CHECK_EQUAL(success, true);
- const char expectedRIFF[5] = "RIFF";
- BOOST_CHECK_EQUAL_COLLECTIONS(&header.riff_header[0], &header.riff_header[3],&expectedRIFF[0], &expectedRIFF[3]);
- BOOST_CHECK_EQUAL(header.header_chunk_size,56);
- const char expectedWave[5] = "WAVE";
- BOOST_CHECK_EQUAL_COLLECTIONS(&header.wave_header[0], &header.wave_header[3],&expectedWave[0], &expectedWave[3]);
- const char expectedfmt[5] = "fmt ";
- BOOST_CHECK_EQUAL_COLLECTIONS(&header.fmt_header[0], &header.fmt_header[3],&expectedfmt[0], &expectedfmt[3]);
- const char expecteddata[5] = "data";
- BOOST_CHECK_EQUAL_COLLECTIONS(&data_header.data_header[0], &data_header.data_header[3],&expecteddata[0], &expecteddata[3]);
- //BOOST_CHECK_EQUAL(File::numOpenFiles,0);
- //BOOST_CHECK_EQUAL(File::numInstances,0);
- }
-BOOST_AUTO_TEST_SUITE_END()
-
-#endif //TEENSY_RESAMPLING_WAVEHEADER_PARSER_TESTS_CPP
diff --git a/third-party/TeensyVariablePlayback.O/test/resources/input/PNO1C1.raw b/third-party/TeensyVariablePlayback.O/test/resources/input/PNO1C1.raw
deleted file mode 100644
index 099e256..0000000
Binary files a/third-party/TeensyVariablePlayback.O/test/resources/input/PNO1C1.raw and /dev/null differ
diff --git a/third-party/TeensyVariablePlayback.O/test/resources/input/SDTEST1.wav b/third-party/TeensyVariablePlayback.O/test/resources/input/SDTEST1.wav
deleted file mode 100644
index 2b0d694..0000000
Binary files a/third-party/TeensyVariablePlayback.O/test/resources/input/SDTEST1.wav and /dev/null differ
diff --git a/third-party/TeensyVariablePlayback.O/test/resources/input/SDTEST2.wav b/third-party/TeensyVariablePlayback.O/test/resources/input/SDTEST2.wav
deleted file mode 100644
index ff06d67..0000000
Binary files a/third-party/TeensyVariablePlayback.O/test/resources/input/SDTEST2.wav and /dev/null differ
diff --git a/third-party/TeensyVariablePlayback.O/test/resources/input/kick.raw b/third-party/TeensyVariablePlayback.O/test/resources/input/kick.raw
deleted file mode 100644
index 67a7a7f..0000000
Binary files a/third-party/TeensyVariablePlayback.O/test/resources/input/kick.raw and /dev/null differ
diff --git a/third-party/TeensyVariablePlayback.O/test/resources/input/kick.wav b/third-party/TeensyVariablePlayback.O/test/resources/input/kick.wav
deleted file mode 100644
index 6e477c2..0000000
Binary files a/third-party/TeensyVariablePlayback.O/test/resources/input/kick.wav and /dev/null differ
diff --git a/third-party/TeensyVariablePlayback.O/test/resources/input/mono_souljah.wav b/third-party/TeensyVariablePlayback.O/test/resources/input/mono_souljah.wav
deleted file mode 100644
index 206d8ed..0000000
Binary files a/third-party/TeensyVariablePlayback.O/test/resources/input/mono_souljah.wav and /dev/null differ
diff --git a/third-party/TeensyVariablePlayback.O/test/resources/input/stereo_souljah.raw b/third-party/TeensyVariablePlayback.O/test/resources/input/stereo_souljah.raw
deleted file mode 100644
index c739709..0000000
Binary files a/third-party/TeensyVariablePlayback.O/test/resources/input/stereo_souljah.raw and /dev/null differ
diff --git a/third-party/TeensyVariablePlayback.O/test/resources/input/stereo_souljah.wav b/third-party/TeensyVariablePlayback.O/test/resources/input/stereo_souljah.wav
deleted file mode 100644
index c21f987..0000000
Binary files a/third-party/TeensyVariablePlayback.O/test/resources/input/stereo_souljah.wav and /dev/null differ
diff --git a/third-party/TeensyVariablePlayback.O/test/resources/reference/Array_fwd_0_5000_quadratic_mono_noloop.wav b/third-party/TeensyVariablePlayback.O/test/resources/reference/Array_fwd_0_5000_quadratic_mono_noloop.wav
deleted file mode 100644
index 676478c..0000000
Binary files a/third-party/TeensyVariablePlayback.O/test/resources/reference/Array_fwd_0_5000_quadratic_mono_noloop.wav and /dev/null differ
diff --git a/third-party/TeensyVariablePlayback.O/test/resources/reference/Array_fwd_0_5000_quadratic_stereo_noloop.wav b/third-party/TeensyVariablePlayback.O/test/resources/reference/Array_fwd_0_5000_quadratic_stereo_noloop.wav
deleted file mode 100644
index c2fbea5..0000000
Binary files a/third-party/TeensyVariablePlayback.O/test/resources/reference/Array_fwd_0_5000_quadratic_stereo_noloop.wav and /dev/null differ
diff --git a/third-party/TeensyVariablePlayback.O/test/resources/reference/Array_fwd_0_7437_quadratic_mono_noloop.wav b/third-party/TeensyVariablePlayback.O/test/resources/reference/Array_fwd_0_7437_quadratic_mono_noloop.wav
deleted file mode 100644
index 3c1d0d8..0000000
Binary files a/third-party/TeensyVariablePlayback.O/test/resources/reference/Array_fwd_0_7437_quadratic_mono_noloop.wav and /dev/null differ
diff --git a/third-party/TeensyVariablePlayback.O/test/resources/reference/Array_fwd_0_7437_quadratic_stereo_noloop.wav b/third-party/TeensyVariablePlayback.O/test/resources/reference/Array_fwd_0_7437_quadratic_stereo_noloop.wav
deleted file mode 100644
index 336ce7f..0000000
Binary files a/third-party/TeensyVariablePlayback.O/test/resources/reference/Array_fwd_0_7437_quadratic_stereo_noloop.wav and /dev/null differ
diff --git a/third-party/TeensyVariablePlayback.O/test/resources/reference/Array_fwd_1_0000_quadratic_mono_noloop.wav b/third-party/TeensyVariablePlayback.O/test/resources/reference/Array_fwd_1_0000_quadratic_mono_noloop.wav
deleted file mode 100644
index 04b6b34..0000000
Binary files a/third-party/TeensyVariablePlayback.O/test/resources/reference/Array_fwd_1_0000_quadratic_mono_noloop.wav and /dev/null differ
diff --git a/third-party/TeensyVariablePlayback.O/test/resources/reference/Array_fwd_1_0000_quadratic_stereo_noloop.wav b/third-party/TeensyVariablePlayback.O/test/resources/reference/Array_fwd_1_0000_quadratic_stereo_noloop.wav
deleted file mode 100644
index 20965f5..0000000
Binary files a/third-party/TeensyVariablePlayback.O/test/resources/reference/Array_fwd_1_0000_quadratic_stereo_noloop.wav and /dev/null differ
diff --git a/third-party/TeensyVariablePlayback.O/test/resources/reference/Array_fwd_1_7437_quadratic_mono_noloop.wav b/third-party/TeensyVariablePlayback.O/test/resources/reference/Array_fwd_1_7437_quadratic_mono_noloop.wav
deleted file mode 100644
index a526adb..0000000
Binary files a/third-party/TeensyVariablePlayback.O/test/resources/reference/Array_fwd_1_7437_quadratic_mono_noloop.wav and /dev/null differ
diff --git a/third-party/TeensyVariablePlayback.O/test/resources/reference/Array_fwd_1_7437_quadratic_stereo_noloop.wav b/third-party/TeensyVariablePlayback.O/test/resources/reference/Array_fwd_1_7437_quadratic_stereo_noloop.wav
deleted file mode 100644
index 554b89d..0000000
Binary files a/third-party/TeensyVariablePlayback.O/test/resources/reference/Array_fwd_1_7437_quadratic_stereo_noloop.wav and /dev/null differ
diff --git a/third-party/TeensyVariablePlayback.O/test/resources/reference/Array_fwd_2_0000_quadratic_mono_noloop.wav b/third-party/TeensyVariablePlayback.O/test/resources/reference/Array_fwd_2_0000_quadratic_mono_noloop.wav
deleted file mode 100644
index bc3e5d4..0000000
Binary files a/third-party/TeensyVariablePlayback.O/test/resources/reference/Array_fwd_2_0000_quadratic_mono_noloop.wav and /dev/null differ
diff --git a/third-party/TeensyVariablePlayback.O/test/resources/reference/Array_fwd_2_0000_quadratic_stereo_noloop.wav b/third-party/TeensyVariablePlayback.O/test/resources/reference/Array_fwd_2_0000_quadratic_stereo_noloop.wav
deleted file mode 100644
index b83f94e..0000000
Binary files a/third-party/TeensyVariablePlayback.O/test/resources/reference/Array_fwd_2_0000_quadratic_stereo_noloop.wav and /dev/null differ
diff --git a/third-party/TeensyVariablePlayback.O/test/resources/reference/Array_fwd_8_7437_quadratic_mono_noloop.wav b/third-party/TeensyVariablePlayback.O/test/resources/reference/Array_fwd_8_7437_quadratic_mono_noloop.wav
deleted file mode 100644
index 7e4a8f2..0000000
Binary files a/third-party/TeensyVariablePlayback.O/test/resources/reference/Array_fwd_8_7437_quadratic_mono_noloop.wav and /dev/null differ
diff --git a/third-party/TeensyVariablePlayback.O/test/resources/reference/Array_fwd_8_7437_quadratic_stereo_noloop.wav b/third-party/TeensyVariablePlayback.O/test/resources/reference/Array_fwd_8_7437_quadratic_stereo_noloop.wav
deleted file mode 100644
index 041ade6..0000000
Binary files a/third-party/TeensyVariablePlayback.O/test/resources/reference/Array_fwd_8_7437_quadratic_stereo_noloop.wav and /dev/null differ
diff --git a/third-party/TeensyVariablePlayback.O/test/resources/reference/SDTEST1.wav b/third-party/TeensyVariablePlayback.O/test/resources/reference/SDTEST1.wav
deleted file mode 100644
index 60793b6..0000000
Binary files a/third-party/TeensyVariablePlayback.O/test/resources/reference/SDTEST1.wav and /dev/null differ
diff --git a/third-party/TeensyVariablePlayback.O/test/resources/reference/SDTEST2.wav b/third-party/TeensyVariablePlayback.O/test/resources/reference/SDTEST2.wav
deleted file mode 100644
index 1fa5819..0000000
Binary files a/third-party/TeensyVariablePlayback.O/test/resources/reference/SDTEST2.wav and /dev/null differ
diff --git a/third-party/TeensyVariablePlayback.O/test/resources/reference/Wav_fwd_0_5000_quadratic_mono_noloop.wav b/third-party/TeensyVariablePlayback.O/test/resources/reference/Wav_fwd_0_5000_quadratic_mono_noloop.wav
deleted file mode 100644
index 48760ba..0000000
Binary files a/third-party/TeensyVariablePlayback.O/test/resources/reference/Wav_fwd_0_5000_quadratic_mono_noloop.wav and /dev/null differ
diff --git a/third-party/TeensyVariablePlayback.O/test/resources/reference/Wav_fwd_0_5000_quadratic_stereo_noloop.wav b/third-party/TeensyVariablePlayback.O/test/resources/reference/Wav_fwd_0_5000_quadratic_stereo_noloop.wav
deleted file mode 100644
index 7cdbe92..0000000
Binary files a/third-party/TeensyVariablePlayback.O/test/resources/reference/Wav_fwd_0_5000_quadratic_stereo_noloop.wav and /dev/null differ
diff --git a/third-party/TeensyVariablePlayback.O/test/resources/reference/Wav_fwd_0_7437_quadratic_mono_noloop.wav b/third-party/TeensyVariablePlayback.O/test/resources/reference/Wav_fwd_0_7437_quadratic_mono_noloop.wav
deleted file mode 100644
index bca72c4..0000000
Binary files a/third-party/TeensyVariablePlayback.O/test/resources/reference/Wav_fwd_0_7437_quadratic_mono_noloop.wav and /dev/null differ
diff --git a/third-party/TeensyVariablePlayback.O/test/resources/reference/Wav_fwd_0_7437_quadratic_stereo_noloop.wav b/third-party/TeensyVariablePlayback.O/test/resources/reference/Wav_fwd_0_7437_quadratic_stereo_noloop.wav
deleted file mode 100644
index 78f4797..0000000
Binary files a/third-party/TeensyVariablePlayback.O/test/resources/reference/Wav_fwd_0_7437_quadratic_stereo_noloop.wav and /dev/null differ
diff --git a/third-party/TeensyVariablePlayback.O/test/resources/reference/Wav_fwd_1_0000_quadratic_mono_noloop.wav b/third-party/TeensyVariablePlayback.O/test/resources/reference/Wav_fwd_1_0000_quadratic_mono_noloop.wav
deleted file mode 100644
index a7fea51..0000000
Binary files a/third-party/TeensyVariablePlayback.O/test/resources/reference/Wav_fwd_1_0000_quadratic_mono_noloop.wav and /dev/null differ
diff --git a/third-party/TeensyVariablePlayback.O/test/resources/reference/Wav_fwd_1_0000_quadratic_stereo_noloop.wav b/third-party/TeensyVariablePlayback.O/test/resources/reference/Wav_fwd_1_0000_quadratic_stereo_noloop.wav
deleted file mode 100644
index 59da2c7..0000000
Binary files a/third-party/TeensyVariablePlayback.O/test/resources/reference/Wav_fwd_1_0000_quadratic_stereo_noloop.wav and /dev/null differ
diff --git a/third-party/TeensyVariablePlayback.O/test/resources/reference/Wav_fwd_1_7437_quadratic_mono_noloop.wav b/third-party/TeensyVariablePlayback.O/test/resources/reference/Wav_fwd_1_7437_quadratic_mono_noloop.wav
deleted file mode 100644
index bbaa949..0000000
Binary files a/third-party/TeensyVariablePlayback.O/test/resources/reference/Wav_fwd_1_7437_quadratic_mono_noloop.wav and /dev/null differ
diff --git a/third-party/TeensyVariablePlayback.O/test/resources/reference/Wav_fwd_1_7437_quadratic_stereo_noloop.wav b/third-party/TeensyVariablePlayback.O/test/resources/reference/Wav_fwd_1_7437_quadratic_stereo_noloop.wav
deleted file mode 100644
index 2d6bb49..0000000
Binary files a/third-party/TeensyVariablePlayback.O/test/resources/reference/Wav_fwd_1_7437_quadratic_stereo_noloop.wav and /dev/null differ
diff --git a/third-party/TeensyVariablePlayback.O/test/resources/reference/Wav_fwd_2_0000_quadratic_mono_noloop.wav b/third-party/TeensyVariablePlayback.O/test/resources/reference/Wav_fwd_2_0000_quadratic_mono_noloop.wav
deleted file mode 100644
index 2d5e61c..0000000
Binary files a/third-party/TeensyVariablePlayback.O/test/resources/reference/Wav_fwd_2_0000_quadratic_mono_noloop.wav and /dev/null differ
diff --git a/third-party/TeensyVariablePlayback.O/test/resources/reference/Wav_fwd_2_0000_quadratic_stereo_noloop.wav b/third-party/TeensyVariablePlayback.O/test/resources/reference/Wav_fwd_2_0000_quadratic_stereo_noloop.wav
deleted file mode 100644
index 7bef9fa..0000000
Binary files a/third-party/TeensyVariablePlayback.O/test/resources/reference/Wav_fwd_2_0000_quadratic_stereo_noloop.wav and /dev/null differ
diff --git a/third-party/TeensyVariablePlayback.O/test/resources/reference/Wav_fwd_8_7437_quadratic_mono_noloop.wav b/third-party/TeensyVariablePlayback.O/test/resources/reference/Wav_fwd_8_7437_quadratic_mono_noloop.wav
deleted file mode 100644
index 149d709..0000000
Binary files a/third-party/TeensyVariablePlayback.O/test/resources/reference/Wav_fwd_8_7437_quadratic_mono_noloop.wav and /dev/null differ
diff --git a/third-party/TeensyVariablePlayback.O/test/resources/reference/Wav_fwd_8_7437_quadratic_stereo_noloop.wav b/third-party/TeensyVariablePlayback.O/test/resources/reference/Wav_fwd_8_7437_quadratic_stereo_noloop.wav
deleted file mode 100644
index 5a1b65f..0000000
Binary files a/third-party/TeensyVariablePlayback.O/test/resources/reference/Wav_fwd_8_7437_quadratic_stereo_noloop.wav and /dev/null differ
diff --git a/third-party/TeensyVariablePlayback.O/test/resources/reference/kick.wav b/third-party/TeensyVariablePlayback.O/test/resources/reference/kick.wav
deleted file mode 100644
index 6e477c2..0000000
Binary files a/third-party/TeensyVariablePlayback.O/test/resources/reference/kick.wav and /dev/null differ
diff --git a/third-party/TeensyVariablePlayback.O/test/resources/reference/stereo_souljah.wav b/third-party/TeensyVariablePlayback.O/test/resources/reference/stereo_souljah.wav
deleted file mode 100644
index c21f987..0000000
Binary files a/third-party/TeensyVariablePlayback.O/test/resources/reference/stereo_souljah.wav and /dev/null differ